日期:2012-08-10  浏览次数:20486 次

原创作者:Ashish Banerjee

翻译整理:51DOTNET CLUB(WWW.51DOTNET.COM)SLASH

目的:对JAVA与.NET框架共存的可能性做一个评估

目标受众:JAVA程序员和系统工程师

  

提要:

       首先是对JAVA 和 .NET平台的构成做一个分析,然后是我个人对JAVA如何形成的一个认识,接着是分析微软和SUN之间的合作与分歧,最后是JAVA与.NET合作的前景。

     
我个人强烈认为JAVA与.NET将在不久的未来逐步的统一起来。已经有很多关于整合JAVA和.NET的项目计划被提交到源码开放组织。在微软的MSDN,SUN 的JAVA站点,以及来自于ECMA 和 W3C.org的标准文档都可以看到有关内容。

  

简介

     JAVA与.NET继续发展下去,可能的两种结果:其中的一种退出竞争或是两种共存,而共存的可能性更大。JAVA得以生存的原因在于它的时间优势:它已经发展了六年;它在大多数的操作系统上可以运行;它得到了业界领导者如ORACLE、IBM的支持;并且使用JAVA进行开发的项目计划几乎覆盖所有的应用程序领域。


     而.NET的优势在于微软拥有90%的桌面操作系统市场,同时微软也开始采用SUN的市场战略,即将其特有的技术标准化。如:在远程通信上它向IETF(InternetEngineering Task Force)和W3C(World Wide Web Consortium)提交了SOAP(SIMPLE OBJECT ACCESS PROTOCLE)(类似于RFC-REQUEST FORCOMMENT);向ECMA (European Computer Manufacturer's Association)提交了C#语言和通用运行时(COMMON RUNTIME)基础结构的标准。

  

JAVA平台的构架

      JAVA平台包括JAVA语言,以及一套虚拟机——如JVM、KVM、CVM等——通过它们实现在PC机,手提电脑或是嵌入式系统上运行JAVA的字节码。同时,JAVA平台还定义了一整套覆盖面很广的API,它们被用来与微软的API协调或是相互竞争。如JDBC对ODBC,JTAPI对TAPI,JDO对ADO等等。因此,简要来说,JAVA平台包括语言,虚拟机,以及API库。


      由于使用虚拟机机制,所以JAVA语言在所有的平台上只有唯一的版本,因此它使用RMI(远程方法调用Remote Method Invocation)协议进行远程通信;微软则在.NET框架中使用DCOM——正在逐步演变为SOAP(简单对象访问协议)。


      SUN最初对JAVA的宣传是“一次性代码编写,所有环境下运行”,但在推出了“J2EE” (Java 2 Enterprise Edition)和“J2ME” (Java 2 Micro Edition)后不得不收回了它最初的宣传,因为“一种尺码的鞋适合所有的脚”的解决方案并不能很好的工作。

   

.NET平台的构架

  

     .NET框架包括C++, VB.NET (VB 7.x) 和 C# 等一系列语言;与JAVA虚拟机类似的一套运行时环境;以及一套倾向与WINDOWS体系的API接口。其中的运行时环境可能存在于一个浏览器、或是一个WEB SERVER、或是在操作系统中。将来也许在SQL SERVER中也可能存在这样的运行时环境。另外需要提及的是微软的SOAP协议,它在继承了DCOM的一些特性的基础上发展起来,基于XML格式通过HTTP进行传输。SOAP的JAVA版本,可以在http://xml.apache.org上看到它的有关文档。

  

发展历程

  

JAVA最初来源于SUN的一套为机顶盒设计的语言,当时的名字是OAK,SUN将之更名,并将它放在INTERNET上作为开放源码共享。随着专门为网页设计的JAVA APPLET的出现,JAVA语言迅速在INTERNET上流行起来。当时的浏览器主要是NETSCAPE。当微软发现明天市场的主宰可能是浏览器而不是桌面系统时,开始着手对NETSCAPE进行收购,在收购计划失败后微软发展了自己的浏览器IE。



当时的INTERNET需要一种语言,而JAVA适时的出现了,由于它与C++的许多相似的语法,使得很多程序员转向了JAVA。而它确实具有很多优势,以至于在98年秋,它的反对者微软在MSDN中都宣称,JAVA是编写COM组件的最佳语言。


随着JAVA一起出现的还有LINUX操作系统和APACHE服务器。这三者的联合在服务器端的应用表现出强大的威力,以至WINDOWS NT在企业级服务器市场受到了很大的冲击。


98年出现的DHTML和JAVASCRIPT导致了JAVA APPLET在网页设计领域的淡出,在这里有两方面因素:一、大部分APPLET效果现在都可以由DHTML完成;二、而DHTML对带宽的要求更低。但是JAVA因为在服务器端的应用仍有市场,而得以继续发展。这是开发源码的支持者为JAVA添加了活力,首先是APACHE提出的SERVERLET 和 稍后出现的JSP,这些在.com网站的程序开发中占据了一席之地。


JAVA平台首先以SERVERLET,然后是JSP,最后是EJB(Enterprise Java Beans),逐步向企业级应用拓展。EJB是一个面向对象的事务进程系统,有些类似于微软的MTS(Microsoft Transaction Server)。事实上MTS和EJB都不是很成功,因为它们都无法达到INTERNET应用的规模。


     就我的观点来看,JAVA最失败的时刻是,SUN通过法律手段向微软索赔$2000万,并获得成功的时候。微软从那时开始制订自己的.NET计划,同时也宣布了JAVA作为独一无二的INTERNET 平台的地位的结束。

  

展望


现在,我们能看到到还只是一个很混乱的局面。而在未来,我们将看到.NET的成熟,以及它和JAVA的融合。


JAVA将继续保持它的特点:跨平台的服务器端应用,如WAP服务器,或者是电信领域的如JAIN(Java API for Intelligent Networks,同时它在嵌入式系统中将继续保持它的优势,象智能卡、移动电话、PDA等。而我们还将看到.NET的成熟,当然这种成熟需要时间,可能是相当长的一段时间,就好象当年JAVA成长那样。


ORACLE 8i 及其更老一些的版本,充当着一个JAVA 运行时的载体的角色,这使得JAVA 得以与ORACLE 数据库引擎紧密结合;同样,.NET体系也会与新版本的SQL SERVER,紧密的结合,这将包括一个VES (虚拟执行系统)执行引擎。这将使程序开发人员可以在SQL 语句和存储过程中嵌入C#和VB.NET 的成分。目前,你可以通过调用DLL函数来使用扩展存储过程,但数据库本身并没有一个面向对象的运行时引擎与之相匹配。

  

未来的标志.NET 成熟的里程碑

   

非微软产品,包括服务器,桌面或是便携式设备的操作系统如Solaris, Linux和Palm OS的.NET接口。与JAVA核心的整合。比如说,针对CLI(Common Language Infrastructure)的JAVA编译器,针对JAVA虚拟机的C#编译器。SQL SERVER 或是 ORACLE 等数据库产品中整合的VES 引擎。由中立的第三方开发的开放源码的,完善的.NET平台。


可以预见到,微软将会赞助一些开放源码的项目,以使.NET 向UNIX 平台扩展,而这将有助于一些开放源码组织减少它们对JAVA的偏爱。