胖头猫游戏提供热门游戏下载和手游攻略!

探索阿里巴巴开源 JDK 8 Dragonwell:优化容器环境下的性能与效率

发布时间:2024-10-22浏览:51

Alibaba Dragonwell 是阿里巴巴的Open JDK 发行版,提供长期支持。 阿里宣传称在阿里生产环境实现了应用。Alibaba Dragonwell兼容 Java SE 标准,因此可以方便切换。

下载#

可以到https://github.com/alibaba/dragonwell8/releases?spm=5176.cndragonwell.0.0.4c5a7568DpYPsp 下载,当前的最新版是8.4.4 GA

阿里也提供了镜像下载地址,可以加速下载:

8.4.4GA

File name中国大陆United StatesAlibaba_Dragonwell_8.4.4-GA_Linux_x64.tar.gzdownloaddownloadAlibaba_Dragonwell_8.4.4-GA_source.tar.gzdownloaddownloadAlibaba_Dragonwell_8.4.4-Experimental_Windows_x64.tar.gzdownloaddownloadjava8-api-8.4.4-javadoc.jardownloaddownloadjava8-api-8.4.4-sources.jardownloaddownloadjava8-api-8.4.4.jardownloaddownload

SHA256 checksum

使用#

Copywget https://dragonwell.oss-cn-shanghai.aliyuncs.com/8/8.4.4-GA/Alibaba_Dragonwell_8.4.4-GA_Linux_x64.tar.gztar zxvf Alibaba_Dragonwell_8.4.4-GA_Linux_x64.tar.gz cd jdk8u262-b10/ bin/java -version

输出:

Copyopenjdk version "1.8.0_262"OpenJDK Runtime Environment (Alibaba Dragonwell 8.4.4) (build 1.8.0_262-b10)OpenJDK 64-Bit Server VM (Alibaba Dragonwell 8.4.4) (build 25.262-b10, mixed mode)

容器环境使用#

我们需要准备一个基础镜像包,我们以openjdk:8-jdk-slim为基础包,把jdk替换为dragonwell8

Copy FROM openjdk:8-jdk-slim MAINTAINER jadepeng RUN sed -i 's#http://deb.debian.org#https://mirrors.163.com#g' /etc/apt/sources.list \ && apt-get update\ && apt-get install -y procps unzip curl bash tzdata ttf-dejavu \ && rm -rf /var/cache/apt/ \ && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo "Asia/Shanghai" > /etc/timezone RUN rm -r -f /usr/local/openjdk-8 ADD jdk8u262-b10 /usr/local/openjdk-8

构建:

Copydocker build -t dragonwell8:8.4.4 .

java应用就可以用dragonwell8:8.4.4为底包执行了。

dragonwell8 协程使用#

dragonwell8的一大特色就是协程(Coroutine )

官方有一个demo:

以一个pingpong 1,000,000次的程序为例,这是一个需要阻塞,切换密集型的应用。

Copy o . _______ _______ \_ 0 /______//______/| @_o /\_, /______//______/ /\ | \ | || | / |static final ExecutorService THREAD_POOL = Executors.newCachedThreadPool();public static void main(String[] args) throws Exception { BlockingQueue<Byte> q1 = new LinkedBlockingQueue<>(), q2 = new LinkedBlockingQueue<>(); THREAD_POOL.submit(() -> pingpong(q2, q1)); // thread A Future<?> f = THREAD_POOL.submit(() -> pingpong(q1, q2)); // thread B q1.put((byte) 1); System.out.println(f.get() + " ms");}private static long pingpong(BlockingQueue<Byte> in, BlockingQueue<Byte> out) throws Exception { long start = System.currentTimeMillis(); for (int i = 0; i < 1_000_000; i++) out.put(in.take()); return System.currentTimeMillis() - start;}

运行,查看执行时间:

Copy$java PingPong13212 ms// 开启Wisp2$java -XX:+UseWisp2 -XX:ActiveProcessorCount=1 PingPong882 ms

开启Wisp2后整体运行效率提升了近十多倍,只需要启动时增加参数-XX:+UseWisp2即可。不用修改一行代码,即可享受协程带来的优势。

随后可以通过jstack观察到起来的线程都以协程的方式在运行了。

Copy - Coroutine [0x7f6d6d60fb20] "Thread-978" #1076 active=1 steal=0 steal_fail=0 preempt=0 park=0/-1 at java.dyn.CoroutineSupport.unsafeSymmetricYieldTo(CoroutineSupport.java:138)-- - Coroutine [0x7f6d6d60f880] "Thread-912" #1009 active=1 steal=0 steal_fail=0 preempt=0 park=0/-1 at java.dyn.CoroutineSupport.unsafeSymmetricYieldTo(CoroutineSupport.java:138)...

可以看到最上方的frame上的方法是协程切换,因为线程调用了sleep,yield出了执行权。

开启Wisp2后,Java线程不再简单地映射到内核级线程,而是对应到一个协程,JVM在少量内核线上调度大量协程执行,以减少内核的调度开销,提高web服务器的性能。

在阿里的生产环境,性能指标:

在复杂的业务应用中(tomcat + 大量基于netty的中间件)我们获得了大约10%的性能提升。

在中间件应用(数据库代理,MQ)中我们获得大约20%的性能提升。

更多Wisp的设计实现与API相关信息,请参考Wisp文档。

-------------------------------------------------------

用户评论

追忆思域。

我还没试过这个龙井容器环境,但听说阿里巴巴的开源jdk质量很好.

    有9位网友表示赞同!

你那刺眼的温柔

看名字就知道是专为 Java 开发的游戏场景设计的啊.

    有17位网友表示赞同!

丢了爱情i

感觉对做游戏开发的程序员来说应该很有用.

    有14位网友表示赞同!

此生一诺

这JDK可以用来制作安卓游戏吗?

    有14位网友表示赞同!

冷月花魂

开源环境使用方便多了,不用费心思配置那些复杂的软件.

    有14位网友表示赞同!

暖栀

阿里巴巴的技术力强劲,这个容器环境肯定能带来良好的运行体验

    有7位网友表示赞同!

寻鱼水之欢

最近想要尝试一下玩在线游戏开发,这个环境会不会适合我?

    有6位网友表示赞同!

呆檬

感觉名字有点拗口啊,不过功能肯定很强大.

    有16位网友表示赞同!

稳妥

JDK 8 的特性是不是已经过时了?还是说这容器环境能让我在龙井容器内使用最新的 Java 版本?

    有11位网友表示赞同!

像从了良

阿里巴巴出品的游戏开发工具一定不会差!

    有7位网友表示赞同!

秘密

听说是为大型游戏项目设计的,感觉技术门槛应该很高.

    有16位网友表示赞同!

身影

对刚接触 Java 游戏开发的同学来说是不是有点难度?

    有9位网友表示赞同!

单身i

我想学习制作一款独立游戏,这个环境可以帮助我吗?

    有13位网友表示赞同!

不浪漫罪名

听说龙井容器很轻量级,有没有什么性能测试报告可以参考?

    有7位网友表示赞同!

灼痛

阿里巴巴开源社区活跃度很高,应该能找到很多相关资料和支持.

    有9位网友表示赞同!

迷路的男人

我很想尝试一下这个新的技术栈,期待它能为游戏开发带来更多的可能性!

    有10位网友表示赞同!

红尘滚滚

是不是可以直接用这款 JDK 运行已有的一些 Java 游戏呢?

    有20位网友表示赞同!

歆久

这个环境的学习曲线怎么样?新手容易上手吗?

    有8位网友表示赞同!

抓不住i

希望能了解更多关于这个容器环境的使用教程和案例.

    有9位网友表示赞同!

爱情的过失

对游戏开发领域来说,开源工具是必不可少的组成部分!

    有12位网友表示赞同!

如你所愿

期待看到更多开发者利用阿里巴巴提供的这款龙井容器环境打造出更精彩的游戏作品!

    有19位网友表示赞同!

热点资讯