Java的優(yōu)勢在哪里?
只說語言層面。
嘿嘿,我念大學時也常有“又要被迫用Java了”的感覺。C# 和 Ruby 才是我大學后半的主要語言。當時最憤怒的莫過于明明不喜歡Java語言但還躲不開它…
技術上說Java語言并沒有什么特別的優(yōu)勢。跟同質語言比,它的語言設計不如C#,而且短期內沒有追近的勢頭(雖然從Java 8開始有進展了,但C# 6也在進步);跟異質語言比,它對native的精確控制和靈活性不如C++,動態(tài)性或者說便利性又不如Ruby、Python、JavaScript這些,在特定領域(例如高并發(fā))的便利性又不如別的特定語言(并發(fā)如Erlang,數(shù)據(jù)處理如R),跟新一代中間應用層面語言如Go、Swift比也沒法比。
要說為啥大學要用Java語言教學,那就是因為——它是門靠譜的民工語言。Java語言的設計從現(xiàn)在的角度看非常中庸,啥都不是特別出色,但都“還行”。出來找工作,會Java的話還是有不少選擇余地的。
庫方面也有非常豐富的選擇,無論是核心功能還是各種擴展功能。某些核心功能如果不想用標準庫的話還可以用很多第三方庫來替代。例如:正則表達式不想用 java.util.regex ?有很多替代品,試試 joni ?GUI不想用 Swing ?試試新的JavaFX,或者 SWT ?…(此處填入您最喜歡的庫)…
=================================================
話說回來,雖然我不喜歡Java語言,但底下的JVM我還是很喜歡的。在JavaScript引擎?zhèn)儽l(fā)之前,主流JVM的技術一直是業(yè)界實用的高級語言虛擬機/運行時里的領先者。現(xiàn)在更多熱錢流向了JavaScript引擎那邊,它們終于開始接近JVM的技術水平了。但像是GC方面,最先進的通用GC技術現(xiàn)在恐怕還是在主流JVM里。(CLR的概念跟JVM是比較同質的,但在內部看主流JVM的實現(xiàn)遠比CLR更動態(tài),更能夠適應變化的環(huán)境,兩者的很多部分目前還不在一個層面上。當然,性能特性不同,適用于兩者的性能測試方面也有很大不同。)
現(xiàn)在能用C++實現(xiàn)JVM來支撐別人跑Java的感覺很有趣