Grails 是什麼? 照樣我們先看看官網是如何介紹 Grails的
雖然不太好翻譯,但為了不喜歡讀長篇英文的人,我還是嘗試翻譯:
我用比較具體,且容易了解的說法是:
- Grails 是專為了開發 WEB 而誕生的一種 Web framework
- Grails 使用了「約定優於設定」的概念,約定將專案架構分為:Domain、Controller、Service、Conf、i18n、tagLib、Utilities、以及 view (gsp),還有其他(ex: Helper, Utility),這對於日後不同成員維運系統時,提供許多便利。因為你不需要了解前手開發人員對程式的命名習慣
- Grails 雖然是以 Groovy 為開發基礎,但是他也是100%整合 java 程式 (原始碼相容),以及以 java 開發的眾多 packages,也就是說。在 Grails 專案中,你可以直接使用你以前用 Java 開發的程式,不論是原始碼或是已經包好的套件。
- Grails 底層仍舊是 Spring framework 與 Hibernate,所以只要是為 Spring framework開發的套件,Grails 全數可100%相容使用,例如:Spring security 套件等
- Grails 提供 Domain class 用來規劃 ORM 物件。在這Domain class中,您只需要專注物件的關聯性。Grails 會依此幫您產生 DDL 並直接在資料庫中建立出對應的資料表與相關 constraints。只要有對 Domain class 做修改,您只要將專案重新啟動,這修改自然會套用到實際的資料庫上。
- Grails 內建與 Maven 100%整合。所以你不需要另寫 pom 檔。
- Grails 可以設定 GET/POST 接收的 data 是否需要自動轉換 JSON、XML格式。
- Grails 可以將controller 設定版本,這個對開發 RESTful API特別有用。但這版本不是程式的版本管理。
- Grails 內建整合 Spoken 測試集合。使得你要進行 DevOps 的開發方式時,更為容易。
- Grails 設定檔已經區別好所謂的開發、測試、正式環境,這對於你在維護系統的組態時,特別方便。
- Grails 提供 gsp 檔,來替代 JSP 檔。gsp 檔提供了layout疊套的功能。有用過 MS Visual Studio的人就會了解我這是再說什麼。雖然 JSP有提供 include的功能,但不好用。雖然有些套件也間接的提供了 layout的功能,但整合上也不方便。另外 gsp 取代了 JSTL,提供一些便利的用法。
- Grails 本身就提供 URL rewrite的能力。所以當你的系統搬到別處時,你不用在重新在 apache上面重新設定這相關的設定值。
- Grails 打包後是產生 war檔。所以可以運行在各家的 java middleware上,例如 tomcat、JBoss、Weblogic、WebSphere 等等平台。
講了這麼多,你也許會說,好吧,我們快點開始吧。 展示一些code給我看看這神奇的東西吧。
別急,工欲善其事,必先利其器。我們還得挑選好的開發環境,也就是 IDE。什麼?不就是 Eclipse嗎?嗯...。Eclipse,不是不能用。但是真的不好用。8年前,我看人家用 IntelliJ,我還在想那是什麼東西。Eclipse才是我心中的唯一。但是在接觸 Grails後,我發現 Eclipse 已經力不從心了。所謂的力不從心,講具體一點,就是,Eclipse 搭配 GGTS (Groovy/Grail Tool Suite) 插件後,雖可以支援 Grails。但Eclipse 回應速度很慢。我的環境是 Intel i5 2.6Ghz + 16GB 記憶體 + Windows 8 pro 64bit 並搭配 Eclipse Luna 64bit,還是很慢。慢到要抓狂。所以,我聽從外國老手的建議,使用了 IntelliJ,我才發現,原來,我錯過他這麼久了。
比較起來,IntelliJ更適合用來開發 Grails、Groovy、Java。有用過 MS Visual Studio的人便會了解,在 MS Visual Studio中,CodeBehind中的變數跟它所對應的 .aspx中可以完全緊密的整合。換句話說,假如你在一個 .aspx中使用了一個.NET 元件或 html tag 並且賦予他一個 id,在 CodeBehind中,這id就是一個元件,你可直接使用他,以及其所包含的方法。這在 Javaer心中,是羨慕很多年而 Eclipse卻無法實現的。
IntelliJ幫你實現了一部分。但是方向是相反的,也就是說,當你在 controller 回傳 .gsp 頁面一些結果值,在該 .gsp 頁面中就可直接使用。這在後續的文章中,我會有更詳細的介紹。
這邊要注意的兩件事是:
- IntelliJ 付費版才有支援 Grails的開發,社群版是沒有的。Grails 付費版 (Ultima版),個人價新台幣六千元。其實不算貴。你可以先面費試用一個月。後再決定要不要付費。
- IntelliJ的理念跟 Eclipse 不一樣。所以需要一點時間上手。最明顯的差異是,Eclipse可以同時開啟多個專案在一個 instance中。但是在 IntelliJ中,一個 instance 只能開啟一個專案。還有一些操作理念,IntelliJ 跟 Eclipse 也不一樣。我大該花了兩週才開始習慣。
好,在下一篇文章,我們就開始從第一個 hello world 的 Grails 專案開始介紹。