J2EE与.NET的区别

J2EE与.NET的区别

I. 序言


在这个白皮书里,我们会在为商业公司建立基于XML的Web services的两种产品中做一个强有力的比较:由太阳微系统公司设计的Java 2 平台, Enterprise Edition (J2EE)1 , ,另一个是微软公司的Microsoft.NET2

在这篇文章中,一些观点可能会冒犯你,但我们希望其中大部分观点能和你相通!所以当你阅读这篇文章时,请记住我们的三个承诺 :

1,我们承诺:在做比较时是在一个合理的,中立的和毫无偏见的基础上!
2,我们承诺:告诉您我们关于这两个技术比较的真实感受!
3,我们承诺:消除您关于市场中这两个技术的不安定因素!

尽管J2EE 和 .NET覆盖了大量的技术和标准,但我们会把焦点明确的集中在为web services建立服务器端这一点上。在读完这篇白皮书后,你会发现我们对这两个技术的比较,能够使你在设计web services时,做出选择!

首先,这个白皮书的前一半是基于web services,J2EE和.NET部分信息的。如果你已经掌握了这些技术,可以跳过这一部分,进入第二部分,那里有您感兴趣的关于两者比较的内容!

 

II. 介绍


第二代分步式处理已经到来。在过去的几年中,XML使得不同类型的处理环境能通过互联网交换信息。它提供了一个简单的方法来分享程序,数据。

在过去几年中,商业公司通过互联网提供他们的产品和服务。难道他们没有提供web services吗?关于web serices的定义,Mind Electric公司的CEO、首席设计师Graham Glass, 是这样定义的:



“把一组功能的集合组成一个单独的实体,通过网络发布而为其他的用户或程序所共享。Web Services的作用是为开放的分步式系统建立分程序,使各公司和个人能迅速的少花费的建立他们全世界范围的应用系统!”



在Web Services到来之前,综合的企业应用程序是很难建立的,这是因为各个编程语言的不同和各个组织提供的软件中间件的标准也不同。两个使用相同语言和相同中间件的商业系统几乎是不可能遇到的。这些因素在综合的应用上使人头疼,并最终导致了过多的特为某应用而设置的,无法与其他系统共享的所谓“中间件”。简单的说,这些系统间的协同工作能力是笨重的,实行起来简直是痛苦!

但有了Web Services,任何应用程序都能长期的通过互联网络而综合在一起。Web Services的基础是XML的消息传递,其传递是通过标准的网络协议,如HTTP,这对任何一个编程语言、中间件和平台,都是一个很容易实现的通讯机制,这使得系统间的协同工作能力变得轻松。这些工业标准已被广泛的接受,对企业来说,使用这些技术是低风险的。在web services的支持下,你还能整合两个商业系统,部门或者很快的组合两个应用程序,并且这些是高效的!

web services的这些作用预知着这些服务会通过公共的或私人的商业注册系统来注册自己,这些web services会完整的描述它们自己,如界面结构,服务要求,服务方法和它们需要的条件和环境!使用这些服务的用户通过这些描述而明白这些web services的功能。web services将会是美好的,当一个服务被调用,它就会自然的去调用其他的服务来完成这项工作,并给用户一个完全针对个人的用户化的体验!为了让这些服务能动态的相互作用,它们需要通过用户的身份验证来共享信息。

 

通过已被广范接泛的技术来创建web services

在web services的身后是完整的理论体系,现在让我们来看看如何去创建和使用一个web service。

Web services现在只是旧技术戴着顶新帽子,它现在只是简单的基于XML的界面。下面的一些技术已经为大多数工业所接受,将是建立Web services的方法:



  • 供应商选择自己的编程语言,中间件和开发平台开发,装配Web services。
    • 各供应商定义一个Web services描述语言(the Web Services Description Language4 ),通过统一语言和标准来建立Web services。
      • 供应商在UDDI注册,UDDI能让供应商发布Web services,并能为他们的软件找到由其它供应商提供的服务,也就是大家资源共享!
        • 用户通过UDDI搜索他想要的服务。
          • 用户通过SOAP(简单对象ACCESS协议)来调用service的操作。SOAP提供一个类似XML的能通过HTTP描绘参数和返回数值的方法。这是一个所有Web services都遵守的协议。

            注意,以上的这些技术仅仅是对简单的Web services的。对于商业事务,多请求事务,计划,文件流,扩展的商业交易,就需要一个已经完全协议上的结构,这些应用程序的要求条件经常超出纯粹地基于SOAP的执行。这就是ebXML产生的动机,一套XML规范+相互联系的程序+为提供一个B2B协作综合基础的方法。

            注意上面的方法只是建立Web services的一种,你还可以有更多的选择,但是我们觉得上面的这些方法是极其重要的将会为广泛的工业所采用!事实上,我们还未能取得关于建立Web services完全一致的意见,现在还是有很多的其它解决方案,例如,关于SOAP的扩展,ebXML和服务流程描述,但它们都还未达成一致。但我们也有好的消息:
            • 绝大多数的开发商,包括SUN和Microsoft都在SOAP,WSDL,UDDI上达成一致,这些技术都会为未来提供一个良好的基矗
              • 所有的开发商都在共同建立Web services的标准。

                 

                The J2EE and Microsoft.NET

                如果你想建一个便于使用的web services,你就得使你的web services比须是可靠的,高度可利用的,能容错的,可升级的并且能在可接受的条件下完成任务。这些需要和任何其他的企业应用程序没什么区别。

                J2EE和.NET正是从现有的应用程序服务器演变而来,用于建立这些企业应用程序的。在它们的早期版本中,这些技术从历史的观点上看并不是用于web services的。现在web services时代已经到来,这两个阵营都正在各自的平台上重新设计他们的解决方案,任何一个平台都能满足您关于建立web services的需求。

                像XML协同工作,平衡载入,事务处理,在J2EE与.NET之间,两者有着太多的相似。你可以通过它们提供的服务轻松的写出你的程序,而不是像以前一样你独自的写出每一句程序。

                这样就可以让你专注于编写你想加强功能的那一模块。假如,你从事一家财务服务公司,你非常熟悉财务服务,但是比起像SUN,IBM,BEA,Oracle和Microsoft等这样的技术公司,你对web services的编程就理解甚少。你只需购买他们的相关程序包,你不必成为一个样样精通的编程专家也能建立一个基于财务服务的web services。你只要找到你商业事务中的随时可能遇到的问题就可以了,因为这部分可以由你自己来编程处理,而其它琐碎的程序编写就留给你购买的程序包去解决!

                现在,我们就开始看看J2EE与.NET的细节部分。

                 

                III. J2EE

                JAVA2平台,企业版(J2EE)是为单一的复杂问题,如有关部门发展,人员配置,项目管理等多级企业解决方案而设计的。J2EE是一个由SUN微系统公司提出的工业标准。

                你应该意识到J2EE是一个标准,而不是一个产品,这一点是很重要的。所以你没有办法去“下载”J2EE。你更适合去下载一套Adobe Acrobat PDF格式的有关描述应用程序与程序包之间的协议文档。只要双方都服从J2EE的约定,其应用程序就能在各种各样的程序包环境下运行。

                J2EE阵营的目的是使所有用户有权自己去选择他们要的产品和工具,这样也鼓励了产品间的竞争。这一目的的实现比须是J2EE已成为工业标准。为了使用户放心的买入,SUN公司同其他的EBusiness平台开发商(像BEA,IBM和Oracle)合作定义J2EE。SUN还发起了JAVA民间组织以汲取新的方案来不断完善J2EE。SUN公司做这些的原因是:他们不得不这样做以争取成功,他们想成为业界标准。


                Java: J2EE的基础语言


                J2EE体系构造的基础是JAVA语言。JAVA最激动人心的地方是他只用编程者写一次代码,就能运行在其它的平台上,具体如下:



                1,开发者用JAVA编写源代码。
                2,JAVA代码被编译成字节码,这是一个跨平台的中间代码,居于源代码和机器代码之间。
                3,当这些代码运行时,JAVA运行环境(JRE)解释这种字节码并且同时执行。



                J2EE是JAVA语言的应用。你的J2EE组件被转化成字节码在JRE下执行。


                J2EE和web Services


                J2EE从历史观点上看是一个用JAVA语言建筑服务器端应用的体系结构。它能创建传统的网站,软件组件或者是应用程序包。J2EE最近已被扩展成包括支持建立基于XML的web services。这些web services能同其它web services交互操作。

                J2EE web services发展模型如图1所示:

                J2EE与.NET的区别

                图1简要的解释如下:

                J2EE应用程序是一组企业应用程序,其由许多必要的服务程序集成,如事务处理服务程序,安全服务程序等。

                在商业层上执行商业处理和数据资料处理,在J2EE应用程序中,这些大多数是用Enterprise JavaBeans (EJB) components来建立的。这一层完成商业处理和数据处理,通过Java Database Connectivity (JDBC) 或SQL/J或使用Java Connector Architecture (JCA)的现有系统来实现数据库的连接。当然也能使用web services技术(SOAP,UDDI,WSKL,EBXML),这些是通过JAVA的API函数来实现的。

                商业伙伴能经web services技术(SOAP,UDDI,WSKL,EBXML)分享J2EE应用程序。一个小servlet,能接受来自商业伙伴的web service的请求。servlet使用JAVA的API来执行web services操作。

                传统的“胖”客户,像applets和应用程序直接通过EJB层来连接,因此这里没有必要与基于XML的web services协作。

                WEB浏览器和无线设备与JSP连接,使用户不必在乎它们与HTML,XHTML或WML之间的接口。

                 


                参考工具


                为了提供详细的说明,SUN公司也提供了J2EE的参考工具。程序员编写工具以保证其组件的可移植性。这些工具不应该是产品,它们仅仅是用来起测试的作用。
                 

                 

                额外的服务


                所有支持J2EE平台的厂家都能提供额外的服务,当然这些是在业界标准里找不到的,所以其中可能会影响移植能力,如扩展的EAI功能性,电子商业组件,高级的B2B集成。还有其它的一些特色,如平衡载入,是不影响程序代码移植性的,因为它们的服务是由底层的程序包提供的。

                 

                IV. Microsoft's .NET 平台


                Microsoft .NET是一组能使你建立良好的,企业级的web services的产品。注意,它们有一个重要的不同:.NET是一个产品策略,然而J2EE是一个任何产品都要用到的标准。

                .NET大量的改写了Microsoft早期开发平台的底层代码和组件,其中包括了许多现在正广范用到的技术,也包括MTS和COM+,消息队列(MSMQ),和Microsoft SQL server数据库。新的.NET结构取代了这些技术,并且包括了一个web services层来提高语言的支持能力。

                用Microsoft的.NET建筑web services的开发模型如下图:

                J2EE与.NET的区别

                关于上图的简要解释:

                .NET应用程序是运行在一个大型的程序包上,由其提供大量的服务,例如事务处理,安全保护和消息传输服务。

                商业层上用.NET的管理组件来建立.NET应用程序。在这一层上,完成的是商业处理和数据整理。它通过ADO.NET来连接数据,也可通过SOAP,UDDI,WSDL来连接你的商业伙伴。

                商业合作者们能由.NET应用程序通过web services技术(SOAP,UDDI,WSDL,BizTalk)来相互联接。

                传统的胖客户机,网页浏览,无线设备通过HTML,XHTML或WML与ASP.NET实现联接,高级用户界面则是由windows的窗体建立。

                 

                .NET 框架
                Microsoft的.NET实现了语言独立性和语言的互用性,这正是.NET框架中一个迷人的地方。一个单独的.NET组件能由VB.NET编写,也能由C#(一个新的面向对象编程语言)编写。

                它是如何工作的呢?首先,源程序被翻译成Microsoft Intermediate Language(中间代码),我们称其为MSIL,或IL。这种IL代码是一种与JAVA字节码类似的中性语言。

                IL代码接着被解释翻译成本地可执行的代码。.NET框架包含了一个通用语言运行库(CLR),与JAVA的实时运行环境(JRE)是类似的。CLR是.NET开发者的源代码与下层硬件的一个中间接口,所有的.NET代码最终都是在CLR上运行的!

                CLR提供了一些动人的特性,像自动垃圾收集,异常操作,跨语言继承,调试,还有各个不同版本组件“side-by-side”的执行机制。

                 

                .NET 服务程序
                .NET平台由以下.NET企业服务程序构成:

                SQL Server 2000 微软的关系数据库系统。

                Exchange 2000 Server 一个消息传输,协作平台,用于开发,运行核心的商业服务,现在已集成在Windows 2000中。

                Commerce Server 2000 提供简单的电子商务解决方案。

                Application Center Server 2000用于管理众多的服务程序。

                Host Integration Server 2000轻松的与其它平台相联。

                Internet Security and Acceleration (ISA) Server 2000 提供防火墙和网页缓存功能。

                BizTalk Server 2000 微软的基于XML的协作的电子商务解决方案。