Jdk总览

2015/02/01 JDK

JDK总览

jdk 源码也是非常庞大的,可以分模块来阅读,下面是建议的阅读顺序:

  • java.lang 包下的基本包装类(Integer、Long、Double、Float 等),还有字符串相关类(String、StringBuffer、StringBuilder 等)、常用类(Object、Exception、Thread、ThreadLocal 等)。
  • java.lang.ref 包下的引用类(WeakReference、SoftReference 等)
  • java.lang.annotation 包下的注解的相关类
  • java.lang.reflect 包下的反射的相关类
  • java.util 包下为一些工具类,主要由各种容器和集合类(Map、Set、List 等)
  • java.util.concurrent 为并发包,主要是原子类、锁以及并发工具类
  • java.io 和 java.nio 可以结合着看
  • java.time 主要包含时间相关的类,可以学习下 Java 8 新增的几个
  • java.net 包下为网络通信相关的类,可以阅读下 Socket 和 HTTPClient 相关代码

各种JDK

OracleJDK OracleJDKhttps://www.oracle.com/java/technologies/javase-downloads.html

Oracle公司成立于1977年,是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。2009年就以7.4B$收购了Sun公司。2013年超越 IBM ,成为 继 Microsoft 后全球第二大软件公司。 警告:生产环境中OracleJDK的使用请注意法律风险!

OpenJDK: OpenJDKhttp://openjdk.java.net

OpenJDK原是Sun Microsystems公司为Java平台构建的Java开发环境(JDK)的开源版本,完全自由,开放源码。 Sun Microsystems公司在2006年的JavaOne大会上称将对Java开放源代码,于2009年4月15日正式发布OpenJDK。 甲骨文在2010年收购Sun Microsystem之后接管了这个项目。

RedHatOpenJDK: RedHatOpenJDKhttps://developers.redhat.com/products/openjdk/download RedHat开源扛把子红帽出品,值得信赖。仅有windows。Linux请从源里下载。仅更新最新维护版。

AdoptOpenJDK: AdoptOpenJDKhttps://adoptopenjdk.net 2017年开始采用OpenJDK.net,建立在多个平台上普遍缺乏一个开放的、可复制的OpenJDK源代码构建和测试系统。 adoptionopenjdk为Java生态系统提供了坚如磐石的OpenJDK二进制文件,还为任何平台上的OpenJDK构建者提供了作为代码的基础设施和构建场。

Dragonwell: Dragonwellhttps://github.com/alibaba/dragonwell8 作为OpenJDK的下游,alibaba Dragonwell是阿里巴巴内部OpenJDK定制版AJDK的开源版本,AJDK为在线电商、金融、物流做了结合业务场景的优化,运行在超大规模的,100,000+ 服务器的阿里巴巴数据中心。 国产之光,大家有机会还是尝试下优化的还不错,相对于OpenJDK更省内存和并发更高启动更快,作者测试过

GraalVM: GraalVMhttps://www.graalvm.org GraalVM是一个通用的虚拟机,用于运行以JavaScript、Pytho n、Ruby、R、JVM等语言编写的应用程序,如Java、Scala、Groovy、Kotlin 、Crojule和基于LLVM的语言,如C和C++。GraalVM消除了编程语言之间的隔离,并在共 享运行时启用互操作性。它可以独立运行,也可 以在OpenJDK、Node.js或Oracle数据库的上下文中运行。

ZuluJDK: ZuluJDKhttps://www.azul.com/downloads/zulu-community/?&architecture=x86-64-bit&package=jdk# Azul Systems为需要为其面向网络的客 户(旅游、在线零售、游戏、SaaS)提供基于服务器的Java应 用程序的公司提供服务,满足实时业务系统(广告网络、资本市场、通信)的特定 延迟目标,确保对重要应用程序进行及时维护或安全更新,或者为嵌入式和物联网用例提 供基于Java的系统。

Liberica: Libericahttps://bell-sw.com/pages/downloads/#/java-14-current Liberica是一个100% 开源Java实现。它是由BellSoft贡献的O penJDK构建的,经过了彻底的测试,并通过了OpenJDK许可下 提供的JCK。Standard为常规用途,full版本包含JavaFX,lite为精简的OpenJDK。文件体积Full > Standard > lite。

SapMachine: SapMachinehttps://sap.github.io/SapMachine SAP SE是一家 德国跨国软件公司,它生产企业软件 来管理业务运营和客户关系。SAP总部位于德国巴登-符腾 堡的沃尔多夫,在180个国家设有区域办事处。SapMachine是OpenJDK 项目的下游版本。它用于为希望使用OpenJDK运行其应用程序的SAP客户和合作伙 伴构建和维护支持SAP的OpenJDK版本。SAP致力于确保Java平台的持续成功。

Corretto: Correttohttps://amazonaws-china.com/cn/corretto Amazon Corretto是一个免费的 、多平台的、面向生产的开放Java开发工具包(OpenJDK) 发行版。Corretto提供长期支持,包括性能增强和安全修复。亚马逊在数 个生产服务上运行Corretto,并且Corretto被证明与Java SE标准兼容。使用Corretto,您 可以在流行的操作系统(包括Linux、Windows和macOS)上开发和运行Java应用程序。

JDK 新特性总览

JDK4

  • 正则表达式
  • 异常链
  • NIO
  • 日志类
  • XML解析器
  • XLST转换器

JDK5

  • 自动装箱与拆箱
  • 枚举
  • 静态导入
  • 可变参数(Varargs)
  • 内省(introspector)
  • 泛型(Generic)
  • For-Each循环

JDK6

  • Desktop类和SystemTray类
  • 使用JAXB2来实现对象与XML之间的映射
  • 理解STAX
  • 使用Compiler API
  • 轻量级 Http Server API
  • 插入式注解处理 API
  • 使用Console开发控制台程序
  • 对脚本语言的支持
  • Common Annotations
  • Java GUI界面的显示
  • 嵌入式数据库Derby
  • Web服务元数据
  • Jtable的排序和过滤
  • 更简单更强大的JAX-WS
  • 改进JVM的锁,同步垃圾回收,类加载

JDK7

  • 支持二进制数字 0b
  • switch中可以使用字符串了
  • 泛型实例化类型自动推断,调用泛型类的构造方法时,可以省去泛型参数,编译器会自动判断。
  • 自定义自动关闭类
  • 新增一些读取环境信息的工具方法
  • Boolean类型反转,空指针安全,参与位运算
  • 两个char之间的equals
  • 安全的加减乘除 sd
  • 对Java集合( Collections)的增强支持
  • 数值可加下划线
  • 支持二进制数字
  • 在try/catch异常扑捉中,一个catch可以写多个异常类型用 隔开
  • 可以不必要写finally语句来关闭资源,只要你在try()的括号内部定义要使用的资源
  • 提供GI收集器

JDK8

  • 接口的默认方法
  • Lambda表达式
  • 函数式接口
  • 方法与构造函数引用
  • 扩展了集合类
  • 新的Date API
  • Annotation多重注解
  • streams(流)
  • parallel streams(并行流)
  • Map数据结构改进
  • Nashorn JavaScript 引擎
  • Optional 类

JDK9

  • Jigsaw模块化项目
  • 简化进程API
  • 轻量级JSON API
  • 钱和货币的API
  • 改善锁竞争机制
  • 代码分段缓存
  • 智能java编译
  • http2.0客户端
  • kulla计划
  • 交互式编程环境, REPL(JShell)
  • String底层存储结构的变更(char数组变成byte字节数组)

JDK10

  • 局部变量的类型推断
  • GC改进和内存管理
  • 线程本地握手
  • 备用内存设备上的堆分配
  • 其他Unicode语言 - 标记扩展
  • 基于Java的实验性JIT编译器
  • 开源根证书
  • 根证书颁发认证(CA)
  • 将JDK生态整合单个存储库
  • 删除工具javah

JDK11

  • 181 嵌套类可见性控制
  • 309 动态文件常量
  • 315 改进 Aarch64 Intrinsics
  • 318 Epsilon–一个无操作的垃圾收集器
  • 320 删除 Java EE 和 CORBA 模块
  • 321 HttpClient
  • 323 用于 Lambda 参数的局部变量语法
  • 324 Curve25519 和 Curve448 算法的密钥协议
  • 327 Unicode 10
  • 328 Flight Recorder(飞行记录器)
  • 329 haCha20 和 Poly1305 加密算法支持
  • 330 Launch Single-File Source-Code Programs(启动单一文件的源代码程序)
  • 331 低开销的 Heap Profiling
  • 332 TLS 1.3支持
  • 333 ZGC: A Scalable Low-Latency Garbage Collector(可伸缩低延迟垃圾收集器)
  • 335 弃用 Nashorn JavaScript 引擎
  • 336 弃用 Pack200 工具和 API

JDK12

  • Switch Expressions
  • Shenandoah GC;

JDK13

  • switch优化更新
  • 文本块升级;
  • 重新实现旧版套接字API;
  • 核心库/java.util中:I18N;
  • 取消使用未使用的内存

JDK14

  • switch优化变更为最终版;
  • 垃圾回收相关;
  • instanceof的模式匹配(预览版);
  • 删除了安全库java.security.acl API;
  • 货币格式(优化)

JDK15

  • ZGC 一种可扩展低延迟垃圾收集器
  • 模式匹配的 instanceof
  • Record
  • 改进的序列化处理
  • 优化空子字符串处理
  • 支持 Unicode 13.0

JDK16

  • 一些在JDK14中引入的新特性,最终在JDK16中确定了。
  • 内存管理的提升
  • 新的打包工具
  • UNIX-Domain Socket channels
  • Value-based Classes的警告
  • Encapsulating JDK Internals by default
  • 提供了 C++ 14语言特性
  • 其他的一些预览版本的新特性

JDK17

  • 356:增强型伪随机数发生器
  • 382:新增macOS渲染管道
  • 398:弃用待移除的Applet API
  • 403:强封装JDK内部API
  • 411:弃用待移除的安全管理器(Security Manager)
  • 412:外部函数和内存API(孵化器)孵化阶段

JDK18

  • UTF-8 by Default 默认使用UTF-8字符编码
  • Simple Web Server 简单Web服务器
  • Code Snippets in Java API Documentation API文档支持代码片断
  • Reimplement Core Reflection with Method Handles 重构反射的实现
  • Vector API (Third Incubator) 向量API(孵化第三版)
  • Internet-Address Resolution SPI 网络地址解析 SPI
  • Foreign Function & Memory API (Second Incubator) 外部函数&内存API (孵化第二版)
  • Pattern Matching for switch (Second Preview) switch模式自动匹配(预览第二版)
  • Deprecate Finalization for Removal 将Finalization标记为过期

JDK19

  • 405:Record Patterns (Preview) 记录模式
  • 422:Linux/RISC-V Port Linux/RISC-V 移植
  • 424:Foreign Function & Memory API (Preview) 外部函数和内存 API
  • 425:Virtual Threads (Preview) 虚拟线程
  • 426:Vector API (Fourth Incubator) 向量 API
  • 427:Pattern Matching for switch (Third Preview) Switch 模式匹配
  • 428:Structured Concurrency (Incubator) 结构化并发

JDK20

  • 429:Scoped Values (Incubator)
  • 432:Record Patterns (Second Preview) 记录模式
  • 433:Pattern Matching for switch (Fourth Preview) switch语句的模式匹配
  • 434:Foreign Function & Memory API (Second Preview) 外部函数&内存(FFM)API
  • 436:Virtual Threads (Second Preview) 虚拟线程
  • 437:Structured Concurrency (Second Incubator) 结构化并发

JVM GC变化

  • JDK9: 设置G1为JVM默认垃圾收集器
  • JDK10:并行全垃圾回收器 G1,通过并行Full GC, 改善G1的延迟。目前对G1的full GC的实现采用了单线程-清除-压缩算法。JDK10开始使用并行化-清除-压缩算法。
  • JDK11:推出ZGC新一代垃圾回收器(实验性),目标是GC暂停时间不会超过10ms,既能处理几百兆的小堆,也能处理几个T的大堆。
  • JDK14 :删除CMS垃圾回收器;弃用 ParallelScavenge + SerialOld GC 的垃圾回收算法组合;将 zgc 垃圾回收器移植到 macOS 和 windows 平台
  • JDk 15 : ZGC (JEP 377) 和Shenandoah (JEP 379) 不再是实验性功能。默认的 GC 仍然是G1。
  • JDK16:增强ZGC,ZGC获得了 46个增强功能 和25个错误修复,控制stw时间不超过10毫秒

Search

    微信好友

    博士的沙漏

    Table of Contents