Jacks是IBM developerWorks主持的開源項目(GPL許可),旨在解決Java編譯器符合JLS(Java語言規範)的自動化回歸測試問題。其誕生緣於Sun未履行將JCK(Java兼容性套件)提交標準組織的承諾,導致開發者無法使用JCK進行日常回歸測試,Jikes團隊由此啟動Jacks項目填補空白。
# 安裝Tcl 8.3+ (需tcltest擴展和Unicode支持)
# 從CVS獲取源碼
setenv CVSROOT :pserver:anoncvs@oss.software.ibm.com:/usr/cvs/jikes
cvs login # 密碼: anoncvs
cvs checkout jacks
編輯_setup配置文件指定編譯器路徑,如javac_setup、jikes_setup。
# 運行特定目錄測試
cd tests/jls/packages/package-declarations/unnamed-packages
jacks jikes # 使用Jikes編譯器測試
# 運行單個測試用例
jacks jikes 9.1.1-1 # 模式匹配運行特定測試
tcltest::test 9.1.1-1 {should generate error on synchronized interface} {
saveas SynchronizedInterface.java \
{public synchronized interface SynchronizedInterface {}}
compile SynchronizedInterface.java
} FAIL
// 測試源碼
public synchronized interface SynchronizedInterface {}
// Jikes編譯結果:FAIL (正確報錯)
// 舊版Javac編譯結果:PASS (漏報錯誤,後續版本修復)
| 編譯器項目 | 採用效果 |
|---|---|
| Jikes (IBM) | 核心測試基礎設施,大幅提升質量 |
| GCJ (GCC Java前端) | Red Hat主力開發者Tom Tromey:每次前端修改必跑,極易用 |
| Kopi (Kaffe) | 項目經理Thomas Graf:首輪169失敗,修復後降至147,極具價值 |