Trasteando con IntelliJ y diversas distribuciones del JDK, he descubierto que Azul Zulu dispone de una versión de OpenJDK+JavaFX, con lo que puedo construir aplicaciones en JavaFX y distribuirlas (con imágenes de jlink y con jpackage) sin tener que usar Maven u otro gestor de dependencias, configurar plugins ni demás historias. No es la forma más apropiada de hacerlo (ya que un usuario de NetBeans o Eclipse no podrá trabajar en el código fácilmente), pero funciona bien para aplicaciones sencillas. Es más, seguramente también se podría hacer con Maven.
Para ello, vamos a azul.com/downloads y seleccionamos "Zulu" como opción de descarga. Una vez hecho esto, seleccionamos versión del JDK que queremos (17 o 19 son las recomendables a día de hoy), el sistema, arquitectura de CPU y finalmente la versión JDK FX para descargar el JDK y JavaFX juntos. En el caso de Windows, descargamos el paquete MSI, instalamos asegurándonos de que añada al "PATH" Java y reiniciamos si nos lo pide (no suele hacer falta).
Abrimos IntelliJ, creamos un proyecto nuevo normal (New Project) seleccionando como lenguaje Java, el sistema de build IntelliJ y en JDK dejamos que lo detecte. Si detecta zulu-17
o zulu-19
, está bien. Si no los detecta, se puede añadir a mano con "Add JDK" y añadiendo la ruta C:\Program Files\Zulu\zulu-19
(o zulu-17
). Se configura el nombre del módulo, la ruta y demás cosas que se deseen y se crea.
Una vez creado, junto a la carpeta src
dentro del módulo, se crea otra carpeta llamada res
, resources
o como se quiera, que contendrá plantillas FXML y otros archivos que se quieran usar. Una vez creada, se da click derecho -> Mark Directory as -> Resources root. Hecho esto, ya se puede empezar a programar la aplicación, creando clases dentro de src y archivos FXML en res
.
Ahora viene lo interesante: distribuir en JAR. Accedemos a los ajustes del proyecto con Control+Alt+Shift+S (o haciendo click derecho en el proyecto en el explorador) y vamso a Artifacts. Añadimos un nuevo artifact de tipo JAR -> from modules with dependencies. Seleccionamos nuestro módulo, la clase principal (con el main) y dejamos el JAR Files en "Extract to the target JAR". Una vez hecho esto, podemos compilar nuestro proyecto a un JAR que se puede ejecutar en cualquier equipo con este JDK instalado.
Para crear JARs "gordos" que no necesiten tener Azul Zulu instalado, se puede crear un instalador personalizado con jpackage
(del que ya hablaré en algún momento), o creando otro tipo de artifact (probablemente el platform specific package, o jlink
).
Cerramos el Project Structure y en la parte superior pulsamos Build -> Build Artifact. Seleccionamos el nuestro y pulsamos "build". Cuando termine de compilar, podremos encontrar el JAR dentro de la carpeta de nuestro proyecto en out/artifacts/<nombredelartifact>/<ALGO>.jar
.