熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

Java帝國的王儲——Groovy

2013-11-23 18:42:54  來源: Java核心技術 
讓我們來回顧一下主流語言的發展歷程機器語言(由組成) > 匯編語言 > > C語言 > C++ > Java > ?

  不知道大家有沒有發現在語言發展過程中存在這麼一個規律能成為未來主流語言的必與當前主流語言屬同一語系換句話說由王子繼承王位

  在C語言之前似乎還處於春秋戰國各種編程語言混戰世紀年代C語言成為秦始皇各種軟件甚至操作系統也改用C語言編寫但可惜C語言是面向過程的程序代碼一多邏輯流程就容易混亂再加上全局變量和可運算指針的添亂使程序員調試程序萬般辛苦

  世紀年代C++應運而生它繼承了C語言(包括C語言的語法)並添加了類等特性使C++成為一種面向對象的語言但C++的多繼承人工內存管理從C語言那裡繼承的可運算指針等問題同樣使程序員萬般痛苦

  世紀年代正當人們飽受煎熬的時候Java誕生了她去除了C++中的糟粕保留了C++中的精華(包括語法)並添加了一些自己的特性比如垃圾回收器接口等我聽很多由C++轉Java的朋友說過這麼一句話用Java寫程序簡直是一種享受可惜Java的那優美的語法使之失去了輕盈的身軀程序員需要寫相對比較多的代碼來完成同樣的功能此外Java代碼即使編譯為class文件也能被高質量反編譯為Java文件獲得源碼

  世紀初Groovy( 背後有ThoughtWorks Big Sky等公司的支持)橫空出世她幾乎兼容Java的所有語法並能無需轉換直接利用Java所寫的類及接口在Spring中可以透明地注入 Groovy對象(與注入Java對象沒有任何區別)且擁有自己的一些敏捷特性如動態類型ClosureMixins等以及對應JEE中如JSP Servlet的Groovy敏捷版GSP以及Groovlet等不但如此她還擁有Ruby最引以為傲的Ruby on Rails的對應實現版本但非克隆Grails( 背後有Oracle的支持)此外Groovy代碼編譯為class文件後即使不混淆反編譯後獲得的Java源代碼也極難讀懂(換句話說如果您能讀懂這些反編譯得來的源碼那您早就用不著hack人家的class文件了)原因是Groovy自身就是用Java編寫的class文件烙有 Groovy的印跡?指代誰至今還不太明了但Groovy至少已經具備了繼承王位的必要條件語言本身是利用當前主流語言所編寫並與當前主流語言的語法相似且能夠結束當前主流語言的弊病

  綜上所述選擇Java世界中動態語言Groovy(Groovy = Java + Python + Ruby + Smalltalk)至少是明智的不僅因為她是JVM上JCP全票通過的官方標准語言更因為她身上具有王儲的特質Groovy之於Java猶如 Java之於C++另外由於Groovy本身就是用Java寫的所以對Groovy的投資能夠得到保值因為Groovy的程序能運行於 JDK+之上所以Groovy的新特性(比如Groovy中新添加的Annotations以及static import)不會像Java中的新特性(比如Java中的Generics以及Annotations等)那樣無法在舊版JDK上使用這就起到了保值作用如果說Java實現了跨平台那麼Groovy不僅實現了跨平台而且實現了跨Java平台

  附關於Groovy的JCP投票結果

  

  再來看一個Groovy官方網站( )上的例子在官方網站上還有許多教程和應用實例大家不妨去看看

  利用已存在的Java類庫


    import monslangWordUtils   class Greet {def nameGreet(who) {
name = who[]toUpperCase() + who[]
}def salute() { println Hello $name! }}   class Greeter extends Greet {Greeter(who) { name = WordUtilscapitalize(who) }}   new Greeter(world)salute()

  最後看看Groovy與其他Java世界的動態語言的受關注程度的比較吧從圖中可以看出Groovy有壓倒性趨勢

  


From:http://tw.wingwit.com/Article/program/Java/hx/201311/25614.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.