导语
15年是Java20周年,Java已经经历了二十年的风风雨雨,从开始的弱势语言到现在最流行的语言之一。16年Java即将迈向新的二十年,让我们看看Java前二十年究竟经历了什么,探索其成功的奥秘。
早在上世纪九十年代初就业已诞生的消费级电子实验成果已经于本周迎来了其作为企业级计算领域主要解决方案的第二十个年头。毫无疑问,Java已经成为一款占据主导地位的平台,可以运行在任何能够支持Java虚拟机的环境之下,而且成功经受住了多年以来其它竞争性语言的冲击以及不断曝出的安全性争议。
Java之所以能在这条主宰之路上高歌猛进,凭借的是自身多种优势的协同作用。Java语言在1995年最初诞生时是作为一款面向对象的编程工具推出的,随后在Sun Microsystems公司Green团队——其中包括James Gosling、Mike Sheridan以及其他众多卓越人才——的推动下迎来了为期五年的黄金发展时代。这支技术队伍希望将信息与编程相结合,从而令网络浏览体验更具动态,同时将数字化消费级设备与计算机加以结合——无论是在客户端层面还是解决思路层面。有鉴于此,最初曾被称为“Oak”的Java项目以客户端Applet技术的姿态第一次受到广泛关注。然而随后人们发现,Java的远期目标实际上是向服务器端发展——而这应当归功于Sun、IBM以及甲骨文三家企业为其提供的以业务为导向的鼎力支持,Forrester研究公司分析师Jeffrey Hammond回忆道。
“事实证明,‘一次编写、随处运行’的概念在涵盖各类呈现出严重碎片化倾向的客户端设备时会变得难于实现,但其在混乱程度较低、不过仍由各供应商通过架构研发投入而造就的服务器平台上却能够带来比较理想的实践效果,”Hammond表示。“历史告诉我们,Java的虚拟机系统对于大部分开发人员而言比以往编写并移植C代码的方式更为简便易行,而且其同时拥有着良好的供应商支持能力。”
Java目前的生存状态
得益于良好的早期发展态势,Java如今每年拥有超过10亿次下载量、且被安装在97%的企业台式机当中,甲骨文公司公布了这样的统计数字。事实上,Java开发时至今日仍然是开发人员们最为可靠的技能储备。它不仅养活着900万Java开发者,同时也一直在Tiobe、PyPL以及RedMonk等编程语言人气榜乃至Dice.com等求职网站上名列前茅甚至雄踞首位。
“除了C语言与C++之外,Java是惟一一款能够在计算技术数十年的发展演变之后仍能保持活力的语言方案,”尽管其间也经历过起起落落,Arun Gupta指出——他曾经于1999年在Sun公司参与过Java语言的开发工作,而如今他的主要关注点是在红帽公司以开发者倡导事务主管的身份打理Java中间件。“全部主要产业都会在某种程度上将Java运行在其关键性任务部署方案当中。除非突然出现飞跃式的技术革新,否则Java在未来仍将表现出旺盛的生命力。”
最近几年来Java的领导工作被交到了甲骨文公司手上——后者于2010年1月收购了Sun公司。早在2006年,Java就已经转化为一套开源平台,但并不是每个人都对Sun的决定感到满意。作为其中一员,IBM公司希望Java能够被Apache软件基金会所接管。
多年以来,Java不断经受着众多编程领域中后起之秀们的冲击,其中包括Java、PHP、Ruby、F#、Google Go甚至是运行在JVM环境之上的各类语言——例如Groovy与Scala。事实上正如很多人所言,JVM已经成为Java保持活力的关键所在。
“Java语言的最大成功之处在于造就了这套平台,也就是JVM本身,”Gupta指出。“这套平台非常稳定而且能够支持种类繁多的主流语言类型,包括Java、Groovy、Ruby、Scala、Clojure以及Python等等。这些语言全部可以被编译为字节码,进而运行在JVM之上。”
不过相较于固守辉煌的过往,Java自身也一直在不断进化。去年发布的Java 8就引入了函数编程支持能力,而将于2016年推出的Java 9则着眼于模块化机制。
“模块化机制与Java 9将成为Java技术发展历程中的一项大事件,同时也满足了整个生态系统多年以来的期待与需要,”Eclipse基金会执行董事Mike Milinkovich指出——该基金会最初由IBM所建立,旨在提供Java相关工具。“除此之外,我认为Java正成为云基础设施以及物联网领域当中愈发重要的一套平台。”
站在Java肩膀上的那些技术成果
多年以来,许多关键性技术以及业务都以Java为实际基础。如果着眼于最近一段时间,那么最值得一提的肯定要数谷歌Android移动平台。这套平台通过Dalvik虚拟机对Java加以运用,甚至导致甲骨文方面以侵犯版权及专利为由将谷歌告上了法庭。Android的出现为拥有Java技能储备的开发人员指明了一条道路,帮助他们在移动应用程序开发这一新兴领域找到了新的突破口。
“Java对于Eclipse及其社区而言非常重要。在我们的全部270多个项目当中,绝大多数都利用Java代码来实现,其中包括我们的大部分工具、运行时环境以及物联网技术方案,”Eclipse基金会的Milinkovich解释道。
其它立足于Java根基之上的技术还包括来自BEA Systems以及JBoss的应用程序服务器方案(二者分别被甲骨文与红帽公司收购),外加JetBrains IntelliJ Idea IDE。
“IntelliJ IDE,或者更具体地讲,Renamer的诞生源自其缔造者们在编码过程中的实际需求,而当时他们所使用的恰好是Java,”JetBrains开发人员事务负责人Hadi Hariri指出。“在这方面,我们几乎可以将Java作为IntelliJ IDE的诞生基石。”
开源Spring框架的成功同样乘上了Java的东风,并开始与Java企业版展开激烈竞争。
Java经历的考验与磨难
Java在自身的发展道路上也曾经遭遇种种波折与坎坷。最近几年来,与Java相关的安全漏洞可说是层出不穷,这直接导致技术业界发出对Java进行隔离的呼声。与此同时,客户端Java也已经开始成为一项过时的技术方案,甚至被视为黑客们的最佳拍档。不过甲骨文公司已经斥资对相关工作进行支持,旨在控制与Java相关的安全问题。有了技术巨头的配合,我们可以相信Java的安全态势将在未来实现持续改观。
不过对于甲骨文过去五年对Java的统治,也有一部分用户表示怨念很深,这主要是因为该公司在处理Java相关问题时出现了一系列失误、技术发展的停滞与Java安装程序内出现的“垃圾软件”更是遭到使用者们的一致恶评。作为Java的公认缔造者,James Gosling在Sun接受收购后不久就离开了甲骨文公司,但他仍从技术层面对甲骨文所采取的Java发展策略表示赞赏。
苹果在其广受好评的iOS设备上丝毫没有引入Java元素则让包括开发人员在内的Java阵营遭遇到又一大挫折。不过归功于Java社区的聪明才智,如今已经有不少第三方工具供应商开始为Java开发提供运用原有技能储备为iPad及iPhone平台开发应用程序的办法。
有些人甚至把Java的整体定位视为移动技术领域的一块盲区——尽管事实上Android系统一直在利用Java技术,而Java微型版近年来也一直致力于将Java引入嵌入式设备当中。
“Java错过了这场移动变革的时代发展良机,而且这块市场目前由iOS/Swift以及Android/Dalvik所主导,”Gupta表示。“Java确实能够通过各种方式作用于此类设备,但除非其能够以OEM方式直接登陆这些平台、否则广泛普及恐怕只会是痴人说梦。”
不过Java最近几年中所面临的最大障碍可能还是要数Java的迅速崛起。
Java缔造者Brendan Eich最近就Java取代Java既定作用的可能性提出了自己的观点,其替代范畴包括:各种各样的虚拟机系统、广泛部署的嵌入式方案、实现编码目标以及支持多种语言等。
Java甚至开始对Java的主要起效阵地——服务器——发起冲击,而这要归功于Node.js的出现。PayPal与Netflix两家公司在面对这一关键性的历史抉择时,都已经选择了利用Node.js来取代Java。
伟大的Java仍将长久存在
尽管一路上有坎坷亦有颠簸,但支持者们认为Java在未来很长一段时间内仍将继续保持自身在计算核心层面的重要地位。
“Java仍将继续在基础设施当中扮演核心组成部分(在未来五到十年内),同时遍布企业用于运行自身业务的记录系统,不过我认为我们在客户端上使用Java的机率将逐步降低,特别是考虑到微软以及谷歌都已经开始对自身浏览器作出调整、外加移动设备数量的激增,”Forrester公司的Hammond指出。
不过Java接下来所要面临的最大挑战很可能源自微服务以及向外扩展架构的快速崛起。
“我将高度关注Java 9的相关消息,了解核心Java库现代化调整进程的实际效果究竟如何,”Hammond表示。“我们发现已经有很多开发人员在利用Node等规模更小的运行时环境支持自己的新型微服务架构,同时他们亦在向无状态向外扩展型架构迁移。Java——从这个角度讲,.Net也面对着同样的问题——需要证明自身在这一新领域当中能够带来良好的表现。”
尽管Java已经相当成熟,但lambda等新特性以及对其它多种语言的支持能力仍在JVM之上不断出现,旨在帮助该平台始终保持与时俱进的能力,Hammond补充道。
“从技术的角度看,我认为Java将成为正确的发展方向,而且在我看来像Groovy这样的项目能够帮助Java技术团队作出出色的决策,例如添加lambda表达式,”Groovy项目负责人Guillaume Laforge表示。顺带一提,Groovy早在2003年就已经拥有了lambda表达式机制。
Eclipse基金会的Milinkovich认为Java在很长一段时间内仍将保持旺盛的生命力,他指出这一周期很可能会长达五十年。
“Java以及Java平台定义了整整一代企业级软件开发模式,而这些系统将在很长一段历史时期内继续存在,”他表示。“数百万开发人员利用Java作为自己的首选开发语言,而这些技能未来多年将一直伴我们同行。”Milinkovich同时补充称,Java对开源社区有着很大的亏欠。“Java的成功源自大量来自开源社区的创新及支持贡献,特别是来自Apache与Eclipse社区的协助。拥有专业级品质、但却完全免费的Eclipse IDE已经在全球范围内成为Java的主要配伍方案,”Milinkovich指出。“Apache的贡献则包括Tomcat、Commons、OpenJPA以及其它保证Java在企业领域取得成功的重要项目。”
Gupta对此表示赞同,并指出Java的辉煌在很大程度上得益于围绕其发展而成的强大技术社区。
这可能将成为未来决定Java具体寿命的关键性要素:即社区自身的发展态势。
Java新人自学交流群:202250194
标签: javahttp客户端实现