本文來源于我在InfoQ中文站原創的文章,原文位址是:http://www.infoq.com/cn/news/2013/11/ceylon1.0-beta-release
在經曆了3年多的開發曆程之後,Ceylon現已呼之欲出。Ceylon 1.0 Beta版實作了完整的語言規範,提供了在Java與JavaScript虛拟機上執行Ceylon程式的能力,并且可以與針對這些平台所編寫的原生代碼進行互動。
Ceylon是個開放源代碼、社群參與建構的語言、平台與SDK,面向業務計算,它主要是由來自于Red Hat的Gavin King(Hibernate架構創始人、Seam架構負責人)進行設計的。從2011年開始進行開發,它可以運作在Java與JavaScript虛拟機之上,并且幾乎消除了用戶端與伺服器之間的語言差異。
Ceylon的靈活性讓業界分析師們認為它将成為“Java殺手”,Gavin King也曾對這個論點做出過如下的回複:
首先,我從來也沒有将Ceylon看作是Java殺手或是下一代的Java語言。我的意思是說Ceylon并不是Java,它是一門深受Java影響的全新程式設計語言,由那些喜歡Java的人開發并設計出來的。Java并不會在短時間内消亡,是以沒人能夠幹掉它。
為什麼要開發一門新的語言呢?Ceylon的建立源自多種因素,不過Gavin King在其部落格上寫到,最重要的原因在于人們發現使用Java的繼承文法來定義使用者界面以及結構化資料實在是太困難了。Ceylon開發社群也在利用這個機會編寫一個全新的SDK,試圖解決Java SDK中過時的類庫所帶來的諸多問題。
Gavin King繼續說到:
我們在過去的十年中一直在為Java設計和建構架構與庫,是以深知它的限制所在,對此也感到非常沮喪。我認為Java中很難解決的頭号技術問題(或許也是其他現有的JVM語言存在的問題)就是使用類型安全與繼承文法來定義使用者界面和結構化資料的問題。如果這個問題沒有解決方案,那麼Java隻能繼續深陷在XML的泥潭之中。
不過我們很多的沮喪并不僅僅在于Java語言本身。Java SE SDK中那些過時的類庫存在太多的問題,開發一個優秀的SDK是Ceylon項目首先要實作的需求。
雖然Ceylon與Java存在很多相似之處與不同之處,不過最重要的差别在于類型系統。在你學習程式設計時,類型是首先要學習的東西。讓人驚訝的是,這門語言并沒有我們大多數人都習以為常的原生類型和數組。Ceylon使用了集合的并集與交集的概念進行表達,讓編譯器自動确定類型。這樣,文法本身就非常具有可讀性了,特别是對于大型團隊來說更是如此。如果想要了解新特性的完整清單,請參閱http://ceylon-lang.org/documentation/。
有人可能會說從頭開始建立一門全新的語言和SDK實在是一項太過于龐大的任務了。實際上,我們并不是完全從頭開始的:我們可以重用Java生态圈中基于開源許可的大量代碼。想想看,有Open JDK的,JBoss的,當然還有Eclipse的。Ceylon的目标并不是要實作整個SDK、編譯器以及IDE。這對于像Red Hat這樣規模的公司來說并不是一個無法完成的任務。當然了,我們也并不是完全由自己來做這件事的,如果沒有社群的幫助和參與,這樣的項目就沒那麼有趣了。
Ceylon的官方站點列出Ceylon具有如下特性:
- 強大:Ceylon擁有強大的靜态類型系統,可以防止很多Bug的産生,你可以通過Ceylon輕松進行表達:并集類型、交集類型、高階函數、摻元繼承以及枚舉類型等等。
- 可讀性:我們在閱讀别人代碼上所花費的時間要超過自己編寫代碼的時間。是以,Ceylon非常強調可讀性,通過高度有規則的文法、支援樹形結構以及優雅的文法糖來做到這一點。
- 可預測性:Ceylon通過清晰度來控制複雜性。語言極力避免會引起混亂的那些隐式特性。編譯器遵循着簡單、直覺的準則同時會生成有意義的錯誤提示資訊。
- 平台:Ceylon是個完整的平台,擁有一個現代化的SDK。它能運作在Java與JavaScript虛拟機之上,填平了用戶端與伺服器之間的溝壑。Ceylon完全能夠與Java及Java SDK進行互動。
- 子產品化:子產品化是語言、SDK與工具非常核心的一個組成部分。編譯器會生成子產品歸檔,然後通過下一代的倉庫架構Ceylon Herd進行分發。
- 工具:靜态類型是促成殺手級工具産生的一個強有力的技術。Ceylon帶有一個功能完善的指令行工具集、一個完整的基于Eclipse的IDE,提供了搜尋、重構、快速修複、輔助功能、自動完成、調試等諸多功能。
此次釋出主要包含如下特性:
- 完整的語言規範,定義了可供專業開發者所用的Ceylon語言的文法和語義。
- 一個指令行工具集,包含了針對Java與JavaScript的編譯器、一個文檔編譯器,并
- 且支援在JVM與Node.js上執行子產品化程式。
- 一個強大的子產品架構,用于代碼組織、依賴管理以及運作期的子產品隔離。
- 一個語言子產品,這是最小的Ceylon SDK的跨平台基礎。
與此同時,Ceylon團隊還釋出了Ceylon IDE 1.0 Beta版,這是功能完善的基于Eclipse的內建開發環境的最新版。
語言的新特性
此次釋出引入了如下新的語言特性,同時還修複了不少Bug:
- 注解與注解限制
- 一個類型安全的元模型
- “靜态”方法與屬性引用
- 可以操縱資源的try語句
- switch語句中可以支援字元串、整型以及字元
- 字元串與字元字面值中可以支援具名的Unicode字元
- **乘法運算符
- 非空的variadic參數
- 用于調用繼承接口成員的新的改進文法
感興趣的讀者還可以在這裡了解到語言的全部新特性。
IDE的新特性
此次釋出的IDE增強了性能,同時也修複了不少Bug:
- 支援在子產品運作期裝載Ceylon程式
- 粘貼時的自動導入以及自動縮進
- 內建Eclipse内建的檔案與包重構功能
- 内聯的“連結模式”重命名,并且支援對文檔中所引入的字元串的重命名
- 改進了自動完成功能,包括“連結模式”的參數完成
- 與Eclipse合并視圖更好的內建
- 與指令行工具集配置檔案格式的內建
- 增加了幾處新的輔助功能,包括快速增加與修改導入
- 一個新的編輯器首選項頁面
社群
Ceylon社群站點提供了文檔以及關于快速上手的資訊,位址是http://ceylon-lang.org。
SDK
針對1.0 Beta版重新編譯的平台子產品位于共享的社群倉庫中,位址是http://modules.ceylon-lang.org。
源代碼
Ceylon的源代碼、規範等内容位于GitHub上,位址是https://github.com/ceylon。
問題
Bug與建議等資訊都位于GitHub的問題追蹤器上,位址是http://ceylon-lang.org/code/issues。