Upload
reyes-barajas
View
224
Download
4
Embed Size (px)
Citation preview
Índice Introducción
¿Qué es JavaFX? Historia Características Competidores
¿Por qué JavaFX? Elementos del lenguaje Herramientas necesarias Demo/Tutorial Referencias, APIs y documentación
2
Índice Introducción
¿Qué es JavaFX? Historia Características Competidores
¿Por qué JavaFX? Elementos del lenguaje Herramientas necesarias Demo/Tutorial Referencias, APIs y documentación
3
Introducción: ¿Qué es JavaFX?JavaFX es una nueva familia de tecnologías Java que ayudarán a crear tanto Rich Internet Applications (RIA) como aplicaciones para móviles o de escritorio.El nombre del lenguaje es JavaFX Script, aunque todo hace creer que su fusión con JavaSE es inminente.
RIA: Aplicaciones web que tienen características y capacidades de la aplicaciones de escritorio incluyendo aplicaciones multimedia e interactivas
4
Introducción: Historia (I) Proviene de Form Follows Function (F3),
lenguaje interpretado, desarrollado por Chris Oliver.
JavaFX fue anunciado por Sun Microsystems en mayo de 2007 en la conferencia JavaOne Worldwide Java Developer.
La versión 1.0 fue publicada el 4 de diciembre de 2008.
La versión 1.1 fue publicada el 12 de febrero de 2009.
La versión1.2 fue publicada el 2 de junio de 2009 con soporte completo para linux y solaris, y con mejoras en velocidad.
5
Introducción: Historia (II) La versión 1.3 fue publicada el 23 de
abril de 2010 con mejoras de consumo de memoria en tiempo de ejecución.
En cuanto al futuro, existe una gran controversia. Algunos desarrolladores creen que pueden tener mucho éxito mientras que hay quien piensa que llegó demasiado tarde al mercado.
Oracle está trabajando en la versión 2.0 que traerá cambios bastante importantes. Su integración en JavaSE que incorporará compatibilidad con Swing
6
Introducción: Características Es un lenguaje de scripting. Es declarativo, y estáticamente
tipificado. Está especializado en GUIs. Permite “data binding”. Evaluación incremental. Estructuración y encapsulación de
código.
7
Introducción: Características Posibilidad de instalación directa desde
la web simplemente arrastrando la aplicación al escritorio.
Está integrado con Java Runtime Environment (JRE) por lo que comparte sus características de portabilidad.
Soporta modo de gráficos vectorizados, video y componentes Swing a través de sus APIs.
8
Introducción: Competidores Como principales competidores tiene a
AJAX, Flash, Flex y AIR de Adobe, Silverlight de Microsoft, Apollo y GWT.
Como ventaja frente a los competidores mencionados posee la facilidad en la creación de GUIs, eficiencia, portabilidad.
Como desventajas su desconocimiento entre los desarrolladores y su tardía incorporación a las tecnologías RIA.
10
Índice Introducción
¿Qué es JavaFX? Historia Características Competidores
¿Por qué JavaFX? Elementos del lenguaje Herramientas necesarias Demo/Tutorial Referencias, APIs y documentación
11
¿Por qué JavaFX? Escribir GUIs es difícil (y molesto),
los lenguajes tradicionales cargan mucho el código con “listeners” y hacen que la implementación de la interfaz sea más extensa que la de la propia aplicación.
Las interfaces por defecto son monótonas, repetitivas y poco atractivas para los usuarios
No se queda en las simples cajas grises rectangulares a las que nos tienen acostumbrados.
No son tan cargadas y dinámicas como las páginas Flash, aunque se pueden implementar.
Java 2D provee mucho de lo que se necesita, pero es complicado de usar para este propósito y no tiene un comportamiento “composicional”.
12
¿Por qué JavaFX?
Ventajas principales (I): Contiene un conjunto de utilidades y
tecnologías que permiten crear aplicaciones con un gran contenido tanto en escritorio como en web y móviles.
Acelera los ciclos de desarrollo, porque proporciona un flujo de trabajo intuitivo que separa la lógica el modelo de interacción y el diseño, que permite realizar prototipos rápidamente, añadiendo flexibilidad al proyecto.
13
¿Por qué JavaFX? Ventajas principales (II):
Reduce los riesgos del proyecto, porque trabaja con tecnologías Java, que ya posee muchos expertos, y se integra muy fácilmente con ella.
Facilidad de aprovechamiento de la funcionalidad de los dispositivos empotrados.
Bajo coste de implementación. La creación de GUIs es rápida, sencilla y potente.
Plataforma completamente gratuita.
14
¿Por qué JavaFX?
Ventajas principales (III): Buen renderizado de gráficos en 2D. Bajo uso de CPU. Excelente gestión de memoria. Lenguaje universal para todas las
plataformas (móviles, web, escritorio, etc.).
Comparación entre Flash/Flex, JavaFX, Silverlight, html5/javascript http://www.timo-ernst.net/misc/riabench-sta
rt/
15
Índice Introducción
¿Qué es JavaFX? Historia Características Competidores
¿Por qué JavaFX? Elementos del lenguaje Herramientas necesarias Demo/Tutorial Referencias, APIs y documentación
16
Elementos del lenguaje
Tipos primitivos: String Boolean Number Integer
Que provienen de los tipos de java: java.lang.String java.lang.Boolean java.lang.Number byte, short, int, long, BigInteger
17
Elementos del lenguaje
JavaFX permite importar clases Java, permitecrear objetos y llamar sus métodos. Por ejemplo:
18
import javax.swing.JFrame;import javax.swing.JButton; import java.awt.event.ActionListener; import java.lang.System;
var frame = new JFrame(); var button = new JButton(“Pulsame"); frame.getContentPane().add(button); button.addActionListener(newActionListener() {
operation actionPerformed(event) { System.out.println("Me pulsaste");}
});frame.pack(); frame.setVisible(true);
Elementos del lenguaje
Sin embargo, utilizar JFSX de esa forma rompe totalmente con la idea de sencillez propuesta por el lenguaje, por lo que una manera más apropiada de escribir el mismo programa sería:
19
import javafx.ui.*;import java.lang.System; Frame {
content: Button { text: “Pulsame" action: operation() {
println("Me pulsaste"); }
} visible: true
}
Elementos del lenguaje
Variables: En JFXS la palabra reservada “var”
encabeza la declaración de una nueva variable
Por ejemplo:
21
var nombreDeLaVariable : tipoDeLaVarible [?,+,”[]”] = valor;
var numeros : Number[] = [1,2,3]; // declara la variable "numeros" como un arreglo de 0 o más // ocurrencias del tipo Number.
Elementos del lenguaje
Constantes: Para declarar constantes se utiliza la
misma sintaxis que en el caso de variables, pero cambiando la palabra ‘var’ por ‘def’
Por ejemplo:
22
def nombreDeLaConstante :tipoDeLaConstante [?,+,”[]”]=valor;
def MaximoTam : Number = 302.15; // declara una constante de tipo Number
Elementos del lenguaje
Expresiones (IV): Otros operadores
sizeof indexof If e1 then e2 else e3 select op() x.op() (expr) reverse [number1, next..number2]
26
Elementos del lenguaje
El operador bind El operador bind realiza una “ligadura” de
una variable a un valor o una expresión. Tiene un comportamiento perezoso.
28
var a : Integer = 7;
var b : Integer = bind a+2; // se liga al valor a+2// sólo se calcula el valor// si se necesita la variable
b
var c : Integer = bind a*3 with inverse;// la expresión with inverse realiza los cambios tanto en c, // cuando a se modifica; como en a, cuando c se modifica.
Elementos del lenguaje
El operador bind. Ejemplo:
29
var a : Integer = 7;
var b : Integer = bind lazy a+2; // se liga al valor a+2// sólo se calcula el valor si se necesita la variable b
var c : Integer = bind a*3 with inverse;// la expresión with inverse realiza los cambios tanto en c, // cuando a se modifica; como en a, cuando c se modifica.
Elementos del lenguaje
30
// Bind no perezoso
var x = [1,2,3,4,5];var y = bind f(x);
x=[1,2];
println("X: {x}");println("Y: {y}");
function f (l:Number []):Number []{ println("entro en f"); return l;}
Salida:
entro en fentro en f
Elementos del lenguaje
31
// Bind perezoso
var x = [1,2,3,4,5];var y = bind lazy f(x);
x=[1,2];
println("X: {x}");println("Y: {y}");
function f (l:Number []):Number []{ println("entro en f"); return l;}
Salida:
entro en f
Elementos del lenguaje
Literales y expresiones con Strings: Las cadenas de caracteres se pueden
declarar con comillas simples o dobles
Dentro de estas declaraciones pueden incluirse referencias a variables o a código encerrado entre llaves ‘{ ‘ ‘} ’
32
var s = 'Hola'; var s = "Hola";
var nombre = 'Pepe'; var s = "Hola {nombre}"; // s = 'Hola Pepe'
Elementos del lenguaje Arreglos:
Los arreglos son una secuencia de elementos del mismo tipo
Como característica tienen que, aunque permite anidamiento de arreglos, el resultado es un arreglo plano, esto es, vardias contiene ‘["Lun", "Mar", "Mie", "Jue", "Vie", "Sab", "Dom"]‘ y no ‘["Lun", "Mar", "Mie", "Jue", "Vie", ["Sab", "Dom"]]’
33
var diasLaborales = ["Lun","Mar","Mie","Jue","Vie"];var dias = [diasLaborales, ["Sab","Dom"]];var unoACien = [1..100];var nums = [1..10 step 2];
Elementos del lenguaje El operador “[]”
Se utiliza para expresar una selección de elementos que cumplen una condición
Se pueden usar expresiones de rango
34
var nums: = [1,2,3,4];Var numsMayoresQueDos = nums[n|n > 2];// [3,4]Var numsMenosLosDosPrimeros = nums[n|indexof n > 1];// [3,4]
def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"]; def weekend = days[5..6]; // los elementos del 5 al 6def weekdays = days[0..<5]; // del 0 al 5 sin incluir al 5def weekend2 = days[5..]; // del 5 al finaldef days2 = days[0..<]; // toda la secuencia excepto el último
Elementos del lenguaje Consultas
A los elementos de un arreglo se puede acceder a través de una consulta, similar al lenguaje SQL. Por ejemplo:
35
var a:Integer[] = select n*n from n in [1..10];// [1,4,9,16,25,36,49,64,81,100] var a:Integer[] = select n*n from n in [1..10] where (n%2==0); // [4,16,36,64,100]
Elementos del lenguaje
Funciones: Se declaran con la palabra reservada function
A diferencia de Java, las funciones en JavaFX son entidades de primer orden
36
function suma (x:Integer, y:Integer) {return x + y;
}
function addN(n: Number): function(:Number): Number { function(x: Number): Number {
x + n }
}// Función que devuelve la función que suma n al valor x // pasado como argumento
Elementos del lenguaje
Funciones (II): Además, podemos pasar como parámetro
a una función otra función por lo que podríamos hacer uso de la programación funcional.
37
function map (f:function (:Number):Number, l:Number []):Number []{ if(l==[]){ return l; }else{ var res = map(f,l[1..]); insert f(l[0]) before res[0]; return res; }}
Elementos del lenguaje
Funciones (III): En el siguiente código podemos ver el uso
de las funciones anteriormente definidas. Además se observa que las posibilidades que ofrecen las funciones de primer orden hacen que el código sea más sencillo.
38
function filter (f:function (:Number):Boolean, l:Number []):Number []{ return l[n | f(n)];}
var listaAFiltrar = [1..100];println("listaAFiltrar {filter(even(),listaAFiltrar)}");
Elementos del lenguaje
39
function map (f:function (:Number):Number, l:Number []):Number []{ if(l==[]){ return l; }else{ var res = map(f,l[1..]); insert f(l[0]) before res[0]; return res; }}
function sumaX (x:Number) : function (:Number) : Number { function(n: Number) : Number { return x + n; }}
def numeros : Number [] = [1..200];var lista : Number [] = numeros[n|(n mod 2 == 0) and (n > 20) and (n < 40)];
function run(){ println(map (sumaX(3), lista));}
Elementos del lenguaje
Además de lo ya visto, JavaFX incluye clases y muchas otras características de Java.
Están alejadas de la parte declarativa del lenguaje.
No son relevantes para la creación de interfaces gráficas, aplicaciones multimedia o aplicaciones RIA.
40
Índice Introducción
¿Qué es JavaFX? Historia Características Competidores
¿Por qué JavaFX? Elementos del lenguaje Herramientas necesarias Demo/Tutorial Referencias, APIs y documentación
41
Índice Introducción
¿Qué es JavaFX? Historia Características Competidores
¿Por qué JavaFX? Elementos del lenguaje Herramientas necesarias Demo/Tutorial Referencias, APIs y documentación
43
Índice Introducción
¿Qué es JavaFX? Historia Características Competidores
¿Por qué JavaFX? Elementos del lenguaje Herramientas necesarias Demo/Tutorial Referencias, APIs y documentación
45
Referencias Web oficial JavaFX
http://www.javafx.com JavaFX API
http://download.oracle.com/docs/cd/E17802_01/javafx/javafx/1.3/docs/api/
Foro oficial de JavaFX http://forums.sun.com/forum.jspa?forumID=932
Tutoriales de JavaFX http://download.oracle.com/javafx/tutorials.html
Planet JFX. Wiki de JavaFX con documentación http://jfx.wikia.com/wiki/Planet_JFX_Wiki
46