Java 2 企业版 与.NET
作者: ZDNET CHINA
日期: 2002年01月29日
http://www.zdnet.com.cn/developer/news/story/0,2000081594,20036759-1,00.htm
MDR-EdO:欢迎大家来到JavaLive!今天的主题是JavaTM 2 平台企业版(J2EETM)与.NET
。这两个工作平台的功能都能够覆盖很多相同的领域,比如web服务,所以,把二者进行比较是很自然的。许多人对把J2EE™同.Net进行比较有何意义存在疑问,为了回答这些问题,我们很荣幸的请到了《Distributed and enterprise computing》的知名作者及顾问Jim Farley。Jim是哈佛大学IT中心的主要软件设计师,它可以回答大家的问题,那我们现在就开始吧-谁来提第一个问题?
MrWeb:很多人认为.NET在对WEB的设计理念上要优于J2EE™,因为.NET是专为WEB服务设计开发的。而J2EE只是一个翻版(也就是把APIs 象 JAXP 和 JAXR加入到了平台中),您认为这个观点有价值吗?
Jim Farley:这是个很好的问题,而且经常有人会问这样的问题。这里有很多实际的例子,微软花了很大力气来重新设计它的基础架构,就是为了使其适用于WEB服务。作为一个公开的标准,J2EE很自然的也会长期跟踪、升级它的一些协议、规范。但是如果你把商家和商家相比较(比如说微软和BEA,IBM),那么,你就会发现,在Java的领域里,存在很多模糊的WEB服务解决方式。对于Java团体来说,如果把这些模糊概念变成规范,那么,Java的发展必将会更好。
Al-Bandy: 在今后的几年里,您认为J2EE和.NET的竞争,最终会出现一个胜利者还是二者共存?
Jim Farley:我无法预测谁会是最后的赢家。微软有其自己独特的市场运作方式,同时,J2EE也有其强大的惯性和实力。我想它们会有效利用企业空间,在中短期内按某些方式同时存在。
Bob Rodes:在我看来,二者的主要区别好象在于标准的公开程度上,.NET更保守一些,J2EE更公开一些。有没有横向或纵向的交易额的比较?.NET要快一些但要受限于微软平台,J2EE慢一些但不受平台限制。是不是由于过于简化而是性能降低了?
Jim Farley:快慢只是一个相对概念,在衡量交易量上有很多这样的因素需要考虑。但是无可非议的是,.NET对于Wintel环境而言是最佳的选择。但是,在J2EE架构了也没有什么因素妨碍商家开发类似于"Wintel-optimized"的J2EE运行环境(当然,这里面也有许多恶意诽谤者)。
nigelk:现在在WEB服务上使用XML已经使平台或技术的概念逐渐独立了,因此,J2EE 或.NET能否提供更好的工具或平台不应该成为主要的问题。
Jim Farley:非常正确。在理想环境下,这两种平台在WEB服务规范和支持基础架构上应该毫无关联的,与"SOAP/WSDL/UDDI"相互融合应该是一个很好的机会。但是,一般商家的"value-add"问题会仍然存在(微软就是一个最大的商家,但却不是唯一的一家具有保守心理的商家)。不公开化这一附加因素将会使WEB的集成会象使市场成熟那样困难。
Fogus:就微软认为C#即是Java这一概念,您是怎么理解的?为什么我们只能选其一?
Jim Farley:如果你能够忽略平台问题,那么严格上说你就要做一个人为选择:你最喜欢用哪种语法/编程模型/对象模型?就我个人观点来讲,这几种模型都是没有明确界限的,但是,平台会对此作一个硬性规定,Java是J2EE的基础,C#和一般运行环境是.NET单一平台的基础。因此,C#同java的比较实际上又回到了J2EE 同 .NET进行比较这一问题上。
Joe:针对Java Pet Shop的应用,微软对.NET及其性能、代码缩减等问题作了很多改进,针对这一点您有何评价?.NET的速度真的是更快吗?
Jim Farley:我想,很明显这只是一种推销手段而已。我认为所谓的代码缩减只是一个幌子,如果我单纯只是为了易于管理而缩减代码,这并不是明智之举,更谈不上其对基础架构有何真正意义。如果你要对不同商家的产品进行比较的话,只能比较它们的性能,而不能把.NET的某一方面的突出特点同J2EE的整体基础架构进行比较。
Al-Bandy:有什么功能是.NET能够实现而J2EE不能实现的?同时,有什么功能是J2EE能够实现而.NET不能实现的?这两者之间有什么明显的差别吗?
Jim Farley:如果要完整的回答这个问题可能要占用很多时间!如果想要更多了解这些,可以看看我写过的一篇文章Software Development里面提到了这些。在这里,我只能简单地说.NET在XML和Wintel集成方面比较擅长而J2EE则在方便性和可选择性上存在优势。
David from BofA:根据您所说的在J2EE 和 .NET之间不可能存在明显的区分界限,那么,对于一个初学者来说,哪一个更适合初学者来学习(假设必须选其一的话)。
Jim Farley:如果从内容以外来对两者进行比较是很困难的,这要看你为哪种类型企业工作、你的客户喜欢什么、你将来的技术/市场策划是什么等等许多因素。如果你打算只在微软这种只使用Wintel的环境下做一些前瞻性的工作(无论是为个人还是为企业),那么显而易见,.NET是首选之举。如果你认为自己不是唯一的商家,而是要考虑到来自于其他平台的竞争,或者你想把你自己的产品和客户发展到其他平台上,那么J2EE将是你最佳选择。
Joe:J2EE和.NET的工具好像都是遵循W3C标准(SOAP, WSDL),那么您认为哪一个是不标准的、自我封闭的?
Jim Farley:事实上,他们的确遵循这些标准,但是,商家也会"包含和扩展"它们的工具(例如,为封装协议增加"value-added"的扩展,或者是定义硬盘备份的有效载荷等等)。因此,如果他们完全100%遵循SOAP/WSDL/,那么,你就无需担心。但是正确与否就要看微软和J2EE了。
MrWeb:据我了解,.NET基础架构并不支持持续性管理,如果真是这样的话,这将是一个很大的缺陷
。
Jim Farley:从一定程度上来讲这是事实,COM+(.NET的一个组成模型)并不支持自动持续管理。同时EJB也需要CMP,在一定意义上来说,这确实是.NET的一个缺陷(有利必有弊)。但是,也有很多人认为,利用有效的"delivered value",利用EJB进行持续性管理和促使商家在J2EE平台上运行远不如把精力集中在其他领域上,象WEB服务。我个人比较同意这种观点。但是,从另一个方面讲,我认为积极的与Java进行沟通,相互取长补短,最后必将会取得突破性的成就,因此,对于J2EE我们应该两种态度并存。
greg: 如果这样与微软的CRL竞争发展下去,Java将会怎样发展?因为对于微软来讲,CRL是一个强大的开发工具,它能够让开发人员不需做额外的工作即可把时间代码应用到系统中,针对这一点,Java做何反应?
Jim Farley:我不同意在多语言环境下使用CRL来达到"不增加开发人员额外工作量"的这一观点。你应该学习一下CRL的结构模型和".NET-ified"语言的可变语法。但是,关于Java对于这一问题的反应,我们已经看到和听到了象ForteTM软件等以Java为核心的多语言支持的反响。过去,尽管这些成绩并不表示它已经成功了,但是已经有很多为JavaTM虚拟应用的交叉编译器了。但是到现在为止,我还没有看到Sun和Java团体想要在这一领域的详细计划,当然我没有任何指责的意思。
nigelk:您是否有一些关于J2EE和.NET在统一市场领域内相比较的统计数字或者猜想?它们确实是在同一市场参与竞争吗?还是说微软有意在其传统领域内减少自己的规模?
Jim Farley:这是一个很好的问题,现在在我身边没有什么硬性的统计数字,同时我也不相信任何统计数字,因为它们都存在一定的偏见。但是现在我们所听到的一些信息在很大程度上是对的,微软不是做一个选择而是象.NET转变-这一转变将是更大更昂贵的转变。.NET现在吸引了许多中小企业,因为不但成本低,而且微软的工具也有很大优势。但是许多典型的大企业还是担心不同的开发环境存在需要协调不同的商家等问题,因此,对他们而言,Java就比较适用。当然,我并不是说事务不会向另一个方向发展,这只是我个人的一些观点。
terian3:上述许多关于反对使用.NET的讨论基本上都集中在它的方便性上,那么,你们对.NET CLI 和C#在其他平台上(象Mono project)的规范化有没有什么意见和想法,.NET的non-Wintel 运行环境的成功对J2EE有什么影响?
Jim Farley:我认为.NET的non-Wintel对市场是一个强有力的冲击,但是必须要得到微软的支持。尽管微软已经宣称其公开化和参与标准化(受一定的限制),但是其基础架构仍然在其控制之下。这样,如果没有微软的支持,如此反复,在下一个版本中将会与.NET的兼容性越来越差。如果微软同意把CLR/CLI绑钉到Linux和其它的non-Wintel平台上,那么在今后的竞争中,将会有一个戏剧性的转变。把一个标准同另一个标准相比较,就会正确的看待J2EE和.NET。但是,如果是那样的话,对于微软的发展方向将会有一个很大的转变,结果也会十分令人惊讶(就象Sun公开其Java源程序一样)。
sachin:当把J2EE和.NET相比较时,从平衡现有的系统投资的WEB服务角度来讲,二者之间的最大冲突在哪儿?
Jim Farley:这要看在你的概念里"bang for the buck"具体值得是什么?如果你仅仅是想把产品尽快投入市场上去,而不关心其长期发展的话,那么大多数人都会对微软的产品感兴趣(尤其是Visual Studio)。如果你指的是在现有基础架构投资上长期发展ROI的话,那么我认为,J2EE将会是最后的赢家。
Chris Riner:我想进一步了解J2EE和.NET,以便能对两者进行更深入的比较和学习它们的相关技术,您能否就关于这方面的书或资料给我一些建议?
Jim Farley:我刚刚想起来我还没有跟你们提到我的书,《Java Enterprise in a Nutshell》。至于.NET,现在有很多关于它的资料,象O'Reilly 和 Prentice Hall写的,但是具体名字我想不起来了。一般来讲,找一些没有偏见的客观的资料来学习,那些有一定主观色彩的文章不是最佳选择。
nigelk:J2EE与.NET之间的比较同其他旧有的平台或技术之间的比较是不同的。尽管是这种情况,但是我想,由于二者所能提供的功能非常相似,所以在具体选择哪一种工具上并没有明确的理由。要想做出选择只能靠企业自身的技术或经验。
Jim Farley:是的,我再说一遍这是正确的,我已经说过了内容就是一切-技术和经验是一个强有力的因素,另外的因素就是企业模式、用户需求以及市场发展趋势等等。就我个人经验而言,没有任何情况象.NET那样需要专门的平台和封闭性。因此,J2EE平台是我的选择。但是,这样也会出现很多情况。就象我们所提到的那样,估计二者的特性,选取一种适合自己的。
MDR-EdO:时间过得真快,感谢各位今天的参与,同时我们也讨论了很多问题,当然,我更要感谢Jim为我们做的精彩回答。
Jim Farley:感谢各位的参与,同时你们也提出了很多很好的问题,如果你们还对此有兴趣可以与我联系jfarley@alum.rpi.edu,我非常乐意听到大家关于J2EE和.NET在WEB服务上的一些观点和想法。因为我本人也在做关于这方面的一些研究课题。最后祝大家生活快乐。