繼上一篇文章http://www.cnblogs.com/EasonJim/p/6181981.html中說的區別,其實分析的不夠完全,所以再次在這裏作詳細的分析。html
一、說明:最開始Java是Sun公司的,而後是Oracle(甲骨文)收購了Sun(太陽微系統/Sun Microsystems),最後就是Java變成Oracle了,收購時間爲:2009-04-20;因此下文中提到的Sun和Oracle都是具備歷史上的關係。java
二、參考:程序員
http://tech.163.com/special/00093BH6/oraclesun.html編程
一、JDK 1.0版本於1996年1月23日發佈,叫作爲Oak。而真正第一個穩定的版本JDK 1.0.2,被稱做Java 1。後端
二、到J2SE 1.2版本,代號爲Playground。 這個在1998年12月8日的發佈的版本和其到J2SE 5.0的後續版本被重更名爲Java 2,而版本名稱「J2SE」(Java 2平臺,標準版)取代JDK以區別出來自J2EE(Java 2平臺,企業版) 和J2ME(Java 2 Platform,Micro Edition)的基礎平臺。api
三、也就是說,更改成Java 2以後再細分了三個版本出來,以區分Java 2平臺級別。安全
四、參考:服務器
https://zh.wikipedia.org/wiki/Java%E7%89%88%E6%9C%AC%E6%AD%B7%E5%8F%B2(Java版本歷史)網絡
無論是J2SE仍是J2EE,關注的點是J2,也就是Java 2。oracle
一、Java 2介紹:
Java 2平臺包括:標準版(J2SE)、企業版(J2EE)和微縮版(J2ME)三個版本。J2SE、J2ME和J2EE,這也就是SunONE(Open NetEnvironment)體系。J2SE就是Java2的標準版,主要用於桌面應用軟件的編程;J2ME主要應用於嵌入式系統開發,如手機和PDA的編程;J2EE是Java2的企業版,主要用於分佈式的網絡程序的開發,如電子商務網站和ERP系統。
二、J2SE改成Java SE:
Java SE 6,代號爲Mustang。版本發佈於2006年12月11日,Sun把本來的名稱「J2SE」改成「Java SE」,而後再從版本號中去掉「.0」,而開發者內部編號仍然是1.6.0。這個版本是根據JSR 270開發的。
三、參考:
http://baike.baidu.com/item/J2SE(J2SE介紹)
https://zh.wikipedia.org/wiki/Java%E7%89%88%E6%9C%AC%E6%AD%B7%E5%8F%B2(Java版本歷史)
以上三個是比較具備表明性的版本編號;
一、標紅的數字叫作版本編號。
二、而從J2SE 5.0開始,改編了這個原始版本編號,採用數字輩進行代替,但內部仍是使用版本編號,因此還能夠對這些數字這麼說:內部版本編號。
三、官方變動說明:J2SE 5.0版本,代號爲Tiger。這個在2004年9月30日發佈的版本本來以1.5編號,也就是仍然使用內部版本編號。這個數字輩改變是爲了「更好地反映成熟度、穩定性、可擴充性和J2SE的安全水準」。這個版本是在JSR 176底下被開發。
四、而5.0到6版本編號的變動,經歷了兩大改變,1爲版本編號,2爲J2SE改成Java SE;
五、以上變動的官方說明:Java SE 6版本,代號爲Mustang。版本發佈於2006年12月11日,Sun把本來的名稱「J2SE」改成「Java SE」,而後再從版本號中去掉「.0」,而開發者內部編號仍然是1.6.0。這個版本是根據JSR 270開發的。
六、這個內部版本編號使用很是普遍,好比咱們安裝的JDK上,所有使用內部版本編號,須要注意的是,在安裝包的文件夾版本編號是以三位進行命名的,好比:1.6.0_x,1.6.0大致不改變,除非新大版本發佈,然後面的x是bug修復的補丁級別的。在好比Windows下的JDK安裝目錄:C:\Program Files\Java\jdk1.8.0_131
七、經過以上的解釋,也就能夠推斷出這些內部版本編號對應數字輩,好比即將發佈的Java SE 9,若是官方沒明確規定,那麼就是1.9.0。
八、參考:
https://zh.wikipedia.org/wiki/Java%E7%89%88%E6%9C%AC%E6%AD%B7%E5%8F%B2(Java版本歷史)
一、其實沒有什麼區別,Java 8就是Java SE 8。
二、若是更深刻的解釋,Java 8表明技術的更新點,在JSR的便準下經過的新技術點,而這些更新的技術放在了Java SE 8的安裝包JDK 8下。
三、好比:從J2SE 5.0開始就叫作Java 5,到Java SE 6叫作Java 6;這些特色足以說明,這兩個就是同一個東西。
八、參考:
https://zh.wikipedia.org/wiki/Java%E7%89%88%E6%9C%AC%E6%AD%B7%E5%8F%B2(Java版本歷史)
一、從上面的發展歷史來講明,JDK就是Java SE,這二者就是同一個東西。
二、更有力的證據,在JDK下載頁面,以下所示:
三、還能夠這麼說,JDK就是Java平臺,一樣也是Java SE。若是要使用Java語言進行開發,包括開發Web,那麼必定要裝JDK。
一、先解釋Java EE,Java EE平臺構建於Java SE平臺之上,Java EE平臺提供一組API和運行環境來開發和運行大規模的,多層的,可擴展的,可靠的和安全的網絡應用程序。
二、也就是說Java EE是一個標準而已,而這些標準的實現是Web容器提供的,好比Servlet-API,在Tomcat這個Web容器下的lib文件夾就集成了servlet-api.jar的包。
三、在官方上的下載頁面上,有提供開發Java EE的SDK下載,我須要下載嗎?
下載下來的是glassfish的Web容器,裏面是按照Java EE的標準API開發的,能運行Java EE的Web程序,同時這個容器還提供了對EJB的支持。
四、無論開發Java EE仍是Java SE,只要開發與Java語言有關的程序,都必須安裝JDK。好比在開發Web程序,就是與Java EE有關的,那就必須引入Web容器提供的API。好比servlet-api.jar就是Tomcat提供的,在不用POM管理的狀況下,就必須導入這個JAR包。而Java SE通常表明了Application類型,好比開發桌面應用,通常是包含在了Java SE中,也就是JDK中,只須要這個JDK裏買的包便可,與Java EE無關。
五、再者,若是要開發Web應用,並且要使用EJB,那麼必須引入glassfish的Web容器提供的EJB的API的JAR包。
六、參考:
http://www.cnblogs.com/pugang/p/4619912.html
https://zh.wikipedia.org/wiki/Java_EE
http://baike.baidu.com/item/Java%20EE
一、首先能夠確定的是,Java EE有本身獨立的版本發展歷史,這一點與Java SE是區分開的。不要這樣錯誤的認爲Java SE 8就表明了Java EE 8,這兩個是不一樣的東西。
二、從上面的觀點中能夠解釋的一點是,Java EE提供了一組標準的API,而Web容器是實現這組API,而後提供JAR包給開發人員。那麼在Web容器去實現這組API時,好比實現Java EE 7的API時,可能會使用Java 8的新語言特性去實現;那麼此時,開發人員在引入這個JAR包時,就必須安裝支持Java 8的安裝包,也就是Java SE 8,JDK 8。那麼這種聯繫關係能夠說明是有聯繫,但功能倒是區分的。
三、參考:
http://docs.oracle.com/javaee(Java EE API文檔)
https://zh.wikipedia.org/wiki/Java_EE(Java EE發展歷史)
一、在Java EE的發展歷史下,具備表明性的是Servlet和JSP這兩個,這兩個也是有發展歷史的,不過這些發展歷史都同一歸到了Java EE下,當一個提案被JCP經過時,那麼新的版本就會收入到Java EE的新版本中。各大Web容器廠商就會按照標準API進行開發。
二、參考:
https://zh.wikipedia.org/wiki/Java_Servlet(Servlet發展歷史)
https://zh.wikipedia.org/wiki/JSP(JSP發展歷史)
一、在Web容器方面,主要圍繞兩大方面的技術支持:Servlet和EJB。有些容器是不支持EJB的,因此在使用上須要注意。
二、下面是Web容器的相關介紹:
Tomcat
Apache鼎力支持的Java Web應用服務器(Servlet容器),穩定性比較強和文檔資源比較全面,在開源領域受到衆多追捧。
JBoss
當之無愧的Java EE容器,同時支持Servlet和EJB,企業級開發人員普遍使用,由於畢竟彌補了Tomcat只支持Servlet的遺憾。
Resin
Resin也僅僅是一個Servlet容器,運行速度很是優秀,使得它在輕量級Java Web領域比較受歡迎,特別是互聯網Web領域,並且他們有提供商業版本支持,一些知名商業公司使用他們的服務比較多,例如16三、ku6等。Resin4支持不一樣的Web App分配不一樣的端口。
WebLogic和WebSphere
來自BEA公司的WebLogic和IBM的WebSphere,跟Resin比較相似,一樣是隻支持Servlet容器的商業級應用。WebLogic 支持企業級的、多層次的和徹底分佈式的Web應用,而且服務器的配置簡單、界面友好。IBM的WebSphere能夠細分爲WebSphere Performance Pack、Cache Manager 和WebSphere Application Server等系列,其中WebSphere Application Server是基於Java的應用環境,能夠運行於Sun Solaris、Windows NT等多種操做系統平臺,用於創建、部署和管理Internet和Intranet Web應用程序。
Glassfish
Sun公司本身發行的Java EE服務器,開源社區比較活躍,通過v1\v2到目前的v3,它已經逐步走向成熟。做爲一款免費、開放源碼的應用服務,她實現了Java EE 5. Java EE 5平臺涵蓋了EJB 3.0、JSF 1.二、Servlet 2.五、JSP 2.一、JAX-WS 2.0、JAXB 2.0、 Java Persistence 1.0、Common Annonations 1.0、StAX 1.0等。
Glassfish支持經過內存會話狀態複製,擁有良好的部署體系結構的可用性和可擴展性。對於集羣的支持也很強大,簡單添加機器,便可輕鬆實現網站的負載能力。
對於HTML生成解析能力吞吐量與Apache不相上下。咱們一般用Tomcat會做爲後端去處理JSP內容,就是由於它對於HTML解析吞吐量比較吃緊。
Glassfish還支持目錄部署,熱部署,這些都是Tomcat的缺陷。版本也比較人性化,有開發環境的簡化版,部署Web項目的版本。
三、參考:
https://putty.biz/321(Web經常使用容器)
一、JCP(Java Community Process)(Java社區進度)成立於1998年,是使有興趣的各方參與定義Java的特徵和將來版本的正式過程。
二、JCP使用JSR(Java規範請求,Java Specification Requests)做爲正式規範文檔,描述被提議加入到Java體系中的的規範和技術。
三、JSR變爲final狀態前須要正式的公開審查,並由JCP Executive Committee投票決定。最終的JSR會提供一個參考實現,它是免費並且公開源代碼的;還有一個驗證是否符合API規範的Technology Compatibility Kit。
四、能夠這麼理解,每個Java的規範都是經過JCP進行投票經過的,而這些標準的編號有JSR進行管理的。
五、參考:
https://zh.wikipedia.org/wiki/JCP(JCP解釋)
https://www.jcp.org(JCP社區,能夠自由註冊,而且能夠提交本身的意見,若是經過了,將收錄進去)
https://www.jcp.org/en/jsr/detail?id=379(這個是Java 9的提案)
https://www.jcp.org/en/jsr/results?id=5962(這個是Java 9的投票結果)
一、JDK: Java Development Kit(JDK)是太陽微系統針對Java開發人員發佈的免費軟件開發工具包(SDK,Software development kit)。自從Java推出以來,JDK已經成爲使用最普遍的Java SDK。因爲JDK的一部分特性採用商業許可證,而非開源。所以,2006年太陽微系統宣佈將發佈基於GPL的開源JDK,使JDK成爲自由軟件。在去掉了少許閉源特性以後,太陽微系統最終促成了GPL的OpenJDK的發佈。
二、OpenJDK:OpenJDK原是Sun Microsystems公司爲Java平臺構建的Java開發環境(JDK)的開源版本,徹底自由,開放源碼。Sun Microsystems公司在2006年的JavaOne大會上稱將對Java開放源代碼,於2009年4月15日正式發佈OpenJDK。甲骨文在2010年收購Sun Microsystem以後接管了這個項目。
三、因爲發展歷史關係,OpenJDK的發展大於JDK,因此以後JDK的開發會遵循OpenJDK的步伐。爲何這麼說,以前OpenJDK是JDK的一個分支,如今OpenJDK成爲了主幹。
四、一樣的,OpenJDK也是遵循JCP的JSR標準。或者這種方式不該該這麼說,無論OpenJDK仍是JDK,都叫作Java,那麼只要是Java就是受JCP的JSR標準約束。
五、參考:
https://zh.wikipedia.org/wiki/JDK(JDK說明)
https://zh.wikipedia.org/wiki/OpenJDK(OpenJDK說明)
http://www.cnblogs.com/EasonJim/p/7031961.html(OpenJDK與JDK區別分析)
http://openjdk.java.net/(OpenJDK官網)
http://jdk.java.net/(JDK下載)
一、參考:http://www.cnblogs.com/EasonJim/p/7103546.html
一、JRE(Java Runtime EnvironmentJDK):JRE顧名思義是Java運行時環境,包含了Java虛擬機,Java基礎類庫。是使用Java語言編寫的程序運行所須要的軟件環境,是提供給想運行Java程序的用戶使用的。JRE根據不一樣操做系統(如:Windows,Linux等)和不一樣JRE提供商(IBM,ORACLE等)有不少版本,最經常使用的是Oracle公司收購Sun公司的JRE版本。
二、JDK(Java Development Kit):JDK顧名思義是java開發工具包,是程序員使用Java語言編寫Java程序所需的開發工具包,是提供給程序員使用的。JDK包含了JRE,同時還包含了編譯Java源碼的編譯器javac,還包含了不少Java程序調試和分析的工具:jconsole,jvisualvm等工具軟件,還包含了Java程序編寫所需的文檔和demo例子程序。若是你須要運行Java程序,只需安裝JRE就能夠了。若是你須要編寫Java程序,須要安裝JDK。
三、參考:
https://www.zhihu.com/question/20317448/answer/14737358
http://docs.oracle.com/javase(Java SE API文檔)
https://zh.wikipedia.org/wiki/Java_SE,經過下方的入口進行查詢