立即體驗 Roo,享受極高的 Java 開發效率

工程 | Ben Alex | 2009年5月1日 | ...

更新:「Spring Roo 介紹」部落格系列的第二篇現已發布,其中包含詳細的逐步教學,幫助您開始使用 Roo。第三篇詳細介紹了 Roo 的內部架構。

本週,Twitter 圈因 SpringOne Europe 的消息而沸騰。其中一項引起廣泛關注的公告是 SpringSource 新推出的開源生產力工具,代號為「Roo」。

Roo 是一款精密的往返程式碼產生器,讓您以前所未有的速度和輕鬆程度建立和發展 Spring 應用程式。即使您對程式碼產生抱持保留態度,Roo 仍然值得您一看。它包含重大的創新,解決了程式碼產生的所有主要缺點,同時仍然提供最佳實踐的 Spring 應用程式,並在整個應用程式生命週期中保持實用性。

這是關於 Roo 系列部落格的第一篇,我將從其一般設計目標和功能開始討論,然後再深入探討如何使用它以及 Roo 工程內部原理。鑑於這第一篇部落格作為介紹,我們先重複引導 Roo 開發的使命宣言

Roo 的使命是在不損害工程完整性或彈性的前提下,從根本上且永續地提高 Java 開發人員的生產力。

這如何轉化為工具呢?一位看到 Roo 的會議代表將其描述為「一個坐在幕後處理我不想擔心的事的小精靈」。這個描述特別貼切,原因有二。首先,Roo 真的很「小」。它目前的下載檔案小於 3 MB,它讓您可以繼續使用基於 Spring 的正常 Java 程式設計模型,並且不需要您採用特殊的 Roo 執行階段或建置技術。其次,它確實安靜地坐在幕後,為您處理事情。最重要的是,Roo 不會妨礙您。如果您想自己編寫程式碼,只需執行即可,Roo 會自動處理調整相關檔案以回應(即 Roo 支援往返)。如果您想編輯 Java 或 JSP 檔案,只需執行即可。Roo 不需要您使用其介面。或者,如果您想停止使用 Roo,只需退出程式即可。Roo 不會成為您建置系統或執行階段的一部分,因此即使您想停止使用 Roo,也極其容易。

我們相信 Roo 填補了現有 IDE 的強大功能、現代 Web RAD 框架展現的生產力潛力,以及 Java 開發人員渴望擁有一種以他們想要的方式工作並反映他們重視的工程原則的工具之間的絕佳位置。這造就了一款非侵入性的背景工具,它非常容易學習如何使用,可以應用於現有和新專案,並以驚人的速度簡化世界最佳實踐應用程式的開發。

生產力和可用性

當您擁有高度可用、易於學習且建立在您現有知識、技能和經驗之上的工具時,更容易提高生產力並享受開發過程。因此,可用性是我們設計 Roo 時的一個關鍵設計因素。我們受到了開發人員透過索引標籤完成使用者介面(如 *nix shell 提示字元)所享受的明顯生產力優勢的影響。但我們更進一步,專門為 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)(我們廣受歡迎且即將免費提供的基於 Eclipse 的 IDE)中使用 Roo。這讓您可以從 IDE 內部享受 Roo 的所有優點。您可以在螢幕底部的「Roo 視圖」中輸入命令,並立即在「套件瀏覽器」和「編輯器」中看到變更反映。或者您可以在「編輯器」中進行變更,並立即看到「Roo 視圖」顯示 Roo 針對您的變更所做的操作。它就像一個小精靈,在您看不到的地方,處理您不想處理的事情。

技術功能

Roo 建構於附加元件架構之上,可建置不同類型的 Java 應用程式。目前大約有 18 個「附加元件」,這些附加元件旨在支援輕鬆開發具有獨立 JPA 實體層的要求-回應 MVC Web 應用程式。Roo 目前包含的一些特定功能

  • 從空目錄開始新的應用程式(Roo 也可以處理現有的應用程式,儘管如此)
  • 設定您的建置系統並設定特定於該建置系統的專案結構(我們最初支援 Maven 2)
  • 安裝您選擇的 JPA 提供者和資料庫
  • 檢視和設定資料庫組態詳細資訊
  • 設定 Log4J 組態檔案,並允許使用 TAB 完成命令來修改它們
  • 建立享有自動依賴注入和持久化方法的 JPA 實體
  • 將欄位新增至 JPA 實體,包括自動設定 JPA 以及新的 Bean Validation (JSR 303) 標準的正確註解
  • 管理自動 JUnit 整合測試,即使您在實體之間存在關係並應用 Bean Validation 約束,這些測試也能開箱即用
  • 建立和維護謹慎遵循 REST 約定的基於 Spring MVC 的控制器,包括為這些控制器產生和維護 JSP 頁面
  • 建立您可以自行完成的 Spring MVC 控制器存根,從而節省您查閱此類控制器中最常用的註解、約定和方法簽章的需求
  • 在您的實體上動態建立 Finder,以便您可以產生典型的「findByField1LikeOrField2Between(Field1 like, Field2 from, Field2 to)」樣式的查詢,而無需編寫 JPA Query Language
  • 輕鬆安裝和設定 Spring Security(只需輸入「security setup」並按下 Enter 鍵)

所有這些功能都建立在 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。

取得 Spring 電子報

隨時掌握 Spring 電子報的最新資訊

訂閱

領先一步

VMware 提供培訓和認證,以加速您的進展。

瞭解更多

取得支援

Tanzu Spring 在一個簡單的訂閱中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位檔案。

瞭解更多

即將舉辦的活動

查看 Spring 社群中所有即將舉辦的活動。

查看全部