Introducción a JavaFX
Algunos Recursos
JavaFX permite crear aplicaciones Java con una interfaz de usuario moderna, acelerada por hardware y altamente portable.
Existe una documentación de referencia detallada para JavaFX.
Para obtener información sobre cómo ejecutar aplicaciones JavaFX en plataformas móviles, consulte Introducción a Gluon Mobile.
Para obtener información sobre el soporte a largo plazo (LTS) para JavaFX 11, consulte las opciones de soporte a largo plazo de JavaFX.
JavaFX se construye sobre JDK y es un componente independiente. Hay dos opciones diferentes para desarrollar aplicaciones JavaFX:
- Utilizar el SDK de JavaFX (eligiendo entre 11 LTS, la última versión 17.0.1 o una compilación de acceso temprano). A partir de JDK 11, JavaFX no viene incluido, así que es necesario instalarlo.
- Utilizar un sistema de compilación (por ejemplo: maven/gradle) para descargar los módulos necesarios desde Maven Central (eligiendo también entre las mismas versiones mencionadas).
Características
- APIs de Java. JavaFX es una biblioteca Java que consiste en clases e interfaces que están escritas en código Java. Las APIs están diseñadas para ser una alternativa amigable con la máquina virtual de Java (Java VM) como los lenguajes JRuby, y Scala.
- FXML y Scene Builder. FXML es un lenguaje de marcado declarativo basado en XML para la construcción de una interfaz de usuario de aplicaciones JavaFX. Un diseñador puede codificar en FXML o utilizar JavaFX Scene Builder para diseñar de forma interactiva la interfaz gráfica de usuario (GUI). Scene Builder genera marcado FXML que pueden ser portado a un IDE para que un desarrollador pueda añadir la lógica de negocio.
- WebView. Un componente web que utiliza la tecnología WebKitHTML para hacer posible incrustar(embeber), páginas web dentro de una aplicación JavaFX. JavaScript se ejecuta dentro de un WebView y se puede llamar a las APIs de Java y las APIs de Java pueden llamar a JavaScript que se ejecuta dentro de un WebView. Compatibilidad con características adicionales de HTML5, incluyendo Web Sockets, Web Workers y fuentes Web.
- Interoperabilidad Swing. Las aplicaciones Swing existentes pueden ser actualizadas con las características de JavaFX, como gráficos multimedia enriquecidos de reproducción y el contenido web incorporado. La clase SwingNode, que le permite incluir contenido dentro de aplicaciones JavaFX.
- Controles de interfaz de usuario(UI) incorporados(Builtin) y CSS. JavaFX ofrece todos los principales controles UI que se requieren para desarrollar una aplicación con todas las características necesarias. Los componentes pueden ser decorados con las tecnologías Web estándar como CSS.
- API Canvas. La API de Canvas permite dibujar directamente dentro de un área de la scene JavaFX que consta de un elemento gráfico (nodo).
- Soporte multitouch. JavaFX proporciona apoyo a las operaciones multitouch, con base en las capacidades de la plataforma subyacente.
- Aceleración por hardware con canalización de gráficos. Los gráficos JavaFX se basan en el canal de renderizado de gráficos (el hilo Prism). JavaFX ofrece gráficos suaves(smooth) que hacen que rápidamente a través el hilo Prism cuando se utiliza con una tarjeta de gráficos compatible o unidad de procesamiento de gráficos (GPU). Si un sistema no dispone de una de las GPUs recomendadas soportados por JavaFX, recibe el valor predeterminado el hilo Prism a la pila de software de renderización.
- Motor de medios de alto rendimiento. El oleoducto multimedia es compatible con la reproducción de contenido multimedia en la Web. Proporciona un marco multimedia estable, de baja latencia que se basa en el framework multimedia GStreamer.
- Modelo de implementación de aplicaciones independiente del S.O. Paquetes de aplicaciones autónomas tienen todos los recursos de la aplicación, y una copia privada de los tiempos de ejecución de Java y JavaFX. Se distribuyen en forma de paquetes instalables nativos como por ejemplo .dmg, .deb .exe .etc. y proporcionan la misma instalación y la experiencia puesta en marcha como aplicaciones nativas para ese sistema operativo.
Esquema Básico de una Aplicación
Como se puede observar en la figura 1, una aplicación de JavaFX es un árbol donde el elemento principal es un Stage. A continuación, se nombran las clases / definiciones relevantes:
-
Application: esto maneja el flujo de trabajo de la aplicación, la inicialización y los parámetros de la línea de comandos
-
Stage: es una representación JavaFX de una ventana nativa del sistema operativo. En cualquier momento, un stage puede tener una sola escena adjunta.
-
Scene: es un contenedor para otros componentes. Solo puede existir un Scene para un Stage. Y solo puede existir un nodo raíz asociado a una Scene. Los nodos pueden ser contenedores o componentes.
- SceneGraph: es el contenido de una Scene.
Ejemplo de Aplicación

public class HelloApp extends Application {
private Parent createContent() {
return new StackPane(new Text("Hello World"));
}
@Override
public void start(Stage stage) throws Exception {
stage.setScene(
new Scene(createContent(), 300, 300)
);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Resultado

Referencias
- https://openjfx.io/openjfx-docs/
- https://docs.oracle.com/javase/8/javafx/get-started-tutorial/jfx-overview.htm#JFXST784
- https://fxdocs.github.io/docs/html5/#_introduction
- https://sintaxispragmatica.files.wordpress.com/2014/04/tutorial-javafx-primeros-pasos.pdf