2011-05-19 32 views
1

我打算開發開源的Java應用程序在谷歌應用程序引擎的工作以及正常的RDBMS系統,所以請幫我在選擇決定Java框架需要幫助,圖書館

MVC框架 - 的Struts/Spring MVC?

ORM - JDO/JPA?

我認爲性能是一個關鍵因素。

+0

沒有人對struts 2發表過評論,請某人在GAE/J上使用struts2也給出了你的反饋 – 2011-05-23 10:32:05

回答

1

對於應用程序引擎,您將需要一個輕量級的框架,用於持久性和應用程序的東西。谷歌正在改變他們的定價模式,所以你可能想考慮這將如何影響你的計劃。有關於這個app引擎組上一個有趣的討論:https://groups.google.com/forum/#!topic/google-appengine/ob-kMuDAAqc/discussion

除此之外,我只能對持久性框架選擇評論:

JDO在App Engine是一種痛苦。他們(Google)在應用引擎中支持的版本是1.x,我相信這是古老的。我在工作中遇到了很多麻煩,比我還記得。 如果你有以前的JDO經驗,這仍然是一個不錯的選擇。如果我要重新開始,我會選擇一個專門爲應用引擎編寫的持久性框架,如objectifytwig。他們需要更少的開銷,並且更易於使用(從我的角度來看)。一個巨人加上物化:給你開箱即用的memcache支持沒有額外的工作。那有多好?

但是,您也想支持RDBMS。如果你有時間的話,你可以在你的選擇對象化和RDBMS持久層之上推出你自己的抽象層。這會給你在性能上的優勢,你正在尋找。 ;)

如果這不是一個選項,我會建議JPA(不是因爲我自己使用過它,而是因爲我在JDO上遇到了很多麻煩)。

希望這會有所幫助!

+0

FWIW您可以使用DataNucleus「javax.cache」提供程序作爲二級緩存(用於訪問memcache)和GAE/J(單個持久性屬性,即使使用他們使用的古代版本),而不是他們曾經費心公佈事實。 – DataNucleus 2011-05-21 07:30:07

+1

我得到了JDO緩存來處理memcache。做了一些研究,所以我想我會分享它作爲博客文章:http://ukena.de/content/enabling-jdo-caching-google-app-engine – Stefan 2011-05-21 11:27:47

+0

Thx Stefan。應該幫助很多人,直到Google更新他們的插件;我們在L2緩存v1.1中進行了許多內部更改,以減少對數據存儲的任何調用。 – DataNucleus 2011-05-21 13:10:41

1

你的表現是什麼意思?例如,如果您沒有使用always on功能,則可能會認爲服務器冷啓動時間是影響性能的最重要因素。所有的框架都會讓它變得更慢,甚至有一個blog post about optimizing the cold start-up time

對於MVC來說,Spring 3非常擅長,但它更偏好個人喜好,而且更加舒適。如果您想要爲AppEngine設計一些東西,請嘗試一下Gaelyk,但這是Groovy。對於數據存儲來說,JPA可能使用得更廣泛,但我認爲App Engine上的JDO支持更好。如果您需要從App Engine下載,那麼這兩種平臺都會提供一定程度的平臺獨立性。還有Objectify-AppengineTwig,它們與平臺關聯較多,因此可能爲管理數據存儲提供更好的界面。

+0

我正在考慮服務於請求的性價比。 – 2011-05-23 10:37:41

+0

總是一個月大概10塊錢,但它可能是值得的,否則它會花費幾秒鐘,甚至數十秒鐘,讓服務器在某些場合啓動。當然,如果你的流量非常高,服務器不會閒置,這不會影響你。從純粹的響應時間角度來看,我認爲你最好用Python。 – hleinone 2011-05-23 21:57:38

0

我會親自去與Java EE 6的 framework.So

MVC:JSF - >非常輕便,易於開發。 JSF2.x修正了JSF1.2的許多缺點,因爲它是標準的,並且附帶Java EE 6捆綁包,所以它修復了許多來自JSF1.2的缺陷特徵: ORM:JPA2.0 - >。您可以用您的選擇替換Hibernate。每個都有其獨特的優勢特徵。我不會說一個人比其他人好。 不要忘記Java EE 6帶有EJB3.1。 EJB的重要性不高,但是自從EJB 3.0以來,這是一個非常不同的故事。 EJB3.1變得更加輕量且易於開發。 Glassfish的web profile提供了EJBLite(Hehehehe:D:D輕得多:D)

在開發複雜性方面,我不得不說,Spring比JEE6複雜一點,但是我再次只碰觸Spring,這個討論將留給更有經驗的開發人員來討論。

+1

他正在使用GAE/J,而這不是JEE6。 JPA和JDO一樣,在JSE或JEE中工作。 JDO也是「標準」的......比JPA更早...所以這不是使用JPA來對付JDO的原因。 – DataNucleus 2011-05-20 06:42:02

0

我會去JSF + JPA,我會使用Spring Framework進行依賴注入。

我的5¢。 :P