帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > JAVA编程
浅析J2EE与.NET平台优劣
作者:佚名 发布时间:2005-04-02 来源:不详
 
  毫无疑问,程序员,软
但是选择一个在性能,价格
在技术上做一个简单的比较
件开发商,企业IT经理一直都在
,时间上满足他们需求的平台却
,希望对于他们做选择时有所帮
密切的关注着J2EE和.NET的发展,
并不是一件简单的事情。本文试图
助。

  一.技术概观                                                                 

  在表现形式上,J2EE是
用提供分布式的,高可靠性
对照:
一组规范,而.NET更象是一组产
的解决方案.它们在架构上有着

品。但它们的目的都是为了企业应
很多的相似之处,下表是一个简单


  J2EE .NET                                                           
  通信协议 Remote Meth
XML
od Invocation over Internet

InterOrb Protocol (RMI/IIOP),

  编程语言 Java C#,VB.NET,COBOL                           
  运行时环境 Java Virtual Machine
(JVM) Common Language Runtime (CLR)
  胖客户端 Java Swing Windows Forms                   
  目录服务 Java Naming and Directo
Interface (ADSI)
ry Interface (JNDI) Active Directory Services

  数据访问 Java Databa
se Connection (JDBC) ,Java
Connectors ADO.NET
  异步消息处理 Java Message Servic
e (JMS) Microsoft Message Queue
  表示层技术 Servlets
, Java Server Page(JSP) ASP
.NET
  中间层组件模型 EJB,JavaBean COM+,COM                   
  安全访问 JAAS COM+ Security                               
  Call Context                                                     
  事物处理 Java Transa
Coordinator (MS-DTC)
ction Server (JTS) Microsoft

Distributed Transaction

  开发工具 WebGain Visual Café                             
  Borland JBuilder                                             
  IBM VisualAge 等                                               
  (第三方提供,规范本身没有定义) Visual Studio.NET         


  J2EE平台的构成                                                           

  EJB - J2EE 中间层,完成商业逻辑;                                 

  JAAS - J2EE 处理认证和授权的API;                             

  Java Connectors - J2
EE 用于连接异种数据源的API,
对上层来讲是透明的;

  JSP, Java Servlets - J2EE的表示
层技术,用于生成用户界面;

  Java Virtual Machine - Java 语言运行环境;       

  JDBC - J2EE数据库访问;                                           

  JMS - J2EE的异步消息队列;                                         

  JNDI - J2EE的名字查找API,独立于目录服务器;                   

  JTS - J2EE用于处理交易的API;                                   

  RMI/IIOP - J2EE的分布式对象的通
讯API,提供了和CORBA交互的能力。

  .NET平台构成                                                             

  .NET Framework - .NET应用运行的基础;                   

  IL (Intermediary Lan
中运行;
guage) - 所有的.NET语言首先

被编译成该中间语言,然后在CLR


  SOAP - 用于服务访问的工业标准;                                       

  DCOM - 组件间通信协议;                                               

  MS-DTC - 用来在.NET平台上使用两阶段提交协议来处理分布式交易;   

  CLR - .NET应用的运行时环境;                                       

  COM+ - .NET的中间层模型,用于构建商务逻辑;                       

  ADO.NET - .NET 对数据访问的API。                           

  此外.NET平台还包括其
NLBS (Network Load Balan
(Host Integration Server
供象防火墙,安全访问,B2
过选择第三方产品来满足类
他一些产品象Application Cent
cing Service),Commerce Serv
),ISAS (Internet Security a
B交易,负载平衡等服务.J2EE规
似的要求。
er Server,BizTalk Server ,
er,Enterprise Servers,HIS
nd Acceleration Server)用来提
范本身没有定义这些服务,但可通


  二.技术比较                                                                 

  1.一 vs 多                                                             

  一种语言vs多种语言,一个平台vs多
乎是所有问题的焦点。
个平台.这似乎是大家最喜于津津乐道的话题,也似


  两种平台主流的开发语
全模型,分层的命名空间,
软并不这样认为,微软的说
言的精华,对它们共同的核
(object-simplification)
它在书写上有别于Java。但
它的原始类型的定义更严格
但即是Java,其有些特性也
在的表现形式,更重要的是
可以被编译器用来直接生成
software)强调了自解释( s
Definition Language),GU
可以任意的被加入到其他语
难维护性也是不言而喻的。
言Java和C#在架构上有着惊人的
垃圾回收等。所以从第一眼看上
明是:“它集成了C++, Java,
心思想象深度面向对象(deep ob
等都一一做了参考。”一方面,
另一方面,C#的严格的类型转换
,并且据微软声称没有影响到效
和Smalltalk颇有渊源.所以评价
其实实在在的功效.作为一种新
文档,C#的另一个特点:一站式
elf-describing) 的编码方式,
ID和其他复杂的接口无需再被引
言中.这无疑在多种语言混合编

相似:虚拟机技术,基于沙箱的安
去,C#简直就是Java的克隆。但微
Modula 2,C和Smalltalk等多种语
ject-orientation),对象简化
C#的大多数关键字来源于C++,使
等概念却明显来自于Java(当然,
率.),使其在内涵上有克隆之嫌.
一种开发语言的优劣不仅是看其外
语言,C#加入了基于XML的标记,
软件(one-stop-shopping
即头文件,IDL(Interface
用.也即是C#,VB.NET等代码片断
程的模式中是一次飞跃,但是,其


  微软的.NET的平台提供
一种语言都是在原有的基础
语言的程序员铺一条便捷之
的大手术.首先是观念变了
面向对象的语言,这就不是
.基于面向对象的软件分析
过程的转变对传统程序员来
了丰富多采的解决方法,但
直接使用C#.对于独立软件
多种语言,开发商必须同时
,这也使其软件的维护的成
了象C#,VB.NET,COBOL等多种
上改造而来.这是微软煞费苦心
路.但是,这些语言的改造与其
,Basic,Cobol等语言先天的缺
要求其传统的程序员仅仅熟悉一
设计开发测试是完全不同于基于
讲也是一个痛苦和漫长的过程.
对于实际问题而言,却怕是有些
开发商来讲,其转换成本不容忽
拥有多种语言专家和多个独立的
本已非线性的曲线增长.多样性
开发语言,C#是新的,而其他的每
并且也是不得以的要为习惯于这些
说是整容到不如说是一次开膛破肚
少面向对象的内涵,现在却变成了
些额外的关键字那么简单的问题了
传统过程性语言的质变,所以这一
在传统程序员面前,微软看似提供
力不从心.所以一个简单的办法是:
视.其次,在一个软件项目中使用
难以互相支援的开发小组,无疑的
是双韧剑,实施时需仔细斟酌.

  跨平台是J2EE的最大卖点,也是至今
范的软件时,其客户可以依据其喜好和实
软件到高端满足B2B需求的商业套件来搭
J2EE服务器的提供商为了使其提供其各自
就使得使用了这些特别功能的应用软件,
,这种差别会逐渐减小.
为止还绊住微软的栅栏.当开发商完成了符合J2EE规
力来选择不同应用服务器.从基于open source的免费
建自己的平台.但是由于J2EE的规范还不完善,各个
理解的完整的功能,不得不添加一些额外的特性.这
绑定到了特定的应用服务器上.随着J2EE规范的发展


  微软的跨平台解决方案
题.从技术角度讲,它除了
样一个重量级选手所推出的
是Web services,它解决的是异
以XML为介质之外没有什么新意.
,前景不容小视.构造和使用 We
种平台上不同应用之间的连通性问
但它的重要意义在于:它是微软这
b services 的过程较为简单:

  服务提供者用他所选择的语言构造服务;                                         

  服务提供者用WSDL(the Web Service
s Description Language)来定义该服务;

  服务提供者在UDDI (Un
该服务;
iversal Description, Discov

ery, and Integration )中注册


  使用者的应用程序从 UDDI中查找已注册服务;                               

  使用者的应用程序通过
使用HTTP来传递基于XML为
SOAP (the Simple Object Acc
表现形式的参数)
ess Protocol )来调用服务.(SOAP


  正如我们所讨论的: Web services解
更迫切需要的是如何在异构的平台上构造
误恢复能力的企业应用.缺少这一点,从
决的是异构平台上服务连通性的问题,但在现实中所
具有可扩展性,高可靠性,高可用性,故障冗余,错
结构上讲,.NET平台还远未完善.

  2.中间层                                                                   

  基于组件的软件开发技
在J2EE构架中, JavaBean
JavaBean 有着类似的模型
,具有以下一些特性:
术可以在较高的级别上实现软件
和EJB(Enterprise JavaBeans)
,但它被用来创建分布式的企业

复用,加快企业软件开发的进程.
被用来完成事物逻辑.其中EJB和
应用.它定义服务器端组件的模型


  生存期模型;                                                                 

  访问模型;                                                                   

  安全模型;                                                                   

  事物处理模型;                                                               

  会话处理模型;                                                               

  数据封装模型;                                                               

  部署模型                                                                     

  根据这些模型,简单的编码就可完成复杂的功能。                                 

  在微软的.NET平台中,旧的COM 和 C
于沙箱的安全模型和垃圾回收等功能.并
型等.旧有的COM和COM+组件也可被映射到
OM+的组件模型被新的组件模型所代替。增加了象基
且实现了多重接口继承,扩展的元数据和新的代理模
新的运行环境中。

  综上所述,两众架构在基于组件的中
,高效的,高可靠性的的应用程序都有着
间层的设计上各有千秋,对于创建分布式的,复杂的
足够的能力。

  3.表示层                                                                   

  两种架构都同时支持胖
了替代Java AWT的Java Swi
结构的表示层,J2EE使用 s
现。
客户端和瘦客户端.即C/S模式和
ng,同时作为可视化组件的Java
ervlet ,JSP(Java Server Pag

B/S模式.对于C/S模式,J2EE提供
Bean也可用来构造系统。对于B/S
e) ,HMTL,WML,XML等工具来实


  微软的胖客户端技术则
Windows Forms 被插入到.N
model)中.在瘦客户模型中
ASP.NET 中,C#,VB.NET
语言( Intermediary Langu
compiler)编译,最后运行
,其运行速度要远远快于AS
由 Windows Forms代替了MFC.它
ET的运行时框架(runtime frame
, ASP.NET代替了旧有的ASP和
等语言的代码片断可被自由引用
age),然后再被 中介语言及时
于公共语言运行环境中,并且 A
P。
们起的作用相同,在结构上
work)和组件模型 (component
HMTL, WML ,XML作为表示层。在
.ASP.NET 页面被首先转换成中介
编译器(just-in-time IL
SP.NET 提供了页面的缓冲,所以


  大体上,两种架构所使用的表示层的
在伯仲之间。
技术非常类似,虽在细节上各有所长,但总体功能当


  4.数据访问                                                                 

  J2EE 和 .Net 已不同的形式支持数
并且通过连接,命令语句和结果集来对数
据封装和数据管理是通过实体EJB (entit
捷,管理更方便.事实上,由于实体EJB的
发而使数据库产生的瓶颈.也可以采用不
TopLink。
据的访问。JDBC和ADO一样和所连接的数据库无关,
据进行操作.所以属于中间层次的 API.更高一级的数
y EJB)来完成的.基于容器管理的实体EJB使开发更快
load()和store()方法的同步机制,将大大缓解因并
属于J2EE规范的第三方数据访问工具,象WebGain的


  而微软的.NET的数据访
为输出的数据源都可以作为
令语句则升级为数据集命令
些,基于XML的特性使其可
穿透防火墙,使沟通更为便
量和有网络瓶颈的应用中的
更有效.并且通过对应用程
是可以无缝的整合的。
问工具则由基于XML的ADO.NET代
ADO.NET 的数据源.相应的结果
(DataSetCommands).从形式来看
以处理极其丰富的数据源,并且
利.但由于XML本身的基于标记的
使用.而J2EE的数据访问规则则
序有效的层次的设计,对于数据

替了基于COM组件的ADO.任何以XML
集升级为数据集 (DataSets),命
,微软的ADO.NET更新潮和时髦一
,因其构架在HTTP协议之上,易于
特性,很明显限制了在有超大数据
显得略有单薄,但同时却更简单,
库和基于XML的数据源的访问,也


  三.整体评价                                                                 

  在微软还没有足以和Ja
once, debug everywhere"
欢它的方式是让它死去,他
,形式不同了,微软有了足
做各种比较。最热闹的应该
合比较了.有兴趣的读者可

va平台相对抗的产品的时候,微
。而它的对手则更乐于这样评价
们当然也憎恨它,他们甚至憎恨
以自豪的.NET他们可以已他们自
算是微软出示的第三方对.NET P
以到MSDN,www.onjava.com,IB

软所乐于做是大声的宣传:"write
它:"微软开始也喜欢Java,他们喜
每一个以J开头的单词。"但是现在
己所喜好的方式来对J2EE和.NET来
et Shop和J2EE的 Pet Store的综
M开发者原地等网站看到相关评论


  &bsp; J2EE .NET                                               
  易用性 ** ***                                                         
  扩展能力 *** **                                                       
  多平台支持 **** *                                                     
  多语言支持 * ****                                                     
  可靠性 *** ***                                                       
  性能 *** ***                                                         
  可管理性 *** ***                                                     
  重用性 **** **                                                       
  负载平衡 *** ***                                                     
  开放标准 ***** *                                                     


  就企业而言,内部众多
都是J2EE的优势,也是微软
补软件的不足.开放标准,
WebSphere和BEA的WebLogic
观。
系统的整合、系统的延展性、安
的不足处。 在效率方面,J2EE
功能强大,易于移植这些都是J2
在J2EE市场占了大半壁江山,而

全性是更需要注意的议题,而这些
阵营主张通过硬件的效能增加来弥
EE的卖点。但让人奇怪的是IBM的
作为规则制定者的SUN却在做壁上


  微软确实提供了从桌面
但统一平台的使用者可能要
许可证的汪洋中.更简单,
更完美的技术解决方案。
的办公软件,开发工具,到后台
牺牲跨平台的好处,并也有可能
更快捷,更高效是微软的目标,

服务器数据库的全方位的产品。
由此就被无穷无尽的锁定在微软的
随着时代的发展,我们也许会看到


  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·浅析J2EE、J2SE和J2ME  (2005-04-02)
 ·浅析数据完整性问题  (2005-03-12)
 ·浅析J2EE与.NET平台优劣  (2005-03-12)

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·DiscuzX2.5会员整合通行证发布
·帝国CMS 7.0版本功能建议收集
·帝国网站管理系统2012年授权购买说
·PHPWind8.7会员整合通行证发布
·[官方插件]帝国CMS-访问统计插件
·[官方插件]帝国CMS-sitemap插件
·[官方插件]帝国CMS内容页评论AJAX分
   类别最新
·谈谈JDBC
·JDBC专题介绍
·JDBC接口技术
·利用weblogic的POOL(连接池)连接
·Jsp中调用Oracle存储过程的小例子
·JSP数据库操作例程
·JSP数据库连接大全
·用连接池提高Servlet访问数据库的效
·一种简单JDBC连接池的实现
·数据库连接池Java实现小结
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统