領先一步
VMware 提供培訓和認證,助您加速進步。
瞭解更多本週,Twitter 圈子因 SpringOne Europe 的訊息而沸騰。其中一個引起廣泛關注的公告是 SpringSource 的新開源生產力工具,代號為“Roo”。
Roo 是一個精密的往返程式碼生成器,它能讓您比以往任何時候都更快、更輕鬆地建立和演進 Spring 應用程式。即使您對程式碼生成有所保留,Roo 仍然值得一試。它包含了顯著的創新,解決了對程式碼生成的所有主要異議,同時仍然提供最佳實踐的 Spring 應用程式,並在整個應用程式生命週期中保持有用。
這是我將討論 Roo 的系列部落格中的第一篇,首先從其通用的設計目標和功能開始,然後深入探討如何使用它以及 Roo 的工程內部結構。鑑於這第一篇部落格是作為介紹,讓我們從重複指導 Roo 開發的使命宣言開始
Roo 的使命是在不損害工程完整性或靈活性的前提下,從根本上、可持續地提高 Java 開發人員的生產力。
這如何轉化為一個工具?一位看到 Roo 的會議代表將其描述為“一個坐在後臺處理我不想擔心的事情的小精靈”。這個描述特別恰當,原因有二。首先,Roo 確實很“小”。它當前的下載量不到 3 兆位元組,它允許您繼續使用基於 Spring 的正常 Java 程式設計模型,並且它不需要您採用特殊的 Roo 執行時或構建技術。其次,它確實安靜地坐在後臺為您照管事務。最重要的是,Roo 不會礙事。如果您想自己編寫某些東西,只需這樣做,Roo 就會自動調整相關檔案以作響應(即 Roo 支援往返)。如果您想編輯 Java 或 JSP 檔案,只需這樣做。Roo 不需要您使用其介面。或者如果您想停止使用 Roo,只需退出程式。Roo 不會成為您的構建系統或執行時的一部分,因此在您萬一想停止使用 Roo 的極低可能性下,停止使用 Roo 也非常容易。
我們相信 Roo 在現有 IDE 的強大功能、現代 Web RAD 框架所展示的生產力潛力以及 Java 開發人員對擁有一款符合他們工作方式並反映他們所珍視的工程原則的工具的深切渴望之間找到了一個非常完美的結合點。這帶來了一個非侵入性的後臺工具,它極其易學,可以應用於現有和新專案,並以驚人的速度簡化了世界最佳實踐應用程式的開發。
當您擁有易於學習並能利用您現有知識、技能和經驗的高度可用工具時,更容易提高生產力並享受開發過程。因此,可用性是我們設計 Roo 時的一個關鍵設計因素。我們受到了 *nix shell 提示符等透過 tab 鍵補全的使用者介面給開發人員帶來的明顯生產力優勢的影響。但我們更進一步,專門為 Roo 編寫了一個 shell。透過提供一個 shell(而不是 GUI 或命令列實用程式),我們能夠實現一個可指令碼化、使用者友好、易於學習、容錯的介面。當您不確定時,可以按 TAB 鍵,Roo 將補全命令。當您需要時,可以輸入“hint”,並收到專案階段特定的指導。您可以省略命令中的選項,Roo 將根據您最近的操作自動推斷您的意圖。您可以輸入非法命令,Roo 將小心撤銷失敗命令可能進行的任何更改。您可以編寫一個指令碼並回放它,以再次生成您的專案。您甚至不需要完全輸入一個命令——只需輸入足夠的字元,讓 Roo 識別其唯一性即可。所有這些都可以在作業系統命令列提示符下完成,甚至無需安裝 IDE。
當然,大多數 Java 開發人員都使用 IDE,並認為它們對提高生產力至關重要。因此,Roo 認識到這一點,並且在您在 IDE 中處理專案時,它會愉快地繼續執行。您不需要任何 Roo 特定的 IDE 外掛(儘管我們確實為 SpringSource Tool Suite 提供了外掛,我將在下面進一步討論)。自然地,在您的 IDE 中,您會很高興 Roo 被設計成透過程式碼輔助和除錯支援來簡化您的 Java 開發生活。您的偵錯程式將像往常一樣執行,逐步執行構成您應用程式的所有程式碼——包括 Roo 幫助您的那些檔案。Roo 生成的每個原始檔都將正確顯示在程式碼輔助(Control + Space)列表中,因此您無需記住方法簽名。
由於 Roo 支援您用 Java 程式設計,您將收到正常的增量驗證,這有助於我們所有人識別缺失的括號或拼寫錯誤的欄位名。IDE 重構工具將繼續為您服務,即使面對大型開發團隊、不斷變化的團隊成員以及多年的持續開發和維護,也能確保應用程式程式碼質量保持高水平。最後,所有 Roo 註解目前都採用“Roo*”的命名約定。這個命名約定確保您在需要時可以輕鬆找到註解——儘管您實際上根本不需要輸入任何 Roo 特定的註解。註解本身為您提供了對 Roo 如何幫助您開發非常細粒度的控制,允許您根據需要詳細控制成員名稱和自定義行為(預設設定也執行良好)。
在 SpringSource Europe,我們還展示了在 SpringSource Tool Suite (STS) 中使用 Roo,這是我們流行的、即將免費提供的基於 Eclipse 的 IDE。這使您可以在 IDE 中享受 Roo 的所有好處。您可以在螢幕底部的“Roo View”中輸入命令,並立即在您的 Package Explorer 和編輯器中看到更改。或者您可以在編輯器中進行更改,並立即在 Roo View 中看到 Roo 對您的更改做出了哪些響應。它就像一個不會妨礙您的小精靈,為您打理您不想處理的事情。
Roo 建立在一個外掛架構之上,該架構支援構建不同型別的 Java 應用程式。目前大約有 18 個“外掛”,它們旨在支援輕鬆開發具有獨立 JPA 實體層的請求-響應 MVC Web 應用程式。Roo 目前包含的一些具體功能如下:
所有這些功能都建立在 Roo 內部的元資料模型之上,該模型是您專案的全面表示。因此,雖然像 IDE 這樣的技術提供了成員結構模型,但 Roo 透過提供反映常見開發約定的企業應用程式特定元資料,將其提升到更高的抽象層次。例如,雖然 IDE 可能知道有一個名為“Foo”的類,其中有一個名為“persist”的方法,該方法定義了某些引數和返回型別,但 Roo 也擁有這些資訊以及一系列額外的元資料,例如該方法從邏輯角度意味著什麼。
作為元資料模型的結果,我們將在後續版本中新增到 Roo 的功能將遠遠超出請求-響應 Web 應用程式開發。透過此元資料模型實現的可能性極其廣泛,例如包括第四代 Web 應用程式(基於元件的、客戶端執行的技術)的往返管理、往返 UML 整合、替代持久化模型(例如為雲計算最佳化)和往返富客戶端。
歡迎您參與 Roo。雖然我們已經發布了 Roo 的 alpha 版本,但這只是一個非常早期的預覽版。我們目前也正在進行投票,社群可以就命名提供反饋。恰如其分地,這個投票應用程式是在 SpringOne Europe 的主題演講期間現場開發的,並部署到雲端。您可以在 http://www.springsource.org/roo 找到這些資源的連結。
正如部落格開頭提到的,我將在未來幾周內釋出幾篇部落格,詳細介紹 Roo 的使用,以及內部架構和如何編寫外掛。在此期間,歡迎您透過 Twitter 上的 #roo 標籤關注我們的工作。
我們希望您喜歡使用 Roo。