写点什么

JNBridge 3.1: 在.NET 和 Winforms 中嵌入 Java SWT/Swing

  • 2007 年 5 月 08 日
  • 本文字数:1692 字

    阅读完需:约 6 分钟

JNBridge 3.1 于近期发布,这是一款为 Java 和.NET 互操作实现建立桥梁的工具。JNBridge 提供了使得 Java 或.NET 代码运行在 Java 虚拟机或.NET 通用语言运行时 CLR 之上的跨平台机制,甚至可以实现不同平台语言之间的内存共享。在 JNBridge 的帮助之下,外来代码就可以作为本地语言的对象来编译和运行。JNBridge 3.1 版本提供了 Java AWT/SWT 以及 Swing 组件嵌入在 Windows 窗体和.NET 窗体控件中的功能,另外一项重要的功能改进是实现 Java 代码在.NET CLR 环境下运行时的.NET 本地代码调用,甚至在集群环境下,跨语言平台的代码调用同样也可以实现。

InfoQ 在对 JNBridge 公司的 CTO Wayne Citrin 先生的采访中,针对如何将 Java 界面组件嵌入在.NET 程序之中(.NET 程序嵌入在 Java 中的逆过程遵循类似的操作步骤),了解到更多的相关内容:

在.NET 代码中,我们通过创建.NET 的代理类,来表示 Java 的图形用户接口类。代理类的调用将直接得到相应的 Java 对象,在新的 JNBridge 3.1 版本里面,我们已经创建了专门的封装类,来封装面向 Java 组件的代理类,用法与.NET 的 Windows 窗体控制方式相似,即封装类继承自 WinForms 的 UserControl 类。这样一来,Java 组件就可以在任何需要 WinForms 组件的地方使用。封装类的继承是实现互操作的关键要素,在 Java 类中可以得到 Win32 窗体句柄,并在 WinForms 应用中对其进行管理和操作,将使得 Java 组件成为 WinForms 组件的子节点。这样,当 WinForms 窗体移动或最小化的时候,嵌入的 Java 组件也会随之进行移动或最小化操作。

当提到为什么会有开发者愿意使用交叉技术来实现跨语言的用户界面组件混合时,Wayne 针对一些用例解释道:

通常说来,如果开发者打算在 Java 富客户端程序中嵌入 WinForms 组件,整个程序需要在 Windows 环境下编译运行。决定是否要在 Java 富客户端程序中嵌入 WinForms 的组件,往往取决于开发者使用的工具和开发环境。许多 WinForms 组件与 Windows 底层的运行环境有着紧密的联系,举个例子来说,WinForms 的 DataGrid 控件与 SQL Server 的数据源具有一定的集成关系。如果 Windows 环境下的开发者拥有这样的集成控件,并同时需要使用类似于 IBM WebSphere Everywhere Deployment 这样基于 Java 的富客户端应用,这将会使得在 Java 富客户端中嵌入 WinForms 控件的工作变得十分有意义。 通过 JNBridge 不仅可以在 WinForms 中嵌入 Swing 组件,还可以集成开发者自定义的 Swing 组件,因为常有一些用户开发自定义的控件,或是用户购买了第三方的其他控件。在此之前,那些控件只能在纯 Java 的富客户端环境下使用,这意味着,如果开发者由于更喜欢 WinForms 的编程模型或编程工具,而期望将 Java 程序移植到 WinForms 的环境下,他们不得不丧失在 Java 控件方面已有的投资,或者重新回到移植之前的状态来保持 Java 控件方面的投资不受损失。现在,通过 JNBridge 提供的功能,开发者可以在保留他们认为有价值的 Java 控件同时,将程序移植到 WinForms 的环境之下。

提供 Java 组件的软件供应商们现在也可以通过 JNBridge 的用户界面嵌入功能,针对.NET 和 Java 来生成跨平台的界面组件。在基于.NET 的控件市场成熟之后,.NET 组件供应商们同样可以使用 JNBridge 提供的功能,将开发好的.NET 组件提供给使用 Java 的客户。

在程序运行方面,JNBridge 需要有 JDK 1.3.1 及其后版本和 NET 1.0 及其后版本的支持。正如 Ted Neward 在文章 Java 与.NET 如何集成在一起中描述的那样,JNBridge 作为跨平台互操作机制的高效实现方式,为 Java 与.NET 的集成与互操作,提供了诸多可行的解决方案。感兴趣这个主题的读者,可以在 InfoQ 中文站点的 Java 与.NET 集成专题中,了解到更多 Java 与.NET 集成方面的相关技术。

查看英文原文: JNBridge 3.1: Embed SWT/Swing in .NET and Winforms in Java - - - - - -

译者简介:高昂,IEEE-CS、CCF 会员,关注开源软件发展与进步,Java GIS 开源项目 uDIG 参与者。目前在资源与环境信息系统国家重点实验室从事网格 GIS、空间数据库研究工作。个人站点为开源网格GIS 试验田。与InfoQ 中文站分享内容,请邮件至 china-editorial@infoq.com

2007 年 5 月 08 日 20:12666
用户头像

发布了 74 篇内容, 共 10.2 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

智慧公安大屏可视化决策系统搭建

t13823115967

智慧公安 智慧大屏可视化

vivo官方商城架构演进之路

vivo互联网技术

中台 架构演进 服务化

系统稳定性建设实践总结

架构精进之路

系统架构 自我思考 系统稳定性

大型团队实践敏捷开发管理的挑战与应对

万事ONES

敏捷开发 研发管理 敏捷开发管理 开发管理

美女面试官问我:说说你对序列化的理解

田维常

序列化

一次产品影响地图的探索之旅

Bruce Talk

敏捷 Agile Product Owner 影响地图

架构师训练营第十一周命题作业

一马行千里

极客大学架构师训练营 命题作业

区块链防伪溯源平台开发解决方案

t13823115967

区块链+ 区块链产品溯源

我摊牌了,大厂面试Linux就这5个问题

艾小仙

Java Linux 面试 大厂

深入灵魂的考验,每行注释都是灵魂的单例模式,源码+实例降临

小Q

Java 学习 架构 面试 设计模式

JVM垃圾回收?全面详细安排!

程序员的时光

JVM GC

架构师训练营第三周学习总结

Geek_xq

苦修月余,斩获bigo、腾讯offer,面经奉上!

艾小仙

Java 腾讯 面试 腾讯大厂

福利 | 这些网站有免费代理IP!

前嗅大数据

大数据 代理IP 网站反爬 免费代理ip 封ip

蕃茄田宋姝梦:科技赋能时代,儿童在线艺术教育的思考

ZEGO即构

anyRTC 联合 vInClass 打造在线教育上课模式

anyRTC开发者

音视频 WebRTC 在线教育 RTC

甲方日常 63

句子

工作 随笔杂谈 日常

架构师训练营第十一周学习笔记

一马行千里

学习 极客大学架构师训练营

Spock单元测试框架实战指南三 - f esle 多分支场景测试

Java老k

单元测试 spock

软件开发中的防呆方法总结

张明云

DevOps 软件开发 技术架构 防呆 模式

K8s 将弃用 Docker;TypeScript 超越 C++ 成第四大语言

京东科技开发者

程序人生

《图解数据结构》.pdf

田维常

数据结构

传销组织的CTO | 法庭上的CTO(4)

赵新龙

CTO 传销 法庭上的CTO

计算机网络基础

Minar Kotonoha

node.js 大前端 计算机网络 HTTP

DeFi质押挖矿APP系统开发|DeFi质押挖矿软件开发

系统开发

话题讨论 | Vue凭什么成为2020的一匹黑马?

黑马腾云

话题讨论

分布式搜索引擎Elasticsearch的架构分析

vivo互联网技术

elasticsearch 分布式 分布式搜索引擎

话题讨论 | 用好VSCode这13款插件和8个快捷键,工作效率提升10倍

程序员柠檬

话题讨论

干货分享!用心满满:面试前必知必会的二分查找及其变种

比伯

Java 编程 架构 面试 计算机

让战略不再”空虚“的战略描述

Alan

战略思考 战略

自营电商渠道转化率的简单设计思路

boshi

推广

JNBridge 3.1:在.NET和Winforms中嵌入Java SWT/Swing_Java_Floyd Marinescu_InfoQ精选文章