个人从事java开发很多年,但一直都是在web应用上玩来玩去,心血来潮,猛然想到像DBeaver、finalshell、Behinder(冰蝎)、BurpSuite、Jmeter、IDEA等等这类比较知名软件都是使用java语言编写的桌面应用,那么java是否有更好的桌面应用开发的框架呢?

准备环境

  1. IDEA
  2. JDK17
  3. Windows
  4. Scene Builder

快速搭建

打开IDEA点击File-> new -> Project

java 开发桌面应用 java如何开发桌面应用_intellij-idea


左边选择JavaFX,右边配置环境,个人偏好于JDK17,号称是目前(2022)最快的LTS版本,且免费。

java 开发桌面应用 java如何开发桌面应用_java_02


这个是开源架构,需要的可以直接勾选

java 开发桌面应用 java如何开发桌面应用_桌面应用_03


java 开发桌面应用 java如何开发桌面应用_java 开发桌面应用_04

创建成功后会有一个hello-view.fxml文件,这就是一个Scene(场景),可以使用Scene Builder打开。

java 开发桌面应用 java如何开发桌面应用_java_05


Scene Builder是一个官方推荐的绘图软件,可以绘制窗口样式。这相对于是awt、Swing纯代码绘图的架构是一种进步。

运行程序方式很多,直接敲命令、运行Main方法、双击右边javafx:run都可以。本文使用的是命令,进入根目录下

mvnw clean javafx:run

这样可以顺便校验了你本地环境,方便下面打包成exe文件使用

java 开发桌面应用 java如何开发桌面应用_java 开发桌面应用_06


此时可以看到已经报错

java 开发桌面应用 java如何开发桌面应用_intellij-idea_07


原因是我系统变量jdk版本不是17.配置jdk17后,重启IDEA再次运行命令

java 开发桌面应用 java如何开发桌面应用_java 开发桌面应用_08


执行成功。下面打包,直接运行

mvnw clean javafx:jlink

java 开发桌面应用 java如何开发桌面应用_java_09


此时已经生成app文件夹,还贴心的生成了app.zip压缩包。其中包含了jre,总共大小才70多M大小。应该是自动剔除了不需要用到的包或类。

java 开发桌面应用 java如何开发桌面应用_java_10


进入bin目录下运行app.bat

java 开发桌面应用 java如何开发桌面应用_桌面应用_11


可以看到编写的窗口,但这并不是我们想要的exe,而且可以看到还拖着一个命令提示符。

下面我们来转化成exe执行文件。在根目录下运行

jpackage --name test --type app-image  -m com.example.openjfx17/com.example.openjfx17.HelloApplication  --runtime-image .\target\app\
  • jpackage是从jdk14之后自带的打包工具。
  • –type -t :打包类型,可取值app-image、exe、msi
  • –name -n:打包之后的应用或包名称
  • –module -m:格式<module name>[/<main class>],模块名/main,不会写可以直接复制pom.xml中的mainClass标签内容。
  • –runtime-image:运行镜像的未知,上一个命令打包的文件夹。

java 开发桌面应用 java如何开发桌面应用_桌面应用_12


进入文件夹,运行test.exe执行命令。

java 开发桌面应用 java如何开发桌面应用_intellij-idea_13


运行成功,而且没有之前命令行提示符。大功告成!