Java 2 企业版 与.NET
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了。