Java是新的COBOL嗎?
COBOL(Common Business Oriented Langauge)是面向商業(yè)的通用語言,又稱為企業(yè)管理語言、數(shù)據(jù)處理語言等,是最早的高級編程語言之一,是世界上***個商用語言。前端時間網(wǎng)絡(luò)上就Java是不是COBOL進(jìn)行了一番熱議,公說公有理,婆說婆有理。究竟孰對孰錯?本文對此進(jìn)行了一番分析。
文章內(nèi)容如下:
如果你用Google搜索“Java is the new COBOL”你會發(fā)現(xiàn)有很多結(jié)果,對Java的誤解進(jìn)行反駁,我相信這一想法大多數(shù)是從Ruby社區(qū)提出的,Ruby從開發(fā)人員的角度來分析,認(rèn)為Java太依賴開發(fā)工具,不需要打開一個文本編輯器就可開始編程。另一方面,Java有很多類型,它是一種靜態(tài)類型的語言,使開發(fā)人員工作起來繁瑣,這就是為什么Java開發(fā)者認(rèn)為IDE是如此重要。
當(dāng)不少Java開發(fā)者遷移到Ruby后,好像Java停滯了,不管是誰寫了Swing應(yīng)用程序都能提示你:匿名內(nèi)部類使你的代碼比原有的大5倍。所以,很多人認(rèn)為Java是新的COBOL,他們有這些共同點:
1.Java太冗長
2.Java呆滯
3.只有大型企業(yè)使用它。
原文作者詳細(xì)分析了這些觀點:
冗長和呆滯
在Java 7和Java 8中冗長呆滯已經(jīng)得到解決,Java 7解決了冗長的很多問題,而Java 8已經(jīng)將語言推向了一個新的編程范式,面向函數(shù)編程。
Java 8是Java的一個轉(zhuǎn)折點,這也表明顯示Oracle非常重視語言向后兼容性的演繹性發(fā)展。
Java 7地址太冗長
Java平臺***架構(gòu)師Mark Reinhold說:Java 7是演進(jìn),Java 8是革命。
在Coin項目中Java 7借鑒了很多新特性,以下是一些新特性:
- 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;
- }
類型推斷:
- Map<String, List<String>> peopleByDept = newHashMap<String, List<String>>();
變成:
- Map<String, List<String>> peopleByDept = newHashMap<>();
在Inspired by Actual Events JavaOne 2011 keynote post提到了很多Java 7新的簡化方式。
Java 8推動語言進(jìn)步
Java 8則是轉(zhuǎn)向了新的語言,增加兩個主要特性:
1.Lambdas / Closures
2.A proper module system(aka Jigsaw)
原來我們用內(nèi)部類實現(xiàn)類似閉包時,如下:
- Component button = new Button("Click me!");
- button.onClick(new EventHandler() {
- public onEvent(Event e) {
- out.println("I was clicked!");
- }
- }
而Lambdas則可以表達(dá)成:
- button.onClick(e => out.println("I was clicked!"));
企業(yè)使用Java
那么企業(yè)還在用Java嗎?當(dāng)然,Apple, Twitter, LinkedIn, SquareSpace都在使用,還有很多公司直接的或者間接的通過JRuby Jython Scala或Clojure這些基于JVM的新語言來拓展Java的開源生態(tài)系統(tǒng)。
綜上所述,Java沒有停滯,正在越來越好,如果你說Java是新的Cobol,就如同說Ruby是新的Java一樣錯誤。
原文:http://sd.csdn.net/a/20111109/307231.html
【編輯推薦】