在 Java 的世界发生了什么事?事实上,很多。Java 9 在 9 月将会来临,Jigsaw 终于获批,而 Java 大咖正在给我们提供关于这一编程语言的未来的有价值的洞察。在这分为 3 部分的访谈系列中,我们阐明了 Java 的发展趋势以及什么语言才是值得尊敬的对手。
Java 哪都没去
在其发布之后的二十年,Java 依然是开发人员的最爱。如果说这门编程语言正在死去,可以肯定地说它死过了。它死过又复活过的次数比我们所能统计的还要多,可是它仍然活着没有倒下。我们将在 9 月当 Java 9 发布时看到 Java 更多的内容。
迄今 Java 已经存在很长一段时间,有足够的时间为其建立优越的编写、维护和调试代码的工具。例如,各种开发环境像是 Eclipse 或 NetBeans 已经使得编写 Java 容易许多。它们甚至能够被用来编写基于 Java 的新兴语言的代码。为什么我们会一次又一次看到文章宣布 Java 即将来临的死亡? 就像 Mark Twain 所说的,Java 之死被夸大其词了。 Wayne Citrin 博士, JNBrideg 有限责任公司的 CTO 和 联合创始人
大咖列表
谁在 Twitter 上影响力最大?JAX 团队翻查了数千个技术账号并从中找出 20 个 Twitter 大号,这些大号被每个 Java 开发人员的 Twitter 所关注。如果你想听听他们对 Java 9 有什么想说的,他们希望在 Java 10 里看到什么, 以及他们怎么看待 Java 的对手,你是幸运的!
请看这里的清单。
在这分为 3 部分的访谈系列中,10 位 Java 大咖将评论 Java 的人气、谈论其模块化生态系统,并展示他们对 Java 10 的愿望清单。
在这个访谈系列的第 1 部分,我们邀请了 Java 大咖来谈论 Node.js 超越 Java 的可能性,以及评论关于斯坦福大学决定以 Java 取代 Java 来教授其 CS 科系入门教程 事件。
问题一:有些人似乎相信,Node.js 可能在不久的将来有取代 Java 的机会 。Java 真地可能被废黜吗?
Markus Eisele( Lightbend 公司 Developer Advocacy 的负责人,Java 拥护者):
Java 革命清晰地表明了我们的世界将是多元化和多样化的。展望未来,我们将不再拥有只需学习单一语言的特权,而是依赖于在开发应用时平台和行业标准默认的(语言规范)。Java 这门语言仍然被广泛学习和传授。但某些部分也在快速变迁:集中的基础设施正在消亡,服务端渲染的全栈的 Java 应用在快速地步其后尘。现在首屈一指的前端语言是 Java。在云环境和容器领域占据优势还有 Go 。在 Java 保持其主导地位再久一会儿的同时,这份清单还将会继续扩大。
Mario Fusco(在 Red Hat 从事 JBoss 规则引擎 Drools 开发的高级软件工程师,Java 拥护者):
Node.js 会吸引那么多人真是超出我的理解。我们正处于多核 CPU 时代,连我的智能手机都有 8 核,而我们真的想在我们的服务器上运行一个单线程框架吗?在一个典型的 Node.js 应用运行于 8 核机器上时,经常发生的是,一个核始终是利用率 100% ,而其他核实际上闲置着。如果开发人员喜欢 Node.js 实现的事件循环模式,有许多别的 Java 框架能以更加强壮和稳健的方式提供同样的模式。我认为一些公司之所以采用 Node.js ,唯一可以理解的原因是,现在有更多的 Java 开发人员,他们通常也更廉价。十年前,我看到了类似反向的趋势。那时有许多 Java 程序员被要求进行网页端的开发而他们不喜欢使用(或学习)Java。为此,有很少的类似 GWT 可以使用 Java 开发 web 系统的框架。 GWT 没那么不堪,但伸缩性不好,无法创建数百万并发用户的网站。Node.js 是 GWT 的服务器端的对标技术,也会存在类似的问题。我的意见是我们应该总是使用合适的工具来完成手头的工作。Java 对于 Web 开发是可以的(即使不是很理想),但是对于后端,我可以想到很多更好的替代方案。
Marcus Biel(软件工匠、JCP 成员和 《整洁代码之道》 的传道者):
对我来说,这个比较真的不重要,这是苹果和梨的比较。 Java 最适合复杂的(多线程)业务系统, Node.js 很适合实时 Web 应用程序。问一个 Java 开发人员,他或她当然将拥护 Java ;问一个 Node.js 开发人员,他们自然会拥护 Node.js 。各有各的领域。
Lukas Eder( jOOQ 背后的公司 Data Geekery GmbH 的创始人及研发部负责人,Java 拥护者):
说这些话的唯一人群就是 Node.js 背后的供应商。关于 Java 的长期未来(下一个 20 年)我们不能过于多说。但如果“不久的将来”意味着 2-3 年,那 Java 觉得是不会被任何人废黜的。Java 在 Valhalla、Graal 和 Truffle,以及许多其他项目中还很受欢迎,即将到来的改进也将确保 Java 会跟上形势。
Trisha Gee( JetBrains 的 DA、伦敦 Java 社区的核心成员, Java 拥护者):
我想我们是在这里比较桔子和苹果。 Java 是极好的服务器端语言,出于很多理由被企业重度使用,包括稳固的向后兼容性、跨平台支持(在操作系统层面)、以及非常庞大的 Java 开发人才池(从初级到极为有经验的)可供聘请。Node.js 也被用在企业环境,但不是给相同类型的应用程序,我们更多地在初创公司中看到它,用于快速原型和敏捷应用开发(在各种规模的组织里)。我个人认为,考虑到可以用技术解决的大量问题,这两门语言以及许多其他语言和框架都有足够的应用空间。
Vlad Mihalcea( Hypersistence 的 CEO , 《高性能 Java 持久化》的作者):
我想不会。Node.js 对于建立快速原型是很好,但缺乏像 Java 拥有的经受战斗考验的许多成熟的框架。
Jake Wharton( Square 公司的安卓工程师):
Java 社区一直支持其进攻 Java 真正主导的许多事情:静态类型、更强大的工具,以及具备广度和深度的库的生态系统。我认为这是朝正确方向迈出的一步,但从长远观点来看还有很多工作要做,才能在所有的三个领域真正取代 Java 。
Thorsten Heller(绿鸟集成技术公司CEO,该公司提供网格智能平台Metercloud ):
可能会,也可能不会。我相信在不久的将来 Java 可能会被废黜或至少受到挑战,但我不会赌 Node.js 。如果要赌,我会押注在 Kotlin 上。它的简单性、精益语法、函数式方法 - 仅仅是它的部分特征 - 将提高它的流行性。好像还可以提高代码的整洁度?总的来说,我相信不久的未来将会更加异构:指定任务最合适的编程语言。对我来说,Java 更多地是一个平台而不是一门语言。
Baruch Sadogursky( JFrog 的 DA ):
Java 对 Java 正如 ham(火腿) 对 hamster(仓鼠)。编程语言有许多,而它们不一定相互竞争。Java 是一门惊人的前端语言和真正的浏览器之王,但总的 来说,在服务器端,Java(尤其是 Node.js )是一个有趣的尝试,而不会取代一门合适的面向后端的语言,比如 Java 。
Quentin Adam(智慧云 CEO):
我认为这不会发生。Node.js 和 Java 是用途各异的不同工具。Node.js 及其工具套件正在凭借强大的构建工具,和一些小型服务器部件,促使 Web 前端成为一个真正的生态系统。 然而 Java 有一个非常强大的生态系统和庞大的代码库,以 Node.js 完全取代 Java 的可能性渺茫。在某些领域,像大数据(Hadoop 生态系统或 Kafka ),JVM 是平台质量本身的首选,而 Node.js 在将来绝无可能驱动 Hadoop 。我们将会看到越来越多的项目同时使用 Node.js 和 Java 。Node.js 将经常在前端面向用户,但它不会处处取代 Java 。
问题二:今年, 斯坦福大学著名的编程入门课程 弃 Java 而取 Java。对于 Java 的相关性和流行度,该如何评价?
Markus Eisele:
Java 是企业中的头号编程语言,它带来了一个充满活力的工具、标准和方法学的生态系统。 它不是最简洁或最漂亮的语言,但它可以扩展到大型团队,让我们学会了确保体面的质量。前端开发大多已经转向 Java ,而我认为应用程序的可视化部分一直是编程的切入点。对我来说,这会是一个自然的过程,却并不一定要讲述一个 Java 的相关性或流行度的故事。更多地是关于它的可用性和学习曲线。
Mario Fusco:
我看了这则新闻感到惊讶,不是因为他们放弃了 Java 而是因为他们选择了 Java 。从教学的角度来看,Java 也许不是一门好语言,但在这方面 Java 无疑还要糟糕得多,因为它会引诱(有时强求)一种不好的代码技巧,而不是促使开发人员以一种清晰的方式去思考。我认为一所大学不应该选择一门编程语言,只因为它在业界流行而且被广泛采用。Alan Perils 曾说过:“一门不影响你的编程的思维方式的语言是不值得了解的。” 不幸的是,我认为 Java 和 Java 都可以归于此类。我们学习它们更多是出于商业原因,而不是因为我们喜欢使用它们。在我看来,一门面向对象编程的语言如 Smalltalk,一门涵盖函数式方法的语言如 Haskell ,更不用说像 Clojure 这样的现代 Lisp 语言,都是更好的选择。
Marcus Biel:
对我来说,首要问题是:关于此事斯坦福大学是怎么说的?斯坦福认为作为第一编程语言学习 Java 并不好。这就如他们所说的,如果他们这样认为,那也没关系。
Lukas Eder:
绝对不会。当我在 EPFL ( Scala 语言在此被创造)学习计算机科学时,我的编程课程包括当时时髦的语言如 Ada、 VSDL、 PL/SQL、 SQL、 Java、 XSLT、Scala、 Prolog、C++。假设我现在才开始学习,我敢肯定 Java 也会成为课程的一部分。我确实希望,作为一个行业,包括大学教师,需要意识到个别语言在大环境中并不重要。每一门语言都有其存在的空间和理由,而 Java 由于各种各样的原因一直是最流行的语言。个别大学并不会去改变这一点,他们为什么要这样做呢?
Trisha Gee:
同样,这是使用正确工具进行工作的情况。 Java 按理说是比较容易教给初学者。它轻仪式、样板代码少,而且你可以使用如 REPL(REPL是交互式解释器环境,R 指 Read,E 指 Evaluate,P 指 Print,L 指 Loop,因为交互式解释器会读取输入内容并对其求值,再返回结果,并重复此过程)这样的工具快速获得反馈。虽然 Java 9 将拥有 REPL,但整体而言 Java 有相当多的仪式(设置你的环境、类路径、一个集成开发环境或编辑器),外加更多的样板代码,所有这些都是学习编程之路上的绊脚石。任何教编码的人都想要轻量级的、易于上手的语言,这是可以理解的。Java 在斯坦福的更高级的课程中仍然被教授,这表明学习 Java 仍然是相应的和重要的。特别是,有些东西起初看起来碍事,如静态类型、更严格的结构(在类等方面),一旦他们掌握了基本编码的工作原理,似乎对开发人员来说更有用。
Vlad Mihalcea:
虽然出于教学原因 Java 可能帮到他们,因为你不需要编译代码就能从浏览器运行所有的示例,但是我不认为这一举动会影响 Java 的人气。
Jake Wharton:
我不认为这会对 Java 造成消极影响而对 Java 带来正面效果。Java 是一种动态类型和原始类型比 Java 宽容得多的语言,也不要求一个编译步骤就可执行。编程入门应该关注于基本面,如批判性思考和问题解决技巧,而为此你并不需要 Java 所具备的益处。
Thorsten Heller:
起步阶段采用 Java 也许容易些,所以我认为这是斯坦福放弃 Java 的动机。让人们更快速地起步,迅速地给他们一些成功的信心。然而,Java 作为不同编程语言的平台(比如 Java 本身、 Kotlin、 Scala 等等),在相关性和人气上将不会落后。 Java 平台是现在的企业平台,并且也将是未来的企业平台。
Baruch Sadogursky:
大学在采用教学编程语言上通常落后于行业趋势数年。在斯坦福,Java 被采用于 2002 年,那是在 Java 被引入 5 年之后,在 Java 已经变得极度流行 2-3 年之后。所以,斯坦福只是赶上 Java 在年轻开发人员中的流行趋势,正如我们已经好几年在 StackOverflow 和 GitHub 统计调查中看到的那样。
Quentin Adam:
这更多地是反映了 Java 的人气。对于初学者来说, Java 会是简单快速获得UI(User Interface,用户界面)反馈的好选择。 如有必要,人们接下来会去学习 Java 。
就目前而言,Java依然是强大的编程语言,还处于领先地位短时间内并不会被其它取代!
好了,这里是黑马程序员上海校区。
请速速关注(黑马程序员上海校区)公众号或登录传智播客官网了解更多关于IT的学习资讯、新闻八卦。
或联系你们的学姐(集智慧、美丽于一身的我!学姐VX:CZBKSH),欢迎来撩!