分享

与Josh Bloch探讨Java未来

 星辰010 2019-09-30

代发广告

Josh Bloch在Sun公司多年为Java平台作出了杰出贡献(如果你用过Java Collections框架就会了解这一点),现在Google就职,是获奖图书《Effective Java》及《Effective Java 第二版》的作者。最近他在基于Web的RedHat中间件2020大会上做了一场演讲,其主旨是对Oracle所管理的Java平台的未来表示出审慎乐观和忧虑。InfoQ采访了Josh以了解其在这方面的更多想法。因为有许多不同的、现实的观点交织在一起,这次讨论(尤其考虑到Sun人才从Oralce流失日益加剧以及为Oracle如何管理社区和Java智力资产而担忧)是最近以来最热烈的一次。我们很高兴能与Bloch一起讨论这些问题。

InfoQ:你最关切的是什么?

这不是个单选题,过去几年有很多因素纠缠在一起,导致了Java风向发生了变化。

InfoQ:为什么你会觉得Java的发展步伐慢下来了?

  1. Sun/Apache纠纷以及TCK许可权之争都严重干扰了JCP过程运作。
  2. Sun支持力、领导力和透明度的缺乏使得Java 7发展缓慢。我不知道在过去几年里Sun分配给JavaSE的资源到底有多少,但结果是非常明显的:JavaOne年年都在办,但Java7却还遥不可及。Java支持者间的许多争端也着实让人讨厌。前期,Sun所扮演的乐善好施的角色还是有助于减少内部矛盾的。
  3. OpenJDK使用GPLv2许可阻碍了人们采用OpenJDK,即便是那些不太关心TCK问题的人。“copyleft”吓跑了很多潜在的公司使用者。结果,为了同时发展Harmony和OpenJDK,资源被一劈两半。由不同JCP成员针对不同标准的不同组件所使用的不同许可实在是混乱不堪,结果实际上给Java平台的发展带来了负面影响。

InfoQ:对于Sun所不能及,Oracle有更好的解决方案吗?

Oracle有支持JCP改革以终结争端的历史。而且他们在经济上也比Sun更有实力,所以他们能够承担起复兴这一平台的重任,而且他们也公开宣传要这么做。最终,由于这次易主,一些历史遗留问题将就此终结。对于Sun来说不可接受的一些变化,Oracle或许会从全新角度去看待——“为什么不变呢?”

InfoQ:是否所有症结都归结为许可问题?

不,许可问题只是其中的主要问题,但还有其他问题。正如我以前提到的,对于资源、领导力、焦点的缺乏也都是问题。

InfoQ:ApacheHarmony项目(被作为Android类库的基础)的境况可接受吗?(在Google采用Harmony作为Android类库基础之前,Harmony与Sun就TCK许可问题斗争得很激烈。Google决定使用Harmony而非OpenJDK对Harmony的TCK许可争端影响并不大,却对Sun决定其OpenJDK使用GPLv2许可影响很大。如果没有更宽松的许可协议,Google的合作伙伴不会同意使用。Apache组织一度被授予了一个受限的TCK许可,但其仍被拒绝,因为使用领域的限制对Apache和JCPEC来说都是不可接受的,他们认为这一限制违反了JCP协定。)

不能接受。正如以前我所提到的,它阻碍了平台的健康成长。而且它给众多公司带来了巨大的工作压力,造成在Harmony和OpenJDK之间不必要的资源拆分。

InfoQ:你希望Oracle对Harmony这类东西做出何种反应?

我希望他们能履行在2007年12月12日JCP EC会议上所提出的决议:

决议 1 (Oracle提议,BEA附议)

“执行委员会认为JCP应该成为一个开放的、独立的、厂商中立的标准化组织,在这里所有成员参与的公平竞争场所具有以下特点:

  1. 成员为开发提供资金并管理开支
  2. 一个合法的实体、理事机构、会员资格等等。
  3. 一个新的、简化的知识产权政策,允许最广大的实现。
  4. 规章需要有兼容性
  5. 致力于促进Java编程模型

此外,如果这一变革实际对Java社区影响较小,EC应该尽快为此制定计划。”

至于说“新的、简化的知识产权政策”,如果所有Java规范的所有组件都采纳像Apache或BSD这样被广泛接受的宽松的开源许可,我认为这将非常有利于整个社区发展。

InfoQ:你怎么看Oracle的角色?

我很乐见他们能够纠正Sun领导力不足及Java平台发展缓慢的问题。当然现在的情况有点不同了,世界已经改变了。其他组织将贡献更多的资源并享有更大的控制权。

InfoQ:你认为像Dalvik这样的东西能适应新的Oracle Java环境吗?

在崭新的开源世界里,有多个相关平台是既定事实。有许多类Unix操作系统及许多Linux变种(为多种用途做了优化)。我认为Dalvik作为VM,有着截然不同的设计目标,并且受到HotSpot或JRockit的制约。

InfoQ:另外,你怎么看Java ME的发展?彻底被取代了?Sun会“祝福”Android成为下一代Java ME吗?在Android/iPhone当道的今天,Jave ME如何与之竞争?

我认为我不适合就此作出推测,但是需要指出的是,在开发界“功能手机——featrue phones”(相对于“智能手机——smart phones”)仍有一席之地,而Java ME正是为功能手机而设计的。

InfoQ:最近,Tiobe语言排行不止一次显示出Java使用率下降的趋势。你怎么看?

其显示Java使用率轻微下降,相应的C使用率却在上升。我不确定这是真实情况的还是某种统计异常,但是看到一个已存在35年之久的“通用汇编语言”排在了第一位还蛮有趣的。当然,我承认C在我心里是一软肋。

InfoQ:这一点或许可以证明,但是你觉得是本身JVM使用率下降了,还是由于Ruby/Scala/Jython/Groovy的增长导致了Java份额的下降?

实际上你提到的这几门语言都没有排在前20。这并不意味着他们不重要或没有价值。但他们还不是主流。不过,近些年语言研究和设计发展的数量让我感到震惊,涌现出许多好的思想,更不可思议的是人们正在探索这些语言。

InfoQ:你认为Java在衰退吗?我们应该为此而感到担忧吗?

我认为,公平地说Java正处在困难期。但是我不认为该平台或语言在衰退。我觉得其有衰退的危险,但是我希望Oracle和Java社区能够防止这一情况出现。没错,我觉得它让大家感到担忧。我认为一个强大的Java对编程大众是有益的:包括公司、高等教育、K-12、开源社区。

InfoQ: 依你之见,谁有希望替代它(而且不在JVM上)?

除过CLR(其实际上仅是Windows上的平台)之外,还没有哪一个能与JVM处在同一水平线上。实际上,还没有谁能真正替代Java编程语言。是有许多很好的编程语言,但是没有一个有同样的“设计中心”。语言是工具,我们应该针对不同工作使用正确的工具。没有包治百病的药。

InfoQ:有无发放JRE许可的商业案例?

或许有一些高深莫测的变相案例。但是我认为保持JRE被广泛使用符合Oracle的利益,这和在Sun的时候一样。

InfoQ:接着上一个问题,当然也是单独一点:关于在JRockit JVM、Sun JVM及其他各色VM技术之间进行协调的观点,你怎么看?

理论上,我认为把各个JVM的优点抽取出来组合成一个更好的东西是一件非常好的事情。但是请记住Sun甚至从未成功将客户端和服务器端的不同HotSpot加以整合。整合多个系统是非常难的,可以实现但绝不容易。一旦失败成本将非常高昂。

InfoQ:还有什么要补充的吗?

我只想提醒一下大家,许多近期的Java成功案例都被淹没在前途暗淡的声音之下了。这些案例中包括Google Collections、Guice、你前面所提到的JVM语言、以及Android。有了Oracle方快速、果断的行动,加上Java社区的广泛合作,我觉得Java平台的前景非常光明。

查看英文原文:A Discussion with Josh Bloch on the Future of Java

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多