Open JDK VS JDK(Oracle)
2009年sum被Oracle收购之前,将jdk源代码开源,形成了OpenJDK
Open JDK 是JDK(Oracle)的极简版本,是最最核心的功能。
IBM,Google,FaceBook,RedHat都从OracleJDK中,拿到源代码,然后针对自己公司特有的问题进行修改,形成了自己特有的jdk,而这些修改并不会同步到JDK(Oracle)中。
阿里巴巴也有自己的JDK版本,DragonWell(龙井)。
JDK 8
国内大部分公司,所使用的JDK版本仍然是JDK 8。->求稳!
LTS:long term supper 长期支持版本 维护周期长,至少半年 稳定;
从jdk9开始每半年发布一次,长期支持版本有:jdk 8 -> jdk 11 -> jdk 17
Java语言
JavaSE(Java Platform Standard Edition)标准版:开发普通桌面和商务应用程序提供的解决方案。
JavaEE(Java Platform To Enterprise Edition)企业版:为开发企业环境下得应用程序提供的一套解决方案(多台客户端对网站的响应)。
JavaME(Java Platform To Micro Edition)嵌入式:开发电子消费产品和嵌入式设备提供的解决方案。
JRE(Java Runtime Environment):包括Java虚拟机,运行时核心类库(rt.jar),JRE主要是给已经写好的Java程序使用的。Java程序要能在操作系统中运行,必须有JRE。
JDK(Java Develop kit):JDK包含JRE,还有供开发者使用的工具,如:Javac,Javap等,仅供开发者在开发阶段使用的工具。
Java语言特点:
-
跨平台-compile once,run anywhere
-
开源
-
面向对象:C++,Python也都是。
-
解释型语言:
高级语言计算机本身是不认识的,计算机只认识二进制01;所以一定有个工具,帮助我们将我们的程序,转化为计算机可以识别的,对应到机器指令级别的二进制序列。
根据执行方式不同,可以分为:
1.编译型语言:用这种语言写出的代码,首先通过编译器的编译,全部转化成目标代码(二进制可执行文件 .exe)。然后依次在操作系统中执行。
2.解释型语言:转化一句,执行一句。
Java是解释型:源代码(.java)经过编译,形成字节码文件(.class),字节码文件加载到 Java虚拟机(JVM)中,然后执行。
Java虚拟机在执行字节码文件的时候,是对字节码文件转化一句,执行一句。
-
健壮
异常机制:让人有机会对自己的错误进行修复。
-
分布式
一台主机所支持的访问量是有上限的,访问量过大的时候(例如:双十一),将网站不同功能(注册,登录,下单)放到不同主机上,从逻辑上讲,将流量分发到不同主机上,可以减轻单台主机对请求处理上限问题。合起来实现用户对整个网站功能的访问(分布式系统)。
而Java天生对网络通信有很好的封装支持(java.net库),易于实现不同主机间的交互。
-
动态
字节码文件不会一次全部加载到JVM中,而是用到的时候,才会加载进去。即动态加载字节码文件。
-
高效
大型项目中,不太逊色C/C++了。(C/C++是直接运行在操作系统上的,而Java是运行在Java虚拟机上的。)OJ题目太小了
-
多线程
-
结构中立(字节码)
字节码文件有自己独立的格式,不依赖于任何已有的操作系统/运行平台。
什么是跨平台性?
通过Java语言编写的应用程序在不同系统平台上都可以运行。
跨平台实现原理
Java程序是在Java虚拟机上运行的,而非直接运行在操作系统。
Eg:世界语(.class)通过翻译(JVM)转换为中文,英语...(Windows,MAC,Linux)
- Java语言跨平台 对的。
- JVM不能跨平台。只有每个操作系统都有其具体的JVM,才能帮助我们完成程序和操作系统底层的交互,从而实现Java跨平台特性。