Pages

搜尋此網誌

2013年12月24日 星期二

Introduction to Grails: 特性以及各種不同約定放置程式的用途介紹

Introduction to Grails: 特性以及各種不同約定放置程式的用途介紹

之前在某次 nodejs 聚會應邀說明 nodejs 在 java 上如何結合運用,其中有介紹到 Grails,一個完整的 java frameworks,涵蓋前端到後端所有的程式開發,除此之外,他還效法了 ruby on rails 的精神,大量簡化了 java 在開發流程上繁瑣的編譯、打包、佈署等相關的作業,以及複雜的環境設定,而之前對我而言只知道其特性,並沒有很深入去使用,剛好最近有幸使用他來開發一些應用,故想透過這個機會,慢慢把所學整理起來,介紹給大家,作為這系列的第一篇,將說明 grails 的特性,以及其各種不同用途的 Class(groovy) 介紹。

Grails 的特性,只要熟悉 ruby on rails 的朋友應該可以大致了解,在加上 java 的血統,其比較重要的特性如下:

  • Groovy:與Java 平台集成性最好的動態語言作為Grails的基礎
  • 建構於 Spring、Hibernate、Quartz、SiteMesh、JUnit、Ant 成熟開源框架之上
  • URLMappings:Don’t Repeat Yourself
  • 約定優於配置:Convention over Configuration
  • 自動產生 CRUD 維護畫面:scaffold

使用 Groovy,做為 grails 開發的基礎,其特性就是大量簡化 java 語言繁瑣的程式指令步驟。

可以看到 Grails 算是集目前 java 世界許多成熟的套件,這些原本單獨使用很繁瑣的套件,在 Grails 上都有某種程度的簡化,簡單到一開始很難直覺想像,往後會會在詳細介紹,這邊不多談。

接著就是設定的部份,在傳統的 java 開發我們常常需要設定像是 jdbc config 、 spring aop 設定的位置等,在 Grails 中,是基於「約定優於配置」的精神,也就是只要放對位置,設定就會生效。

以及 Don’t Repeat Yourself 的精神,在網路應用程式的開發,假設有用到 restful 的技術,在傳統的 JAVA 開發,總要為每個 class 設定 url 規則,如果一多是很繁瑣的。

最後就是自動產生 CRUD 維護畫面,在開發初期,常常需要快速的建立測試資料,以往要是前端與後端程式開發是分開的,總是需要等到後端工程師將 API 開出來後才能開始進行資料庫操作,在 grails 效法 ruby rails 也提供了快速產生維護畫面的功能。

以上是 grails 的特性簡介,不過!絕對不只如此其他還有很多特性,往後會在一一介紹,完全改變對於 Java 開發的習慣。

再來就要在簡單介紹,在 grails 各種不同用途的 Class(groovy) 介紹:

img

在「約定優於配置」的精神下,grails 本身就針對不同責任的程式進行分類,可以看到如上圖幾種,這邊將簡單介紹各個項目所有處理的事情:

  • domain: 簡單來講就是原本 hibernate 的 DAO 物件,如果沒有用過類似 O/R MAPPING 的技術可以以把它想像成每個不同的 table 的定義,屬於 MVC 架構中的 Model
  • controllers: 也就是 MVC 架構中的 control,用來操作 Model,以及將運算結果呈現給 view
  • view: MVC 架構中的 view,在 grails 的世界,是用 gsp ,可以想像成 jsp
  • taglib: 可以在 view 中使用一些已經定義好的 tag ,原本在傳統的 j2ee 是非常繁瑣的技術,在 grails 可以很方便使用。
  • services: 商業邏輯放置的位置,這部份的程式可任意在 domain、controllers、taglib中直接宣告,將利用 spring 進行注入,有 scope 以及 transaction 交易安全的屬性可以進行操作
  • utils: 檢查數值或資料是否符合特定的規格運算程式放置的地方,比如說 email
  • scripts: 可以撰寫在 terminal 或是 command line 下可以執行的程式,搭配 grails create-script execute-report 使用。
  • i18n: 也就是多語系啦,可以搭配 taglib 在 view 層進行語系的轉換
  • src/java: 在 grails 如果你要寫傳統 java 也是 ok 的只要放在這個資料夾,就會編譯成 class
  • src/groovy: 上述分類中無法歸屬,或著原本有寫過純 groovy 的程式碼就放在這
  • test/utils: 單元測試,只要放在這資料夾的測試程式,都會被執行
  • test/integration: 整合測試,也就是會將上述所有的不同功能都載入進行測試。

大致上上面所說的就是 grails 中一開始需要習慣的地方,與以往的 free style 的開發雖然多了些限制,但有了約定,基本上程式也不會亂放導致東一塊西一塊,並且透過了解上面的結構,對於程式初學也可以較清楚知道一個完整的程式,必須包含哪些不同責任的元件。

也許有些專案成員沒有辦法立即現有的工作換到新的開發框架,不過!找時間玩玩看,相信可以更了解程式的責任釐清,像我就是!陸續會在根據不同責任的程式使用的方式個別進行詳細說明,文章就到這啦!

這篇花了我一小時的時間,寫文章還是不夠快速,要在加油…

最後如果想要更進一步及早了解可以參考 Grails Quick Start

張貼留言