Java的企业应用开发死期已到

Java Is A Dead-End For Enterprise App Development | Forrester Blogs

文章列举了Java目前面临的几大问题:
1.业务需求以及改变,改变的地方非常多。开发者已经被语言限制,即使Java平台支持很多额外语言如Groovy和JRuby, 底层平台还是限制了持续发展和创新。

2.Java在表现层上贻误战机。Swing是一个梦魇,JavaFX又失败了. JSF是为Ajax前世设计的,即使ICEfaces整合了Ajax. 作为一个新的主流界面技术,Java在表现层缺乏前瞻性。

3.Java框架太复杂。 Hibernate Spring, Struts等其他框架不足之处远胜于他们的优点。一个未来平台是不应该夹杂框架杂音。

4.Java是基于C++. 这是最好的开发企业应用的方式吗?

5.Java新老板和老老板一样. Oracle最近Java声明非常令人失望,他们侧重更多特性 更快性能和更多合作伙伴,这些都和老的SUN公司策略没有什么区别。

6.Java从来都不是唯一选择. C#并不是替代品,只是带有微软风格的Java.但是有更多新的开发工具,如微软的Lightswitch 和WaveMaker -- 一个传统但是升级了的4GL工具,如Compuware Uniface 和 Progress OpenEdge. 不要忘记由IBM Progress, TIBCO提供的和业务规则平台以及(BPM), 和事件处理平台(event processing platforms)正在促使企业软件快速地改变。

BEYOND JAVA
作者也认为使用Java开发企业应用非常痛苦,但他认为这不一定是Java本身的问题,问题是把Java到处使用。

真正应该死去的并不只是Java,而是整个第三代语言。

也有人在讨论函数式语言是否是下一个方向,Java IS A DEAD-END作者回复认为:Scala等基于JVM的函数语言不一定是下一个方向,因为企业应用有很多,包括用户界面,复杂的流程,频繁修改的数据和需求。
80年代有人使用LISP (Clojure)开发企业应用,会发现那是一个很难选择。

脚本语言能提供编程效率,但是却不够抽象,如界面ui, 数据data, 工作流workflow, 逻辑logic, 整合integration等方面, ...当然你可以在Java中使用碎块般的框架来实现他们。

反对者认为:作者实际上就在告诉大家,银弹是使用4GL开发工具,而所有4GL工具都带有明显商家烙印在其中,有开源的4GL吗?没有,4GL都是封闭的 收费。

口水仗继续......................

    如果是做大型的企业级应用,不用java用什么?在企业级应用这块儿,说实话不是java本身优秀,而是java家本厚。如果.net有足够的时间积累也是可以的,不过由于.net是微软一家独撑,所以等待的时间会更长久。
    在某种程度上来说,java就像windows,生态圈太庞大了,而其他的语言如.net之类的反倒像linux。
2010年12月27日 21:59 "flyzb"的内容
 如果是做大型的企业级应用,不用java用什么? ...

作者的意思用4GL开发工具,例如webMethods Flow

webMethods Flow 是一套图形编程语言,运行在webMethods整合服务器中 . 它设计用于简化乏味枯燥 难以维护的企业B2B系统集成。

但是这种东西都要钱,成本估计很高。

4GL不是数据库应用领域的年代的语言么,想追求自由度和实时性,可能不那么可靠吧。

最近发现scala的一个优势——可作为DSL语言或DSL语言定制。

上次看到一个例子,暂时没有找到,java不满足的话,scala我觉得现时是足够了。

scala方向是致力于生产力的提高,不说未来,现在至少是对的。
[该贴被SpeedVan于2010-12-28 17:28修改过]

    其实这里面有一个前提,就是大家先说明白“什么叫企业级应用”,然后再回答对于这些应用而言java是不是不行了,那种语言可以完全替代。
    在我看来,替代java本身可能没有什么问题,关键围绕java已经构建的这些基础应用设施(比如工作流、消息、缓存、ESB等等)是否都可以和这种新语言进行对接。这也就是说即使新语言再好,但没有配套设施也是白搭。
2010年12月28日 23:32 "flyzb"的内容
关键围绕java已经构建的这些基础应用设施(比如工作流、消息、缓存、ESB等等)是否都可以和这种新语言进行对接。这也就是说即使新语言再好,但没有配套设施也是白搭。 ...

是的,企业应用关键是企业集成,那么多系统需要集成,这点flyzb是深有体会,屁股决定脑袋,所以,他的想法是非常有价值的,他和这篇文章的老外应该说,是同一个视角。

scala等语言还是侧重性能(并发)等非常低层次的技术特点,而企业应用的最高层,也就是企业应用的最高层上看,是看不到语言平台的,而是一个个业务领域子系统,以及多变的流程;经常这个部门负责某个事情,后来就改到其他部门去,这些都会严重影响整个业务系统。

所以,需要一套工具,没有技术语言,只有领域知识,可以是图形的,如webMethods;也可以是字符的,如webDSL等等,字符文字的语言和Scala以及Java语言的区别是:没有数组 整数这些极其底层的琐碎概念,看到的都是业务基本单元名词。

为了加强什么是企业应用语言或工具认识,看看webMethods的这套工具(FLASH演示,基于Eclipse的):
http://www.softwareag.com/corporate/images/ProcessModelling_HQ_2_26_tcm16-54446.mp4

接触过工作流的人可能就知道,实际就是类似工作流建模那套工具。

呵呵,这个话题又来了?

唉~~Java语言死,Java语言活,是否Java语言也需要性生活?不是Java语言太复杂了,复杂的是人心……

不管什么语言,什么思想,务实才最要,客户不在乎我们是否关注底层的高效,也不关注我们是否高层高度抽象,他

们唯一在乎的就是,他们的理念想法可否达到他们满意的程度,其他的神马都是浮云……我曾天真的认为,用最高效

的工具,用最便捷的方式客户一定会满意,几经周折,我觉得,我TMD能满足他们拿到钱才最重要,你们都有理想,

够坚持,要加油哈……

scala确实还是低层次,但我感觉他可以不断提升层次,我上次看到的例子了,就是定义了“做”和“次”,这两个字(中国文字够形象化)已经不包含数组等东西了,然后在 写 “做 5 次 XX”,于是就做5次了——这就是DSL定制。也就是有可能把领域专家的术语都用DSL来表示出来。当然其中还有什么缺陷还是用多了才知道。
告诉你们现在DSL的死穴在哪里。

1 语法误用
2 调试困难

两个问题本身是同一个问题。

语法误用,就像做设计一样,各有各样,这个只能规范,因为DSL可以说领域建模人员和领域专家在领域知识的前提下的约定,所以看来领域中的规范约定是必须的,虽然是难题,但还是有办法的。

调试困难,这个的确是硬伤,我们回过头来看看,语言层次提升,调试方式却还是本来代码层面,这个当然是难以测试了——不一样的层次。至于是否会有新的方式,如领域语言测试,那还得观望(可能到时规范和测试是一整套的东西)。所以曾有人说把丰富特性的语言本身作为DSL(这个人说的是scala)——既然升不上去,就从上面降下来。

个人感觉测试和误用的最根本问题是规范。

思考的太多影响效率,思考的太少影响进步,变得不是java,是人心
想到多年前在流程引擎和SOA被搬到神坛时,也有很多人叫嚣着从此不再需要程序员,只需要会点鼠标的人在界面上点几下就能开发一个系统。时代在进步,喷子依旧存在,只是喷的内容不同而已。
1.框架太复杂又不是java的错,觉得太复杂的自己去写个简单的就结了。
2.java和c++?我笑了……
3.java的表现层确实不如人意,至少可以说明他们的营销什么的做得不好。

写这文的人估计拿了好处……鉴定完毕。

用resin建构服务,支持java与php,java做数据与控制层,php做表现层.