La tecnología Flash ha sido el máximo exponente en ofrecer una interfaz gráfica de alto nivel(1) para la WEB. La respuesta JAVA para competir con esta tecnología es JavaFX. Las primeras versiones de JavaFX usaban un lenguaje Script distinto del lenguaje Java de toda la vida para ganar en flexibilidad a la hora de programar. Esta fue una jugada ingeniosa por parte de SUN ya que una de las grandes ventajas de Flash es la potencia para crear aplicaciones con “pocas líneas de código” pero fue muy mal implementada ya que este lenguaje Script no reducía las líneas de código.
Desde Octubre del 2011 ya está disponible la versión 2.0 de JavaFx. Esta versión permite crear aplicaciones JavaFX como si fuese una aplicación Swing común, sin usar el lenguaje Script de JavaFx, como se puede ver en el siguiente ejemplo:
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.stage.Stage;
/**
*
* @author cnavarros
*/
public class Main extends Application {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Application.launch(args);
}
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("Hello World");
Group root = new Group();
Scene scene = new Scene(root, 300, 250);
Button btn = new Button();
btn.setLayoutX(100);
btn.setLayoutY(80);
btn.setText("Hello World");
btn.setOnAction(new EventHandler
public void handle(ActionEvent event) {
System.out.println("Hello World");
}
});
root.getChildren().add(btn);
primaryStage.setScene(scene);
primaryStage.show();
}
}
El uso de JavaFx puede plantearse como mejora de una aplicación ya existente y que este implementada en Swing ya que JavaFx 2.0 puede usarse en Swing (ejemplo http://blogs.oracle.com/javafx/entry/how_to_use_javafx_in).
Otra gran mejora es la posibilidad de definir TODA la interfaz grafica (botones, panales, cuadros de texto, animaciones, etc..) en un XML usando la tecnología FXML. Como se puede ver en el siguiente ejemplo:
Da como resultado la aplicación:
Esta forma de trabajar ya se utiliza en otras plataformas como Android y permite separar de forma “contundente” la parte grafica de la parte de lógica de la aplicación. Ademas permite terminar con las clases “Panel” de Swing donde solo hay líneas de JAVA para definir la interfaz que ensucian el código y se mezclan con la lógica de la aplicación.
Una aplicación implementada usando JavaFx puede usarse también como una aplicación WEB (via jnpl o como un Appet dentro de una página WEB).
Lo que me preocupa es el rendimiento. Las primeras versiones de JavaFx no ofrecían un rendimiento muy bueno y tanta flexibilidad como ofrece JavaFx 2.0 siempre va en contra de ofrecer mejor rendimiento pero, como se puede leer en la pagina de JavaFx 2.0 http://javafx.com/faq/ , en esta versión se ha puesto incapie en el rendimiento. Esto, unido a su gran compatibilidad con Swing, le hace ser la opción lógica a la hora de desarrollar aplicaciones por delante de otras plataformas como Swing, Applets y Flash.
(1) -->Con alto nivel me refiero a mini aplicaciones que se descargan con la pagina WEB y ofrecen más potencia grafica que los clásicos “objetos” HTML.


1 comentario:
Gracias compañero, por alumbrarme el camino. Voy a trabajar con JavaFax.
Publicar un comentario