Quarkus初体验--2.9.0.Final版本(Windows10系统 64位)

环境准备:

本地环境:

Windows10系统 64位

Maven 3.8.4

GraalVM CE 22.1.0(包含了 Openjdk  11.0.15 )

Visual Studio 2022 社区版

一、安装 graalvm

相关介绍:

GraalVM-下一代JVM简介 

 

GraalVM的三大特点总结如下:

  • GraalVM可以代替JDK、JVM之前的工作

  • GraalVM除了支持Java,也支持多种语言

  • GraalVM可以对应用AOT,也就是把程序直接编译成二进制,从而提升启动速度、改进内存使用。

另外,GraalVM编译java项目为原生可执行程序的假设条件:

尽量少的JNI调用

尽量少的使用反射

尽量少的class loader隔离等

即使项目中用到了JNI、反射这些,也没关系,可以通过在启动参数中配置一些必要的信息,告诉GraalVM单独处理这些信息(不再本文中的讨论范围之内)。

不废话了,直接开搞!!

  1. 下载
    官网URL:https://www.graalvm.org/downloads/
    有两个版本,分别以java8/java11 进行构建,本教程选择java11版本进行构建
    java11:https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.3.0/graalvm-ce-java11-windows-amd64-20.3.0.zip

  2. 解压配置环境变量(同JDK配置一致)

GRAALVM_HOME: D:\ProgramFiles\Java\graalvm-ce-java11-22.1.0
JAVA_HOME:D:\ProgramFiles\Java\graalvm-ce-java11-22.1.0
CLASSPATH:  .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
Path:%JAVA_HOME%\bin

  1. cmd查看

安装 native-image

二、安装 Visual Studio

Windows开发环境下,还需要安装Visual Studio,否则maven打native-image时会报错:

Error: Default native-compiler executable 'cl.exe' not found via environment variable PATH

下载地址:Microsoft C++ 生成工具 - Visual Studiohttps://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/

勾选一些必须的工具包

然后开始下载

下载中....

经过N分钟后,终于 下载完了....

然后,在安装的时候,语言包勾选英文,去掉中文,否则使用mvn命令打native-image时会编译报错: Native-image building on Windows currently only supports target architecture: AMD64 (32-bit architecture x86 unsupported)

开始菜单 => Visual Studio Installer => 修改生成工具 => 语言包勾选英文,去掉中文。

提示安装完毕:

然后配置好环境变量:

MSVC = C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326

WK10_INCLUDE = C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0
WK10_LIB = C:\Program Files (x86)\Windows Kits\10\Lib\10.0.20348.0

## 变量值必须为INCLUDE和LIB
INCLUDE = %WK10_INCLUDE%\ucrt;%WK10_INCLUDE%\um;%WK10_INCLUDE%\shared;%MSVC%\include
LIB = %WK10_LIB%\um\x64;%WK10_LIB%\ucrt\x64;%MSVC%\lib\x64


# 添加path中指定 MSVC cl.exe路径(X86架构的操作系统,32位,请根据实际情况选择)
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\bin\Hostx86\x86

# 添加path中指定 MSVC cl.exe路径(X64架构的操作系统,64位,请根据实际情况选择)
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\bin\Hostx64\x64

MSVC 相关配置,不配置好的话,mvn 编译会报错:Cannot open include file: 'stdio.h': No such file or directory

'stdio.h 文件一般在 {安装路径}\Windows Kits\10\Include 下

cl.exe 如果未配置的话,,在执行“./mvnw package -Pnative”命令打本地镜像时则会报错:

com.oracle.svm.core.util.UserError$UserException: Default native-compiler executable 'cl.exe' not found via environment variable PATH

如果操作系统架构与cl.exe所在路径不匹配的话,则会报如下错误,

 Native-image building on Windows currently only supports target architecture: AMD64 (32-bit architecture x86 unsupported)


 

 另外,MAVEN自己装一下就好了,就不再赘叙

至此,环境就搞好了,

三、新建quarkus的demo项目

(搭建步骤略.....)

可自己手动搭建,也可使用官网生成

官网地址:https://code.quarkus.io/

如果只是需要体验quarkus的急速启动、占用极少内存的话,可以用已经弄好的demo代码,压缩包的链接如下:

链接:https://pan.baidu.com/s/1_Gm6dijqLh2Pwn18h-vDgw?pwd=wr1c 
提取码:wr1c

项目的pom.xml文件

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.acme</groupId>
  <artifactId>code-with-quarkus</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <properties>
    <compiler-plugin.version>3.8.1</compiler-plugin.version>
    <failsafe.useModulePath>false</failsafe.useModulePath>
    <maven.compiler.release>11</maven.compiler.release>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>
    <quarkus.platform.group-id>io.quarkus.platform</quarkus.platform.group-id>
    <quarkus.platform.version>2.9.0.Final</quarkus.platform.version>
    <surefire-plugin.version>3.0.0-M5</surefire-plugin.version>
    <maven.home>D:\ProgramFiles\apache-maven-3.8.4</maven.home>
  </properties>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>${quarkus.platform.group-id}</groupId>
        <artifactId>${quarkus.platform.artifact-id}</artifactId>
        <version>${quarkus.platform.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <dependencies>

    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-resteasy-jsonb</artifactId>
      <version>${quarkus.platform.version}</version>
    </dependency>


    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-junit5</artifactId>
      <version>${quarkus.platform.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>io.rest-assured</groupId>
      <artifactId>rest-assured</artifactId>
      <version>5.0.0</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>${compiler-plugin.version}</version>
        <configuration>
          <source>${maven.compiler.release}</source>
          <target>${maven.compiler.release}</target>
          <!-- the parameters=true option is critical so that RESTEasy works fine -->
          <parameters>true</parameters>
        </configuration>
      </plugin>
      <plugin>
        <!-- you need this specific version to integrate with the other build helpers -->
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>${surefire-plugin.version}</version>
        <configuration>
          <systemPropertyVariables>
            <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
            <maven.home>${maven.home}</maven.home>
          </systemPropertyVariables>
        </configuration>
      </plugin>
      <plugin>
        <!-- This is what injects the magic Quarkus bytecode -->
        <groupId>${quarkus.platform.group-id}</groupId>
        <artifactId>quarkus-maven-plugin</artifactId>
        <version>${quarkus.platform.version}</version>
        <executions>
          <execution>
            <goals>
              <goal>build</goal>
              <goal>generate-code</goal>
              <goal>generate-code-tests</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>


  <profiles>
    <profile>
      <id>native</id>
      <properties>
        <quarkus.package.type>native</quarkus.package.type>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>${surefire-plugin.version}</version>
            <executions>
              <execution>
                <goals>
                  <goal>integration-test</goal>
                  <goal>verify</goal>
                </goals>
                <configuration>
                  <systemPropertyVariables>
                    <native.image.path>${project.build.directory}/${project.build.finalName}-runner</native.image.path>
                    <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
                    <maven.home>${maven.home}</maven.home>
                  </systemPropertyVariables>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>

后端接口类:

package org.acme;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("/hello")
public class GreetingResource {

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String hello() {
        return "Hello from RESTEasy Reactive";
    }
}

整个项目结构:

然后进行打native-image,命令如下

mvn package -Pnative

这次终于成功了。。。。。

构建出来的包,也才42MB

 果然启动速度超快,毫秒级别.....

内存占用12MB左右

访问首页:

本地访问下接口,耗时1毫秒....

http://localhost:8080/hello

另外,可以构建 uber-jar (所有你自己的东西在 uber-jar 中的依赖关系也都在 uber-jar 中),类似打传统的jar包

命令:

 mvn package -D quarkus.package.type=uber-jar


参考文档:

GraalVM 官网下载链接  https://www.graalvm.org/downloads/

graalvm win10 64位环境搭建    https://www.jianshu.com/p/a5cdf85e4ffa

windows10 下 quarkus和GraalVM打包exe启动超快

使用Graalvm简单编译native-image

虚拟机研究:JDK/JVM的新储方式—GraalVM和Quarkus https://baijiahao.baidu.com/s?id=1709080667810830871 

应“云”而生的 Java 框架Quarkus:构建本机可执行文件

 Quarkus入门

Quarkus云原生应用初体验

quarkus实战之一:准备工作_程序员欣宸的博客

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
nastool-2.9.0-x64-dsm7.spk是一种软件包文件,它是针对Synology DiskStation Manager 7(DSM 7)操作系统的NAS工具。DSM是Synology公司开发的一种基于Linux的操作系统,专门用于管理和控制其网络附加存储(NAS)设备。 nastool-2.9.0-x64-dsm7.spk是为了帮助用户更好地管理和配置他们的NAS设备而开发的。它提供了一系列功能和工具,以简化管理任务并提高设备的性能。 这个软件包可以通过Synology的官方软件包中心或其他途径进行安装。安装过程通常很简单,只需按照指示一步步进行即可。 一旦安装完成,nastool-2.9.0-x64-dsm7.spk提供了许多功能和功能,包括: 1. 存储管理:用户可以轻松管理NAS设备上的存储空间,包括创建、删除和调整存储卷、共享文件夹和磁盘配额等。 2. 文件共享和访问:它允许用户设置共享文件夹并控制对共享文件夹的访问权限,以便在家庭网络或企业网络环境中方便地共享文件。 3. 数据备份和恢复:用户可以使用nastool-2.9.0-x64-dsm7.spk创建备份任务,将重要数据备份到外部存储设备或远程服务器上,并在需要时进行恢复。 4. 多媒体服务器:它还提供了多媒体服务器功能,可以将存储在NAS上的视频、音乐和照片流式传输到网络中的各种设备上,如智能电视、手机和平板电脑。 总之,nastool-2.9.0-x64-dsm7.spk是为Synology DSM 7操作系统设计的NAS工具软件包。通过它,用户可以方便地管理和控制他们的NAS设备,包括存储管理、文件共享、数据备份和多媒体服务等功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值