領先一步
VMware 提供培訓和認證,以加速您的進展。
了解更多經過十個多月的開發以及將近 900 項個別改進,Spring Roo 1.1.0 已正式發布(在此下載)!與 Spring Roo 1.1.0 GA 正式版發布同時,Google Web Toolkit、SpringSource Tool Suite、AspectJ 和 AJDT 團隊也已完成對 GA 正式版的支援,讓您可以享受最新版本的這些工具,並且它們可以完美地協同運作。
我們在 Spring Roo 1.1.0 中引入了許多新功能,很難決定要重點介紹哪些。不過,讓我們簡要瀏覽一下我們為您的 Java 程式設計樂趣新增的一些好東西。
現在可以對現有的關聯式資料庫進行逆向工程,並自動建立具有相應欄位的 Roo 實體。但是使用 JPA 工具進行逆向工程難道不是早就已經可以做到了嗎?是的,絕對是。關鍵的區別在於 Roo 的資料庫逆向工程是增量式的。這表示當 Roo 對資料庫進行逆向工程時,它會將其發現的所有欄位放入跨類型宣告 (ITD) 中。這與 Roo 的其餘部分一致,並允許 Roo 輕鬆地交付逆向工程實體的往返維護。特別是,您可以重複重新檢視資料庫以識別任何變更,同時確保您在 .java 原始碼中編寫的任何程式碼都得以保留。Roo 甚至會刪除不再存在的實體(除非您要求 Roo 不要這樣做),並且 Roo 會自動處理複合主鍵等複雜情況(完整包含識別碼類別的建立和維護)。最棒的是,Roo 的逆向工程功能完成時無需您回答任何問題。這項新功能將 Roo 的可用性體驗帶到了一項任務中,這項任務直到現在都非常繁瑣、耗時,並且產生了雜亂的 .java 檔案,無法提供增量重新整理功能。
增量逆向工程是我們有史以來針對 Roo 最受歡迎的功能請求,獲得了約 129 個社群投票。它在 1.1.0 開發週期中經過了大量測試,我們發現社群的回饋非常寶貴。甚至有人成功地對超過 440 個資料表的結構描述進行了逆向工程,並且我們調整了 Roo 以在這種情況下提供穩定的效能。
要產生一個新專案並對關聯式資料庫進行逆向工程,只需要三個免提問的命令(所有命令都提供 Roo 的正常 Tab 鍵輔助以節省您的輸入)
project --topLevelPackage com.foo.rootest
persistence setup --provider HIBERNATE --database POSTGRES --userName rootest --password rootest
database reverse engineer --package ~.domain --schema dbretest
當然,您可以隨時重複 "database reverse engineer" 命令,Roo 將仔細地僅使用結構描述中發生的變更來更新您的實體。如果重複該命令,您不需要重複 "package" 或 "schema" 選項,因為 Roo 會記住您初始命令中的這些選項。
就 Roo 需要連接到您的資料庫以執行內省的 JDBC 驅動程式而言,我們已隨 Roo 發行版附帶了一些常見的生產環境開源資料庫(例如 Postgres、MySql)的驅動程式。如果您有其他資料庫,只需輸入 "script install-jdbc-drivers.roo" 並重新啟動 Roo 即可存取 Oracle、Microsoft SQL Server、HSQLDB、H2、Derby 等。
我們整合了您從 Roo 1.0 收到的回饋,並顯著增強了 Roo 1.1.0 中可用的 Spring MVC 功能。例如,現在可以自動往返 JSPX 檔案。這表示您現在可以隨時以任何方式編輯 scaffolded JSPX 檔案,Roo 將自動偵測到您已變更的內容。如果 Roo 需要出於某些原因編輯檔案(例如您已將新欄位新增至實體、刪除一個欄位等),Roo 將自動且安全地將其變更與您的任何變更合併。如果您對給定的 HTML 元素進行了任何編輯,Roo 將始終將您的變更保留在原位,並且它們將優先 - 正如您所期望的那樣。
JSPX 往返支援的相關改進是更優雅地使用標籤庫來封裝標記建立。這表示 Roo 1.0 中 200 行的 JSPX 檔案現在在 Roo 1.1.0 中僅為 12 行。標記的重複現在已移至基於 JSPX 的標籤中,讓您可以輕鬆地進行影響應用程式中所有頁面的編輯。因此,您現在擁有更輕鬆的維護、自動往返以及簡潔、專注、整潔的 JSPX 頁面!您可以在我們參考指南的 Web MVC 附加元件章節 中閱讀更多關於所有這些如何運作的資訊。
Spring MVC 支援的其他增強功能包括消除 URL 重寫篩選器,因為此功能現在已內建到 Spring 本身中。現在可以使用 "web mvc install language" 命令從第三方附加元件安裝額外的本地化套件。這特別有用,因為它允許外部開發人員維護本地化(我們甚至建立了一個附加元件建立命令,以使產生這些本地化附加元件變得容易)。
Spring MVC scaffolding 現在也支援嵌入來自 16 個社群媒體網站的內容。它就像使用新的 "web mvc embed" 命令一樣簡單,可以新增來自 YouTube、Google Video、Vimeo、Viddler、Screenr、UStream、LiveStream、Flickr、Picasa、Google Presentations、Scribd、SlideShare、Google Maps、Google Wave、Twitter 和 Wikinvest 等網站的內容。
完成 Spring MVC 功能的這些廣泛改進的是 自動 JSON REST 支援。要查看其運作方式,請執行 "script clinic.roo" 命令,然後執行 "json all" 命令,使用 Web UI 建立一個 owner,然後使用此命令列出所有 owner:curl -v -H 'Accept: application/json' -X GET https://127.0.0.1:8080/petclinic/owners/
。
我們在 2009 年底開始與 Google 合作,我們的工程團隊一直密切合作,以交付一組整合的開發人員技術。在 2010 年 5 月的 Google I/O Day 1 Keynote 中,我們展示了我們在 Spring Roo 和 Google Web Toolkit 互通性方面的早期工作。我們一直在增強這種互通性,現在您可以使用 Roo 來建置完整的 GWT 應用程式,這些應用程式使用最新的 GWT 2.1 功能,例如 RequestFactory、MVP 框架、資料繫結小工具 等。
與這些功能相關的是 SpringSource Tool Suite 2.5.0 中的新 Google 外掛程式支援。SpringSource Tool Suite 不僅具有廣泛的 Spring Roo 1.1.0 支援(例如嵌入式 Roo shell),還透過包含 Google Plugin for Eclipse 提供對 Google Web Toolkit 開發的開箱即用支援。
您可以透過使用我們的 expenses 範例來試用最新的 GWT 支援。您可以在 Spring Roo 下載的 /samples 目錄中找到此範例。或者,您可以簡單地建立專案並透過以下命令執行它
mkdir expenses
cd expenses
roo
roo> script expenses.roo
roo> quit
mvn gwt:run
同樣作為與 Google 上述合作的一部分,我們確保可以建置 Roo 應用程式以部署到 Google App Engine。GAE 提供了一種可擴展的方法來建置應用程式,並且包含諸如 免費使用配額 和 Google App Engine for Business 等選項。
SpringSource Tool Suite 也進行了增強,以更好地支援 Roo 建立的 Google App Engine 專案。例如,STS 管理 Data Nucleus 1 enhancer 外掛程式的生命週期,這是 GAE 持續性所必需的。所有這些都與 m2eclipse 的內建支援整合在一起,這是 Roo 專案在基於 Eclipse 的 IDE(例如 STS)中管理的典型方式。
您可以透過使用 expenses-gae.roo 範例腳本來試用最新的 GAE 支援。您可以再次在 Roo 的 /samples 發行目錄中找到此腳本。您將在即將推出的 Roo 1.1.1 中看到我們 GAE 支援的 進一步改進。
Apache Solr 是一個基於 Apache Lucene 的搜尋伺服器。Solr 允許您擁有一個專用的搜尋伺服器來索引您的物件,並透過 REST API(也支援 JSONP)查詢它們。
Roo 1.1.0 新增了 Solr 整合,確保在建立、更新或刪除實體時,會自動通知 Solr 搜尋伺服器。它還為您的實體新增了各種與 Solr 相關的便利方法,例如 search(String)
方法,它將自動將自由文字搜尋查詢派送到您的 Solr 伺服器並找到符合的實體。還有其他類似的搜尋和索引管理相關方法也透過 Roo ITD 新增到實體中。
要了解如何設定您的 Solr 伺服器並在基於 Roo 的應用程式中使用它,只需造訪參考指南的 Solr 章節。
JavaScript 物件表示法 (JSON) 是一種吸引人的序列化格式,原因有很多,例如其最佳化的瀏覽器 "eval" 支援、輕量級人類可讀編碼格式以及重要的跨平台程式庫支援。
在 Roo 1.1.0 中,我們新增了支援,允許將任何 Java 物件輕鬆地轉換為 JSON 表示法和從 JSON 表示法轉換而來。諸如 toJson()
、fromJson(String)
和陣列相關的 JSON 處理方法等新方法會透過 Roo ITD 自動管理。只需將 @RooJson 註解新增到您的 Java 類別,您就會自動獲得此支援。
大多數 Java 開發人員都經歷過維護 java.io.Serializable 類別的 serialVersionUID
的繁瑣任務。
使用 Roo 1.1.0,您無需擔心序列化警告。只需在您的 Java 類別上彈出 @RooSerializable 並忘記它即可。Roo 將為您實作 Serializable,並自動代表您維護版本 UID。
自然地,我們保持了最新的程式庫版本,因此您基於 Roo 的專案始終可以存取最新的功能和錯誤修復。基於 Roo 的專案現在預設為以下新版本
我們不斷進行可用性改進,旨在讓您的開發變得有趣且容易。我們最新的可用性增強功能包括
Roo 1.0 和 1.1.0 之間的一個主要但很大程度上難以區分的變更是過渡到 OSGi 基礎。我們正在使用 Apache Felix 作為我們的 OSGi 框架,以及 Service Component Runtime (SCR) 用於元件管理,以及 OSGi Bundle Repository (OBR) 用於套件組合解析。發生這些關鍵變更的原因是我們可以確保 Roo 的附加元件基礎架構將基於模組化、經過驗證、可遠端解析相依性的類別路徑管理模型。諸如 Eclipse 等現代 IDE 也建置在 OSGi 之上,因此這種工具模組化和可擴展性的方法已確立。
與此變更相關的是,我們需要「封裝」Roo 本身執行所需的許多相依性。因此,我們建立了一個 封裝模組,以解決此需求,同時也為 Roo 附加元件開發人員提供技術範例。
有興趣深入了解 Roo 的 OSGi 內部結構的人可以透過輸入 "osgi" 並按下 TAB 鍵來互動式地進行。現在 Roo 中包含許多新的 OSGi 命令。其中大多數將是附加元件開發人員感興趣的,而不是普通的 Roo 使用者。您甚至可以透過輸入 "osgi framework command" 然後輸入正常的 Felix 命令,將命令直接派送到 Felix 執行階段。
我們新增 OSGi 支援的原因之一是我們可以支援圍繞 Roo 開發的第三方附加元件社群。撰寫附加元件是一回事,但您還需要一種簡單的方法讓社群找到感興趣的附加元件並安裝它。您還需要一個穩健且經過驗證的安全性模型,以便只有您信任的開發人員才能編寫安裝到您電腦上的附加元件。您還需要一種方法讓附加元件開發人員能夠在他們喜歡的任何地方開發和託管附加元件,同時仍然為他們提供一些合理的預設值,以便他們可以快速獲得結果。
為了幫助人們快速開始開發附加元件,我們在 Roo 中新增了一個附加元件建立器。只需使用新的 "addon create" 命令即可。此命令不僅會為您建立附加元件骨架,還會將其設定為在 Google Code 上進行開箱即用託管,並確保當您使用部署目標時,會自動更新專案的 OSGi Bundle Repository (OBR) 檔案。OBR 檔案甚至使用 "httppgp://" 作為協定,因此您的附加元件會與我們的分散式 PGP 基於安全性的基礎架構聯繫在一起。因此,您可以在幾分鐘內從一個空目錄到一個正確託管、OBR 列出、安全性模型相容的附加元件。
當然,您可以將 OBR 儲存庫 URL 分發給您的朋友和粉絲,他們可以使用 "osgi obr url add" 命令來新增它。但是,有一種更好的方法。只需將包含 OBR 儲存庫 URL 的電子郵件發送到 [email protected]。我們的 RooBot 伺服器將接著造訪您的 OBR 檔案並定期監控其變更。然後,它將使用有效的、安全性模型相容的附加元件更新 roobot.xml 檔案在 http://spring-roo-repository.springsource.org 上。所有 Roo 實例都將接著發現您的附加元件,因為它們在執行時將下載 roobot.xml 的副本。
Roo 使用者可以接著透過簡單地輸入 "addon install" 命令來安裝您的附加元件。TAB 鍵輔助甚至可以完成您附加元件的名稱。一旦他們按下 ENTER 鍵,您的 OBR 檔案將新增到他們的 Roo 安裝中,並且將嘗試下載。但是,由於 httppgp:// 協定,只有在使用者信任您的 PGP 金鑰(或者他們輸入了 "pgp automatic trust" 如果他們信任所有人)的情況下,Roo 才會允許完成下載。
Roo 使用者可以發現您的附加元件的另一種方式是簡單地輸入您的附加元件提供的命令。Roo 將自動列出所有已知的提供該命令的附加元件。還有 "addon list" 命令可以幫助人們找到您的附加元件。
在 Roo 1.1.0 中,撰寫附加元件也變得更容易。我們新增了新的 "Joey" 基礎架構和更好的抽象,以幫助您編輯常用檔案。
我們在 Roo 1.1.0 中進行的其他變更包括
如果您是 Spring Roo 的新手,並且想要利用所有這些功能,只需下載 Roo 並按照參考指南的簡介章節進行操作即可。我們也為想要將其專案升級到此新版本的現有使用者準備了升級注意事項。您可能還想考慮下載 SpringSource Tool Suite 2.5.0 (STS),因為它具有許多 Roo 和 Google 特定的功能,可以讓您的開發生活更輕鬆。實際上,如果您下載 STS,您可以跳過下載 Roo,因為 STS 2.5.0 為您方便起見嵌入了 Roo 1.1.0。
下個月我們將發布 Roo 1.1.1。我們目前正在完成並包含在 Roo 1.1.1 中的一些小改進,所以請稍後再回來查看。在 Twitter 上關注 @SpringRoo 和 工程團隊 是保持了解開發和新版本的最簡單方式。我們也鼓勵您參與 Spring Roo 論壇,以獲得與 Roo 相關的建議和問題。在論壇上,您會找到來自友善的 Roo 社群以及 Roo 和 GWT 團隊工程師的幫助。
我們希望您像我們享受建置 Spring Roo 1.1.0 一樣享受使用它。