簡體   English   中英

使用Java EE和Java SE可以更好地實現哪些應用程序?

[英]Which kinds of applications are better implemented with Java EE versus Java SE?

如果下面的問題有點模糊或天真,請原諒我。 它受到另一個線程中的一些討論的啟發,這再次引起了我對Java EE的興趣。

多年來,我聽到了一些關於它的細節,甚至還參加了一個涵蓋EJB的軟件工程課程。 但是,我意識到我對它以及它的用途幾乎一無所知。

所以,我真的有兩個問題:首先,如果我正在設計一個Web應用程序服務器,那么哪些要求會導致我選擇Java EE而不是Java SE? 它在很大程度上取決於我想要部署的應用程序,還是Java EE的基本方面使其更適合任何應用程序服務器?

我的第二個問題:部署中有哪些着名的Java EE應用程序? 有沒有開源的?

非常感謝。

如果只使用servlet,JSP和JDBC來實現應用程序,那么就不需要完整的Java EE堆棧。 這三個包含完整堆棧的子集。

除了servlet,JSP和JDBC之外,完整的Java EE堆棧還包括EJB(分布式,事務性,生命周期管理組件),持久性JPA,消息傳遞JMS,命名和目錄服務JNDI等。如果需要這些項目,無論如何都要使用Java EE和一個成熟的應用服務器。

應用服務器規范是Sun采用的方向,因為他們想要創建一個市場,其中有幾個競爭對手,包括他們自己。 他們取得了很好的成功:我們現在擁有WebLogic,WebSphere,JBOSS,Glassfish,OpenEJB,Geronimo和其他可用的應用服務器。

但這不是100%必要的。 例如,Microsoft的.NET除了IIS Web服務器和底層操作系統之外沒有任何其他功能。 他們假設您在Windows和.NET上運行,因此他們不會嘗試抽象Java EE所做的事情。

如果您更喜歡Spring到Java EE,那么您可以編寫企業應用程序而無需使用除Spring + Tomcat或其他servlet / JSP引擎之外的任何其他應用程序。 在這種情況下,不需要完整的Java EE應用服務器。

實際上,您幾乎不會在純Java SE之上開發Web應用程序。 Java SE本身適用於圖形桌面應用程序或基於文本的命令行實用程序。

如果您想開發一個Web應用程序,例如您也使用PHP或RoR創建的Web應用程序,那么您使用的最少的是所謂的Servlet container 這些都運行在Java SE之上,並為您提供Java EE中的Servlet和JSP頁面。 眾所周知的例子是Tomcat和Jetty。

然而,大多數Web應用程序需要的不僅僅是那些Servlet containers提供的內容。 幾乎總是需要一些Web框架(例如JSF,Struts,Wicket,Tapestry,Spring MVC),一些ORM框架(通常是Hibernate,但有一些替代方案,如EclipseLink)和一個事務管理器(JoTM,JBossTS,Atomikos)。 最后,大多數人還喜歡使用容器進行依賴注入和更高級別的事務管理(例如核心Spring容器,OpenEJB,Weld)。

然而,所有這些都需要開發人員構建和維護自己的軟件堆棧。 我提到的所有這些不同的東西必須單獨下載,由於不同版本中的共享依賴性,它們可能相互兼容,也可能不兼容。

這就是Java EE發揮作用的地方。

Java EE為您提供一站式框架,在單個包中提供上述所有功能。 您可以將其下載到一個軟件包中,然后在一個軟件包中進行升級。 通常,與自己構建堆棧相比,這些部件可以更好地協同工作

您可以將這一點與下載像Ubuntu這樣的完整Linux發行版進行比較,或者從僅從內核開始構建您自己的Linux系統。

在早期,Java EE(當時稱為J2EE)是重量級,昂貴,封閉源和象牙塔和供應商驅動的。 如今,Java EE非常輕量級,免費,開源,主要基於已經證明在實踐中工作的內容。

雖然對於許多Java EE實現而言,它認為您不支付(在內存或啟動時間方面)您不使用的內容,但是當前的Java EE規范定義了一個較小的Java EE“配置文件”,其中包含了一些內容。典型的Web應用程序不需要。 這稱為web profile 對於最終用戶而言,沒有明確的理由明確選擇Web配置文件,但對於創建Java EE實現的人來說,這是一個巨大的勝利,因為它更容易實現。

最后,Java EE的幾乎所有部分都是單獨提供的,因此您也可以構建自己的堆棧,完全由Java EE元素組成。 然而,這並不常見,因為僅僅采用現有的Java EE實現幾乎沒有什么好處。

Java EE實際上只是建立在SE之上,因此當您擁有需要EE中存在的庫或功能的Web應用程序時,您可以選擇EE。 如果你需要額外的東西,EE會更好。 (EE是一把吉他和一個盒子.SE只是一把吉他。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM