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

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中文站分享内容,请邮件至 [email protected]

你可能感兴趣的:(JNBridge 3.1:在.NET和Winforms中嵌入Java SWT/Swing)