HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

与 Josh Bloch 探讨 Java 未来

  • 2010-05-05
  • 本文字数:2929 字

    阅读完需:约 10 分钟

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

InfoQ:你最关切的是什么?

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

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

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

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

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

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

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

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

2010-05-05 21:075506
用户头像

发布了 150 篇内容, 共 45.7 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

Android-黑科技保活实现原理揭秘,字节跳动Android内部学习资料泄露

android 程序员 移动开发

Android冷启动优化解析,字节跳动8年老Android面试官经验谈

android 程序员 移动开发

Android基础到进阶四大组件之ContentProvider详解,安卓开发菜鸟教程

android 程序员 移动开发

Android小菜鸡2 个月的面试亲身经历告诉大家,如何进入 BAT 等大厂?

android 程序员 移动开发

Android常见原理性面试题(1),2021年阿里Android面试题精选

android 程序员 移动开发

Android平台Camera开发实践指南,【大牛疯狂教学】

android 程序员 移动开发

Android从零开始搭建MVVM架构(4),Android开发进阶吃透这一篇必拿60W年薪

android 程序员 移动开发

Android四大组件之一(broadcast receiver),移动端开发语言

android 程序员 移动开发

Android基础都没学好就去面试,这不是挖坑给自己跳吗?字节跳动三面凉凉经

android 程序员 移动开发

Android学习攻略:手把手教你循序渐进地学习Android知识

android 程序员 移动开发

AndroidStudio Gradle第三依赖统一管理,移动端开发技术

android 程序员 移动开发

Android中级面筋:开发2年的程序员如何短期突击面试?跟着这几步去准备

android 程序员 移动开发

Android之使用Assets目录中的xml布局、网页、音乐等资源

android 程序员 移动开发

Android常用adb命令,开源新作

android 程序员 移动开发

AndroidX,安卓framework开发

android 程序员 移动开发

Android—案例分析解读:观察者模式,androidstudio社区

android 程序员 移动开发

Android事件分发机制源码解析,最新Android通用流行框架大全

android 程序员 移动开发

Android大牛是如何炼成的:郭霖的成长之路专访,2021最新Android高频精选面试题讲解

android 程序员 移动开发

Android入门项目(六)Android的wifi开发,flutter旋转动画

android 程序员 移动开发

Android动画之属性动画,2021Android开发面试解答之设计模式

android 程序员 移动开发

Android常见原理性面试题,android高级开发面试题以及答案

android 程序员 移动开发

Android干货---丢掉你老旧的参数传递方式,投入Bracer的怀抱吧。

android 程序员 移动开发

Android10填坑适配指南,实际经验代码,拒绝翻译,android开发书籍pdf下载

android 程序员 移动开发

Android修炼系列(八),2021年Android开发者跳槽指南

android 程序员 移动开发

Android前景怎么样、是不是要凉了、是不是应该考虑要转行

android 程序员 移动开发

Android厂商推送冲突了。。,android中常见的面试题

android 程序员 移动开发

Android学习路线总结,绝对干货,保洁阿姨看完都会了

android 程序员 移动开发

Android—Dagger2-让你爱不释手--终结篇(附视频讲解(1)

android 程序员 移动开发

Android—Dagger2-让你爱不释手--终结篇(附视频讲解,Flutter全方位深入探索

android 程序员 移动开发

Android全面解析之Handler机制:常见问题汇总,三级缓存和二级缓存的区别

android 程序员 移动开发

Android学习攻略:手把手教你循序渐进地学习Android知识(1)

android 程序员 移动开发

与Josh Bloch探讨Java未来_Java_Josh Long_InfoQ精选文章