
作者简介
第一步是下载Graal VM。它有两种选择:
社区版(Community Edition)
所有开源许可证
免费供生产使用
企业版(Enterprise Edition)
免费用于评估和其他非生产用途
对于商业用途和支持选项,应联系销售团队
第一个体验感受:CE版仅支持Linux操作系统。对于OSX,需要使用EE版本。目前还没有Windows版本(那么,未来还有吗?)
GraalVM架构
该架构与传统的Java JDK 9之前的版本相似。

GraalVM JDK的架构
因此,GraalVM可以成为任何标准JDK的替代品。
运行java -version将返回以下的输出:
java version "1.8.0_161"Java(TM) SE Runtime Environment (build 1.8.0_161-b12)GraalVM 1.0.0-rc1 (build 25.71-b01-internal-jvmci-0.42, mixed mode)
java version "1.8.0_161"Java(TM) SE Runtime Environment (build 1.8.0_161-b12)GraalVM 1.0.0-rc1 (build 25.71-b01-internal-jvmci-0.42, mixed mode)
截至目前,GraalVM仅限于Java 8功能。
一些性能测试基准
下一步是检查性能是否有所改善。我使用了JMH框架:它专注于此。
我使用了下面的代码:

并使用java -jar target / benchmarks.jar命令行在3个不同的JRE上进行了测试。
GraalVM结果
# JMH version: 1.20# VM version: JDK 1.8.0_161, VM 25.71-b01-internal-jvmci-0.42# VM invoker: /usr/local/graalvm-1.0.0-rc1/Contents/Home/jre/bin/java# VM options: # Warmup: 20 iterations, 1 s each# Measurement: 20 iterations, 1 s each# Timeout: 10 min per iteration# Threads: 1 thread, will synchronize iterations# Benchmark mode: Throughput, ops/time# Benchmark: ch.frankel.blog.MyBenchmark.testMethodResult "ch.frankel.blog.MyBenchmark.testMethod": 6.795 ±(99.9%) 0.016 ops/s [Average] (min, avg, max) = (6.477, 6.795, 6.967), stdev = 0.068 CI (99.9%): [6.778, 6.811] (assumes normal distribution)# Run complete. Total time: 00:06:59Benchmark Mode Cnt Score Error UnitsMyBenchmark.testMethod thrpt 200 6.795 ± 0.016 ops/s
# JMH version: 1.20# VM version: JDK 1.8.0_161, VM 25.71-b01-internal-jvmci-0.42# VM invoker: /usr/local/graalvm-1.0.0-rc1/Contents/Home/jre/bin/java# VM options: # Warmup: 20 iterations, 1 s each# Measurement: 20 iterations, 1 s each# Timeout: 10 min per iteration# Threads: 1 thread, will synchronize iterations# Benchmark mode: Throughput, ops/time# Benchmark: ch.frankel.blog.MyBenchmark.testMethodResult "ch.frankel.blog.MyBenchmark.testMethod": 6.795 ±(99.9%) 0.016 ops/s [Average] (min, avg, max) = (6.477, 6.795, 6.967), stdev = 0.068 CI (99.9%): [6.778, 6.811] (assumes normal distribution)# Run complete. Total time: 00:06:59Benchmark Mode Cnt Score Error UnitsMyBenchmark.testMethod thrpt 200 6.795 ± 0.016 ops/s
Oracle JDK 8结果
# JMH version: 1.20# VM version: JDK 1.8.0_92, VM 25.92-b14# VM invoker: /Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home/jre/bin/java# VM options: # Warmup: 20 iterations, 1 s each# Measurement: 20 iterations, 1 s each# Timeout: 10 min per iteration# Threads: 1 thread, will synchronize iterations# Benchmark mode: Throughput, ops/time# Benchmark: ch.frankel.blog.MyBenchmark.testMethodResult "ch.frankel.blog.MyBenchmark.testMethod": 6.727 ±(99.9%) 0.017 ops/s [Average] (min, avg, max) = (6.466, 6.727, 6.899), stdev = 0.070 CI (99.9%): [6.710, 6.743] (assumes normal distribution)# Run complete. Total time: 00:07:00Benchmark Mode Cnt Score Error UnitsMyBenchmark.testMethod thrpt 200 6.727 ± 0.017 ops/s
# JMH version: 1.20# VM version: JDK 1.8.0_92, VM 25.92-b14# VM invoker: /Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home/jre/bin/ja
本文介绍了作者对GraalVM 1.0.0-rc1在Java 8上的初步体验,发现其性能提升不明显,尤其是在与Java 9的对比中。尽管GraalVM提供了将JAR转换为本机可执行文件的能力,但在尝试使用JMH进行性能测试和尝试为Spring Pet Clinic创建本地镜像时遇到了问题,如类加载错误和不支持的特性。作者认为GraalVM目前仍存在局限性,期待未来版本的改进。
最低0.47元/天 解锁文章
4760

被折叠的 条评论
为什么被折叠?



