JVM 语言的兴衰 【The Rise and Fall of JVM Languages】
The Rise and Fall of JVM Languages
安德鲁 Binstock 2017年4月3日
在过去的18月里, 我们在 Java 杂志上报道了各种有趣的 JVM 语言--从众所周知的到晦涩难懂的。毫无疑问, 我们可以继续这样做两年, 而不涉及相同的语言两次。这在许多方面都是 JVM 的荣耀: 它是语言后端的一个很好的平台。
JVM 的好处包括性能、广泛的可用性和熟悉度、优秀的工具和完整的文档。此外, 还有一个高度的信心, 即 JVM 将继续被广泛使用, 因此依赖于它的语言不会突然需要一个新的平台 (例如, 目标是 Adobe Flash, 被迫做的)。
jvm 语言通常分为两大类: 那些是现有语言的端口 (如 Ruby 的 JRuby 端口和 Python 的 Jython 端口), 以及从底层构建的 jvm (Groovy、Kotlin、Scala、Golo、影和其他许多)。.那些在后者小组经常位置自己作为改进的选择 Java 语言。事实上, 这些语言确实提供了 Java 没有实现的特性或语法--通常是出于特定的原因。其他时候, 这些语言导致 java 采用了一些特性, 在这种情况下, java 团队在制定自己的功能时就有了检查这些实现的好处。甲骨文认为, 这一对话的价值在其长期生产的 jvm 语言峰会上是很明显的, jvm 语言设计者们聚集在一起, 在他们自己和 Java 团队成员之间进行比较。
由于我们对 JVM 语言的长期报道, 我偶尔会问他们中哪一个会变得足够受欢迎, 以 "跨越鸿沟"。这一术语起源于杰弗里. 摩尔同名的书, 指的是受欢迎程度的提高, 这一技术从远见者和早期采用者的专属领域进入了实用主义的更广泛的怀抱, 尤其是商业。我相信只有三种语言能够进行这一跨越, 或者已经这样做了: Groovy、Scala 和 Kotlin。
Groovy 发现成功是一种古怪的脚本语言, 它填补了许多需要快速但有表现力的编码的利基。它是许多测试框架的脚本语言, 用于在 Gradle 中编写生成脚本。它在主要的 JVM 语言 (上面提到的三和 Java) 中也是独一无二的, 因为它不需要公司的赞助才能变得流行起来。(虽然关键的支持了几年, Groovy 是很受欢迎的, 在关键的收购, 并继续从关键停止赞助。这证明了该项目的长期领导人纪尧姆. 的社区技能。
今天, 没有任何一种语言能够像 Groovy 那样越过鸿沟, 那就是没有严重的财政支持。写一门语言是一个非常昂贵的命题, 就像推广它一样。在最初的学术创作中, Scala 得到了初创类型的支持, 直到该公司意识到--与 Groovy 一样举足轻重--在销售一种新的语言方面没有收入可言。因此, 类型更名为 Lightbend, 并重新调整其 nonlanguage 产品的重心。从 "Scala 公司" 的突破是如此的干净, 宣布改名的新闻稿甚至没有提到声明正文中的语言。就像我说的, 语言里没有钱。
Kotlin 依赖于一个相当不同的模型。该语言的设计部分是为了 JetBrains 的内部使用。它的设计是务实的, 旨在帮助公司降低成本, 开发其广泛的开发工具线。发展和促进 Kotlin 的好处大于其成本, 关键的是, JetBrains 从 Kotlin 以外的产品中获得收入。然而, 费用是重要的。据安德烈 Breslav 在 JetBrains, 超过二十几个专职的发展和促进 Kotlin。
在这个过程中, Kotlin 已经演变成了一个 JetBrains 的效率工具。其强烈的务实取向强烈地回响着一个重要而活跃的社区, 它加速了它跨越鸿沟的运动。Kotlin 从而使 JetBrains 能够将新的开发人员带入其工具生态系统。但是不断增长的用户群也给公司带来了成功的语言经常面临的挑战: 管理用户的需求与公司自身对语言的欲望。
由于经济学支持 Kotlin 的进化和 JetBrains 对开发者的长期知识将帮助它与社区合作, 我希望在未来几年内 Kotlin 将完全跨越鸿沟, 并成为一个-或可能是主要的非 Java JVM语言, 从而再次证明了 JVM 生态系统的健壮性。
安德鲁 Binstock, 主编
The Rise and Fall of JVM Languages
Apr 3, 2017
A viable business model is key to language adoption.
For the last 18 months, we at Java Magazine have been covering all sorts of interesting JVM languages — from the well known to the obscure. There is no doubt we could continue doing this for another couple of years without covering the same language twice. That’s in many ways the glory of the JVM: it is a great platform for language back ends.
The benefits of the JVM include performance, wide availability and familiarity, excellent tools, and thorough documentation. In addition, there’s a high level of confidence that the JVM will continue to be widely used, so languages that depend on it won’t suddenly need to ind a new platform (as those that targeted Adobe Flash, for example, were forced to do).
JVM languages generally fall into two major categories: those that are ports of existing languages (such as the JRuby port of Ruby and the Jython port of Python) and those that are built from the ground up for the JVM (Groovy, Kotlin, Scala, Golo, Fantom, and many others). Those in the latter group often position themselves as an improved alternative to Java the language. And indeed these languages do provide features or syntax that Java has not implemented — often for specific reasons. Other times, the languages lead to Java’s adoption of features, in which case the Java team has the benefit of examining those implementations when formulating its own. That Oracle sees value in this dialogue is apparent in its longtime production of the JVM Language Summit at midyear, where JVM language designers come together to compare notes among themselves and with the Java team members.
Because of our long coverage of JVM languages, I am occasionally asked which of them will become popular enough to “cross the chasm.” This term, which originated in Geoffrey Moore’s book of the same name, refers to an increase in popularity that drives a technology from the exclusive domain of visionaries and early adopters into the wider embrace of pragmatists and especially of businesses. I believe there are only three languages that are capable of this crossing or have already done so: Groovy, Scala, and Kotlin.
Groovy found success as a quirky scripting language that has filled numerous niches where quick but expressive coding is needed. It is the scripting language for many testing frameworks and is used for writing build scripts in Gradle. It is also unique among the primary JVM languages (the three mentioned above plus Java) in that it did not require corporate sponsorship to become popular. (Even though Pivotal did support it for a few years, Groovy was popular long before Pivotal’s acquisition and has continued to be since Pivotal stopped sponsorship.) This is testament to the community skills of the project’s longtime leader, Guillaume Laforge.
Today, no language can hope to cross the chasm as Groovy did — that is, without serious financial backing. Writing a language is a very expensive proposition, as is promoting it. While originally an academic creation, Scala was backed by the startup Typesafe until the company realized — as Pivotal did with Groovy — that there is no revenue to be made in selling a new language. As a result, Typesafe changed its name to Lightbend and refocused on its nonlanguage products. The break from being the “Scala company” was so clean that the press release announcing the name change did not even mention the language in the body of the announcement. As I said, there’s just no money in languages.
Kotlin relies on a rather different model. The language was devised in part for JetBrains’ internal use. Its design is pragmatic and aimed at helping the company reduce costs in developing its extensive line of developer tools. The benefits of developing and promoting Kotlin outweigh its costs and, crucially, JetBrains derives its income from products other than Kotlin. The costs, however, are significant. According to Andrey Breslav at JetBrains, more than two dozen full-time equivalents are developing and promoting Kotlin.
In the process, Kotlin has morphed into more than just an efficiency tool for JetBrains. Its intensely pragmatic orientation has strongly resonated with a significant and active community, which accelerates its movement across the chasm. Kotlin thereby enables JetBrains to bring new developers into its tool ecosystem. But the growing user base also presents the company with the challenge that successful languages often face: managing the demands of users versus the company’s own desires for the language.
Because economics support Kotlin’s evolution and JetBrains’ longstanding knowledge of developers will help it work with the community, I expect that within the next few years Kotlin will fully cross the chasm and emerge as a—or possibly the—primary non-Java JVM language, so proving yet again the robustness of the JVM ecosystem.
Andrew Binstock, Editor in Chief