Java 17 和 JavaFX 打包指南

在这篇文章中,我们将学习如何使用 Java 17 和 JavaFX 打包应用程序的大小。整个过程相对简单,适合新手入门。通过本教程,您将掌握以下步骤:

流程概览

下面是实现 JavaFX 应用程序打包的步骤:

步骤 描述
步骤 1 安装必要的开发环境
步骤 2 创建 JavaFX 项目
步骤 3 编写并测试您的 JavaFX 应用程序
步骤 4 使用 Maven 或 Gradle 配置项目打包
步骤 5 运行打包命令并检查输出文件
步骤 6 优化应用程序的打包大小

步骤详细说明

步骤 1:安装必要的开发环境

确保您已经安装以下工具:

  1. Java 17 JDK:下载并安装 Java 17 的 JDK。
  2. IDE:建议使用 IntelliJ IDEA 或 Eclipse。
  3. Maven 或 Gradle:用于依赖管理和打包的工具。

步骤 2:创建 JavaFX 项目

使用 Maven 创建一个新的 JavaFX 项目。首先,创建一个新的文件夹并在命令行中打开。

mvn archetype:generate -DgroupId=com.example -DartifactId=javafx-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
  • mvn archetype:generate:使用 Maven 创建新的项目。
  • -DgroupId=com.example:定义项目的组 ID。
  • -DartifactId=javafx-app:定义项目的工件 ID。
  • -DarchetypeArtifactId=maven-archetype-quickstart:选择 Maven 的架构模板。
  • -DinteractiveMode=false:非交互模式,快速创建项目。

步骤 3:编写并测试您的 JavaFX 应用程序

src/main/java/com/example 目录下创建一个 Main.java 文件,并编写简单的 JavaFX 代码:

package com.example;

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.stage.Stage;

public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        // 创建一个标签
        Label label = new Label("Hello, JavaFX!");
        
        // 创建一个场景并设置场景大小
        Group root = new Group();
        root.getChildren().add(label);
        Scene scene = new Scene(root, 300, 200);
        
        // 设置舞台的标题和场景
        primaryStage.setTitle("JavaFX Example");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}
  • 上述代码创建了一个简单的 JavaFX 应用程序,显示一个窗口,窗口内有一条标签文本。

步骤 4:使用 Maven 或 Gradle 配置项目打包

我们将在 pom.xml 文件中添加 JavaFX 依赖项。在 pom.xml 中,添加以下内容:

<dependencies>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>17.0.0</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.3.0</version>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>com.example.Main</mainClass> <!-- 指定主类 -->
                    </manifest>
                </archive>
                <finalName>javafx-app</finalName> <!-- 输出文件名 -->
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
  • 上述内容添加了 JavaFX 控件库的依赖,并配置 Maven 进行打包。

步骤 5:运行打包命令并检查输出文件

在命令行中,执行以下命令进行打包:

mvn clean package
  • 该命令将清理之前的输出并重新打包项目。

步骤 6:优化应用程序的打包大小

为了更小的打包文件,您可以使用 jlink 工具,它是 JDK 提供的一个工具,用于创建自包含的 Java 运行时。

jlink --module-path $JAVA_HOME/jmods:target/javafx-app-1.0-SNAPSHOT.jar --add-modules javafx.controls --output myapp --launcher myapp=myapp/com.example.Main
  • jlink:创建自包含的 Java 运行时。
  • --module-path:指定模块路径。
  • --add-modules:指定要添加的模块。
  • --output:输出目录。

数据可视化

使用饼状图展示打包大小占比

pie
    title 打包大小占比
    "JavaFX 库": 30
    "应用程序代码": 50
    "未使用库": 20

使用序列图展示打包工作流程

sequenceDiagram
    participant User
    participant Maven
    participant Jlink

    User->>Maven: 执行 mvn clean package
    Maven->>User: 打包完成
    User->>Jlink: 执行 jlink
    Jlink->>User: 输出自包含的运行时

结论

通过上述步骤,我们成功地创建了一个简单的 JavaFX 应用程序并进行了打包。加上对打包大小的优化,通过使用 jlink 生成自包含的运行时,您已经掌握了 JavaFX 应用程序打包的基本技术。这为您将来的开发打下了坚实的基础,期待您在 JavaFX 领域取得更多成就!