在四年以前,当我开始鼓吹Hibernate,抨击EJB的时候,遭到的是群起而攻之的场面,但是不到一年之后,Hibernate已然得到了普及和大多数Java开发人员的认可;
在三年以前,当我开始赞誉spring的时候,spring还面临着EJB3的阴影,以及EJB2对其不登大雅之堂的指责,然而不到一年的时间,spring已经成为绝大多数Java开发人员的首选;
在两年以前,我极力希望宣传webwork,唱衰JSF,时至今日,webwork以Struts2.0的身份容登大雅之堂,而JSF还在靠厂商死挺着;
而当一年之前我开始采用RoR开发JavaEye的时候,RoR的置疑之声还甚嚣尘上,但当我在今年初预言07年下半年RoR在国内会被广泛接受的时候,很多人已经笑不出来了;
今年我预言些什么呢?我觉得会是AJAX技术走出PC的时代,证据就是iphone,与此相关联的事情就是REST架构的流行。

但是这篇文章里面我想谈的却不是我预言的水平准不准,而是想谈Java真的会因为RoR的流行而过时吗?目前在web开发主要应用在两个大的领域,互联网和企业应用,我们分别来看一下:

一、互联网领域
互联网领域第一大动态语言是PHP,第二第三分别是ASP和Java。在中小型互联网应用当中,PHP的王者地位不容动摇,但在大型应用当中,Java是目前主流的选择,特别是电子商务类型的应用,例如阿里巴巴就从早期的PHP转变到Java,从前的eachnet也是如此。造成这样局面不是没有原因的:

1、中小型互联网网站强调开发速度,维护成本,以及入门快速和部署成本,PHP是最合适的选择;用Java则显得过于笨拙,开发慢,维护成本高,入门周期长,部署麻烦;RoR开发速度最快,维护成本最低,但是RoR入门速度没有PHP快,部署成本比PHP高。因此中小型互联网网站主流还是PHP,但RoR能够占据一定的份额。

2、大中型互联网站强调稳定性,性能,大规模代码的组织能力,而开发效率则退居次要地位,有些应用如电子商务对事务有很高的要求,显然Java是最合适的选择;PHP的代码组织能力最差,RoR次之。

在互联网领域,Java从来就不是主流,并且Java的适用领域和RoR不太重合。我们甚至可以这样说,RoR现在在互联网领域取代的是那些原本不适合用Java,但是被错误的选择了Java的项目。

二、企业应用领域
目前企业应用领域第一大语言是Java,dotnet其次。企业应用采用的技术和行业有很大关系:例如金融行业,电子政务行业一般只采用Java。dotnet发展了6年尚且没有进入企业高端的应用,RoR在短期之内也很难取代Java的地位。

在企业应用领域,Java是主流,并且Java的适用领域和RoR也不太重合。我们也可以这样说,RoR将来在企业应用领域要取代的是那些原本不适合用Java,但是被错误的选择了Java的项目。

至此,我想Java程序员大可以松一口气,RoR目前有哪些不适合的场合呢:

1、对事务要求非常高的场合
RoR还是很简单的单数据库事务控制,缺乏精细的事务控制功能,当然也不支持跨数据库的分布式事务。因此对于事务要求严格的大型电子商务网站,部署复杂的分布式数据库场景显得力不从心。当然也许有些plugin可以提供这些功能,但是从目前的功能完备性和成熟度来看,还不够。

2、处理大量遗留数据库的场合
ActiveRecord的威力很大程度上来自约定,大量命名糟糕的遗留数据库会对RoR造成比较大的障碍。

3、庞大的项目团队,对开发速度要求低的场合
例如日本外包项目,团队庞大,个体开发速度要求低。但是对于代码规范要求严格的项目。

虽然RoR不会取代Java,但不意味着作为程序员的你可以固步自封。即使在工作当中用不上RoR,多看一点新的技术,对于开阔个人视野也有很大的好处。
评论
likehibernate 2008-02-29
看了好多评论,好像都走题了!
nuoda 2008-01-03
j2ee是好,但是只是对技术爱好者,对于企业就惨了:这个人喜欢用这个框架,那个人喜欢用另外的框架,企业应用的“提高”只是采用了新框架。。。
forking2007 2007-12-18
laiy2007 2007-07-21 10:14

///////////////////////////////////////////////////
在四年以前,当我开始鼓吹Hibernate,抨击EJB的时候,遭到的是群起而攻之的场面,但是不到一年之后,Hibernate已然得到了普及和大多数Java开发人员的认可;
在三年以前,当我开始赞誉spring的时候,spring还面临着EJB3的阴影,以及EJB2对其不登大雅之堂的指责,然而不到一年的时间,spring已经成为绝大多数Java开发人员的首选;
在两年以前,我极力希望宣传webwork,唱衰JSF,时至今日,webwork以Struts2.0的身份容登大雅之堂,而JSF还在靠厂商死挺着;
//////////////////////////////////////////////////
不敢苟同,现在Ejb和Hibernate根本是两码事,Spring只是一下小项目的选择,大型的项目用那个的很少,当你进行一个大项目的时候你就会被那些烦琐的配置烦死,Ejb在不断的改进,并接越来越实用,适用。至于webwork,Struts我从没有在大型项目的案例中看到他们的身影,jsf在国内用的少,但它毕竟是标准,持续性比较好,当然,现在没有较好的开发环境,如果它能改进成像C#,。net那样的开发环境一定能发扬光大
//////////////////////////////////////////////////
EJB最让人诟病的应该是它对项目的入侵(也可以说绑定),还有就是与数据库交互的部分,也就是持久化,所以我觉得robbin在这里是从这个角度去和hibernate比较的吧?如果有点常识的话(常识错误1),就应该知道EJB3其实就是根据Hibernate去改进其持久化策略,所以Hibernate已经是事实上的标准了,SUN的的标准一向都是厂商或者开源的实现比较好,自己的实现被人骂,现在被骂怕了,就开始照抄流行的开源框架了.
Spring是小项目的选择(常识错误2)?要说配置文件,比EJB是简单多了(我可不想在这上面多费口舌,用过的人都知道).还有你可知道阿里巴巴,淘宝网还有很多企业平台项目都用Spring,分布式,声明式事务,并发性能,如果这些不过关,会有人用吗?所谓轻量级和项目大小没有关系,Spring主要的思想就是低耦合,少些入侵(Ioc,AOP),方便扩展以应对业务需求的变化(这些好像都是编程基础,不知道为什么我还要在这里废话).
JSF个人感觉确实是厂商在死挺,比起开源的框架,很少有人选择JSF,为什么?为什么大家都不愿意去用所谓标准的JSF?开源的东西不好用谁会去用?厂商的标准如果好用,谁不愿意用?其实就表现层来讲,用什么框架和是否能用在大型项目中没有关系,这又是一个常识性错误.
不是所有人都对厂商的东西存在偏见,而是我觉得你需要找个好点的IDE,能够帮你自动生成配置文件和Hibernate映射文件,也许你就不会说开源的东西不好用了吧?我可以告诉你,这种工具很多:IDEA,MyEclipse,BEA Workshop Studio,还有很多开源的插件,针对Spring,Hibernate,WebWork,Struts的都有.
www_hero 2007-11-21
不知道先生对PC桌面是否有关注。与大多数Java从业者不同的是,我工作的方向主要是PC客户端软件,C/S为主。因此关注swing、SWT的地方比较多,我的博客www.blogjava.net/javagui。
我知道在web 2.0时代,swing桌面要想被国人认可是备受艰难的,不知道您怎么看待。
shenzw2008 2007-11-13
,随便说两句。
其实,我们为什么一定要把这个语言那个语言对立起来呢?
java好,.net不好,那是你没有见过一个项目把java和.net整合到一起来用,各司其职,相互辉映,不是很好。
开发的语言分为两种,一种是特定领域的语言,一种是大众话的语言。那些艰涩难懂的语言一定会逐渐的从大众领域中退出,java为什么成为了开发语言的主流,就因为相对于c,c++更加简单,更加容易入门,c 退出了主流开发语言不代表它不好,而是社会的发展把它划分到那个特定的领域当中了。ror应用的领域在那里呢?不在于它的简单易用,而在于它开发中的约定俗称,在于当我们应用ror的时候项目组的成员很容易统一开发的风格,因为你用ror就等于潜在的学习了这种风格。这就叫默契。
Einstein_Ian 2007-10-31
abcx 2007-10-16
Robbin等人其实就是完美主义的典型例子,那是严重错误的。
abcx 2007-10-16
以人为本,或者说对开发人员友好。微软就是榜样,.NET,VS,Windows,SQL Server用起来很好用,但这并没有掩盖它的强大之处。
dingdangxiaoma 2007-09-21
JAVA,还是有着他的基础的呢,而且,现在使用的人也还是很多的呢,并不是人多,才这么说,它的存在和发展,肯定是有着一定的原因是的.
语言不是什么障碍,关键,是我们的心呢,我们要保持一个饱满的,充满阳光的心,知识,是永远也学习不完的呢,关键是我们怎么来对待.
每一个行业,都有着,他自己的局限性,要解决这种局限,仅仅靠技术,语言是不能解决问题的.
关键,还是人.以人为本的.
xuefan8596 2007-09-21
为了能快速的找到这个帖子,我只能在此占用一小块的空间了,请原谅。
thesecondbull 2007-09-13
我今天突然意识到,赚钱才是王道,谁过不过时真是无聊透顶
maoxiaolu2000 2007-09-13
别的不说了。
如果我有aspeye,那么无论那个版本,我一定会用asp开发,绝不会使用php\java\ror开发。
scuhuang 2007-09-07
站在巨人的肩膀上,我们也能看得更远,感谢robbin
windy721 2007-09-06
我现在才在学习java的web开发,感觉很多总是跟不上,有那么多的热门语言,又不知道哪时又跑出个什么热门的新框架之类的,又或者哪时自己现在学的东西就没有人想用了...郁闷啊...
boby2046 2007-08-17
现在争论的焦点我想不是linux与windows,ie与firefox,jee与ror之间等表面上的争端对抗,它们有相竞争的地方,但是被炒作出来罢了,有谁能觉得java过时,那首先java就是最大的遗留语言了。谁能解决java的这块大蛋糕,谁就是新的霸主,.net与ror能提供好的解决方案吗?诚然现在的情况是不太可能的,它们各有优点,java从芯片到系统数据库,从互联网到企业应用,是全方位的,跨平台的,安全稳定的,可以说是一个通用的解决方案;而ror,.net都是在通用的基础上对它们有限的领域里面专化。它们是专业的解决方案,是备选的,这大家都知道。
技术领域的炒作很无聊,今天一个技术,明天一个技术,技术的革新日新月异,但是如果我们没有掌握到技术的本身,有多少程序员是专注于做他们的业务?我不禁怀疑不是java将我们复杂化了,是我们没有把技术搞懂,设计模式,框架,域建模可以说不重要吗?为什么国内的程序员都不重视?没有弄清楚我们就失业了,马上就接上失败的项目,又失业。。。这就是中国的程序员。

希望robbin大哥能多共享一下项目的经验让我们这些后辈学习学习,谢谢。
Godlikeme 2007-08-14
java已经过时了?作为一名专业程序员,用什么又有什么关系呢?
yangb2008 2007-08-13
希望javaEye能开设一下xforms技术专栏
yangb2008 2007-08-13
  你好!
能谈谈xforms技术吗?,网上比较成熟的开源项目还不多。
根据xsd/wsdl自动生成xforms,这应该是一个方向
bo.yang@srit.com.cn
studingoo 2007-08-09
真是汗啊!!!!

楼主,所有被您用的语言都过时了??

JAVA是好,但是.net的低门槛策略不得不说是微软的高见。

不管是什么,都是朝着“以人为本”的方向发展的,可以预见,以后

的编程之路就是“傻瓜”式的。

程序员也只是一个职业,何必给自己带上光环呢??真是不明白??
realdah 2007-08-09
标题党。。。。。。
发表评论

您还没有登录,请登录后发表评论

robbin
搜索本博客
我的相册
213cbb75-7dae-37b2-b9ce-9e7b49f784d3-thumb
游乌镇
共 33 张
其他分类
存档
最新评论