JavaFX - Arquitectura

JavaFX proporciona una API completa con un amplio conjunto de clases e interfaces para crear aplicaciones GUI con gráficos enriquecidos. Los paquetes importantes de esta API son:

  • javafx.animation - Contiene clases para agregar animaciones basadas en transiciones como relleno, fundido, rotación, escala y traducción, a los nodos JavaFX.

  • javafx.application - Contiene un conjunto de clases responsables del ciclo de vida de la aplicación JavaFX.

  • javafx.css - Contiene clases para agregar estilos similares a CSS a las aplicaciones GUI de JavaFX.

  • javafx.event - Contiene clases e interfaces para entregar y manejar eventos JavaFX.

  • javafx.geometry - Contiene clases para definir objetos 2D y realizar operaciones sobre ellos.

  • javafx.stage - Este paquete contiene las clases de contenedor de nivel superior para la aplicación JavaFX.

  • javafx.scene- Este paquete proporciona clases e interfaces para respaldar el gráfico de escena. Además, también proporciona subpaquetes como lienzo, gráfico, control, efecto, imagen, entrada, diseño, medios, pintura, forma, texto, transformación, web, etc. Hay varios componentes que admiten esta rica API de JavaFX .

La siguiente ilustración muestra la arquitectura de la API de JavaFX. Aquí puede ver los componentes que admiten la API de JavaFX.

Gráfico de escena

En JavaFX, las aplicaciones GUI se codificaron utilizando un gráfico de escena. Un gráfico de escena es el punto de partida de la construcción de la aplicación GUI. Contiene las primitivas de aplicación (GUI) que se denominan nodos.

Un nodo es un objeto visual / gráfico y puede incluir:

  • Geometrical (Graphical) objects - (2D y 3D) como círculo, rectángulo, polígono, etc.

  • UI controls - como botón, casilla de verificación, casilla de elección, área de texto, etc.

  • Containers - (paneles de diseño) como Panel de borde, Panel de cuadrícula, Panel de flujo, etc.

  • Media elements - como objetos de audio, video e imagen.

En general, una colección de nodos crea un escenario gráfico. Todos estos nodos están dispuestos en un orden jerárquico como se muestra a continuación.

Cada nodo en el gráfico de escena tiene un solo padre, y el nodo que no contiene ningún padre se conoce como el root node.

De la misma manera, cada nodo tiene uno o más hijos, y el nodo sin hijos se denomina como leaf node; un nodo con hijos se denominabranch node.

Una instancia de nodo se puede agregar a un gráfico de escena solo una vez. Los nodos de un gráfico de escena pueden tener efectos, opacidad, transformaciones, controladores de eventos, controladores de eventos, estados específicos de la aplicación.

Prisma

Prisma es un high performance hardware–accelerated graphical pipelineque se utiliza para representar los gráficos en JavaFX. Puede renderizar gráficos tanto en 2-D como en 3-D.

Para renderizar gráficos, Prism usa:

  • DirectX 9 en Windows XP y Vista.
  • DirectX 11 en Windows 7.
  • OpenGL en Mac y Linux, sistemas integrados.

En caso de que el soporte de hardware para gráficos en el sistema no sea suficiente, Prism usa la ruta de procesamiento del software para procesar los gráficos.

Cuando se utiliza con una tarjeta gráfica o GPU compatible, ofrece gráficos más fluidos. En caso de que el sistema no admita una tarjeta gráfica, Prism utiliza de forma predeterminada la pila de renderización del software (cualquiera de los dos anteriores).

GWT (kit de herramientas para ventanas de vidrio)

Como su nombre indica, GWT proporciona servicios para administrar ventanas, temporizadores, superficies y colas de eventos. GWT conecta la plataforma JavaFX al sistema operativo nativo.

Kit de herramientas de Quantum

Es una abstracción sobre los componentes de bajo nivel de Prism, Glass, Media Engine y Web Engine. Vincula Prism y GWT y los pone a disposición de JavaFX.

WebView

Con JavaFX, también puede incrustar contenido HTML en un gráfico de escena. WebView es el componente de JavaFX que se utiliza para procesar este contenido. Utiliza una tecnología llamadaWeb Kit, que es un motor de navegador web interno de código abierto. Este componente admite diferentes tecnologías web como HTML5, CSS, JavaScript, DOM y SVG.

Con WebView, puede:

  • Renderice contenido HTML desde URL local o remota.
  • Apoyar el historial y proporcionar navegación hacia atrás y hacia adelante.
  • Vuelva a cargar el contenido.
  • Aplicar efectos al componente web.
  • Edite el contenido HTML.
  • Ejecute comandos de JavaScript.
  • Manejar eventos.

En general, con WebView, puede controlar el contenido web desde Java.

Motor de medios

los JavaFX media engine se basa en un motor de código abierto conocido como Streamer. Este motor de medios admite la reproducción de contenido de audio y video.

El motor de medios JavaFX proporciona soporte para audio para los siguientes formatos de archivo:

Audio
  • MP3
  • WAV
  • AIFF
Video
  • FLV

El paquete javafx.scene.mediacontiene las clases e interfaces para proporcionar funcionalidad multimedia en JavaFX. Se proporciona en forma de tres componentes, que son:

  • Media Object - Esto representa un archivo multimedia

  • Media Player - Para reproducir contenido multimedia.

  • Media View - Para mostrar medios.