2011-07-10 26 views
21

我第一次遇到例如Ruby的Sinatra框架或PHP的Zend Framework,我想知道在Java中是否有足夠的東西,它在這裏似乎都很臃腫。儘管圍繞着無數的框架,但迄今爲止,我還沒有發現任何框架,我認爲對於我希望實現的那種架構來說,它是完美的。輕量級Java web框架 - 特定需求

我想要設計一個Web應用程序,這個應用程序會在客戶端實現大多數應用程序邏輯的情況下佔用大量的JavaScript,而Java後端將或多或少地用作數據存儲或執行復雜的計算。

我在這裏查看了相關的問題,但找不到完美的答案,每個建議的解決方案都有一個與要求不相符的怪癖。

所以這是我所期待的,具有以下功能的開源框架:

  • 約定優於配置
  • 除了web.xml中
  • 純Java的XML配置(無斯卡拉,沒有Groovy中,...)
  • 自然REST風格的URL,例如/新聞/ 2011 /月(不。做,沒有.JSP,...)
  • REST感知
  • 它不應該強迫我部署在應用程序服務器上(例如EJB應選配)
  • 會話支持將是很好的,但不是強制性的
  • 代碼生成在Rails的將是真棒,但不是強制性的最低依賴
  • ,小外形尺寸
  • MVC將是很好的,但
    • 我希望能夠選擇M部分,我自己選擇持久性庫(不捆綁)。
    • 沒有自動生成的代碼視圖,既不HTML,JAVASCRIPT,也不CSS
    • 集成模板語言將是很好的,但它應該是簡約(簡單的控制流量,訪問模板變量)
    • 佈局支持(例如,你可以指定相似的看法公用模板)
    • 的意見javascript框架的自由選擇

基本上,這將意味着一個MVC框架,做路由對我來說,並提供模板支持的意見,但其餘的完全模塊化,沒有魔法。是否有任何簡單的框架可以提供這個(或者至少足夠模塊化以便這樣配置)?

+0

爲什麼說春天3功虧一簣?我認爲它滿足你想要的所有功能。你可以做很多基於annonation的配置。它太重量級了嗎? –

+1

@Ray Toal:我不得不承認我與Spring的經歷是前一段時間。當時它感覺很龐大,而且有太多的魔力,依賴注入正在爲我的口味而發生。但這可能已經改變。你會有一些鏈接可以證明它符合描述嗎?高興地檢查出來,提前致謝! – emboss

+2

如果您尋找不臃腫的框架,我不會使用Zend作爲比較。 – Perception

回答

15

Play Framework怎麼樣?

約定優於配置僅

播放有幾個配置文件。其大部分結構是按慣例。 對於示例的基本結構是這樣的:

| 
+---/app - All executable artifacts go here (java files, conf files and view templates). 
|  | 
|  +---/model - Your model Java classes. 
|  | 
|  +---/view - Your view templates. 
|  | 
|  +---/controller - Your controller classes 
|  
|---/conf - Contains all configuration files for the application. Initially contains application configuration and routing table. 
|  
|---/lib - Libraries your appliaction needs. Added automatically to classpath. 
|  
|---/log 
|  
|---/public - Public stuff are your static assets that your server gives directly 
|  
|---/test 
|  
|---/tmp - All your temporarily compiled .class files are here 

沒有XML配置,除了web.xml中

播放沒有XML配置,包括無web.xml中。它有一個路由文件。看下面的例子,它用於路由。

純Java(無斯卡拉,沒有Groovy中,...)

它是純Java的,但你可以通過插件使用的Scala或Groovy。

  • 自然REST風格的URL,例如/新聞/ 2011 /月(不。做,沒有.JSP,...)
  • REST感知

從現場:
Play is a real "Share nothing" system. Ready for REST, it is easily scaled by running multiple instances of the same application on several servers.

在一個休息其實路由喜歡的方式是很容易的:

# Play 'routes' configuration file… 

# Method URL path   Controller 

GET  /    Application.index 
GET  /about   Application.about 
POST  /item   Item.addItem 
GET  /item/{id}  Item.getItem 
GET  /item/{id}.pdf Item.getItemPdf 

不難猜測,一旦習慣了玩一下,哪裏就會出現。

  • 它不應該強迫我到應用服務器上部署(例如EJB應選配)

事實並非如此。實際上,您可以通過保存文件進行部署。 EJB是完全可選的,所以.war,.ear和其他形式的部署也是如此。

代碼生成在Rails的將是真棒,但不是強制性的

我不認爲它確實很多代碼生成,但我不是100%。它會自動創建所有必需的文件夾並實例化一個基本示例頁面。我不知道Rails是否會生成其他內容......

MVC將是很好的,但
- 我希望能夠選擇的M部,選擇我自己的(無捆綁)的持久性庫。
- 爲視圖,既不HTML,JAVASCRIPT,也不CSS
沒有自動生成的代碼 - 集成的模板語言將是很好的,但它應該是簡約(簡單的控制流程,

MVC in Play

  • 認爲這是一個小櫃檯點。播放模式必須使用JPA或擴展其自帶的播放某些模型類。更多信息請參見Play framework-model
  • 它不會生成HTML雖然你可以在您的.html.css.js和其他文件中使用您的模板語言來創建動態頁面。
  • 我有基於Groovy模板語言的內置模板語言,例如

    You have ${emails.unread ?: 'no'} ${emails.unread?.pluralize('email')} !

其他優點:

  • 這很有趣,將程序中
  • 我提到,允許你保存源文件重新部署應用的熱插拔。?
  • 偉大的錯誤日誌。

缺點:

  • 這是51MB不知道這是否有資格作爲輕量級:/
+0

目前爲止聽起來不錯...謝謝!雖然Groovy有一點小缺陷 - 但我想你可以把它當作「模板語言」來銷售。 – emboss

+0

我想這不是輕重量。這個框架是51MB(比Zend小,但Waaay比Sinatra多)。不知道服務器有多快,但你可以在論壇上提問。 –

+1

如果安裝「Japid模板引擎」,則可以避免將Groovy作爲模板。它使用Java而不是groovy,並且該基準測試顯示的速度非常快:http://www.jtict.com/blog/rails-wicket-grails-play-lift-jsp/ – jassuncao

3

Spring Roo:我發現很容易開始。它可以生成UI代碼,但它取決於你使用它。

3

我在過去的幾個項目中使用了Stripes框架,聽起來它滿足了所有/大部分標準,特別是約定優於配置。沒有XML配置 - 有一個stripes.properties文件具有一般的行爲配置(這是對您的類路徑的一次添加)。需要對web.xml進行一次性編輯以配置「Stripes Dispatcher」,它是一個將請求路由到相應操作Bean的Filter。ActionBeans會自動發現,所以當你添加更多的Action Bean時,你甚至不必更新你的web.xml。您的URL全部使用動作bean上的註釋,其餘支持,動態ActionBean綁定,通過內置註釋爲簡單類型進行服務器端驗證和轉換,可以爲複雜類型創建自己的驗證處理程序和轉換器。適用於JSP和您的自定義JS/CSS庫。文檔和支持論壇非常棒。如果你遵循他們的教程,學習很快。

+0

鏈接被破壞。 –