在JVM上使用非Java語言的原因
在最近完成的一次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)編譯器生成本地代碼,有官方的工具支持