# 获取jdk
- 使用spring-framework 里的get-jdk-url.sh 里的地址
##!/bin/bash
set -e
case "$1" in
java8)
echo "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u265-b01/OpenJDK8U-jdk_x64_linux_hotspot_8u265b01.tar.gz"
;;
java11)
echo "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.8%2B10/OpenJDK11U-jdk_x64_linux_hotspot_11.0.8_10.tar.gz"
;;
java14)
echo "https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jdk_x64_linux_hotspot_14.0.2_12.tar.gz"
;;
java15)
echo "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15%2B36/OpenJDK15U-jdk_x64_linux_hotspot_15_36.tar.gz"
;;
*)
echo $"Unknown java version"
exit 1
esac
- 获取alpine linux 的jdk 用于jenkins
使用镜像 bellsoft/liberica-openjdk-alpine-musl 手动复制出来
[root@localhost risk-admin-web]## docker run -it --rm bellsoft/liberica-openjdk-alpine-musl:15-36
/ ## ls
bin dev etc home lib media mnt opt proc root run sbin srv sys tmp usr var
/ ## echo $JAVA_HOME
/usr/lib/jvm/jdk-15-bellsoft-x86_64
docker cp focused_buck:/usr/lib/jvm/jdk-15-bellsoft-x86_64 /usr/local/src/docker/jenkins/data/
# Java 9
- List.of() Set.of() Map.of() Map.ofEntries()
- Stream 新方法 ofNullable、dropWhile、takeWhile、iterate。Collectors增加filtering和flatMapping
- Optional 增加 ifPresentOrElse、or、Stream
- 接口私有方法
- try-with-resources
- CompletableFuture 增加新方法 completeAsync,orTimeout
# Java 11-
- list,set,map提供了静态方法copyOf()返回入参集合的不可变拷贝。java.util.stream.Collectors中新增静态方法,用于将流中的元素收集为不可变的集合
- Optional 增加orElseThrow()方法在没有值的时候抛出异常
- 字符串增加一些方法
.isBlank()
.strip()
.stripLeading()
.stripTrailing()
.repeat()
.lines()
- ZGC 可伸缩,低延迟的垃圾收集器
- jdk.incubator.http 改为 java.net.http HttpClient 的升级
- lambda 中可以使用var进行类型推断
- NumberFormat 对数字进行格式化
- MessageFormat 字符串的格式化
# Java 13
- yield关键字
- 文本块 """ """
# Java 14
- record 关键字
- 异常精准提示
JVM参数 XX:+ShowCodeDetailsInExceptionMessages - switch 转正
# Java 15
- Sealed Classes 预览版 指定的类才能继承
- ZGC转正
- Text Blocks 转正
- Shenandoah 低停顿的垃圾回收器