资深开发者带你看看 JVM 语言的浮沉史 - 开源中国社区
Float_left Icon_close
资深开发者带你看看 JVM 语言的浮沉史
局长 2017年08月24日

资深开发者带你看看 JVM 语言的浮沉史

局长 局长 发布于2017年08月24日 收藏 14

不时地,总会有预言 Java 将要死掉的文章冒出来,有意思的地方在于他们都没有写上一个日期。不过说实话,他们说的可能都是正确的。这是每一门语言的命运:消失或被遗忘 — 或者更准确的说是越来越少地被新项目所使用。问题是谁会取代他们?

上周在 InfoQ 上看到另一篇这样的文章。至少,这篇文章给出了一个有可能的替代品,Kotlin。它让我对 JVM 语言的状态和趋势进行了思考。值得注意的是,语言的趋势与每种语言的技术优点和缺陷无关。

我在 2001 年底开始学习使用 Java 进行开发。当时,Java 非常酷。每个年轻的开发者都希望使用所谓的新技术:要么是 .NET,要么是 Java,而当时较年长的开发者使用的是 Cobol 语言。学习 Java 之前,我已经在学校学习过 C 和 C++,所以,Java 中的内存管理对我来说是如此的简单。我对 Java 感到十分满意……但不是每个人都有着同样的想法。

Groovy 是在 2003 年出现的,但我不记得我是什么时候学习它的了。不过,一个事实是:此后,我不再需要一门脚本语言了。在开发具有很长开发人员队伍的企业级应用的背景下,静态类型比动态类型拥有巨大的优势,尤其是在进行产品测试以检查类型系统时。我唯一需要使用脚本语言的时候,是作为一名 WebSphere 管理员时:选择 Python 还是 TCL。

一年后,即 2004 年,Scala 才被我接受。我不记得是什么时候以及是怎样听到关于它的消息的,但确实是太晚才接触它了。因为当时对 Groovy 有抵触的心理,我决定尝试一下 Scala。主要原因是我对创造“更好”代码的长期兴趣 —— 更好的可读性和维护性。Scala 是静态类型的,也是我正在寻找的。当我学习 Coursera 课程 - Scala 中函数式编程的原则 它对我产生了三个主要的影响:

  • 它让我对自己编写 Java 代码的方式产生了困惑。例如,为什么当设计一个类时,我会自动生成 getters 和 setters

  • Scala 使得大多数开发者(包括我自己)更易编写出缺乏可读性的代码

  • 我开始寻找其他的替代语言

在 Groovy 和 Scala 进入第二代 JVM 语言之后(如果您把 Java 看作第一代),第三代 JVM 语言包括:

大概浏览了一遍他们之后,我确信它们没有太多的“牵引力”,不值得我在上面投资时间。

几年前,我决定自学基本的 Android 开发,以便能够了解移动开发者的开发环境。好家伙,即使有多年开发 Java EE 和 Spring 应用程序的经验,但还真给我一个惊喜 - 还不是一个愉快的那种。这就像回到过去十年前那样的开发体验,Android  API 非常低级,更别说在本地测试应用程序。经过快速的搜索,我发现 Kotlin 在很多地方被提到,所以最后决定试一试。我立即爱上 Kotlin 了,得亏它的扩展功能,我可以将现有的垃圾 API 改进得更好,甚至更优雅。

我开始更多的挖掘这门语言,并开始在服务器端项目中使用 Kotlin。然后,Spring 框架宣布了与 Kotlin 的整合。然后在 Google I/O 大会上,Google 也宣布在 Android 开发中官方支持 Kotlin。

译自:https://blog.frankel.ch

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:资深开发者带你看看 JVM 语言的浮沉史
分享
评论(30)
精彩评论
10
被误解的groovy,被高估的kotlin
6
我一直搞不懂如果不能系统性的颠覆,只凭这些花哨的语法糖有个毛用?...
3

引用来自“bboo”的评论

我一直搞不懂如果不能系统性的颠覆,只凭这些花哨的语法糖有个毛用?...
开发效率提高是企业愿意看到的,同样的功能更少、更高效的代码可以实现,后期运维也更加轻松,这些都是成本。
3

引用来自“震秦”的评论

无论 Kotlin,还是前几年被 Spark 带起的 Scala,只是红一时,看不到有啥能改变行业本质的特征。
Android 大神 Jake Wharton 入职 Google,
并加入了 Android 框架团队, 从事于 Kotlin 方面的工作.

Google高调扶正Kotlin是有"阴谋"的.
一旦Google在和Oracle的Java API官司中败北,
那么Google很有可能就无权继续在Android开发中使用Java.

Kotlin跟Java的互操作性,保证了能继续使用已有的Java代码库,
而且Kotlin也能无缝集成到Android Studio中,
因为Android Studio底层用的本就是Jetbrains开源的IntelliJ IDEA社区版,
而IntelliJ IDEA社区版默认就是集成Kotlin支持.
Google只需拿来主义,一分钱不花就能解决自己的后顾之忧.

Google当年选择Java作为开发Android应用的语言,
除了看重Java生态和开发者,很有可能也看中了JVM字节码的跨平台特性.
Google的桌面系统ChromeOS就有一个名叫Android Runtime for Chrome(ARC)的功能,
通过ARC,能在x86架构的ChromeOS上运行Android应用(JVM字节码).
显然,假设Android应用使用的是C/C++开发生成的ARM机器码,
那ChromeOS的ARC要想在x86上跑ARM机器码,性能和体验绝对十分糟糕.
而对于JVM来说,它不在乎是什么语言生成的字节码,它只要能执行应用的字节码就行.
所以,Google的NDK文档有个提示:
http://developer.android.com/tools/sdk/ndk/index.html
只有当你的应用必须使用C/C++时才应用使用NDK,而不能因为你喜欢使用C/C++.
可见Google并不希望开发者在Android应用引入C/C++代码.
2
马克思说过:资本主义必将灭亡,但是没有说啥时候
最新评论
0

引用来自“bboo”的评论

我一直搞不懂如果不能系统性的颠覆,只凭这些花哨的语法糖有个毛用?...

引用来自“mymbrooks”的评论

开发效率提高是企业愿意看到的,同样的功能更少、更高效的代码可以实现,后期运维也更加轻松,这些都是成本。
更少的代码我赞同,更搞笑的代码从何而来,况且更少的代码往往需要付出更低的可读性
1
Scala 使得大多数开发者(包括我自己)更易编写出缺乏可读性的代码
就认同这句话
0
scala 和 groovy 又因为你收了 google 钱而被黑了。。。
0
java是世界上最好的语言
1
你谈jvm语言却不提clojure是几个意思?
0

引用来自“YANG_YAWEI”的评论

就是加点语法糖,一群人就高潮了,java 本身不进步,这些基于 jvm 的语言也玩不出什么花来
@YANG_YAWEI jvm进步就可以了
0
主要是ORACLE对自由开源软件社区的个韭菜模式更加速了JAVA用户的逃离!!!
1
所以语言要想牛逼,关键要又一个牛逼的公司在后面支撑
1

引用来自“bboo”的评论

我一直搞不懂如果不能系统性的颠覆,只凭这些花哨的语法糖有个毛用?...
我意见相反,系统性颠覆的语言撼不动老大难的Java,历史遗留的市场没办法消化。
而且这也不是花哨的语法糖。譬如,把类型区分为可为null和不可为null,就是给编译器足够的信息,让它帮忙消除大量null隐患,或者消灭不必要的null检测,这很必要。再譬如,协程以及它的async语法,这很实在。还有面向切面编程。。。这还没毛用,难道这毛是观音给猴子的救命屌毛?
0

引用来自“震秦”的评论

无论 Kotlin,还是前几年被 Spark 带起的 Scala,只是红一时,看不到有啥能改变行业本质的特征。

引用来自“eechen”的评论

Android 大神 Jake Wharton 入职 Google,
并加入了 Android 框架团队, 从事于 Kotlin 方面的工作.

Google高调扶正Kotlin是有"阴谋"的.
一旦Google在和Oracle的Java API官司中败北,
那么Google很有可能就无权继续在Android开发中使用Java.

Kotlin跟Java的互操作性,保证了能继续使用已有的Java代码库,
而且Kotlin也能无缝集成到Android Studio中,
因为Android Studio底层用的本就是Jetbrains开源的IntelliJ IDEA社区版,
而IntelliJ IDEA社区版默认就是集成Kotlin支持.
Google只需拿来主义,一分钱不花就能解决自己的后顾之忧.

Google当年选择Java作为开发Android应用的语言,
除了看重Java生态和开发者,很有可能也看中了JVM字节码的跨平台特性.
Google的桌面系统ChromeOS就有一个名叫Android Runtime for Chrome(ARC)的功能,
通过ARC,能在x86架构的ChromeOS上运行Android应用(JVM字节码).
显然,假设Android应用使用的是C/C++开发生成的ARM机器码,
那ChromeOS的ARC要想在x86上跑ARM机器码,性能和体验绝对十分糟糕.
而对于JVM来说,它不在乎是什么语言生成的字节码,它只要能执行应用的字节码就行.
所以,Google的NDK文档有个提示:
http://developer.android.com/tools/sdk/ndk/index.html
只有当你的应用必须使用C/C++时才应用使用NDK,而不能因为你喜欢使用C/C++.
可见Google并不希望开发者在Android应用引入C/C++代码.
感觉你就是java高端粉,以前不是鼓吹php,狂黑java么,现在各种科普java相关东西
0
没暖用的文章
0
这篇文章是不是只翻译了开头,浮沉史在哪里?
0

引用来自“YANG_YAWEI”的评论

就是加点语法糖,一群人就高潮了,java 本身不进步,这些基于 jvm 的语言也玩不出什么花来
又要开始了?
0

引用来自“bboo”的评论

我一直搞不懂如果不能系统性的颠覆,只凭这些花哨的语法糖有个毛用?...

引用来自“mymbrooks”的评论

开发效率提高是企业愿意看到的,同样的功能更少、更高效的代码可以实现,后期运维也更加轻松,这些都是成本。
同样的功能更少、更高效的代码可以实现这些并不是企业所关注的,企业关注的开发效率和后期运维也更加轻松,但是,这些所谓新的语言一个接一个的出,真正认真学习到可以做企业级开发的人有几个?大多都是尝鲜罢了。用这些反而会拖累效率
3

引用来自“bboo”的评论

我一直搞不懂如果不能系统性的颠覆,只凭这些花哨的语法糖有个毛用?...
开发效率提高是企业愿意看到的,同样的功能更少、更高效的代码可以实现,后期运维也更加轻松,这些都是成本。
3

引用来自“震秦”的评论

无论 Kotlin,还是前几年被 Spark 带起的 Scala,只是红一时,看不到有啥能改变行业本质的特征。
Android 大神 Jake Wharton 入职 Google,
并加入了 Android 框架团队, 从事于 Kotlin 方面的工作.

Google高调扶正Kotlin是有"阴谋"的.
一旦Google在和Oracle的Java API官司中败北,
那么Google很有可能就无权继续在Android开发中使用Java.

Kotlin跟Java的互操作性,保证了能继续使用已有的Java代码库,
而且Kotlin也能无缝集成到Android Studio中,
因为Android Studio底层用的本就是Jetbrains开源的IntelliJ IDEA社区版,
而IntelliJ IDEA社区版默认就是集成Kotlin支持.
Google只需拿来主义,一分钱不花就能解决自己的后顾之忧.

Google当年选择Java作为开发Android应用的语言,
除了看重Java生态和开发者,很有可能也看中了JVM字节码的跨平台特性.
Google的桌面系统ChromeOS就有一个名叫Android Runtime for Chrome(ARC)的功能,
通过ARC,能在x86架构的ChromeOS上运行Android应用(JVM字节码).
显然,假设Android应用使用的是C/C++开发生成的ARM机器码,
那ChromeOS的ARC要想在x86上跑ARM机器码,性能和体验绝对十分糟糕.
而对于JVM来说,它不在乎是什么语言生成的字节码,它只要能执行应用的字节码就行.
所以,Google的NDK文档有个提示:
http://developer.android.com/tools/sdk/ndk/index.html
只有当你的应用必须使用C/C++时才应用使用NDK,而不能因为你喜欢使用C/C++.
可见Google并不希望开发者在Android应用引入C/C++代码.
0
没人吗? PHP 世界 ... 语言
0
最终还是要回归到字节码,语言最后还是要回归到JVM上,新语言不能在提升开发效率,增强可读性上更好,很难成大气。
0
就是加点语法糖,一群人就高潮了,java 本身不进步,这些基于 jvm 的语言也玩不出什么花来
2
马克思说过:资本主义必将灭亡,但是没有说啥时候
顶部