COBOL 式死亡Java 是否真的即将被取代? |
别: 初级 Ted Neward ([email protected] ), 主管, Neward & Associates 2008 年 6 月 17 日 对 于最近有关 Java™ 即将退出历史舞台的传言,您可能想知道在这个时候放弃使用 Java 平台并转而使用更新的技术是否时机成熟?在作出您的判断之前,请先回顾并查看一下 Java 生态系统以及它的竞争者,看看这些传闻是否站得住脚。换而言之,了解整个 Java 世界目前的现状,并客观公正地评判这个平台。<!----><!----> <!----> 在学生时代,我 们可能会想起 Thomas Malthus 所做的预言,他认为人类赖以生存并继而形成人类文明的农业体系,可能无法再承受人口数量的不断攀升,另一方面,这种情况将不可避免地造成严重的后果,通常 会引起巨大的灾难或其他自然灾害。他这样写道:若对人口数量不加限制,将呈几何级数增长。而人们赖以生存的物质则以代数级数增长。与后者相比较,如果稍微 了解一下这些数字,就会意识到人口增长是多么惊人。这意味着,针对生存物质的匮乏,需要对人口增长进行严格而持久的控制。物质匮乏终究会发生在某些地方, 并且必定会严重影响到大部分人类。 Thomas Malthus 在 1798 年发表了 “人口论”(参见 参考资料 )。从那时开始,我们一直在等待着验证有关人口增长的 “Malthusian 检验”。 编程人员,特别是使用 Java 平台和语言的人员,可能已经注意到,随着使用难度不断增加,人们的种种预测和统计暗示着他们所选择的平台即将没落。而大量候补接任者跃跃欲试:人们提名 .NET、Ruby 甚至是 Python 作为 “下一代重要技术”。 这两种 “Malthusian 学说” 之间存在着惊人的相似之处。 Malthus 认为,由于食物对人类的生存非常重要,而地球的产出有限,并且繁殖所需的生物体系是不会改变的,我们终将达到一个极限,那时地球将无法承受人口负担。换句 话说,如果继续以现在这样的方式生存,将注定灭亡的结局。那么在 1798,很难推翻 Malthus 的学说。 同 样,在过去十八个月中,Java 社区出现了一种新趋势:即预测 Java 平台的消亡日期。从一些低级的新闻杂志将其称为 90 年代的技术,到夸大其辞的技术演讲者宣传它的现状,再到各种书籍宣称我们正在 “超越” Java 时代,不难发现一点:通过合理的暗示、代码演示、逻辑或统计性说明,Java 正在走向没落。 Malthus 忽略的是那个时候正兴起的工业革命。在 Malthus 一生中,他能够目睹到人类农业生产力的巨大飞跃,这要感谢蒸汽机和轧棉机这些发明。这些发明为他的学说提供了必然的“缺少的一环(missing link)”,它们使粮食产量成倍增长,从而使农业系统能够拟制由“两性激情”制造的沉重的人口负担 。随后,人口控制方面的技术创新对降低人口增长起到了相同的作用,减轻了人口负担,从而造成了很多西方国家出现人口负 增长,因此情况与 Malthus 的相当合理的逻辑完全相悖。而所有这一切在 Malthus 撰写其论文时是无法预见的,使人类能够超过他所预测的农业系统的承受极限而继续存活,并且避免了由此而来的一系列灾难。 而技术批评家所忽略的则是 Java 虚拟机的替代语言的兴起引发了巨大的变化。不过不要轻易相信我的一家之言,让我们逐一查看支持这种说法的论证,看看它们是否站得住脚。 一 些人仅仅引用了一些统计性描述,说明 Java 不再是程序员中最重视的语言,就简单的判定 Java 已经在走下坡路。其他人指出 Java 缺乏其替代环境所提供的某些特殊特性,这些特性被标榜为用户及其应用程序的 “需求”。还有一些人发表(毫无事实依据)诸如 “大企业不会再使用 Java” 等言论,从而明确地暗示,如果大企业不使用 Java,那必定是因为这种技术不值得使用。 Java 语言,从更大的程度来讲,Java 平台及其生态系统,很早以前就超过了 Simon Peyton-Jones 所谓的 “生存阈值(The Threshold of Immortality)”,就像 C++、C、COBOL 和其他语言所经历的一样。这些工具几乎可以永远存在下去,这是因为它们将继续提供有用的功能,或者是因为重写代码的尝试可能要比继续按原样使用和维护系统 付出更多的代价(有关特定语言或系统究竟属于这两个原因的哪一种,存在很多的争议,而这对于本文的目的则无关紧要)。 另一个论据让所有聪明人都放弃 Java 而转向平台 X 或语言 Y。在 2005 年的一篇 BusinessWeek 文章 “Java? It's So Nineties”(参见 参考资料 ) 中,引用了很久以前就倒闭的应用服务器公司 NetDynamics 的前 CTO Peter Yared 的话,“Java 像恐龙一样古老”。可是,还未来得及搞清楚利益冲突和推理逻辑,这篇文章就写到 Yared 所有的公司正在尝试在 LAMP(Linux®/Apache/MySQL/P-language)栈之上重新创建应用服务器体验。 (这样做可能有些无礼,但我还是要指出 Ruby 的构想实际上早于 Java,同样还包括 Perl 和 Python,更不要说 Linux、Apache 和 MySQL……这里我就不便再多做解释了)。 引 用我喜欢的一部电影,“生活是痛苦的,殿下。持不同观点的人一定有所企图”。或者,为了更恰当地解释这个主题,可以这样说:“过渡到一个新的平台是痛苦 的,CTO 先生。持不同观点的人一定有所企图”。也许并不令人惊讶,对于一些已经重新定位到其他技术领域的 Java 专家来说,情况确实如此。 来 看看另一个论据,它说 “Java 的顶级语言的位置已经不保,因此它的衰退必定非常悲惨,因此最好避开这场灾难”。这种论据所依据的是一个最基本的前提,即如果 Java 不再是世界上最畅销的技术,则不值得再提供该语言的支持。而这种说法若经过逻辑推理,则根本毫无道理。 统计信息很久以来一直被认为是不可靠的(如果使用不当的话),正如 Benjamin Disraeli 的巧妙解释,他说:“世界上有三种谎言:谎言,诅咒和统计”。统计信息可以用来论证最靠不住脚的论据,只需要根据论据仔细挑选所需的统计信息。注意 BusinessWeek 一文中使用的引用:“调查……显示 Java 的使用逐渐没落,而 LAMP 和 Microsoft® 的 .NET 技术势头强劲”。喔,听上去情况不妙。但是,请继续读下去,“根据 Evans 的秋季调查显示,在北美使用 Java 作为其首选编程语言的开发人员的比例已下降到 47.9%,而 2002 年秋为 51.4%”。因此,在过去六年中,在使用 Java 作为其首选 编程语言的开发人员中,使用率下降了 3.5 个百分点。 请注意,这里使用了 “首选” 编程语言一词,这意味着开发人员自己需要区别什么是他们的 “首选” 语言。考虑到大量的 XML 配置,使用 Spring/Hibernate/JSP Java 栈的开发人员可能可以很好地判断出 Java 不再是他们的首选语言。 注 意过去六年中 Java 平台之上兴起的动态语言(Jython、JRuby、Groovy 甚至是 JavaFX),根据我和我的同事(“No Fluff Just Stuff” 的演讲者)在 NFJS 活动的非正式投票中获得的应用数字,这些动态语言可以很轻松地解释这三个百分点的下降。 考 虑同样摘取自同一篇文章的引用:“在另一份调查中,今天秋季,PHP 在北美的采用已经上升到 36.1%,而 2002 年同期为 26%。其增长速率几乎和欧洲和亚洲一样快”。考虑到这是一个不同的调查系列,它只是为了显示 PHP 的增长,而不是 Java 市场的萎缩。祝贺 PHP,但是任何研究过企业环境的开发人员都可以证明,生产软件部署并不像这篇文章的作者力图暗示的那样是一个零和(zero-sum)游戏。大型 IT 环境通常由种类繁多的工具、平台、语言和产品组成。事实上,我们几乎可以在这里实现 整合,特别是那些大型机组件。 谈 到主机,事实上,COBOL 在几十年前就不再是最重要的语言了,但是,它现在仍然继续用于现金支付、转移存款、支付信用卡等业务并运行主要的金融网络,尽管很多行业权威早已经宣布了 它的 “死亡”。对于本应在坟墓里腐烂的技术,这实在是不错;这使我想起 Mark Twain,当他看到家乡报纸上他的讣告时说:“先生们,关于我死亡的报道被严重夸大了。” 然而,撇开统计数 字的问题不谈,第二个问题更严重:为什么仅仅因为所选的工具不是最好的就弃而不用?Java 占据软件开发的首要地位近十年,仅仅由于它 “下降” 到第二位,游戏就结束了?甚至认为仅仅因为人们的惰性就会阻止 Java 重新恢复首要语言的位置,事实是,10 个程序员里面有 4 个会继续使用这种语言,这将保证 Java 在未来几十年里仍然保持活跃的生命力。更荒谬的说法是,Java 的增长将面临急刹车,并且再也不会出现 Java 部署,然而,Java 目前在整个行业内得到了广泛的部署,这可以保证 Java 继续出现相当长的时间。 尽管 COBOL 被宣布已经死亡,但是要求使用它的人每年达到 6 至 7 位数。
然而指出一个论点的缺点并不能证明另一个观点,对于本文也是一样的。相反地,我们应该用批评的眼光看待 Java 语言和平台,而其强项和劣势经受住了严格的分析。Java 之所以长寿在于它能满足未来十年的需求,而不是由任何作者或批评家来决定它的生死。 最后,我们考虑一下构成 Java 平台的那些组件:
毫无疑问,Java 开发人员可以将他们自己的条目添加到这个列表中,证明这个论点:在 Java 平台中留有太多的优良的东西被认为“死亡了”或“将要死亡”或者甚至在“崩溃的边缘”。
最简单的事实是:Java、平台、生态系统、环境和开发社区与死亡相去甚远,至少和目前正在使用的其他语言或平台距离一样远。即使是最严格的统计事实筛选也不能否认 Java 的领先地位。 此 外,即使 Sun Microsystems 公司倒闭,平台也不会消亡。全世界的 Java 开发人员,联合起来!不要惧怕束缚的铁链:最终您将看到,这些铁链其实并不存在。多亏 Java 平台的开源,它现在被称为 OpenJDK,更不要说 Java 的其他开源“净室(clean room)”实现(Apache Harmony 和 Soy Latte 只是其中之二),即使 Sun 公司彻底从地球上消失,包括 IBM®、Apache、BEA 和 Oracle 在内的其他实体也能继续提供 JVM、库和工具,来支持整体生态系统。 Java 总有一天会消亡?绝对会的,但是我坚信 Java 的寿命会超过今天的程序员所使用的大部分语言,正如 COBOL 做到的那样。它甚至能比刚刚走出大学校园的第二代 Java 程序员走的更长。 “恐龙”,确实如此。 学习
获得产品和技术
讨论
|