赞
踩
要说 JVM 的未来那有很多的可能,但在云原生如日中天、Serverless 日渐成熟、新语言百花齐放的当下,跨语言、Native 支持、高性能低资源占用的技术必定是其璀璨的明珠,而 GraalVM 正是这样一个承载了 JVM 未来,将 Java 带入下一波技术浪潮的弄潮儿,本文我们就来实践下 GraalVM 集成支持。
在讲 GraalVM 前我们先回看下 Java 当前遇到的问题,概括而言如下:
云时代的掉队者,由于 Java 启动的高延时、对资源的高占用、导致在 Serverless 及 FaaS 架构下力不从心,在越来越流行的边缘计算、IoT 方向上也是难觅踪影
系统级应用开发的旁观者,Java 语言在业务服务开发中孤独求败,但在系统级应用领域几乎是 C、C++、搅局者 Go、黑天鹅 Rust 的天下
移动应用、敏捷应用的追随者,移动应用中 Android 逐步去 Java,前端又是 JS 的世界,敏捷开发方面前有 Ruby、Python 后有 NodeJS
有人说 Java 吃老本,不思进取,也对也不对吧,毕竟 Java 作为企业级软件开发最主流的语言,兼容稳定远胜于创新求变,所以 Java 很苦恼,即便是看似激进的 JDK 版本策略也敌不过臃肿守旧的印象。
怎么办?要兼容稳定,那么别打语法、API、字节码创新的心思,Java 本身就那样了,但它背后的 JVM 却有更多的选择。Java 的问题可以让 JVM 来补救,说资源占用高那先来个 JPMS 模块化(但目前看貌似并不成功),说启动延迟大那咱支持 AoT 搞 Native 吧,说对系统级应用、移动应用、敏捷应用支持不好那你行你上,我把你们都包进来纳入到我 JVM 大生态中,这就是 GraalVM 正在做的。
GraalVM 是一个新的 JVM,原本用于替换 HotSpot 的 C2 编译器,后来独立成 JVM 的一个产品,它很新但架不住对 Native Image、多语言集成、高性能特性的诱惑,就连“后知后觉”的 Spring 也着手相关的支持工作,而新新的框架诸如 quarkus、micronaut 都已提供了比较好的支持。
但是问题来了,你说得这么好,为什么不见人用,国内外找了一圈都是些介绍性的文章?原因嘛,因为 GraalVM 要解决的问题有很多,现有的应用、框架都需要一定的改造。前面扯了这么多,接下来才是本文的重点:以实例切入带各位体验下 GraalVM 的集成改造。
Dew-Common( https://github.com/gudaoxuri/dew-common )是笔者开源的一个 Java 基础工具包,包含了 Json、Bean(反射)、Package Scan、JS 交互、Shell 调用等常用操作的支持,拿这个工具包做 GraalVM 的集成可以比较全面的检验集成的效果。
安装 GraalVM 及相关的依赖,GraalVM 支持 Linux、Windows 及 MacOS,但一般推荐在 Linux 下操作。笔者使用的是 Windows,Windows 10 2004 版本的 WSL2 提供了完整的 Linux 内核,非常适合开发调试(Windows 是最好的 Linux 发行版本
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。