在JVM上使用非Java语言的原因

jopen 10年前

在最近完成的一次Java.net的投票中,有超过75%的开发人员认为使用非Java语言是有一定的原因的。有19%(有点吃惊)的开发人员认 为,在JVM上完全没有必要使用非Java语言进行开发。总共有181个人进行了投票,有一人进行了评论。下面是投票的内容及结果:

在JVM上使用非Java语言最重要的原因:

  • 23%(42票)——更先进的语法
  • 6%(11票)——更好的性能
  • 38%(69票)——一些非Java语言更适合某些类型的编程任务
  • 8%(15票)——不太懂Java,不过了解移植到JVM的那门语言
  • 19%(34票)——没理由使用非Java语言
  • 6%(10票)——其它

做出这份调查问卷花费了我不少心思,我发现调查的结果非常有意思(尽管这不是一疹专业的调查)。我在猜测人们选择某个选项的时候究竟是怎么想的。 “一些非Java语言更适合某些类型的编程任务”这个赢得了大多数的投票,我认为这是合理的。各种非Java的JVM语言已经被广泛使用,并且仍在不停地 增长中。

我认为,"更先进的语法"当然也是一个非常合理的选择。Java 7和Java 8中语言的一些改进本质上就是想引入其它语言的一些特性(包括一些很受欢迎的非JVM语言)。更新的那些JVM语言,它们不需要向下兼容,也没有历史遗留 代码的负担,可以在开始设计的时候就考虑使用一些现代的语法,也可以针对某些特定类型的编程任务而专门设计语法。这又回到了“一些非Java语言更适合某 些类型的编程任务”这点上了。

我把“更好的性能”这个选项放到问卷中很大一部分原因是出于好奇。提起性能的时候,大家并不认为Java是很笨重的,如果你清楚你要做的是什么,你 可以通过对Java进行性能调优,从而获得不可思议的处理速度,或者难以置信的响应延迟,又或者是意想不到的处理大数据的能。和,等等。我在想,或者有些 语言在原生状态就已经针对高性能的特点对JVM进行了调优,我希望那6%的投了“更好的性能”的那帮人也是这么想的。。

我很高兴看到只有8%的人使用非Java的JVM语言是因为"不太懂Java,不过了解移植到JVM的那门语言"。我能想到有人在必要的时候会选择 使用非Java的JVM语言,因为他们确定很快就不会再使用JVM了。如果你计划长期作为一名职业的软件工程师,甚至将来进阶成为一名软件架构师的话,由 于你不想学Java而成为一名Jython或者JRuby开发人员恐怕不是上策。

下面是19%的那些人,他们选择了“没理由使用非Java语言”。我把这个选项放到投票里,一个是出于好玩,一个是为了给某些Java粉表表忠心。 问题在于,选择这个选项的人都是出于好玩吗?有没有人选择它是因为尝试了其它非Java语言后却不喜欢的呢?有没有人是因为不知道JVM上面除了Java 还有别的语言而选择了这项的?我希望选中这个选项都是那些骄傲的Java老兵。

6%选择了“其它”,网友pjmlp还留下了评论:

选择其它,是因为我认为有许多原因,不止一个:

  • 现代的语法
  • 类型推导的支持
  • 值类型
  • 物化泛型(reified generics)
  • 对外国语言有更好的FFI支持。
  • 可以通过AOT (Ahead-Of-Time)编译器生成本地代码,有官方的工具支持

来自:在JVM上使用非Java语言的原因

英文原文链接