深圳升蓝软件
数据库开发 .Net技术  |  ASP技术 PHP技术 JSP技术 应用技术类   
Hiblue Software

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


March 25,2004
从2000年下半年起,Microsoft开始发布有关.NET这一全新的应用开发环境,起先遭到了大部分人的怀疑,然而当Visual
Studio.NETBeta1出现时,其强大的功能让所有怀疑者改变了他们的观点。随着”冰雹”(一套Microsoft提供给其它厂商
能兼容自己应用软件的网络服务)的逐步执行,软件开发商开始领略到了在.NET环境下的巨大商业利润,从而逐步转向基
于它的软件开发。按照Microsoft的官方白皮书,.NET将可运行于non-windows平台,然而众所周知,Microsoft为了使其
Windows操作系统在市场上占据更大的份额,将不会使.NET很好地运行在别的平台之上。既然如此,如何将.NET这一优秀的
开发环境移植到别的平台?
Halcyon Software, Inc. (http://www.halcyonsoft.com.cn 或 http://www.halcyonsoft.com) 继成功开发了iASP(可将
MS ASP运行在任何Non_Windows平台)之后,现针对微软全新.NET开发环境,正致力于开发Instant.Net,以将其进行跨平台
移植。
首先,让我们了解一下MS.NET基本框架和它将来可能实现的功能,接着描述Halcyon对Instant.Net的大体框架,特别是如
何从Java的基础上重建.NET框架,以及该产品将会给用户带来的巨大好处。
.NET的大体结构
总的来说,.NET可以分为三个部分:
--.NET框架--一个全新设计的开发环境,使开发者更容易建立网络应用程序和网络服务。
--.NET产品--基于.NET平台的Microsoft开发的应用软件,包括Office和Visual  Studio。
--.NET服务--协助第三方开发者创造.NET平台服务(网络服务的范例是一套州,郡,市的税务表格,这些表格被提供给电
子商务购物车的开发者,这样他们可以代理网上购物的销售税务而免去庞大的数据维护管理额外开销的担忧)Microsoft
的”冰雹”起初实际上是一举将最流行的网络服务包揽于"Microsoft"这一品牌名下。
新的.NET发展框架还可以细分,大致分为三个部分:
--一个运行时引擎,被称为“公共语言运行时”(CLR), 它处理存储分配,错误处理,运行和管理代码 
--一套功能齐备的类库,包括所有的 .NET 开发时所需要的基础类。
--两种高级的开发技术,提供给网络应用软件(ASP.NET) 和常规Windows应用软件(Windows Forms)。
有关.NET框架的各模块及它们之间的相互关系,详见下表:


.NET框架可以缩短开发周期(代码重用,减少编程难度,支持多语言),也可以更容易的配置(配置的移植通过简单的
XCOPY即可完成),而且真正的垃圾收集器的出现使得错误减少,并且使得应用程序更灵活,更可靠。现在让我们仔细考察
一下.NET框架的各个模块。
公共语言运行时(CLR)
CLR 将.NET应用软件被编译MSIL代码,并调用JIT将其编译成相应的机器代码,使运行过程具备以下几个优点:
更少的涉及内部管理

广泛的工具支持

更简单系统的配置(“DLL Hell”结束)

更好的稳定性

支持多种编程语言

拥有一个公共数据类型系统

有关CLR的特点详见下图:


当然,这些概念并不是真正意义上的革命,象碎片收集已经提出了几十年。CLR看起来像Java虚拟机,而IL类似于Java字节
代码。尽管如此,但是对于习惯于开发Microsoft平台的程序员来说变化是根本的,其受益也是菲浅的。

多语言支持
CLR允许开发组在一个项目中运用多种语言,而且这些语言都能在一起工作。因为元数据额外的处理了所有的翻译,所以不
需要接口定义语言。(原数据包括各类信息:运用软件的描述(名称、版本、共众关键字、输出类型、从属物等);基类和
已用的界面;自定义属性(用户定义的和编辑者定义的)。)现在用Cobol, Fortran, C++, C# 和 PERL 完成一个单一项
目是好是坏已是另外一个问题,但对于旧系统集成,多语言支持则是雪中送炭。(第三方已经着手于COBOL (Fujitsu),
PERL, 和Python (ActiveState)语言支持。实际上计划中有50多个项目。)另外,Microsoft进一步改善了两大核心编程语
言:C# 推动 C++进入21世纪,它抛弃了很多语言的失败之处(支持指针和”select case”语句,但是,您认为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等)、平台相关API(Win32,Win16等)和语言相关API(VBRUN,MFC等)。
在.NET下ASP网络应用程序开发架构经历了重大变化。例如,现在成熟的VB或C#(或任何被支持的.NET语言)是编程语言的
选择,VBscript和JScript支持仅仅是对旧应用程序的兼容。其它重大变化包括:
对服务端HTML控件的新支持(服务器支持会话状态)
服务器能处理客户事件
新型控制系列包括增强的Intrinsics、Rich控件、List控件、DataGrid控件,Repeater控件、Data list控件和Validation
控件。
对新型的Web Service开发的支持—包装应用程序逻辑使其可在Internet上通过SOAP整合到.NET应用程序中。
为什么要用Java来实现.NET?
两个本质原因:
--JAVA语言直接地支持跨平台
--与成熟的Java技术集成
从上述描述看,Microsoft涵盖了各个技术的底层支持。从一个.NET应用程序开发者的观点看,这是很好的;但对希望.NET
跨平台支持的人,则设置了障碍。
Microsoft的.NET体系机构类似于Java,CLR对应于Java虚拟机,至少在理论上能运行于多个平台。像Java虚拟机的跨平台
一样,CLR和.NET类框架需要被转换到目标平台,这一动作相当重要。例如,广为传言Corel正在致力用这种方式进行  
Linux  .NET的移植,但最近财政上受挫,任何具体的计划仅是如意算盘。本着这一目标,Halcyon开始了运用多平台支持
的Java语言来开发.NET框架。Halcyon的Instance.NET项目的优点是.NET应用软件一旦转换完成,将能在任何支持Java的平
台运行,从S/390主机到IBM基于Linux的手表。
跨平台支持对于.NET Web Service部署变得越来越重要。.NET Web Service是可以通过互联网整合到其它应用软件的.NET
应用软件,本质上其需要配置到一个有最大正常运行时间 ,功能强大的运行环境。例如,当网络服务主平台重新启动而导
致交易周期性中断,如果你购买了前面所提到的包括在公司购物车软件里的税收表应用程序,情况会乐观一些。Web
Service卖主的确有必要在一定的服务合同下对系统停机时间负责(希望有此合同)。就此移植执行关键任务的Web
Service到像Solaris或OS/400等良好的平台对于双方都具有重大意义。实际上像IBM的S/390这种重负荷机能被用作网络服
务伺服器,作为成千上万台Linux虚拟机的主机。
还有额外的好处是 Instant..NET应用软件也能捆绑像JavaBeans, EJB,及CORBA组件等基于Java的技术。这些.应用软件也
同样能和来自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。Web Service 很明显是通过SOAP通信协议进行处理。 这一点将在
Java.NET和原始.NET两个版本中保持一致。
下图更详细的描述了Halcyon的.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]。  
       
Copyright © 2001-2008 Shenzhen Hiblue Software Team All rights reserved