導讀:COBOL(Common Business Oriented Langauge)是面向商業的通用語言,又稱為企業管理語言、資料處理語言等,是最早的高階程式語言之一,是世界上第一個商用語言。前段時間網路上就Java是不是COBOL進行了一番熱議,公說公有理,婆說婆有理。究竟孰對孰錯?本文對此進行了一番分析。
文章內容如下:
如果你用Google搜尋“Java is the new COBOL”你會發現有很多結果,對Java的誤解進行反駁,我相信這一想法大多數是從Ruby社群提出的,Ruby從開發人員的角度來分析,認為Java太依賴開發工具,不需要開啟一個文字編輯器就可開始程式設計。另一方面,Java有很多型別,它是一種靜態型別的語言,使開發人員工作起來繁瑣,這就是為什麼Java開發者認為IDE是如此重要。
當不少Java開發者遷移到Ruby後,好像Java停滯了,不管是誰寫了Swing應用程式都能提示你:匿名內部類使你的程式碼比原有的大5倍。所以,很多人認為Java是新的COBOL,他們有這些共同點:
1.Java太冗長
2.Java呆滯
3.只有大型企業使用它。
原文作者詳細分析了這些觀點:
冗長和呆滯
在Java 7和Java 8中冗長呆滯已經得到解決,Java 7解決了冗長的很多問題,而Java 8已經將語言推向了一個新的程式設計正規化,面向函式程式設計。
Java 8是Java的一個轉折點,這也表明顯示Oracle非常重視語言向後相容性的演繹性發展。
Java 7地址太冗長
Java平臺首席架構師Mark Reinhold說:Java 7是演進,Java 8是革命。
在Coin專案中Java 7借鑑了很多新特性,以下是一些新特性:
1 2 3 4 5 6 7 8 9 10 11 |
switch (lang) { case "Java" : out.println("I like frameworks!"); break; case "Ruby" : out.println("I like Pabst Blue Ribbon!"); break; case "PHP" : out.println("I like WordPress!"); break; } |
型別推斷:
1 |
Map> peopleByDept = newHashMap>(); |
變成:
1 |
Map> peopleByDept = newHashMap<>(); |
在Inspired by Actual Events JavaOne 2011 keynote post提到了很多Java 7新的簡化方式。
Java 8推動語言進步
Java 8則是轉向了新的語言,增加兩個主要特性:
1.Lambdas / Closures
2.A proper module system(aka Jigsaw)
原來我們用內部類實現類似閉包時,如下:
1 2 3 4 5 6 |
Component button = new Button("Click me!"); button.onClick(new EventHandler() { public onEvent(Event e) { out.println("I was clicked!"); } } |
而Lambdas則可以表達成:
1 |
button.onClick(e => out.println("I was clicked!")); |
企業使用Java
那麼企業還在用Java嗎?當然,Apple, Twitter, LinkedIn, SquareSpace都在使用,還有很多公司直接的或者間接的通過JRuby Jython Scala或Clojure這些基於JVM的新語言來擴充Java的開源生態系統。
綜上所述,Java沒有停滯,正在越來越好,如果你說Java是新的Cobol,就如同說Ruby是新的Java一樣錯誤。
英文出自:tataryn.net