搜尋老魚筆摘(本網誌及所屬協作平台)

載入中…

2009-01-08

Java SE 7(JDK 1.7-nio2) 與 Groovy 關係是簡約與相輔相成

Java SE 7 將在今年發佈,
當中最棒的一個特點將帶來一個全新的檔案系統的API集,
這個理由最主要是:
舊有的 API 過於陳舊, 功能角色定位不清, 且不太符合當今的多樣化作業系統,
例如 java.io.File 是在 JDK 1.0 大約十年前的作業系統時代背景下制定,
十年後的今天, 各家作業系統(OS)不斷演進, 有必要且有需要一個全新的API,
來接替 java.io.File 這位API老人家的工作 ...

來看看老魚的簡單例子先:
  • OS:GNU/Linux Debian (unstable)
  • JDK: 1.7.0-nio2 , HotSpot VM 14
  • Groovy: 1.7 b1




首先我們用Linux下的文字編輯器 vi 來分別用 Java 與 Groovy 完成二個相同結果的程序,
用來判斷指定的檔案是否存在, 以 JDK 1.7 NIO2 實作:

Java版: 嚴行命名約定, 我們為這檔案取名 PathTest.java 與程序內class同名.
import java.nio.file.*;

class PathTest {
public static void main(String[] args) {
FileSystem fs = FileSystems.getDefault();
Path path1 = fs.getPath("/etc/hosts");
Path path2 = Paths.get("/etc/sysctl.conf");
System.out.println("path1 = " + path1.exists());
System.out.println("path2 = " + path1.exists());
}
}
"審慎的"確定code沒問題後, 請出了 javac 來為我們編譯成靜態執行碼後,
執行它 ... 其實也沒什麼大事 @"@ 就印出二小行結果,
判斷二個指定的檔案是否存在於系統中:
path1 = true
path2 = true
Groovy 版: Scripting 命名是鬆散的, 隨便您取名例如 fish.groovy ...


來看看 Groovy 對 Java 做的改變
  1. 命名上可以是鬆散的, 型別也可以被省略
  2. 約規的宣告式也可以省略(public static void main())
  3. ; 分號可有可無
  4. 不需編譯過程可以直接執行, 開發速度上變快了
  5. 仍可選擇完全編譯成 java bytecode 執行
  6. Code 變的簡潔, 可更不需要依賴IDE, 僅用 vi
  7. Groovy 仍依附著Java, 不是替代是相輔合一
  8. 可使用全部JDK的特性, 但對Java開發者來說學習成本很低, 多為簡化式子
  9. 型別省略不代表它為弱型別Scripting, 由下面的 assert 可驗證


更多請見老魚獨立專案的持續分享

沒有留言:

張貼留言

熱門文章

大智若魚::人生處處是道場-站內SEO參考標籤雲