`
robbin
  • 浏览: 4820722 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
377a9ecd-1ea1-34ac-9530-9daa53bb2a7b
robbin谈管理
浏览量:137005
社区版块
存档分类
最新评论

Java已经过时了吗?

    博客分类:
  • Java
阅读更多
在四年以前,当我开始鼓吹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,多看一点新的技术,对于开阔个人视野也有很大的好处。
分享到:
评论
34 楼 lh870003574 2011-11-25  
在我看来,IT已经不再“重要”
33 楼 linrulong2005 2011-06-22  
或许我还不可能对IT行业进行寓言,但是大学3年里面花了2年学编程,我看到的是java在面向对象思想上对c++的超越,且不论java的运行效率等等,至少,当大学可能要选择:算法、数据结构、离散数学、计算机体系结构等等的时候,java可以被选择为面向对象思想的蓝本,有一天我会把你的文章看完~
32 楼 wuzhxun 2011-01-18  
“例如金融行业,电子政务行业一般只采用Java。dotnet发展了6年尚且没有进入企业高端的应用.”主要是金融电信移动行业大部分是linux系统,如果用dotnet做项目,这怎么部署运行?
31 楼 ZKLEE 2010-10-24  
我认为JAVA定要被过时的东西,哪怕是在企业领域,原因有2:
1. JAVA在企业应用领域主要被用于表现层(UI开发),很难应用的业务逻辑层,我从来没有见过一个真正的完全基于JAVA的ERP或者CRM的存在。哪怕是ORACLE的商务套件,大多数的业务逻辑均通过存储过程来实现。事实上用JAVA开发的应用很难做到业务层和表现层的分离。因此在J2EE基础上不可能实现大应用,例如ERP,CRM等,你们所谓的大企业应用无非就是一些技术平台,中间件和门户,类似IBM WEBSPHERE, BEA之流。做JAVA的开发人员很少能理解什么是BUSINESS APPLICATION。

2. JAVA是个吃内存的老虎,对内存需求过大,哪怕如今的硬件能满足JAVA对内存的需求,但其本身VM技术对复杂内存对象处理是有天生缺陷的,许多DUMP另很多资深开发人员也无法理解。这就造成许多基于J2EE企业应用的不稳定性。错误是很难被追踪的,因为这些错误都是偶发性的(内存中的错误)。

3. 启动一个J2EE的产品需要至少花15分钟(从输入启动命令到所有应用完全启动),慢的甚至达到6个小时。我问过所有J2EE管理人员,他们有个共同的抱怨就是害怕重新启动J2EE平台,这真是一个漫长的煎熬,有时候还不一定能启动成功。

总结:我认为JAVA无论对于用户还是企业都是显得笨拙的。对于企业来说,它的笨拙一方面体现在开发时间,另一方面也体现在运行时间。开发时间的笨拙来自于它引以为豪的“开放性”,但却造成了它过于分散的特点(每个厂商都有基于JAVA的不同方案,每半年会出现一个新的框架,对开发人员来说想是恶梦);运行时间的笨拙我前面已经说过了,我相信真正有过J2EE平台管理经验的技术人员(非开发人员)都不会喜欢它的。
30 楼 javahead 2010-07-23  
之前Java虽然没过时,但也限制了发展
随着Android的普及,Java又重新看到了希望
29 楼 qq2525 2009-02-10  
python
soleares 写道

在我理解  JAVA给我们的是理念,不是语言!谢谢@@

喜欢这句话,这个才是领悟!
28 楼 lizhuang 2009-01-06  
国外搞python的人很多啊,JAVA有些特性注定了它的落后性。支持python!python大火指日可待。
27 楼 soleares 2008-12-27  
在我理解  JAVA给我们的是理念,不是语言!谢谢@@

26 楼 toney_kissinger 2008-11-28  
我的观点是不要死抱一门开发语言不放.争取做到博采众长.在不断的实践中学习新东西,有机会就试一下.有了实项项目的切身体会之后,才能在众多的语门技术中选择适合自己及项目的相关技术方向及方法论..最大的成本约束是时间每天每人24小时,谁都不可能多或少.
25 楼 renyanwei 2008-11-16  
什么过时不过时 学习只是兴趣推动 管他呢
24 楼 咖啡舞者 2007-07-09  
新事物需要符合发展的趋势。
不仅仅因为它是新生儿。来也的太突然去的也突然,还是要接受考验的。JAVA不是偶像派。
23 楼 81261686 2007-07-09  
Java不会过时,只是说在以后的时间内还有没有代替Java成为下一个主流的语言
22 楼 kamiiyu 2007-07-09  
左JEE,右RoR,NetBeans挂胸前
21 楼 xyy_2121 2007-07-07  
旧的悠悠死去,新的悠悠生出,不慌不忙,一个跟一个,——这是演化。
新的已经到来,旧的还不肯去,新的急了,把旧的挤掉,——这是革命。
不论ror、Java是演化还是革命,进步的都是技术,广大的程序工作者必须随之进步,也只有这样技术才能推广和进步!~~
20 楼 indexchen 2007-07-06  
想出名完全不必说这种不着边际的话,当心搬起石头砸自己的脚。 语言过不过时岂是你说了算的。
19 楼 ahuaxuan 2007-07-06  
引用
在企业应用领域,Java是主流,并且Java的适用领域和RoR也不太重合。我们也可以这样说,RoR将来在企业应用领域要取代的是那些原本不适合用Java,但是被错误的选择了Java的项目。

这句话说得非常的客观,也是俺的心声,之前老是看到有人乱吹什么ror取代java之类的话,简直是盲目和狂热。
18 楼 lyqgenius 2007-07-06  
語言或技術隻是手中或心中的一把劍

做開發的要知道什麼環境下用什麼開發
17 楼 lordhong 2007-07-05  
按需求来选择语言/框架/技术, 各有所长, 各取所需.
架构师的职责所在:)

学习RUBY以后可以用JRUBY在JVM上做写SCRIPTING, 有点一通百通的感觉

顺便赠送经典电影名言: 能力越大...责任越大... -.-#
16 楼 hamburg 2007-07-04  
在我看来 java永远不会过时的,
为什么,原因三点:
一是java为什么这么受欢迎,跨平台,靠什么跨平台,java虚拟机这个小软件。
二是全球多少程序员在使用java;
三是java目前市场的占有量;
四是java还有强大的团队在做维护和升级。
在我看来,所谓的过时,无非是指java以前的版本过时了,java这个名词不时髦了,ror这个名词比较时髦,应为他流行的时间太短。地球永远在转动,当他不转了,那真是过时了。java永远在更新,java永远就不会过时,但是java这个名词是已经过时了,因为所有人都知道他是什么了!
15 楼 JeffreyHsu 2007-07-04  
好像是03/04?年在程序员杂志上看到介绍hibernate,《冬眠的数据库》似乎是gigix写的,第一次知道有hibernate这么个东西。后来google,只能找到夏昕的一篇开源文档入门
webwork这东西是看的《Java OpenSource Development》这本书了解的,那时候漫天都是struts,买本书都没有

不过我还是比较看好JSF(虽然不好用)的未来发展,容纳力和扩展性很强

相关推荐

    JAVA使用或覆盖了已过时的API对照表.pdf

    java.security.Certificate 是一个已过时的证书处理接口,在 Java 2 平台中已经被新的证书处理包所取代。新的证书处理包提供了更好的证书管理功能,推荐使用新的证书处理包来处理证书相关的操作。 org.xml.sax....

    01 开篇在Spring Boot,Spring Cloud大行其道的今天Spring 过时了吗?慕课专栏(1)1

    然而,这并不意味着原生的 Spring 框架已经过时。实际上,Spring 框架是 Spring Boot 和 Spring Cloud 的基础,它为开发者提供了广泛的支持,包括依赖注入、模块化的功能,如 Spring JDBC、Spring MVC、Spring ...

    java 核心技术 高级部分第10版 java 8 介绍

    新的java.time包取代了过时的java.util.Date和java.util.Calendar,提供了更强大、更易于使用的日期和时间类,如LocalDate、LocalTime、LocalDateTime和ZonedDateTime等。这些类提供了丰富的操作,包括日期计算、...

    哪本书适合推荐给 Java 初学者?

    其次,如果你仅仅是学习使用框架,如 Spring,通过 Google 已经能解决大多数问题了。最后,如果你想学习原理或设计,这点在于 Java 所有流行的框架都是完全开源的,通过开源代码或官方文档已足已学习原理。

    06丨理论三:面向对象相比面向过程有哪些优势?面向过程真的过时了吗?1

    面向对象编程(Object-Oriented Programming,OOP)以其强大的抽象、封装、继承和多态性,已经成为现代编程的主流。然而,面向过程编程(Procedural Programming)尽管不像面向对象那样流行,但在某些情况下仍有其...

    JAVA打印机插件java打印失败打印机工具

    有时,过时的驱动可能导致打印问题。 3. **调试打印代码**:检查Java打印代码,确保所有必要的设置都正确无误,如纸张尺寸、打印质量、页边距等。使用`PrinterJob`的`printDialog()`方法可以预览打印效果,帮助找出...

    Java+8实战_Java8_java8_

    5. **日期和时间API**:Java 8用全新的`java.time`包取代了过时的`java.util.Date`和`java.util.Calendar`,提供了更直观、更易于使用的日期和时间API,如`LocalDate`、`LocalTime`和`LocalDateTime`。 6. **默认...

    java jre 1.8 java运行环境

    这个新API取代了过时的java.util.Date和java.util.Calendar,使得日期和时间操作更为直观和灵活。 Stream API也是Java 8的一个亮点,它提供了一种新的数据处理方式,可以对集合进行高效且声明式的并行或顺序处理。...

    最新的java版本给你了,我的好兄弟,java17.zip java17 Java17 JAVA17 java1.17

    1. **HTTP客户端弃用SSLv3**:Java 17弃用了过时且不安全的SSLv3协议,强制使用更安全的TLS协议进行网络通信。 四、API增强 1. **Socket通道的linger时间**:Java 17提供了新的API来设置Socket通道的linger时间,...

    Java API_5.0中文版

    例如,@Override标记表示方法是重写父类方法,@Deprecated表示某个API已经过时。 4. **自动装箱与拆箱**:Java 5.0引入了自动装箱和拆箱机制,使得基本类型与对应的包装类之间可以无缝转换,简化了代码编写。例如,...

    java开发文档(jdk1.8中文版java8.zip

    5. **日期与时间API**:在Java 8中,`java.time`包替代了过时的`java.util.Date`和`java.util.Calendar`,提供了更直观、更易于使用的日期和时间API。LocalDate、LocalTime、LocalDateTime、ZonedDateTime等类为处理...

    java8 中文文档

    - Java 8 改进了日期和时间的处理,引入了 `java.time` 包,包含 `LocalDate`、`LocalTime`、`LocalDateTime`、`ZonedDateTime` 等类,替代了过时的 `java.util.Date` 和 `Calendar`。 4. **方法引用来代替Lambda*...

    java api中文文档

    Java 1.6还引入了新的注解,如@Deprecated用于标记过时的API,@Override用于确保方法覆盖父类方法,以及@ SuppressWarnings用于抑制编译器警告。 接着,我们来看"java_api_1.8中文文档",即Java 1.8,这个版本引入...

    java 8 的api

    5. **日期和时间API的改进**:`java.time`包取代了过时的`java.util.Date`和`Calendar`,提供了更易用、更强大的日期和时间处理功能,如`LocalDate`、`LocalTime`、`LocalDateTime`和`ZonedDateTime`。 6. **...

    java8 32+64位安装包下载

    10. **新的日期和时间API**:Java 8用`java.time`包替代了过时的`java.util.Date`和`java.util.Calendar`,提供了更直观、易用的日期和时间处理类,如`LocalDate`, `LocalTime`, `LocalDateTime`等。 总之,Java 8...

    MicrosoftSignalrJavaSDK的Gradle兼容编译版本[过时]_Java_下载.zip

    这个zip文件“MicrosoftSignalrJavaSDK的Gradle兼容编译版本[过时]_Java_下载.zip”包含了SignalR的Java SDK源代码,特别强调了它是针对Gradle构建系统优化的,并且可能是一个较早的、过时的版本。在本文中,我们将...

    JAVA 程序 源代码 import java.applet.*;import java.awt.*

    标题中的"JAVA 程序 源代码 import java.applet.*;import java.awt.*"表明这段源代码涉及了Java编程语言,特别是与Applet和图形用户界面(GUI)相关的部分。`import`语句是Java中用于引入库或包的机制,以便能够使用...

    java卸载工具

    Java卸载工具是一款专门设计用于检测和移除计算机上过时或不再需要的Java版本的实用程序。在IT行业中,确保软件及时更新是至关重要的,尤其是对于Java这样的编程语言,因为旧版本可能存在已知的安全漏洞,这些漏洞...

    java8u291.zip

    4. **日期与时间API**:Java 8引入了全新的java.time包,提供更强大、更易于使用的日期和时间API,替代了过时的java.util.Date和java.util.Calendar。 5. **方法引荐**:方法引荐(Method References)是Lambda...

Global site tag (gtag.js) - Google Analytics