5 分钟掌握 Java 核心之 一:你真的了解 Java 么?

问题

  1. java 是一门多范式的语言,你知道么?它支持哪些编程范式?
  2. JRE 和 JDK 分别指什么?它们的关系是咋样的?
  3. 为什么安装 JDK 的时候会安装两个 JRE?
  4. Java8 到 Java13 都有哪些重大变化?JRE从哪个版本开始退出历史舞台,原因是什么?
  5. OpenJDK 和 Oracle JDK 有啥区别?

目标

对 Java 发展、主要特性、构成有一个基本的了解。

Java 是多范式的语言

  1. 传统 Java 是解释型的语言,现在的 JIT、AOT 技术,让 Java 也支持了编译型语言的特性;
  2. 传统 Java 是面向对象的语言,JDK8 引入 Lambda,让 Java 支持函数式编程范式。
  3. 传统 Java 是命令式编程范式,JDK9 引入 Flow,让 Java 更好的支持响应式编程范式;

基础概念

Java SE:Java Platform Standard Edition

JRE:Java Runtime Environment

JDK:Java Development Kit

JVM:Java Virtual Machine

看这张图,上面的关系应该非常清晰了。

java conceptual diagram
注:从 Java 9 开始上面的图没有了。

java 版本发布时间

  • JDK 1.0 - January 23, 1996
  • JDK 1.1 - February 19, 1996
  • J2SE 1.2 - December 8, 1998
  • J2SE 1.3 - May 8, 2000
  • J2SE 1.4 - February 6, 2002
  • J2SE 5.0 - September 30, 2004
  • Java SE 6 - December 11, 2006
  • Java SE 7 - July 28, 2011
  • Java SE 8 (LTS) - March 18, 2014:Lambda
  • Java SE 9 - September 21, 2017:Java 模块系统、HTTP2、JShell、Reactive Streams、G1 为默认 GC。
  • Java SE 10 - March 20, 2018:并行 G1
  • Java SE 11 (LTS) - September , 2018:ZGC
  • Java SE 12 - March 19, 2019:Shenandoah GC
  • Java SE 13 - September 17, 2019

注:从 Java 9 开始每半年一个版本,每三年一个 LTS

答疑

JDK 和 JRE 的关系是什么?

JDK 包含了 JRE,上图说明了一切。最明显的区别就是编译java 程序使用的 javac 只有jdk 有,jre 没有, jre 只能运行 java 程序但是不能编译 java 代码。

为什么安装 JDK 的时候会安装两个 JRE?

首先必须理解 JRE 和 JDK 的关系。在此基础上,运行普通的 Java 程序,必须依赖 JRE,而 JDK 是可选的。

jdk/bin 下包括 java 开发工具。而 jdk/jre/bin 下只包含 java 运行的工具。前面是后面的超集。

JRE从哪个版本开始退出历史舞台,原因是什么?

java11开始,Oracle和openJDK就不再有JRE这个单独的文件夹了。你直接下载使用JDK就好了。

JRE 最初存在的部分原因是为了支持 applet 和 swing,但是这些目前已经基本处于无用的状态,而且给 java 新的发展带来了很大的包袱。从 Java9 开始出现了jigsaw,用 Jlink 可以从 jmods 定制更小的自定义 runtime,plugin之类的也逐渐退役了,并不是不需要 jre 了,而是安装的时候自带 jre 的需求在降低。

Java8 到 Java13 都有哪些重大变化?

后续我会专门一篇文章说明。

OpenJDK 和 Oracle JDK 有啥区别?
维度Oracle JDKOpenJDK
协议Java11之前为 BCL,Java11 开始GPLv2 + CPEGPLv2
开发Sun Microsystems Inc.Oracle, OpenJDK & Java社区
性能一样没有区别
发布周期Java10开始每6个月,有LTS为三年支持每版本6个月
速度一样一样
操作系统Supports Windows, Linux, Solaris, MacOSFreeBSD, Linux, Microsoft Windows, Mac OS X

注:从 Java11 开始商业特性Flight Recorder, Java Mission Control, 和 Application Class-Data Sharing、ZGC可以在 OpenJDK 使用了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值