重磅发布:阿里 OpenJDK终于开源啦! 将长期支持版本 Dragonwell
前几天的北京阿里云峰会,阿里巴巴正式宣布对外开源 OpenJDK 长期支持版本 Alibaba Dragonwell。作为 Java 全球管理组织 Java Community Process (JCP) 的最高执行委员会的唯一中国代表,以及 Oracle 之外的 Java 生态中为数不多的 OpenJDK 定制者,Alibaba Dragonwell 的开源是阿里巴巴向全球 Java 开发者的重磅献礼。
这就是 Alibaba Dragonwell
Alibaba Dragonwell 是一款免费的 OpenJDK 发行版。它提供长期支持,包括性能增强和安全修复。Alibaba Dragonwell 目前支持 X86-64/Linux 平台,在数据中心大规模 Java 应用部署情况下, 可以大幅度提高稳定性、效率以及性能。Alibaba Dragonwell 与 Java SE 标准兼容,用户可以使用 Alibaba Dragonwell 开发和运行 Java 应用程序。
此次,阿里巴巴发布的 Alibaba Dragonwell 8 预览版本对应 OpenJDK 8 的版本。Alibaba Dragonwell的开源为全球 Java 开发者提供了新选择。同时对于阿里云,Alibaba Dragonwell 会针对 LTS 的两个版本 Java 8 和 Java 11 随阿里云 VM 镜像发布,免费提供给阿里云客户使用。
AJDK 的优势继承者——Alibaba Dragonwell
Alibaba Dragonwell 的前身是阿里巴巴内部使用的 AJDK(Alibaba/AlipayJDK)。早在 2010 年,阿里巴巴就开始了基于 OpenJDK 开源软件的开发,并在 2015 年着手 OpenJDK 8 的优化和定制工作。
AJDK 作为阿里巴巴 Java 应用的基石,支撑了阿里经济体内所有的 Java 业务,经受了多次双十一考验,积累了大量业务场景下的实践经验。作为在 Oracle 之外的 Java 生态中的 OpenJDK 定制者, 阿里一直不遗余力持续开拓 Java 新疆界:
2015 年 10月,AJDK8.0.0 发布,实现多租户,支持高密度部署以及资源隔离。
2016 年 5月,AJDK 8.1.1 发布,支持 JWarmup,支持 Java 应用在运行时提前编译。
2016 年10月,AJDK 8.2.4 发布,实现Wisp协程 ,有效提升 Java 应用性能 30% 以上。
2018 年 1 月,AJDK 8.4.7 发布,根据阿里大数据场景的定制版 ZenGC (G1 based)发布。
2018 年 2月,发布基于 AJDK 的 Java Profiling 工具 Java Event Tracing(JET) 。
作为 AJDK 的开源版本, Alibaba Dragonwell 沿袭了 AJDK 的技术优势以及实践场景下的技术经验。开源后,Alibaba Dragonwell 的每次发布都将会同步 OpenJDK 8 的最新更新(OpenJDK 8u),并将基于阿里的工程实践,加入阿里的’value-add’ 功能。Alibaba Dragonwell 版本会通过 JCK 兼容套件测试,确保 Java 的兼容性。
Alibaba Dragonwell 与 OpenJDK
Oracle 宣布 Java8 在 2019 年 1月之后停止更新,另外 Java11 及以后版本将不再提供免费的 long-term support (LTS) 支持。可以预见,未来将有越来越多 Java 开发者转向使用 OpenJDK。阿里巴巴长期致力于与 Java 技术推进的聚集地——OpenJDK 社区密切合作,Alibaba Dragonwell 将保持与社区版本的同步,并充分融合阿里巴巴业务实践与技术经验,为 Java 开发者提供一个良好的应对方案。
Alibaba Dragonwell 8 的优势
1、移植上游 Java 11 的 Java Flight Recorder (JFR) 功能,Java 开发人员可以通过 JFR 收集 JVM 运行过程中的详细的 profiling 信息,配合 Java Mission Control(JMC), 大幅提高 Java 应用的问题诊断及性能优化效率;
2、集成 AJDK 的 JWarmup 技术,JWarmup 已作为 Java Enhancment Proposal(JEP) 在 OpenJDK 立项,未来有望加入 Java 的标准发行版中。JWarmup 在数据中心可以结合应用的流量调度时机,动态预编译Java 代码,可以有效减少由于传统的 Just-in-Time 的预热(Warmup)导致的 CPU load 过高,rt 超时等问题。
3、提供在 GC 问题诊断 Servicibility 方面的提高, 详细信息参考 Alibaba Dragonwell 8 User Guide https://github.com/alibaba/dragonwell8/wiki/阿里巴巴Dragonwell8用户指南
Alibaba Dragonwell Roadmap
作为 OpenJDK 的下游,Alibaba Dragonwell 将在每季度发布新版本主要包含:
社区上游安全/关键 bug 修复
阿里定制的功能,Bug修复等。
基于阿里工程实践的 Java 8 以后版本的功能移植
我们计划逐步把阿里巴巴内部使用 AJDK 积累的技术创新开源出来贡献给社区。同时,我们预计 2019 年年底发布 Alibaba Dragonewell 11。
Github Link:
https://github.com/alibaba/dragonwell8
二、特性:
1、垃圾回收:使用CMS (-XX:+UseConcMarkSweep) 作为默认GC策略。
2、JFR(Java Flight Recorder):
(1)从JDK11中backport到了Dragonwell-8版本中。
(2)添加了EnbleJFR命令行选项,默认关闭,用于彻底隔离JFR相关逻辑,只有添加-XX:+EnableJFR到JVM命令行才可以使用JFR特性。
3、Serviceability支持:
(1)jmap的dump子命令支持“mini”选项,可以在做heapdump时忽略掉原始类型数组的内容,详情请参考jmap工具的帮助信息。
(2)增加参数: PrintYoungGenHistoAfterParNewGC,该用于打印一次ParNew GC之后young区对象的histogram。该参数可以用jinfo动态打开。
(3)增加参数PrintGCRootsTraceTime用于打印一次ParNew GC的具体耗时,主要用于排查长的ygc问题。该参数可以用jinfo动态打开关闭。
(4)增加参数:ArrayAllocationWarningSize,默认值为512M。当分配的对象大小超过该值的时候,标准输出里会显示分配的堆栈。该参数可以通过jinfo动态修改。
4、JWarmUp:
(1)增加参CompilationWarmUpRecording启用JWarmUp的记录模式,在指定的时间后,JVM会生成JWarmUp profile,包含JVM中的已加载类及热点方法。
(2)增加参数:CompilationWarmUp启用JWarmUp的预热编译模式,根据指定的JWarmUp profile加载之前记录的热点方法,通过API可以通知JVM预热编译热点方法。
(3)JDK中提供了:com.alibaba.jwarmup.JWarmUp类,应用可以使用该JAVA API控制JWarmUp,例如通知JVM开始WarmUp编译,检查编译情况,通知JVM退优化预热编译的方法。
三、安装Alibaba Dragonwell:
1、下载软件包:
下载地址:
https://github.com/alibaba/dragonwell8/releases
下载版本:
Alibaba_Dragonwell8_Linux_x64_8.0-preview.tar.gz
2、解压软件包:# tar -xf
Alibaba_Dragonwell8_Linux_x64_8.0-preview.tar.gz -C /usr/local
备注:解压后生成的目录名为j2sdk-image
3、配置环境变量:
# vim /etc/profile.d/jdk.shexport JAVA_HOME=/usr/local/j2sdk-imageexport PATH=$JAVA_HOME/bin:$PATH# . /etc/profile.d/jdk.sh
4、查看JAVA版本:# java -version
Alibaba Dragonwell FAQ
在宣布开源前夕,InfoQ 记者对阿里云智能基础产品事业部资深技术专家李三红、阿里云智能基础产品事业部研究员 Kingsum Chow (周经森)进行了采访,以下就大家关心的问题做一下整理。
Q1.Alibaba Dragonwell 命名有什么由来?
“Dragonwell”中文译为龙井,象征着中国的茶文化,又恰好是杭州特色(阿里巴巴总部所在地);“well”一词通常被描述为水源汇聚在一起供大家享用,我们希望可以集合所有开发者的力量不断完善该项目并最终贡献给所有用户。
Q2.开源的 Alibaba Dragonwell 与阿里内部使用的 AJDK 是一个东西吗?
本次开源的 Alibaba Dragonwell 与阿里内部使用的 AJDK 还是有差异的。Alibaba Dragonwell 是 AJDK 的开源版本,AJDK 技术的继承者。目前开源的版本并未包含 AJDK 的所有功能,比如多租户,Wisp 协程,ZenGC 等。之后,会考虑将 AJDK 的功能逐渐过渡到 Alibaba Dragonwell。
Q3.Alibaba Dragonwell 与 OpenJDK 关系是怎么样的?阿里巴巴是否会持续维护 OpenJDK 社区?
Alibaba Dragonwell 一定是 OpenJDK 的下游,每个 Alibaba Dragonwell 发行版都会同步上游最新更新,并经过阿里巴巴内部大规模的应用集群测试。同时,阿里巴巴也会积极将 AJDK 上的技术积累贡献到 OpenJDK,积极参与社区的项目更新和维护。我们期待与 OpenJDK 社区密切合作,共同推动 OpenJDK 的发展。
Q4. 如何看待Java 版本的升级? 如何看待 Oracle JDK 与 OpenJDK 的关系?
Java 8 是目前最被广泛使用的版本,并且其群体非常坚守。在 Java 圈内,你会发现一个很有趣的现象:无论新版本给出的更新多么诱惑,大部分 Java 开发者似乎并不感兴趣,依旧坚持自己的选择。确实,Java 8 是一个非常成功的版本,以至于很多开发者并不认为需要更新其他版本,这可能与长期养成的习惯和固有信任有关系。Java 这么多年发展过来,大多数开发者已经习惯信任官方 Oracle JDK,对社区 OpenJDK 版本关注不够,所以从 Oracle JDK 到 OpenJDK 的切换需要一个过程。但随着这些国际科技大厂的努力,OpenJDK 的生态一定会越来越完善,功能也会更加齐备,面对持续的安全更新和众多大厂的深度参与,这个项目应该会成为 Java 生态中的重要公共资源。
你对阿里的OpenJDK会有怎样的看法,欢迎在下方讨论和留言~
阅读更多
如果对技术开发比较感兴趣,可以和我一块交流技术~~
重磅发布:阿里 OpenJDK终于开源啦! 将长期支持版本 Dragonwell的更多相关文章
- 重磅发布:阿里开源 Open JDK 长期支持版本 Alibaba Dragonwell
3 月 21 日北京阿里云峰会,阿里巴巴正式宣布对外开源 OpenJDK 长期支持版本 Alibaba Dragonwell.作为 Java 全球管理组织 Java Community Process ...
- 重磅发布:阿里开源 OpenJDK 长期支持版本 Alibaba Dragonwell
原文地址:https://yq.aliyun.com/articles/694603 本文作者:阿里开源 本文来自云栖社区合作伙伴"阿里系统软件技术",了解相关信息可以关注&qu ...
- 重磅发布: 阿里云WAF日志实时分析上线 (含视频)
摘要: 阿里云WAF与日志服务打通,对外开发Web访问与攻击日志.提供近实时的网站具体的日志自动采集存储.并提供基于日志服务的查询分析.报表报警.下游计算对接与投递的能力. 背景 Web攻击形势 互联 ...
- 阿里开源 Dragonwell JDK 重磅发布 GA 版本:生产环境可用
今年 3 月份,阿里巴巴重磅开源 OpenJDK 长期支持版本 Alibaba Dragonwell的消息,在很长一段时间内都是开发者的讨论焦点,该项目在 Github 上的 Star 数迅速突破 1 ...
- 腾讯牛逼!终于开源了自家的 Tencent JDK——Kona!!.md
是的,继阿里 2019/03 开源基于 OpenJDK 的长期支持版本 Alibaba Dragonwell 之后,腾讯也发布了自家的开源免费的 JDK 版本--Tencent Kona,必须替小马哥 ...
- Tapdata 与阿里云 PolarDB 开源数据库社区联合共建开放数据技术生态
近日,阿里云 PolarDB 开源数据库社区宣布将与 Tapdata 联合共建开放数据技术生态.在此之际,一直专注实时数据服务平台的 Tapdata ,也宣布开源其数据源开发框架--PDK(Plu ...
- AWS 推出长期支持的 OpenJDK 免费分发版本 —— Amazon Corretto
简评:听说 Oracle JDK 要收费了,Oracle 要限制 Java 的商业或生产用途,针对这个问题,AWS 将会推出 Amazon Corretto. Java 是 AWS 用户使用的最流行的 ...
- 重磅发布!阿里云推PostgreSQL 10 高可用版
摘要: 近日,阿里云重磅发布PostgreSQL 10 高可用本地SSD盘版,相比原 9.4 版本又新增了JSONB.BRIN索引.GROUPING SETS/CUBE/ROLLUP.UPSERT等多 ...
- Oracle 要慌了!华为终于开源了自家的 Huawei JDK——毕昇 JDK!
没错,自阿里.腾讯之后,华为也终于开源了自家的 JDK--毕昇 JDK! 免费!免费!免费!!! Oracle 要慌了? 毕昇 JDK 毕昇 JDK 是华为内部 OpenJDK 定制版 Huawei ...
随机推荐
- python 绘制柱状图
python 绘制柱状图 import matplotlib.pyplot as plt import numpy as np # 创建一个点数为 8 x 6 的窗口, 并设置分辨率为 80像素/每英 ...
- http请求方式和传递数据类型
HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则. GET,通过请求URI得到资源 POST,用于添加新的内容 PUT用于修改某个内容 DELETE ...
- Navicat 连接VMware中Ubuntu 下的mysql5.7遇到的坑
1.用Navicat连接虚拟机下的mysql出现问题: 2003- Can't connect MySQL Server on '192.168.*.*'(10038). 解决方案: 方法:直接授权( ...
- linux定时备份学习笔记
1.iterm2链接远程中文乱码 shh端vi ~/.bash_profile export LC_CTYPE=en_US.UTF-8 source ~/.bash_profile 2.WARNI ...
- Python Spider - urllib.request
import urllib.request import urllib.parse import json proxy_support = urllib.request.ProxyHandler({' ...
- oracle wm_concat 函数无法使用的情况下,使用LISTAGG()函数
http://dacoolbaby.iteye.com/blog/1698957 --20180327 重写wm_concat函数,解决行数超过上限问题 /*执行前请将APPS替换为当前登录用户*/ ...
- Git中.gitignore文件不起作用的解决以及Git中的忽略规则介绍
在Studio里使用Git管理代码的过程中,可以修改.gitignore文件中的标示的方法来忽略开发者想忽略掉的文件或目录,如果没有.gitignore文件,可以自己手工创建.在.gitignore文 ...
- 移动端适配单位rem
0 写在前面 本周惊喜地发现,其他各个老师的软工班(罗杰老师班和欧阳老师班)的软工项目的alpha版本都已经发布了!(然而我们软工项目还没开始写代码…逃…) 十分好奇的我第一时间下载了一些他们的产品进 ...
- Java 8 特性 —— lambda 表达式
Lambda 表达式 Lambda表达式本质上是一个匿名方法.常见的一个例子是,在 IDEA + JDK8 的环境下按照Java传统的语法规则编写一个线程: new Thread(new Runnab ...
- 浅析redis缓存 在spring中的配置 及其简单的使用
一:如果你需要在你的本地项目中配置redis.那么你首先得需要在你的本地安装redis 参考链接[http://www.runoob.com/redis/redis-install.html] 下载r ...