写点什么

与 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:075469
用户头像

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

关注

评论

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

TiKV 集群部署 注意事项

TiDB 社区干货传送门

TiDB 数据库开发规范

TiDB 社区干货传送门

TiDB at ZaloPay Infrastructure & Lesson Learned

TiDB 社区干货传送门

TIDB 3.0.5 性能压测

TiDB 社区干货传送门

数据库架构选型

日本大型移动支付软件 PayPay 的 TiDB 迁移实践

TiDB 社区干货传送门

tidb开发规范

TiDB 社区干货传送门

NewSQL 在微众银行核心批量场景的应用

TiDB 社区干货传送门

实践案例

【精选实践】TiDB 在马上消费金融核心账务系统归档及跑批业务下的实践

TiDB 社区干货传送门

实践案例

从抓包发现并解决 Navicat 编辑 TiDB 视图报错的问题

TiDB 社区干货传送门

实践案例 TiDB 底层架构

tiup目录冲突检测不健全导致的节点被destroy问题以及解决

TiDB 社区干货传送门

PD 分配 TS 的 QPS 上限揭密

TiDB 社区干货传送门

AskTUG 论坛迁移实战:Discourse 从 PostgreSQL 到 MySQL 到 TiDB

TiDB 社区干货传送门

【技术专题】如何做数据库选型?

TiDB 社区干货传送门

实践案例

速度收藏!TiDB 读、写性能慢问题排查思路汇总

TiDB 社区干货传送门

管理与运维

Tiflash 尝鲜小案例

TiDB 社区干货传送门

管理与运维

【TiDB 4.0 新 Feature 原理及实践】 Dashboard 触手体验

TiDB 社区干货传送门

招募体验官!构建实时数仓 - 当 TiDB 遇见 Pravega

TiDB 社区干货传送门

TiDB 5.0 异步事务特性体验——基于X86和ARM混合部署架构

TiDB 社区干货传送门

【热门问题】关于近期签名过期的处理合集

TiDB 社区干货传送门

【TiDB 最佳实践系列】乐观锁事务

TiDB 社区干货传送门

实践案例

TiCDC 应用场景解析

TiDB 社区干货传送门

实践案例

SQL只是CRUD?

TiDB 社区干货传送门

TiDB 底层架构

【TiDB DevCon 2020】金融专题论坛演讲视频汇总

TiDB 社区干货传送门

移动云基于 TiDB 实现 serverless 数据库服务

TiDB 社区干货传送门

常见问题排查之 -- DM 主键冲突的原因及排查思路

TiDB 社区干货传送门

基于阿里云ECS部署的TiDB 2.1.14升级到4.0.0-rc实践

TiDB 社区干货传送门

管理与运维 安装 & 部署

【TiDB 最佳实践系列】HAProxy

TiDB 社区干货传送门

实践案例

几分钟读懂 TiDB HTAP

TiDB 社区干货传送门

从内容角度看看TUG小伙伴都在关注些啥

TiDB 社区干货传送门

版本测评

TiDB 性能分析工具——PProf

TiDB 社区干货传送门

TiDB 底层架构

如果你的 kubelet 运行在容器中,使用 local static provisioner 要注意一个问题

TiDB 社区干货传送门

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