如果说用“永存、曲折、已死、重生”来形容Java,笔者以为一点也不为过。
1991年,James Gosling带领着名为“Green Team”的团队着手研发一种新的语言以及专为下一代数字设备和计算机使用的网络系统。历时4年辛勤工作后,该项目最终修成正果并取名为Java。
Java有着类似于 C的语法并有“一次编译,随处运行”的灵便性。透过虚拟机机制,可以使代码在底层平台进行运行时编译。回首Java过去的20年,首先是经历了微机时代的兴与衰,然后进入服务器领域及智能电话领域,继而在DHS(美国土安全部)的“不安全”定义下艰难前行,最后投入甲骨文(Oracle)怀抱现正蓄势迸发第二春。难道还有别的语言有如此跌宕起伏的情节吗?
Java推出后, Sun发现市场上存在着一个问题—计算机领域与非计算机领域彼此是隔断的。Sun认为这是一个机遇,如果能把两者连接起来将会带来一场计算机革命。“统一的主题是网络。”Gosling说,“放眼当时的市场,两个领域的厂家各自为政,没有形成统一的网络。因此很多时候不得不重复大量的实验,但这些其实早在30年前的计算机科学中已得到解决。”问题的所在是电子消费品制造者没有考虑使用网络,例如跨平台的公共APIs或者代码复用,“你几乎找不到任何的软件复用。所有软件都只能不断地被重复创建。我们提出的模块概念终将改变这一局面。”
成功非坦途
Java面世的头五年,成为当之无愧的编译器高性能代言人。而过后五年,所有人都把重心转向了企业应用。 Gosling说,“回首Java EE统治世界的场景至今仍历历在目。我们唯一的失误是把全部精力都集中于此,所有资源都被优先调配到EE,导致无法投入更多的精力去开拓桌面的世界。”
Oracle Java平台开发副总裁 Saab是这样说的,“在90年代,大多数开发者都把精力投入到桌面应用的编写之上。到了2000年,Pet.com的成功吸引了大批的跟风者。业界又把焦点从桌面转移到了HTML应用。随着智能电话和平板的到来,基于触摸屏的移动应用又站在了风口。所以对于下一个流行趋势是很难把握的,这涉及到天时、地利、人和。”
Java 2 Micro Edition(J2ME)在 1998年引入并把Java划分了三个平台:Java 2 Standard Edition(J2SE)、J2ME以及Java 2 Enterprise Edition(J2EE)。ME的意思是小型设备和嵌入系统。ME在翻盖手机上得到推广,成为当时的标配。Gosling说,“ME已经做得足够好了,在当时是最强大的智能电话开发平台。不过现在渐渐被遗忘,因为Android太耀眼了。”
作为一个独立平台, Java ME被边缘化了。Oracle开发部高级副总裁Cameron Purdy说在下一个版本Java 9中会把所有平台统一起来,“对比SE、ME被独立出来但发展缓慢。Java 9的模块化特性会使得Java ME的可复用性得到增强,这将是反击Android和iOS的有力武器。”
陷入低谷
随着 Sun在最近10年的低迷,Java也不能幸免地经历着蹉跎岁月。IBM报价65亿美元,Sun没答应,74亿美元,Oracle得到了Sun。
在 Oracle管理下,头几年Java表现良好,以0重大失误成为安全的代名词。不过在2013年1月情况开始变坏,美国土安全部(DHS)建议人们尽量不要使用Java。作为面向企业的软件公司,打补丁修复Bug的速度是Oracle的短板,根本无法与面向大众消费者的微软或Adobe相比。别人是以小时或天来计,而Oracle是以月为基本单位。
Purdy认为 Oracle已经尽了最大的努力去修补并清楚这个短板的重要性。问题的关键是如何打造一支在失去Gosling等干将后仍能独当一面的团队。他说,“我们听到了不少质疑之声,但其实我们一直都在不断加入投入的力度并努力寻求解决的方案。”
浴火重生
DHS的公开声明不啻是压垮 Java的最后一根稻草,很多人都预言Java将风光不再。然而事情慢慢得到转机,不少Java粉丝开始出来捍卫Java的名声。Dr. Dobb's Journal编辑Andrew Binstock曾发表一篇社论,其题目是:《 即使面临死亡,Java看上去还是相当健康的 》。
对于 Oracle的接管,Gosling表达了自己的喜悦之情,“得知这个消息后,我感到非常惊喜。Oracle是个非常优秀的监护人并大大超出了我的期望。一开始我还担心它会不会成为第二个Solaris,现在看来我是多虑了。”
接管 Java的头五年,Oracle不得不重新打造一支Java团队。“我们花了大量时间来审视整个过程以确定如何进行Bug修复,从输入到发布机制,我们回顾了大量的代码。最后列出了一个长长的错误修复表。”Purdy回忆说。
安全曾让 Java蒙羞,安全也让Java重获新生。在2014 Pwn20wn黑客大会上,Java成为唯一没有被攻破的平台。而在2015的会议中,Pwn20wn甚至没有把Java列在攻击名单上。
现在和未来
Java 9将是自被 Oracle收购后发布的首个重大版本。Java 9的最主要目标是最大限度实现模块化以帮助人们实现积木式的应用编写。
“我们的目的是帮助人们从 JAR的束缚中解脱出来。”Saab说,“你将很轻松地处理在过去相当复杂的事情,例如打包。你可以只用到需要的模块,而把其它忽略。”Purdy补充道,“这开创了Java平台的先河。该特性将贯穿整个Java库,并以单依赖图的方式重新整理依赖。”
谈及 Java的未来,Eclipse基金会执行董事Mike Milinkovich的看法是,“我认为Java的未来在于物联网。我十分乐意看到Oracle及其合作伙伴能把精力放在完全点对点的Java存储方案上,透过网关实现设备到企业后台的连接。如果成功将能使Java在往后20年发展得更好走得更远。虽然这还有一段路要走,但我相信Java能够做到。”
Gosling的看法是,“ VM是它本身的生态,所有部分彼此相通。IT世界的未来是要实现互联互通。把边缘和核心有效地统一起来,可以省却内外分开管理的麻烦,从而得到更加强大的平台。”
遍地开花
虽然很多人都曾预言 Java将一蹶不振,但是现今在不少的重要项目中,Java仍扮演着极其重要的角色。
Purdy指出,没有 Java,甚至不会有大数据的大发展,“Hadoop本身就是用Java编写的。当你需要在运行MapReduce的服务器集群上发布新功能时,你需要进行动态的部署,而这正是Java所擅长的。”
另一 Java受惠者是Twitter。一开始Twitter是用Ruby on Rails编写的,但是随着用户数的增长RoR逐渐显得力不从心。Fail Whale(失败鲸)的宕机画面预示着瓶颈问题亟需解决。在2012年,Twitter从RoR转向了Java和Scala,而失败鲸从此灭绝了。
可见 Java不但没有成为昨日黄花,还重新焕发了新的生机。让我们共同期待Java 9,看看Oracle将为广大开发者带来什么样的惊喜。
英文来自: ITWorld
(译者/伍昆 责编/夏梦竹)
(Java二十年专题策划正在如火如荼地进行中,如果您想分享Java技术实战或者这些年自己与Java的情结,请参加征文或者与我联系:xiamz#csdn.net 把#改为@)