BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

讨论:Java的发展趋势向好向坏?

| 作者 崔康 关注 0 他的粉丝 发布于 2013年10月30日. 估计阅读时间: 8 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

Java语言在业界的重要地位不容置疑,但是随着多种新语言的诞生和各种老语言的复兴,也由于Java自身的一些问题,在开发社区中时不时的会有唱衰Java的言论出现,那么事实到底是怎样的?每个人都有自己的看法,资深评论家Andrew Binstock撰文分析了Java的发展现状和趋势,并看好Java的未来前景。

Andrew承认Java语言是有一些冗长,但并不认为它在衰亡——没有证据支持这一点。他说,Java是有些啰嗦。Java 7在一年半前问世,在此之前,编写一个像写文件这样简单的任务需要冗长的、多步骤的过程,这些过程含有各种“仪式”。针对编程任务普遍冗长这一状况,人们推出了几种脚本语言,旨在帮助开发者从长句法段落得到解脱进而采用简单动作进行交流。这些脚本语言包括NetRexx、Groovy、Scala等。我本人是Groovy的粉丝并将它应用在了我的项目中。但这是因为Groovy的附加功能(可选类型、闭包、方法注入、元编程等)而不是因为它的简洁性。即使是新推出的Java 7,开发者也合理的指出了有些类和方法的名字实在太长了,例如MethodExpressionValueChangeListener这个名字实在是打起来费劲记起来困难。不过,我认为想开发一种有能力支撑企业运算的主平台语言和库,要求它不出现长的、描述性的名字是不大现实的。相对于短小难懂的名字,例如C标准库中的strstr(),我个人更喜欢长的、描述性的名字。简洁并不一定是最好的。尽管冗长,Java仍然可以减少其执行很多任务时所需的“仪式”。

接着,Andrew从另一个角度分析了Java的繁荣程度。JavaOne是Java程序员的年度大会,相比较于前两年,最近的一场大会更大、更好,参与的人也更多。我和展台的供应商交流过,他们和我的观点是一致的(真的没有一个人例外),他们都表示今年的关注度都远高于去年,而去年的也比前年的要好。通常,当某种技术开始衰落时,我们最先在它的展会上发现征兆:供应商不想为参与人数少的展会花钱,开发者也需要把他们的旅行经费花在更有价值的事情上。于是,当一个展会冷清得像墓地时,我们就可以知道这种技术的死期到了。

从技术角度上讲,Andrew认为Java语言在不断地进步。

正如我所提到的,不管是在语言水平还是JVM水平,Java 7 都是一个重要的版本。而预计明年3月问世的Java 8,更值得我们期待。Java 9的一些特性已经发布,并预计在2016年发布。与Sun公司之前对Java的管理方式不同,Oracle公司坚持每24-30个月更新一次Java版本这一目标。Java 8将会加入闭包(也就是lambda 表达式)。闭包减少代码,减少需要的匿名内部类,并促进函数式编程。更好的模块性(这个将在Java 9中进行完善)将帮助有效管理部件,而几项用来简化语句的改进也将出现在这个版本中。

JavaFX仍在不断完善中,并且它比Swing语句简单的多。当今对用户体验的关注给Java带来了很大的发展机会,它的发展甚至可能比我们预期还要好。Oracle敏锐地注意到了Java在小型设备中扮演的角色。据该公司描述,当今有30亿台手持设备在运行Java。Oracle集成了前JavaME与JavaSE版本,并积极地推动Java的发展以迎对即将到来的物联网浪潮。Eric Bruno在IoT的一篇博文描述了一个用来监控JavaOne会议出勤情况的项目。这个项目从前端摄像头到后端实时分析都是用Java语言写的。Java语言既能在小型设备上运行又能支持大量的企业级系统,应用如此广泛的平台和语言并不多。

安卓的本地开发语言是Java语言,因此当我们把Android生态系统列入考虑范围后,我们更难去说这门在多领域广泛应用的语言——应用在服务器、网络、桌面、移动设备——正在处于衰落阶段。 

同时,JVM的生态系统很健康,这是证明Java没有在衰退的更有力的证据。JVM也在随着语言版本的更新而更新。Java 7中新加入的字节码(包括invokedynamic),这体现了JVM表现的有多优秀。当JVM中增加了实现Ruby、JRuby指令的本地支持后,它的性能已经远远超越了基于C的Ruby VM。而基于C的Ruby VM多年来一直是Ruby的参考平台。

Andrew最近参加了由“No Fluff Just Stuff”组织的SpringOne 2GX大会,而这个大会展现了Groovy社区有多活跃(尽管它很安静)。VMware/Pivotal 依旧依赖于Groovy和Grails,并且语言和框架都从持续的投资中受益。

在这里我不再谈其他主要的JVM语言,我只想说一点——今天最流行的Lisp实现是Clojure,它是运行在JVM上的,并且三年前它还是不为人知的。

GitHub是人们今天保存项目的“圣地”,来自GitHub的数据显示,在去年和今年的项目所选编程语言排行榜中,Java均名列第三。(它排在JavaScript和Ruby后面也是有一定历史原因的:GitHub最初主要是用来存储Ruby语言的工程的。)在较有争议的Tiobe索引中,Java排在第二,位列C之后。(自从2002年以来C和Java交替占据着一二名的位置。)Ohloh是开源社区中最大统计门户网站,过去的七年Java始终在Ohloh中保持同样的比例。

因此,Andrew认为,他所看到的是一门在不断改进和发展的语言,它有一个规模庞大并且活跃的社区,它拥有一个广泛应用新语言的平台。从这之中看不到任何这门语言在衰落的迹象。不过,受困于连续出现的安全问题,Java 8发布时间推迟到2014年。Oracle的Java平台组首席架构师Mark Reinhhold在其博客上宣布,Oracle决定将Java 8的发布时间推迟4-6个月。Reinhold提到,Oracle正在全力解决近来引发公众关注的这一波安全漏洞问题, Java 8项目组不可避免地被抽调走了很多工程师。他说,“维护Java平台的安全性,其优先级总是比开发新功能要高,所以这些工作不免会抽调一些正在进行Java 8开发的工程师。”此外他还强调,为改进代码质量并减少缺陷,Oracle“升级”了开发流程。看起来Java 8 GA(General Availability)版本的发布时间会从原计划的2013年9月推迟到2014年第一季度。这已经是该版本的第二次跳票了。Java 8最初计划于2012年底发布,后来受Java 7开发延期的影响,被推迟到了2013年9月,并且放弃了Jigsaw项目。目前这次延期也会波及到JDK 9,我们预计JDK 8将于2014年第一季度发布,而JDK 9则从2015年推迟到2016年初。InfoQ去年7月曾报道过,Java 8放弃了Jigsaw项目,而且Reinhold否定了该项目再次进入Java 8的可能性。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT