首页 > 其他分享 >GraalVM的资料

GraalVM的资料

时间:2024-09-08 15:02:46浏览次数:11  
标签:Java image GraalVM maven 资料 Native native

  • 官网

    An advanced JDK with ahead-of-time Native Image compilation.

  • 代码社区

  • 下载主页

  • 文档主页

    GraalVM compiles your Java applications ahead of time into standalone binaries. These binaries are smaller, start up to 100x faster, provide peak performance with no warmup, and use less memory and CPU than applications running on a Java Virtual Machine (JVM).

    在编译期,将字节码转换为机器码。

    GraalVM reduces the attack surface of your application. It excludes unused classes, methods, and fields from the application binary. It restricts reflection and other dynamic Java language features to build time only. It does not load any unknown code at run time.

    在编译器,裁剪、消除掉应用程序在运行时不需要、不使用、不加载的类和代码,减少目标应用程序的大小。类似gcc/clang提供的编译选项-ffunction-sections -fdata-sections -Wl,-gc-sections

  • GraalVM Documentation

Getting Started

  • Getting Started

    GraalVM compiles your Java applications ahead of time into standalone binaries that start instantly, provide peak performance with no warmup, and use fewer resources.

Native Image

  • Native Image

    创建验证项目,执行如下命令:

     mvn archetype:generate -DgroupId=com.example -DartifactId=helloworld -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
    

    构建可执行的jar,修改项目的pom.xml,增加如下配置:

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.12.1</version>
                <configuration>
                    <fork>true</fork>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.3.0</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>com.example.App</mainClass>
                            <addClasspath>true</addClasspath>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>
    

    使用graalvm转换为本地代码,修改pom.xml,增加如下配置:

    <profiles>
      <profile>
        <id>native</id>
        <build>
          <plugins>
            <plugin>
              <groupId>org.graalvm.buildtools</groupId>
              <artifactId>native-maven-plugin</artifactId>
              <version>${native.maven.plugin.version}</version>
              <extensions>true</extensions>
              <executions>
                <execution>
                <id>build-native</id>
                  <goals>
                    <goal>compile-no-fork</goal>
                  </goals>
                  <phase>package</phase>
                </execution>
                <execution>
                <id>test-native</id>
                  <goals>
                    <goal>test</goal>
                  </goals>
                  <phase>test</phase>
                </execution>
              </executions>
            </plugin>
          </plugins>
        </build>
      </profile>
    </profiles>
    

    启动构建,执行如下命令:

    mvn -Pnative package
    
  • User Guides

  • Native Image Basics

Build

  • Build Overview
    native-image的常见命令行样例。

  • Build Output
    执行native-image构建时,命令行的输出信息。

  • Build Configuration
    在jar中增加native-image的配置文件,用于指示构建选项,配置文件的位置,样例如下:

    META-INF/
    └── native-image
        └── groupID
            └── artifactID
                └── native-image.properties
    

    groupID/artifactID如何确定?
    通过学习官方提供的样例,快速上手native-image的使用方法。

  • Bundles
    对于使用maven管理、构建的项目,修改项目的pom.xml,增加如下配置:

    <plugin>
      <groupId>org.graalvm.buildtools</groupId>
      <artifactId>native-maven-plugin</artifactId>
      <configuration>
          <buildArgs combine.children="append">
              <buildArg>--bundle-create</buildArg>
          </buildArgs>
      </configuration>
    </plugin>
    

    构建软件时,执行如下命令:

    ./mvnw package -Dpackaging=native-image
    
  • Command-line Options
    native-image的选项。

Reachability Metadata

Optimizations and Performance

Debugging and Diagnostics

Dynamic Features

Interoperability with Native Code

Reference Manuals

Java and JVM

Java on Truffle

标签:Java,image,GraalVM,maven,资料,Native,native
From: https://www.cnblogs.com/jackieathome/p/18402861

相关文章

  • 【含文档+PPT+源码】基于微信小程序的考研公共课资料库分享平台设计与实现
    项目背景与意义随着互联网的快速发展,人们越来越依赖于移动设备来获取信息和服务。微信小程序作为一种新兴的网络产品,具有无需安装、开发成本低、使用方便等特点,已经被广泛应用到各个领域。在考研领域,由于考研人数的不断增加,考生对考研信息资源和平台的需求也逐渐上升。然而,现......
  • 基于nodejs+vue电气与计算机学院资料管理系统[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着电气与计算机学院科研与教学活动的日益丰富,各类文献资料、项目报告、学生档案及教师研究成果等资料的积累量急剧增加。传统的手工管理模式已难以满足当......
  • TLV62080DSGR高效降压转换器中文资料PDF数据手册引脚图功能框图
    TLV62080的说明TLV6208x系列器件是小型降压转换器,所用外部组件较少,可实现具有成本效益的解决方案。此类器件属于同步降压转换器,其输入电压范围为2.5V/2.7V(TLV62080为2.5V,TLV62084x为2.7V)至6V。TLV6208x器件专注于在宽输出电流范围内实现高效降压转换。该转换器在中等......
  • LMR54406DBVR开关稳压器中文资料PDF数据手册引脚图参数功能框图
    LMR54406的说明LMR544xx是一款简单易用的宽VIN同步降压转换器,能够驱动高达1A和0.6A的负载电流。该器件具有4V至36V的宽输入范围,适用于从非稳压源进行电源调节的各种工业应用。LMR544xx以1.1MHz的开关频率运行,支持使用相对较小的电感器,以实现经优化的设计尺寸......
  • 基于PDF资料编写PRD长文档测试案例
    基于PDF资料编写PRD长文档测试案例测试提示语您是产品专家,请基于如下内容,编写详细PRD文档,需要需求规则描述,输入与输出,非功能性需求http://www.phic.org.cn/zcyjybzpj/bzypj/bzgf/bjsgfwj/201804/P020181122342212839943.pdfhttps://www.chima.org.cn/Sites/Uploaded/File/2020/0......
  • 基于java+springboot+vue的考研资料分享微信小程序
    项目介绍互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对高校教师成果信息管理混乱,出错率高,信息安全性差,劳动强度大,费时费力等问题,采用考研资料分享系统可以有......
  • C#/.NET/.NET Core优质学习资料,干货收藏!
    前言今天大姚给大家分享一些C#/.NET/.NETCore优质学习资料,希望可以帮助到有需要的小伙伴。什么是.NET?.NET是一个免费的、跨平台的、开源开发人员平台,用于构建许多不同类型的应用程序。使用.NET,可以使用多种语言、编辑器和库来构建Web、移动、桌面、游戏和IoT等。一......
  • Stable Diffusion抠图插件爬坑经历,StableDiffusion实操案例(附整合资料)
    今天给大家分享使用后期处理插件stable-diffusion-webui-rembg实现抠图功能。......
  • 华中科技大学《829自动控制原理》考研真题及资料
    正在复习华中科技大学《829自动控制原理》的同学刷到此文应当好好看看。内容简介:备考华中科技大学《829自动控制原理》的考研真题及资料,可以采取以下策略:理解考试大纲和题型:研究考试大纲,了解《829自动控制原理》的考试范围、重点和题型分布。分析历年真题,了解考试难度......
  • Android Auto认证流程及资料
    AndroidAuto认证是谷歌官方对车辆信息娱乐系统的一种认可,表明该系统已经过严格测试,符合AndroidAuto平台的标准和要求。通过认证,确保车辆信息娱乐系统能够与AndroidAuto应用程序无缝集成,提供流畅的用户体验,同时保证系统的安全性和稳定性。AndroidAuto认证项目:1.车载娱乐系统兼容......