- JDK vs OpenJDK
Sun公司2009年被Oracle收购之前,将JDK源代码开源,形成了OpenJDK。
OpenJDK中,只包含JDK中最最核心的功能,还有其他的一些第三方实现的功能,或者是插件,OpenJDK是JDK的极简版本。 关于OpenJDK和JDK它的源代码是有关系的:包含在OpenJDK源代码中的绝大部分代码和Oralce JDK一模一样。
IBM,Google,FaceBook、RedHat都从OpenJDK中拿到源代码,然后经过修改,增加一些特有功能。例如阿里巴巴自己的JDK版本DragonWell。
直到今天为止,国内绝大部分公司,所使用的JDK版本仍然是JDK 8。为什么大家都用JDK 8? 商业公司 ->求稳
LTS: long term suppor (长期支持版本 ):维护周期长、至少3年、稳定。 而短期支持版本:维护周期短 、半年、不稳定。
从JDK9开始每半年发布一次,在这些快速迭代的版本中 ,JDK8 -> JDK11 ->JDK17是长期支持版本。
- JAVA语言的发展
JAVASE(Java Platform Standard Edition)标准版:是为开发普通桌面和商务应用程序提供的解决方案。
JAVAME(Java Platform To Micro Edition)小型版:是为开发电子消费产品和嵌入式设备提供的解决方案。
JAVAEE(Java Platform To Enterprise Edition)企业版:是为开发企业环境下的应用程序提供的一套解决方案。
- JAVA语言的特点
跨平台 —— compile once,run anywhere
面向对象
解释性
健壮性(异常机制)
动态性(JAVA字节码文件可以动态加载到JVM中运行而不是一次性加载)
分布式、高效、多线程、结构中立(字节码)
开源
- 编译型语言和解释型语言
高级语言计算机本身是不认识的,计算机只认识二进制0、1,一定有一个工具,帮助我们将程序转化为计算机可以识别的对应到机器指令级别的二进制序列。
1.编译型语言(C、C++):用这种语言写出的代码,首先通过编译器的编译,全部转化成目标代码(二进制可执行文件),然后依次在操作系统中执行(javac 是JDK自带的编译器)。
2. 解释型语言(JAVA、Python):转化一句,执行一句。
- JDK和JRE
JRE(JAVA Runtime Environment):
包括Java虚拟机,运行时核心类库(rt.jar),JRE主要是给已经写好的Java程序使用,换句话说Java程序要能在操作系统中运行,必须有JRE。JDK(JAVA Develop kit):
首先,JDK包含JRE,除此之外,JDK中还包含一些供开发者使用的工具比如Javac,Javap等,仅仅只供开发者在开发阶段使用的工具。
Javap是JDK自带的反编译工具,把字节码反编译为汇编代码,用于帮助开发中深入理解Java编译器的机制。(Javac将java文件转变为字节码文件,javap和java互逆)。
- 环境变量的配置
path环境变量:告诉操作系统到哪里去找Javac可执行程序。
ClassPath环境变量:给JVM用,告诉JVM到哪里加载字节码文件。配置path环境变量的官方推荐的方式:
- JAVA_HOME 环境变量:例:D:\develop\software\jdk1.8
- 配置path环境变量 : %JAVA_HOME%\bin (相对路径,双%为引用,相当于D:\develop\software\jdk1.8\bin)
- 补充
1.Java语言是跨平台的吗?JVM是跨平台的吗?答:Java语言是跨平台的,JVM是不跨平台的。2.设置环境变量使QQ或者微信可以在任意目录下,通过命令行执行。在Path变量中添加QQ和微信启动程序的路径,即可以在任意目录下,通过命令行执行。