这款jvm你一定要试试


1.前言

接触过java 的小伙伴肯定都知道大名鼎鼎jvm,我们写的java 程序,首先编译成class 文件,然后加载进jvm ,jvm负责将Java字节码( class,Java代码编译后生成的中间代码)转换为机器码并执行,今天我介绍一个特殊的jvm,可以将java 代码编译成二进制可执行文件,直接执行。一起来看看吧。

2.简介

首先看下官方介绍:

GraalVM是一种开源的通用虚拟机,由Oracle开发和维护。它旨在提供高性能和灵活性,能够运行多种编程语言,包括Java、JavaScriptPython、Ruby和其他语言。GraalVM支持在不同的应用场景中使用,例如服务器端应用、嵌入式系统、云计算等。GraalVM的一个主要特性是其即时编译(Just-In-Time Compilation)能力,它能够将高级语言的代码直接编译成本地机器码,从而提供更好的性能。此外,GraalVM还提供了AOT(Ahead-of-Time Compilation)编译器,可以将Java应用程序编译成本地可执行文件,从而提供更快的启动时间和更低的内存消耗。GraalVM还支持与其他编程语言的互操作性,可以在不同语言之间进行函数调用和数据传递。它还提供了一些工具和扩展,用于性能分析、代码优化和开发工具的集成。

这款jvm你一定要试试

看这个,感觉有点go 语言的特性呀,最近几年由于云技术的发展,go语言如日中天,可能java 也感觉到了危机,所以java 也在进步。

这款jvm你一定要试试

3.搭建环境

既然打算学习了解一下,那么我们就来实操一下,看看到底是什么样的。首先看下按照graalvm 需要哪些环境吧。

  1. graalvm
这款jvm你一定要试试
  1. jdk17
这款jvm你一定要试试
  1. visual studio 2022

这款jvm你一定要试试graalvm 打包需要用到vs的工具来编译,所以下载社区版就可以了

配置环境变量 1.java 环境变量改成jdk 17

这款jvm你一定要试试
这款jvm你一定要试试

2.配置graalvm 环境变量

这款jvm你一定要试试

这款jvm你一定要试试再执行

gu.cmd install native-image

3 安装visual studio 安装时选择 c++桌面开发,然后等待安装完成这款jvm你一定要试试

先在PATH 中添加vs 的路径

这款jvm你一定要试试再增加INCLUDE 环境变量

这款jvm你一定要试试还有LIB 环境变量

这款jvm你一定要试试

环境变量配置好后,我们来写个java代码 来测试一下

public class HelloWorld {
  public static void main(String[] args) {
    System.out.println("Hello, World!");
  }
}

编译运行

javac HelloWorld.java
native-image HelloWorld

这款jvm你一定要试试可以看到目录出现了exe 文件 我们直接运行exe 文件

这款jvm你一定要试试

运行成功

这不同于传统的java 运行方式,因为传统的方式需要先在电脑上安装jdk ,然后才能运行java class 文件,这个打包后的exe ,可以复制到没有安装jvm 的电脑运行。体积1也不大。远小于传统的jvm.还是挺方便的。

graalvm支持aop吗?

要知道jvm 一个很强的特性就是aop ,打包成二进制运行文件的graalvm 支持aop 吗?是的,GraalVM支持AOP(面向切面编程)。AOP是一种编程范式,用于将横切关注点(如日志记录、事务管理、安全性等)从核心业务逻辑中分离出来,以提高代码的可维护性和重用性。在GraalVM中,您可以使用Java的AOP框架,如AspectJ或Spring AOP,来实现AOP。这些框架允许您通过定义切面、切点和通知等概念,将横切关注点应用到您的代码中。GraalVM的即时编译器(Graal编译器)可以优化AOP代码,以提高其执行性能。此外,GraalVM还提供了与其他语言的互操作性,您可以在不同语言之间使用AOP。总之,GraalVM支持AOP,并且您可以使用Java的AOP框架来实现AOP编程,并通过GraalVM的优化来提高性能。现在spring 除了spring-native 我后面也和大家介绍一下。

总结

总之,graalvm 改变了传统的java 运行模式,打包体积更小,冷启动飞快,我测试启动spring项目,比传统的jvm 快了10倍!!,冷启动的内存占用也小很多。感觉有点像go 语言的打包方式,但是相对于go语言,java 有更好的生态和面向对象以及语法上面的优势。我觉得还是很值得使用的,比较适合的场景有javaFX 云计算 嵌入式等等。

喜欢我的话,可以给我点个赞呀。

原文始发于微信公众号(小羊架构):这款jvm你一定要试试

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/171701.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!