`
- 浏览:
69527 次
- 性别:
- 来自:
深圳
-
Net和J2EE的争论一直没有停止,我也参加过“程序员”杂志主持的“.Net和Java之争”之类的讨论,本来这两种技术都是为用户提供了竞争性的选择,对于用户来说是一件好事,多种选择远胜于单一选择。
但是,一些个别人员或狂热者因为一些目的,故意扭曲J2EE,一叶遮目,因此必须针对这些谣言和误导澄清一些技术细节如下:
误导一:
Java阵营对EJB的看法
(1)J2EE项目中只有10%使用EJB
“EJB makes Java look bad. ”
(2)Sun’s Java PetStore:
“write your data persistence twice” . “bi-modal data access layer”
(3)IBM Redbook: 不要使用EJB, 用存储过程
(4)James Gosling, Borland Developer conference, May 2002
You have to manage it by ignoring it. The complexity of J2EE is pretty extereme…There’s a dirty little secret about J2EE; most people don’t need J2EE;
澄清一:
(1)“J2EE项目中只有10%使用EJB”
这是很早以前的过去式统计,过去有10%使用EJB,不代表将来就只有10%使用EJB。
对EJB反感主要来自于Java阵营中那些Web层所谓轻量级开源软件开发者,他们的理想是将所有业务(包括持久层)都包括在Web层中,用JavaBeans完成,自己实现缓存、对象池以及事务机制等等,这些底层技术很明显是发烧级别的技术,在一般商业应用中如果也要靠程序员自己完成这些低层机制,那么最后Java都没有人使用了。
EJB帮助一般商业应用实现了这些底层机制,无需开发者自己实现,所带来的条件是开发者必须按照EJB规定来开发程序,EJB使用的这些限定条件对于那些倡导自由的狂热发烧级别的开源开发者来说,简直是无法容忍的,我已经在很多英文媒体上看到这种不满和攻击。可笑的是,国内有些刚涉及Java的程序员为了显示自己是一个高手,进行项目咨询时,第一句就是:我不要EJB。
(2)Sun’s Java PetStore
SUN的Petstore只是J2EE设计思想的一个展示品,它离实践有一段距离,而且它没有加入一些优秀的开源软件开发框架,致使它的性能等指标都存在一点问题,这点问题就成为.Net攻击Java的口实,其实,这点在国外已经达成共识了,因为这种攻击如同指责时装模特的时装无法穿到大街上一样可笑。
(3) 不要使用EJB, 用存储过程
了解J2EE的人已经知道,EJB不只是操作数据库,因此这句话可以理解为,不要程序持久层,只用数据库的存储过程,如果真是这样,.Net也无需诞生,全世界软件业只有数据库,也没有cobol、java等其它可操作数据库的语言了。
数据库存储过程是提升数据库性能的一个方向,是一种“向下思维”,把活向细处做,说句开玩笑的话,大概直接用汇编语言将数据库和数据操作一起实现性能是最快了。“向下思维”的一个缺点是会过分依赖数据库厂商,通用性不强,同时业务逻辑也可能混淆在存储过程中,很多存储过程的复杂语句包含了非常多的业务逻辑在里面,大概只有编制者才了解这样的奥妙,这种情况不是软件工程中愿意看到的。
还有一种思维是“向上思维”,通过层、架构来提升数据库系统的性能,设立专门的持久层负责数据库操作,使用缓存Cache以及多台分布式Cache将是一个新的方向,将数据库数据放在内存中,既做到程序的数据库操作通用性,不依赖具体数据库产品,又具有可拓展性和伸缩性。。
(4)James Gosling也不喜欢J2EE
这位号称Java之父的程序员也不喜欢J2EE,我想其中一个很大原因大概是Java的发展已经出乎他的意料 之外,而且不为他控制的超前发展了,幸亏他不是J2EE之父,否则,我倒是也要放弃J2EE了。
(5)小结
有人说过,Java的毁灭可能来源Java社区本身,在这个充满活力和创新的社区中,有多种先进的J2EE开源软件支持着更广阔的商业应用,当然也难免有争议和指责声,后者容易被对手利用,但是我们已经知道,最可怕的还是,永远只有一家公司的一种声音。
--------------------------------------------------------------------------------
误导二:
有各种统计数据如Web测试、分布式测试或性能测试等对比显示,J2EE明显不如.Net
澄清二:
独立的middleware-company.com公司在其首页明确指出:
According the Gartner Group, 70% of Java projects fail due to lack of skills
上述测试数据来源于如何正确使用J2EE,如何使用J2EE是一个很大的学问,如果没有使用正确,那么就会导致上述测试结果。
--------------------------------------------------------------------------------
误导三:
.Net与J2EE是企业应用解决方案的技术
.Net与J2EE在体系结构和主要技术上有明显的对应性
.Net与J2EE的差别主要体现在开发效率, 性能, 成本和可靠性上
独立的MiddleWare测试表明, .Net在开发效率, 性能, 成本和可靠性上明显优于J2EE
澄清三:
前面三句是正确的,最后一句是偏颇的,这句混杂在三条正确语句后面,就具有误导之嫌!
开发效率:
如果将.Net的强大开发工具和环境和J2EE的ant以及EditPlus编写J2EE这样开发方式相比,当然是前者给初级用户带来很大的开发效率和方便,但这种类比是不公平的。
使用Borland JBuilder 8.0以后的开发工具,在J2EE开发效率上根本丝毫不逊色于.Net,J道提供这样的开发教程,非常方便。
性能:
性能永远是使用者的问题,如果把Java的性能归结于解释型语言等错误原因上,那还需要你多补一些Java的课程。
如果需要开发出一个优异的性能系统,无论是.Net或J2EE,程序员和设计师都需要有专门的培训和咨询指导。
成本:
J2EE有那么多免费的开源软件支持,成本就几乎为零,J2EE服务器使用JBoss,使用Struts+EJB,JBuilder X将提供这种优美框架的可视化开发工具,多美好。
当然,.Net在中国使用也是“免费”的,因为几乎都是盗版,他也懒得管。
可靠性:
有多年成熟应用的J2EE技术带来的最大优点就是可靠性,每个技术细节直至底层,都可能是开源的,基于Linux的运行可靠性已经为更多实践证明,曾经收购易趣30%股份的eBay,全世界最大的网络拍卖系统,就是使用J2EE建立的,每天有多少关键业务在这个系统上运行?《J2EE核心模式》一书有很多模式来自他们的实践总结。J2EE在银行、保险等领域成熟应用的事例比比皆是,他们的多年运行经验都用事实证明了J2EE的可靠性。
相反,饱受病毒大幅度侵蚀的Windows系统才会给人带来可靠性的疑问,它的成熟应用也许刚刚开始。
--------------------------------------------------------------------------------
误导四
.NET的性能明显优于 J2EE :
Web应用服务
事务性能
XML Web 服务性能
澄清四
是否对Web服务(Web Services)优于支持,主要取决于支持这类标准的API是否丰富方便,作为Java的发明者Sun公司现在已经成为一个Java标准指定者,他的Java/J2EE产品实用性其实不强,Web Services作为最近由微软和IBM等倡导提出的标准,要落后于J2SE 1.3 API版本的推出,Sun不可能在短时间内将这些应用加入标准的JDK库,而且没有必要,有很多开源软件支持Web Service就非常优秀,如 Apache的Axis。
Web Services的概念其实是Java语言概念的Copy,如果你的系统都是使用Java建立,那么,Java提供的支持,无论性能还是拓展性等方面远远超过Web Services。
因为更多人知道Windows,因此更多人知道了Web Services,并为此激动,而忽视了几年前Java提出了同样思想,只因为不知道,但是他们是客户,这好像类似政治了吧,这里避开。
在我的书籍《Java实用系统开发指南》中,关于肥客户端.服务器模式下,我就推荐直接使用Http+EJB实现远程调用,省却Web Services中的XML转换带来的性能消耗。
Web Services的最大问题还是安全,这正如Windows的最大问题一样,如果他们认为这是他们的一贯产品特点,那么我们还在这里实现什么比较呢?
澄清误导五
主要一个误导言论是:来自TSS(著名Java社区theServerSide.com)的母公司middleware-company(TMC)向Java社区提交了一份J2EE和微软.Net应用架构的评测报告,Java开源精神领袖Rickard Oberg在第一时间分析了用于评测的源代码,以压倒性的证据推翻了TMC的结论。
但是,middlerware-company这份报告还被别有用心的少数人作为诋毁J2EE的证据。
[size=x-small][/size]
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
**J2EE(Java 2 Platform, Enterprise Edition)**是Java平台上用于开发和部署企业级应用程序的框架。自1990年代末由Sun Microsystems推出以来,它已成为业界广泛采用的标准,尤其在构建分布式、多层架构的企业系统...
关于j2ee的介绍包括一些J2EE初学者需要注意的问题和基本的框架
j2ee j2ee j2ee j2ee j2ee j2ee j2ee j2ee j2ee
J2EE(Java 2 Platform, Enterprise Edition)是Oracle公司推出的用于构建企业级分布式应用程序的框架,它提供了丰富的服务和组件,包括Servlet、JSP、EJB(Enterprise JavaBeans)、JMS(Java Message Service)、...
### J2EE 指南知识点详解 #### J2EE 概述 J2EE(Java 2 Platform, Enterprise Edition)是一种广泛应用于企业级应用程序开发的平台标准和技术框架。它基于Java SE,并针对大型分布式系统提供了更为丰富的特性和功能...
给入行JAVA开发小白,需要学习的知识点归纳和总结。可以下载
J2EE J2EE J2EE J2EE J2EE J2EE J2EE J2EE J2EE J2EE J2EE J2EE
这篇指南是为爱好开发和部署J2EE应用程序的程序员准备的。它包括了组成J2EE平台的技术以及描述如何开发J2EE组件并部署在J2EE软件开发包上。 这篇指南不是为J2EE服务器及工具供应商准备的,它没有解释如何实现J2EE...
J2EE(Java 2 Platform, Enterprise Edition)是Oracle公司推出的用于构建企业级分布式应用程序的框架,它提供了服务器端的编程模型和运行环境,支持多种服务,如事务处理、安全、集群、数据库连接等。本实例集合将...
### J2EE学习经验和流程 在IT领域,Java平台一直占据着重要的位置,而Java 2 Platform, Enterprise Edition(简称J2EE)则是用于开发可移植、健壮、可伸缩且安全的多层Web应用的企业级解决方案。本文将根据提供的...
4. **JMS 1.1**:加强了消息传递功能,支持点对点和发布/订阅模式的消息传递。 5. **JTA 1.0**:提供了一致的事务管理API,使得应用可以跨越多个资源进行事务操作。 **J2EE 1.4:** 发布于2003年,1.4版本的重要...
j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar...
J2SE+J2EE所有知识点汇总,简单而不失详细。是复习和预习的重要参考资料。
J2EE(Java 2 Platform, Enterprise Edition)与.NET平台都是企业级的开发框架,用于构建和部署分布式应用程序。这两个平台有许多相似之处,但也存在显著的差异。 在相似点方面,J2EE与.NET平台都提供了全面的...
理解官方文档和技术资料可以帮助开发人员准确把握J2EE的特性和最佳实践,减少误解,提高开发效率。此外,翻译也能促进技术知识在不同文化背景下的传播,推动技术社区的交流与发展。 总的来说,J2EE是一个强大的企业...
"J2EE和.NET二者的区别" J2EE和.NET是两种不同的软件开发平台,它们之间有着明显的差异,但同时也存在着一些相互借鉴和共荣的方面。 首先,从开发角度来看,J2EE和.NET都有其独特的设计理念和架构风格。J2EE是基于...
这份"J2EE试题汇总"包含了大量关于J2EE的试题,旨在帮助学习者检验和提升在J2EE领域的知识。 J2EE的核心组件包括: 1. **Servlet**:Servlet是Java编写的服务器端程序,主要用于扩展服务器的功能,处理HTTP请求。...
### J2EE指南知识点梳理 #### 一、J2EE平台简介 - **定义与背景**:J2EE(Java 2 Platform, Enterprise Edition)是一个用于开发和部署可移植、健壮、可伸缩且安全的多层Web应用的企业级Java平台。1993年8月,随着...
在J2EE开发中,UML可以帮助我们清晰地表达系统的需求、结构和行为,提高团队间的沟通效率,减少误解和错误。以下是UML在J2EE开发中的关键应用: 1. **用例图(Use Case Diagrams)**:用例图描绘了系统与用户之间的...