Java.NET --一个基于Java的Microsoft.NET框架的实现

至2000年底,Microsoft开始发布有关.NET这一全新的应用开发架构的细节,这些细节最初有些模糊,以至引起很多嘲笑,被视为“担心、不可靠、怀疑”(FUD)。然而,当Beta版的新版Visual Studio--Visual Studio.NET出现在开发者面前时,与现实相结合,.NET框架价值显而易见,而绝不是FUD。随着”冰雹”(一套Microsoft计划提供给其它厂商能兼容他们自己应用软件的网络服务)的正式宣布,.NET以一套 “革命”的开发各类运用软件的新路呈现在公众眼前。实际上,作为一个不明显的举措,Microsoft也强调它将完全支持非Windows的平台,包括Unix和Linux等等。其它不讲,而支持非Windows平台的承诺和增加可靠性及更简单的终端用户体验一样只不过突出了应用软件开发中另一个也同样有重大意义的逐渐的进步过程。
Halcyon Software, Inc. (http://www.halcyonsoft.com) 继成功开发了iASP(Microsoft ASP 的Java构架,可将ASP运行在任何支持Java的平台)之后,针对微软提供的全新开发环境Microsoft.NET,Halcyonsoft正致力于将Microsoft.NET 进行跨平台移植。
首先,让我们基本了解一下Microsoft.NET框架和它给开发者及终端用户所暗示的内容。其二,描述Halcyonsoft针对.NET的开发起步过程,特别是如何从Java的基础上重建.NET框架以及暂时被命名为"Instant.NET" (iNET) 这一产品所能带来的引人注目的好处。
.NET的大体结构
总的来说,.NET可以分为三个部分:
--.NET框架--一个全新设计的开发环境,使开发者更容易建立网络应用程序和网络服务。
--.NET产品--基于.NET平台的Microsoft开发的应用软件,包括Office和Visual Studio。
--.NET服务--协助第三方开发者创造.NET平台服务(网络服务的范例是一套州,郡,市的税务表格,这些表格被提供给电子商务购物车的开发者,这样他们可以代理网上购物的销售税务而免去庞大的数据维护管理额外开销的担忧)Microsoft的”冰雹”起初实际上是一举将最流行的网络服务包揽于"Microsoft"这一品牌名下。
新的.NET发展框架还可以细分,大致分为三个部分:
--一个运行时引擎,被称为“公共语言运行时”(CLR), 它处理存储分配,错误限制和所有编程中遇到的繁忙工作。
--一套广泛的类库,从基础的写起,涵盖任何您所需求的功能。
--两大高阶层的发展“舞台”,提供给网络应用软件(ASP.NET) 和常规Windows应用软件(Windows Forms)。
有关.NET框架的各种要素及它们之间的相互关系的更详细的情况请见下列图表:

.NET框架可以缩短开发周期(代码重新使用,减少编程难题,支持多种编程语言),也可以更容易的配置(简单的XCOPY安装成为可能),而且真正的垃圾收集器的出现使得错误减少,并且是在更灵活可靠的应用软件里。现在让我们仔细考察一下.NET框架的各个部分。
公共语言运行时(CLR)
.NET应用软件被编译到众所周知的Microsoft中间语言(MIL或者IL) 这一公共语言。CLR处理将IL编译成机器语言,在这时程序被执行。CLR体系结构有以下几个优点:
· 更少的涉及内部测量
· 广阔的工具支持
· 更简单的配置(“DLL Hell”结束)
· 更精确的尺度
· 支持多种编程语言
· 拥有一个公共数据类型系统
有关CLR的特点详见下图:

当然,这些概念并不是真正意义上的革命,象碎片收集已经提出了几十年。CLR看起来像Java虚拟机,而IL类似于Java字节代码。尽管如此,但是对于习惯于开发Microsoft平台的程序员来说变化是根本的,其受益也是菲浅的。
多语言支持
CLR允许开发组在一个项目中运用多种语言,而且这些语言都能在一起工作。因为元数据额外的处理了所有的翻译,所以不需要接口定义语言。(原数据包括各类信息:运用软件的描述(名称、版本、共众关键字、输出类型、从属物等);基类和已用的界面;自定义属性(用户定义的和编辑者定义的)。)现在用Cobol, Fortran, C++, C# 和 PERL 完成一个单一项目是好是坏已是另外一个问题,但对于旧系统集成,多语言支持则是雪中送炭。(第三方已经着手于COBOL (Fujitsu), PERL, 和Python (ActiveState)语言支持。实际上计划中有50多个项目。)另外,Microsoft进一步改善了两大核心编程语言:C# 推动 C++进入21世纪,它抛弃了很多语言负债(支持指示器和选择案例失败,比如,Java等)VB.NET被大面积的修补,现在是一种真正的支持多态性、继承性等的面向对象语言。
公共类型系统(CTS)
.NET公共类型系统 (CTS) 是一套新型的公共数据类型,该公共数据类型在CLR中已被定义。包括所有的标准类型,int, float, double等;然而,CTS能使得程序员在较低的水平更好的完成数据类型转换。另外,从一种语言调用另外一种语言再也不需要奇怪类型转换或调用规范。
.NET框架类
结合CLR,Microsoft也开发了一套全面的框架类,其中有一些如下:

这些框架类最大的优点是无论你用何种语言工作都能达到同样的效果,像平方根操作调用。另外,各种语言都能达到同样的功能性。框架类里的功能性包括用户界面(Windows Forms(传统的Win32应用程序);Web Forms(ASP.NET的窗体引擎);Server controls(服务器端的可再度使用用户界面);控制台应用软件及程序界面--互联网上可用的第三方应用程序的Web Services)。
WinForms和ASP.NET
WinForms仅仅是一个用来描绘标准Win32应用程序产生的名词。现在开发者拥有单一协调的类框架,而不再依靠三大不同的API:COM组件(ADO,MSXML等)、平台相关(Win32,Win16等)和语言相关(VBRUN,MFC等)。
在.NET下ASP网络发展框架经历了重大变化。例如,现在成熟的VB或C#(或任何被支持的.NET语言)是编程语言的选择,VBscript和JScript支持仅仅是对旧兼容性的许可。其它重大变化包括:
对HTML服务器控制的新支持(服务器支持会话状态)
服务器能处理客户事件
新型控制系列包括增强的Intrinsics、Rich控件、List控件、DataGrid控件,Repeater控件、Data list控件和确认控件。
对发展网络服务的新支持--通过互联网可达到的现成应用逻辑,其可用简单对象存取控制协议(SOAP)集成到.NET应用软件中。
为什么要用Java来实现.NET?
两个本质原因:
--即时跨平台支持
--与成熟的支持完备的Java技术的集成
从上述描述看,Microsoft隐藏了每个基础。从发展观点看,这是肯定的;
但从配置角度看,其中存在着障碍:跨平台支持。Microsoft的.NET体系机构
类似于Java,CLR对应于Java虚拟机,至少在理论上能运行于多个平台。
用Java虚拟机CLR和.NET框架类需要被转到目标平台,而这一转换并不是无关紧要的任务。例如,广为传言Corel正在致力于一个Linux.NET端口,尽管它最近财政上受挫,任何具体的时间表仅是如意算盘。本着这一目标,Halcyonsoft(http://www.halcyonsoft.com)开始了运用Java这一很多平台支持的框架来开发.NET框架。Halcyonsoft的Instance.NET项目的优点是一旦完全转换到Java,.NET应用软件将能在任何支持Java的平台运行,从S/390主机到IBM基于Linux的手表。
跨平台支持对于.NET网络服务的部署变得越来越重要。.NET网络服务即可以通过互联网整合到其它应用软件的.NET应用软件,本质上其需要配置到一个有最大正常运行时间的良好环境。例如,当网络服务主平台重新启动而导致交易周期性中断,如果你购买了前面所提到的包括在公司购物车软件里的税收表应用程序,情况会乐观一些。网络服务卖主的确有必要在一定的服务合同下对系统停机时间负责(希望有此合同)。就此移植关键任务的网络服务到像Solaris或OS/400等良好的平台对于双方都具有重大意义。实际上像IBM的S/390这种重负荷机能被用作网络服务伺服器,作为成千上万台Linux虚拟机的主机。
还有额外的好处是.NET应用软件也能捆绑像JavaBeans, EJB,及CORBA组件等基于Java的技术。这些.NET应用软件也同样能互相作用于来自Oracle, BEA, IBM和Sybase的大型应用服务器。
Halcyonsoft的Java.NET如何工作的?
尽管用Java复制.NET框架所需的开发努力是巨大的,但从开发者角度看实际操作应该是简单的。运用一个“il2java”的命令行实用程序,开发者能直接将他们的.NET应用软件的中间语言转换为Java字节代码或Java源代码(或者根据情况转换为这两种代码)。然后由被转换的Java.NET应用程序和必要的支持库组成的运行时软件包将产生并被配置到可运行Java的平台上。
当在Java平台上找不到一种特定的服务时,像Microsoft Office,我们将利用和更新我们的Java Bridge--RJAX。RJAX是一种高性能的桥服务器,它设置在Windows机器上,可以使Java应用程序访问.NET应用程序及旧的COM/COM+/ActiveX
对象和DLLs。现在2.1版本的RJAX是一个良好的、高速度的、易升级的解决方案,能使我们寻找到任何无法预料的Windows特殊的从属物。
下列图表表示了与Microsoft的.NET体系相联系的Halcyonsoft的.NET体系结构:

在Java.NET引擎和Microsoft后台服务之间的箭头表示上面讨论过的RJAX Bridge。
其它服务,像MSMQ和MTS被划为他们Java的相对部分,分别是JMS和JTS.因为他们的SOAP通信界面将在Java和原始.NET两个版本中保持一致,网络服务将会有明显的处理。
下图更详细的描述了Halcyonsoft的.NET的执行体系结构:

目前,Halcyonsoft正致力于开发Java.NET,并将于今年10月份正式推出其中的一部分-ASP.NET Beta版。为了获得更多的有关的应用实例,Halcyonsoft邀请其原有的iASP(Microsoft ASP的Java构架,可跨平台)用户及更多的开发者作为其测试者,Halcyonsoft将免费为其Beta版测试者作ASP.NET的案例研究。
Halcyonsoft目前在中国东莞、长沙设有两个分公司。如果你想成为iNET的测试者,请访问http://www.halcyonsoft.com获取更多消息。国内测试者可联系 [email protected][email protected]

你可能感兴趣的:(技术前沿)