說到JavaEE(曾經叫J2EE)是什麼,你可能回答:JavaEE是一組規範,這麼說是沒錯,但是本身不認爲這個答案很是大、很是空麼?什麼又是規範?規範能組成應用麼?能在JVM中跑起來麼?要理解這些,先得從什麼是規範提及。java
因爲Java開源,不論什麼開發人員都能寫代碼,而後提供給其它人使用,以數據庫訪問爲例,現在有MySQL、Oracle兩家數據庫廠商,各自用java寫本身的數據庫訪問流程代碼:數據庫
MySQL提供了3個類,各自是:Connection、SQLStatement、File編程
開發流程爲:學習
Oracle看到MySQL的數據庫開發這麼複雜,因而精簡開發,僅僅提供了兩個類:Connection、Tablespa
開發流程爲:接口
後來,又出來了很是多數據庫:SQLServer、DB2……每個廠商都有提供了本身的類和開發流程,每出一種數據庫,java開發人員都需要又一次學習,數據庫方面開發愈來愈亂。Sun一看,這不行,這樣誰願意使用java,因而做爲權威的一方,加上幾個主流的數據庫支持廠商,商定了開發數據庫的核心內容,如:事務
這個核心內容一出,你們都愜意了:開發
Sun說:既然你們都愜意,之後僅僅要是訪問數據庫,我們都依照這個作,這個就定義爲JDBC規範吧。通常爲了更明顯,Sun也會提供一組實現供廠商和開發人員借鑑。get
以上關於Oracle和MySQL的純屬虛構,僅僅是爲了說明:什麼是規範,爲何要制定規範。io
現有的JavaEE規範是:EJB、JSP、Servlet、JPA、JTA……,這些規範都是爲了應對一類開發所提出的接口定義。如,JPA爲關於持久化的;JTA是事務一方面的;JSP是表現層一方面的……
隨着Java的不斷壯大,未來愈來愈多開發人員使用Java開發語音通訊,但是JavaEE中尚未這個規範,因而Oracle又站出來,叫上主流支持廠商說:爲了統一開發,減小開發成本,編寫語音通訊要有規範,咱們定義爲JVA(Java Voice API),當中包含3個接口類:IPManager、WaveManager、ResultManager,IPManager接口類中的接口有xx,凝視說明是yy……
開發流程爲:
那麼,什麼又是企業級應用?可以說用到JavaEE中不論什麼規範的,都可以稱之爲企業級應用,僅僅用到JSP,廣義上來講也叫企業級應用。
規範是接口,僅僅有接口,是開發不了程序的,須要實現,因而你想開發數據庫訪問,必須要引入一種JDBC的實現:數據庫驅動的jar包;想開發JSF,必須引入MyFaces等jar包……
以上說明了什麼是規範,爲何要使用規範,接下來會逐個分析JavaEE中的常常使用的規範。