Java最先有SUN公司(已被Oracle收购)的詹姆斯高斯林在上个世纪90年代初开发的一种编程语言,最初被命名为Oak,目标是针对小型家电设备的嵌入式应用,结果市场没啥反响。谁料到互联网的崛起,让Oak从新焕发了生机,因而SUN公司改造了Oak,在1995年以Java的名称正式发布,缘由是Oak已经被人注册了,所以SUN注册了Java这个商标。随着互联网的高速发展,Java逐渐成为最重要的网络编程语言。java
Java介于编译型语言和解释型语言之间。编译型语言如C、C++,代码是直接编译成机器码执行,可是不一样的平台(x8六、ARM等)CPU的指令集不一样,所以,须要编译出每一种平台的对应机器码。解释型语言如Python、Ruby没有这个问题,能够由解释器直接加载源码而后运行,代价是运行效率过低。而Java是将代码编译成一种“字节码”,它相似于抽象的CPU指令,而后,针对不一样平台编写虚拟机,不一样平台的虚拟机负责加载字节码并执行,这样就实现了“一次编写,处处运行”的效果。固然,这是针对Java开发者而言。对于虚拟机,须要为每一个平台分别开发。为了保证不一样平台、不一样公司开发的虚拟机都能正确执行Java字节码,SUN公司制定了一系列的Java虚拟机规范。从实践的角度看,JVM的兼容性作得很是好,低版本的Java字节码彻底能够正常运行在高版本的JVM上。数据库
随着Java的发展,SUN给Java又分出三个不一样版本编程
Java SE:Standard Edition Java EE:Enterprise Edition Java ME:Micro Edition
这三者之间有什么关系呢服务器
简单来讲,Jave SE就是标准版,包含标准的JVM和标准库,而Java EE是企业版,它是在Java SE的基础上加上了大量的API和库,以便方便开发Web应用,数据库,消息服务等,Jave EE的应用使用的虚拟机和Java SE彻底相同。网络
Java ME就和Java SE不一样,它是一个针对嵌入式设备的“瘦身版”,Java SE的标准库没法在Java ME上使用,Java ME的虚拟机也是“瘦身版”。框架
毫无疑问,Java SE是整个Java平台的核心,而Java EE是进一步学习Web应用所必须的。咱们熟悉的Spring等框架都是Java EE开源生态系统的一部分。不幸的是,Java ME历来没有真正流行起来,反而是Android开发成为了移动平台的标准之一,所以,没有特殊需求,不建议学习Java ME。编程语言
JDK,JRE工具
JDK:Java Development Kit JRE:Java Runtime Environment
简单地说,JRE就是运行Java字节码的虚拟机。可是,若是只有Java源码,要编译成Java字节码,就须要JDK,由于JDK除了包含JRE,还提供了编译器、调试器等开发工具。学习
两者关系以下开发工具
要学习Java开发,固然须要安装JDK了。
JSR,JCP
JSR规范:Java Specification Request JCP组织:Java Community Process
为了保证Java语言的规范性,SUN公司搞了一个JSR规范,凡是想给Java平台加一个功能,好比说访问数据库的功能,你们要先建立一个JSR规范,定义好接口,这样,各个数据库厂商都按照规范写出Java驱动程序,开发者就不用担忧本身写的数据库代码在MySQL上能跑,却不能跑在PostgreSQL上。
因此JSR是一系列的规范,从JVM的内存模型到Web程序接口,所有都标准化了。而负责审核JSR的组织就是JCP。
一个JSR规范发布时,为了让你们有个参考,还要同时发布一个“参考实现”,以及一个“兼容性测试套件”:
RI:Reference Implementation TCK:Technology Compatibility Kit
好比有人提议要搞一个基于Java开发的消息服务器,这个提议很好啊,可是光有提议还不行,得贴出真正能跑的代码,这就是RI。若是有其余人也想开发这样一个消息服务器,如何保证这些消息服务器对开发者来讲接口、功能都是相同的?因此还得提供TCK。
一般来讲,RI只是一个“能跑”的正确的代码,它不追求速度,因此,若是真正要选择一个Java的消息服务器,通常是没人用RI的,你们都会选择一个有竞争力的商用或开源产品。