继上一篇文章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,经过下方的入口进行查询