因为下学期要学习JavaEE因此打算将JavaSE的知识再从新学习一遍,打好基础的同时也但愿本身有新的收获和更深入的理解。
此次复习主要是参考廖雪峰老师的java教程,每学习完一章对其中一些要点进行总结和归纳。java
Java最先是由SUN公司(已被Oracle收购)的詹姆斯·高斯林(高司令,人称Java之父)在上个世纪90年代初开发的一种编程语言,最初被命名为Oak,目标是针对小型家电设备的嵌入式应用,结果市场没啥反响。谁料到互联网的崛起,让Oak从新焕发了生机,因而SUN公司改造了Oak,在1995年以Java的名称正式发布,缘由是Oak已经被人注册了,所以SUN注册了Java这个商标。随着互联网的高速发展,Java逐渐成为最重要的网络编程语言。
Java介于编译型语言和解释型语言之间。编译型语言如C、C++,代码是直接编译成机器码执行,可是不一样的平台(x8六、ARM等)CPU的指令集不一样,所以,须要编译出每一种平台的对应机器码。解释型语言如Python、Ruby没有这个问题,能够由解释器直接加载源码而后运行,代价是运行效率过低。而Java是将代码编译成一种“字节码”,它相似于抽象的CPU指令,而后,针对不一样平台编写虚拟机,不一样平台的虚拟机负责加载字节码并执行,这样就实现了“一次编写,处处运行”的效果。固然,这是针对Java开发者而言。对于虚拟机,须要为每一个平台分别开发。为了保证不一样平台、不一样公司开发的虚拟机都能正确执行Java字节码,SUN公司制定了一系列的Java虚拟机规范。从实践的角度看,JVM的兼容性作得很是好,低版本的Java字节码彻底能够正常运行在高版本的JVM上。数据库
以前只知道java是一种能够跨平台运行的语言,可是并不知道其中的缘由,如今明白了java代码经过本地编译器编译造成“java字节码”,而“java字节码”能够在任何平台的虚拟机(JVM)执行,这样就实现了“一次编写,处处执行”。编程
随着Java的发展,SUN给Java又分出了三个不一样版本:网络
JRE:Java Runtime Environment
简单地说,JRE就是运行Java字节码的虚拟机。可是,若是只有Java源码,要编译成Java字节码,就须要JDK,由于JDK除了包含JRE,还提供了编译器、调试器等开发工具。
编程语言
JCP组织:Java Community Process工具
为了保证Java语言的规范性,SUN公司搞了一个JSR规范,凡是想给Java平台加一个功能,好比说访问数据库的功能,你们要先建立一个JSR规范,定义好接口,这样,各个数据库厂商都按照规范写出Java驱动程序,开发者就不用担忧本身写的数据库代码在MySQL上能跑,却不能跑在PostgreSQL上。
因此JSR是一系列的规范,从JVM的内存模型到Web程序接口,所有都标准化了。而负责审核JSR的组织就是JCP。
一个JSR规范发布时,为了让你们有个参考,还要同时发布一个“参考实现”,以及一个“兼容性测试套件”:学习
Java源码本质上是一个文本文件,咱们须要先用javac把Hello.java编译成字节码文件Hello.class,而后,用java命令执行这个字节码文件:
┌───────┐
│ Hello.java │<─── source code
└───────┘
│ compile
▼
┌───────┐
│ Hello.class │<─── byte code
└───────┘
│ execute
▼
┌────────┐
│ Run on JVM │
└────────┘
所以,可执行文件javac是编译器,而可执行文件java就是虚拟机。开发工具