本博客 貓叔的博客,轉載請申明出處java
先來看看官網對它的定義。git
Java平臺企業版(Java EE)是社區驅動的企業軟件的標準。Java EE是使用Java Community Process開發的,其中包括來自行業專家,商業和開源組織,Java用戶組以及無數我的的貢獻。每一個版本都集成了符合行業需求的新功能,提升了應用程序的可移植性並提升了開發人員的工做效率 現在,Java EE的提供了豐富的企業軟件平臺,並與超過 20個兼容的Java EE實現可供選擇。程序員
Java EE 8,你值得了解,起碼官網還提示了你它還在更新
新的功能。github
說到JEE,作web項目的朋友其實都有所瞭解,它將企業級軟件架構分爲三個層級,web層、業務邏輯層和數據存儲層
。web
先看看圖,舊時代的輝煌!數據庫
先介紹一下:WEB容器:給處於其中的應用程序組件(JSP,SERVLET)提供一個環境
,使JSP,SERVLET直接跟容器中的環境變量接口交互,沒必要關注其它系統問題。主要由WEB服務器
來實現。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。該容器提供的接口嚴格遵照J2EE規範中的WEB APPLICATION 標準。咱們把遵照以上標準的WEB服務器就叫作J2EE中的WEB容器。同時,JEE 平臺將不一樣的模塊化組件聚合後運行在通用的應用服務器
上,例WebLogi,WebSphere , JBoss 等,這也包含 Tomcat Tomcat 僅僅是實現了 JEE Web 規範的 Web 容器。安全
EJB容器:Enterprise java bean 容器。更具備行業領域特點。他提供給運行在其中的組件EJB各類管理功能。只要知足J2EE規範的EJB放入該容器,立刻就會被容器進行高效率的管理。而且能夠經過現成的接口來得到系統級別的服務。例如郵件服務、事務管理。WEB容器和EJB容器在原理上是大致相同的,更多的區別是被隔離的外界環境
。WEB容器更多的是跟基於HTTP的請求打交道。而EJB容器不是。它是更多的跟數據庫、其它服務打交道。但他們都是把與外界的交互實現從而減輕應用程序的負擔。例如SERVLET不用關心HTTP的細節,直接引用環境變量session,request,response就行、EJB不用關心數據庫鏈接速度、各類事務控制,直接由容器來完成。服務器
能夠看到每一個層次的職責以下:session
值得一提的是,JEE平臺是典型的二八原則的應用場景
,它將 80%通用的與業務無關的邏輯和流程封裝在應用服務器的模塊化組件裏,經過配置的模式提供給應用程序訪問,應用程序實現 20%專用邏輯
,並經過配置
的形式來訪問應用服務器提供的模塊化組件。事實上,應用服務器提供的對象關係映射服務、數據持久服務、事務服務、安全服務、消息服務等經過簡單的配置便可在應用程序中使用。架構
JEE 時代的架構已經對企業級應用的總體架構進行了邏輯分層
,包括上面提到的 Web 層、業務邏 和數據存取層,分別對應上圖中的 Web 容器、 JB 容器和數據存取 ORM 組件與數據持久層 (數據庫) 不一樣的層級有本身的職責,並從功能類型上劃分層級,每一個層級的職責單一。
在分層架構下須要對項目管理過程當中的團隊進行職責劃分,井創建團隊交流機制。根據康威定律,設計系統的組織時,最終產生的設計等價於組織的溝通結構
,通俗來說,團隊的交流機制應該與架構分層交互機制相對應。因爲在架構上把總體的單體系統分紅具備不一樣職責的層級,對應的項目管理傾向於把大的團隊分紅不一樣的職能團隊,主要包括:用戶 交互 UI 團隊、後臺業務邏輯處理團隊、 數據存取 ORM 團隊與 DBA 團隊等,每一個團隊只對本身的職責負責
,並對使用方提供組件服務質量保證。
讓咱們在看看另外一個經典,職能團隊劃分。
JEE經過對單體架構的分層,結合職能劃分,開始經過架構在必定程度上進行邏輯拆分,讓各個專業的人能更加高效的作他們應該作的事情。可是,每一個層次的多個業務邏輯的實現會被放在同一應用項目中,而且運行在同一個服務器上。儘管大多數公司會使用規範來約束不一樣業務邏輯的隔離性
來解禍,可是長此以往,隨着複雜業務邏輯的選代增長及開發人員的不斷流動,新的程序員爲了節省時間和趕進度,非法使用了其餘組件的服務,業務組件之間、 組件之間、數據存取之間的稿合性必然增長,最後致使組件與組件之間難以劃清界限
,徹底禍合在一塊兒,未來的新功能迭代、增長和維護將難上加難。(反正你若是是入職接手一個老項目,那你通常都會很頭疼)
就當時而言,儘管 JEE 支持 Web容器和 EJB 容器的分離部署,大多數項目仍然部署在同 個應用服務器上井跑在一JVM 進程中。
說說你和JEE的那些事吧!
學習交流羣:728698035
現架構設計(碼農)兼創業技術顧問,不羈平庸,熱愛開源,雜談程序人生與不按期乾貨。