SlideShare una empresa de Scribd logo
1 de 37
JAVAFX
Ezequiel Aranda
Sun Microsystems Campus Ambassador
1
¿Porqué debería pasar la próxima hora aquí?
• Para conocer la plataforma que
posiblemente reemplazará a Java ME
• Para aprender lo básico del lenguaje con el
cual crear aplicaciones en esta plataforma
> Junto con las características de la biblioteca
gráfica principal del lenguaje
• Finalmente, si algo de todo esto nos
convenció, obtener información sobre
como ingresar al mundo de JavaFX
PARTE 1 - JAVAFX
¿Qué es JavaFX?
• JavaFX es una plataforma para dispositivos que
funcionen como clientes de Rich Internet
Applications (RIA).
• Consiste de elementos comunes (gráficos,
animaciones, texto y elementos multimedia) y
elementos específicos para computadoras,
dispositivos móviles y televisión.
El Stack de JavaFX
¿Porqué Sun esta trabajando en JavaFX?
• Java ya ha conquistado el lado del servidor de las aplicaciones,
sin embargo, aún resta un gran trabajo por hacer en el lado del
cliente.
• Crear una gran interfaz con Swing requiere mucho trabajo.
• La popularidad de Java en la UI ha decaído en favor de Flash,
Ajax y otras soluciones más “livianas”. Adicionalmente, otras
empresas han comenzado a presentar tecnologías de este tipo,
como Silverlight (de Microsoft).
• Dado que no se esperan grandes innovaciones del lado del
servidor, es un excelente momento para concentrarse en
solucionar los problemas de usabilidad de las UIs Java.
“Our goal with JavaFX is to deliver
a 'Media Stack' for the Java
platform …
It means five things: Audio, Video,
2D and 3D Graphics and
Animation”
Christopher Oliver
PARTE 2 – JAVAFX
SCRIPT
5
JavaFX Script es un lenguaje
declarativo pensado para la
creación interfaces de usuario de
aplicaciones multiplataforma
con gran cantidad de contenido
multimedia
Java
JFrame f = new JFrame();
if (com.awt.sun.util.AWTUtilities.isTranslucentySupported()) {
com.awt.sun.util.AWTUtilities.setTranslucency(true);
}
frame.setUndecorated(true);
JPanel panel = new JPanel() {
protected void paintComponent(Graphics g) {
Graphics2D gfx = (Graphics2D)g.create();
gfx.setRenderingHints(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIASING_ON):
gfx.setColor(Color.RED);
gfx.drawOval(0,0,100,100);
gfx.dispose();
}
}
frame.getRootPane().setcontent(panel);
JavaFX Script
Frame {
stage: Stage {
content: Circle {
centerX: 50
centerY: 50
radius: 50
fill: Color.RED
}
fill: null // sin relleno
}
}
Caracteristicas principales de JavaFX Script
• Sintaxis declarativa
• GUI
• Swing
• Data binding
• Incremental evaluation
• Estáticamente tipado
• Características de estructuración, rehuso y
encapsulación de código que permiten crear
y mantener grandes programas escritos en
este lenguaje
Scripts
• Un “script” es una o más declaraciones o
expresiones
import java.lang.System;
var diez : Integer = 10;
System.out.println("Dos veces {diez} es {2 * diez}.");
// Dos veces diez es veinte.
• No son obligatorios ni un “main” ni clases o
funciones
Clases
class Caballero {
var salud = 100;
var fuerza = 10;
function morir(){
salud = 0
}
function daniar(cantidadDanio: Integer){
salud -= cantidadDanio
}
}
Objetos
var unCaballero = Caballero {}
var caballeroGrosso = Caballero {
salud: 150;
fuerza: 15;
}
unCaballero.daniar(caballeroGrosso.fuerza);
// unCaballero.salud = 75
Tipos básicos
Java
String
Number
Boolean Boolean
Integer
Duration
JavaFX Script
java.lang.String
java.lang.Number
byte, short, int, long, BigInteger
No disponible
String
var s1 = "Java";
var s2 = "FX";
var s3 = "Java{s2}"; // s3 = "JavaFX"
var s4 = "{s1}{s2}"; // s4 = "JavaFX"
Boolean
var cool = true;
var s = "Java{if(cool)"FX"else"Script"}";
//s = "JavaFX"
var a = true; // a = true
var b = false; // b = false
var c = a and b; // c = false
var d = a or b; // d = true
var e = not a; // e = false
Duration
var t1 = 5ms; // 5 milisegundos
var t2 = 10s; // 10 segundos
var t3 = 30m; // 30 minutos
var t4 = 1h; // 1 hora
var t5 = t1 + t2 + t3 + t4;
// 1 hora 30 min 10 seg y 5 miliseg
Secuencias
var x = [1,2,3];
// inicialización
insert 10 into x;
// [1, 2, 3, 10]
insert 12 before x[1];
// [1, 12, 2, 3, 10]
delete 12 from x;
// [1, 2, 3, 10]
insert [1..8] into x;
// [1, 2, 3, 10, 1, 2, 3, 4, 5, 6, 7, 8,]
Scene Graph - ¿Qué es?
• Es una nueva API de modo retenido para las
bibliotecas gráficas de Java.
• Creada por el equipo que desarrolló Java2D.
• Posee soporte nativo para blurs, glows y shadows.
• Funciona perfectamente en combinación con
Swing.
• Permite optimizaciones interesantes a futuro.
Scene Graph - ¿Qué tiene de bueno?
• Hasta el momento, habia bibliotecas similares, pero
ninguna equiparable en rendimiento, ni
posibilidades de aceleración por hardware.
• Es software libre (GPL v2), incluso antes de ser
incluido en alguna versión del JRE.
• Es un API Java: Groovy, Python, Ruby y otros
lenguajes que corren sobre la JVM pueden
beneficiarse de ella.
• Permite enfocarse en QUE hace la aplicación, en
vez de en COMO.
Scene Graph – Ubicación en el stack Java
Scene Graph - Componentes
• Nodos
> Gráficos, textos, componentes, imagenes
> Al agruparlos, puede efectuarse la misma operación
sobre todo el grupo
• Estados
> transformaciones, efectos, visibilidad
• Eventos/ Listeners
> Mouse, teclado, actualización de nodos
• Animaciones
> variación de propiedades en el tiempo
javafx.scene.geometry
• Ellipse
• Polyline
• Arc
• Path
• ShapeSubtract
• QuadCurve
• LineTo
• SVGPath
• Polygon
• Line
• Circle
• ArcTo
• PathElement
• HlineTo
• DelegateShape
• ClosePath
• VlineTo
• CurveTo
• QuadTo
• ShapeIntersect
• MoveTo
• Rectangle
• CubicCurve
• Shape
Circle
import javafx.scene.geometry.*;
import javafx.scene.paint.*;
Circle {
centerX: 100
centerY: 100
radius: 50
fill: Color.BLACK
}
Rectangle
import javafx.scene.geometry.*;
import javafx.scene.paint.*;
Rectangle {
x: 50
y: 50
width: 200
height: 100
arcWidth: 20
arcHeight: 20
fill: Color.BLACK
}
Ellipse
import javafx.scene.geometry.*;
import javafx.scene.paint.*;
Ellipse {
centerX: 50
centerY: 50
radiusX: 50
radiusY: 25
fill: Color.BLACK
}
ShapeIntersect
import javafx.scene.geometry.*;
import javafx.scene.paint.*;
ShapeIntersect {
fill: Color.BLACK
a: Rectangle { width: 100 height: 50 }
b: Ellipse {
centerX: 100
centerY: 25
radiusX: 50
radiusY: 25
}
}
ShapeSubtract
import javafx.scene.geometry.*;
import javafx.scene.paint.*;
ShapeSubtract {
fill: Color.BLACK
a: Rectangle { width: 100 height: 50 }
b: Ellipse {
centerX: 100
centerY: 25
radiusX: 50
radiusY: 25
}
}
Animación
• Las animaciones en JavaFX Script son
declarativas.
• Se describen mediante “snapshots” (key frames).
• Una animación es de uno de dos tipos, discreta o
interpolada.
• En cualquiera de los casos, el sistema inicia
automáticamente la animación, la revierte o la
detiene según sea indicado.
Animación (II)
• Las animaciones ocurren dentro de una linea de
tiempo (Timeline).
• Cada “timeline” contiene dos o más “key frames”.
• También provee atributos para describirla
(autoReverse, repeatCount, etc), así como
funciones para controlarla (start, stop, pause,
resume).
Animación (III)
• Cada key frame tiene asociado un momento relativo
al timeline que lo contiene, además de una lista de
key values y un trigger que puede ejecutar código
en el momento en que el frame sucede.
• Cada key value posee un valor final para una
propiedad y una función para calcular los valores
intermedios.
Recursos JavaFX
• Web del proyecto JavaFX
> openjfx.dev.java.net
• Blog de Chris Oliver
> blogs.sun.com/chrisoliver
• Blog de James Weaver
> learnjavafx.typepad.com
• Javapassion (15 de Noviembre)
> javapassion.com/javafx
• Blog de Silveira Neto
> silveiraneto.net
• Web de JavaFX
> javafx.com
MUCHAS GRACIAS
Ezequiel Aranda
Ezequiel.Aranda@Sun.com
blogs.sun.com/argentina_ambassador
Basado en un trabajo
original de Silveira
Neto
http://silveiraneto.net

Más contenido relacionado

Destacado

SCJP, Clase 10: Strings, I/O
SCJP, Clase 10: Strings, I/OSCJP, Clase 10: Strings, I/O
SCJP, Clase 10: Strings, I/Oflekoso
 
Ruby: a Programmer's best friend
Ruby: a Programmer's best friendRuby: a Programmer's best friend
Ruby: a Programmer's best friendflekoso
 
SCJP, Clase 2: Ejemplos De Enum, Poo
SCJP, Clase 2: Ejemplos De Enum, PooSCJP, Clase 2: Ejemplos De Enum, Poo
SCJP, Clase 2: Ejemplos De Enum, Pooflekoso
 
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...flekoso
 
JavaFX 1.2 - Introducción
JavaFX 1.2 - IntroducciónJavaFX 1.2 - Introducción
JavaFX 1.2 - Introducciónflekoso
 
Índice Libro "macOS Hacking" de 0xWord
Índice Libro "macOS Hacking" de 0xWordÍndice Libro "macOS Hacking" de 0xWord
Índice Libro "macOS Hacking" de 0xWordTelefónica
 
Introducción a la Programación con Java
Introducción a la Programación con JavaIntroducción a la Programación con Java
Introducción a la Programación con Javaflekoso
 

Destacado (7)

SCJP, Clase 10: Strings, I/O
SCJP, Clase 10: Strings, I/OSCJP, Clase 10: Strings, I/O
SCJP, Clase 10: Strings, I/O
 
Ruby: a Programmer's best friend
Ruby: a Programmer's best friendRuby: a Programmer's best friend
Ruby: a Programmer's best friend
 
SCJP, Clase 2: Ejemplos De Enum, Poo
SCJP, Clase 2: Ejemplos De Enum, PooSCJP, Clase 2: Ejemplos De Enum, Poo
SCJP, Clase 2: Ejemplos De Enum, Poo
 
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...
 
JavaFX 1.2 - Introducción
JavaFX 1.2 - IntroducciónJavaFX 1.2 - Introducción
JavaFX 1.2 - Introducción
 
Índice Libro "macOS Hacking" de 0xWord
Índice Libro "macOS Hacking" de 0xWordÍndice Libro "macOS Hacking" de 0xWord
Índice Libro "macOS Hacking" de 0xWord
 
Introducción a la Programación con Java
Introducción a la Programación con JavaIntroducción a la Programación con Java
Introducción a la Programación con Java
 

Similar a Introducción a JavaFX

Presentacion de JavaFx Webinar Peru - UPSB
Presentacion de JavaFx Webinar Peru - UPSBPresentacion de JavaFx Webinar Peru - UPSB
Presentacion de JavaFx Webinar Peru - UPSBRenzo Delgado
 
Jerónimo López | Introducción a GraalVM | Codemotion Madrid 2018
Jerónimo López | Introducción a GraalVM | Codemotion Madrid  2018  Jerónimo López | Introducción a GraalVM | Codemotion Madrid  2018
Jerónimo López | Introducción a GraalVM | Codemotion Madrid 2018 Codemotion
 
Gu is awt_swing
Gu is awt_swingGu is awt_swing
Gu is awt_swingLCA
 
Cesnavarra 2009-boletín 10
Cesnavarra 2009-boletín 10Cesnavarra 2009-boletín 10
Cesnavarra 2009-boletín 10Cein
 
HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5Plain Concepts
 
Codemotion 2016 - d3.js un taller divertido y difícil
Codemotion 2016 - d3.js un taller divertido y difícilCodemotion 2016 - d3.js un taller divertido y difícil
Codemotion 2016 - d3.js un taller divertido y difícilJavier Abadía
 
Introducción a Qt
Introducción a QtIntroducción a Qt
Introducción a Qtdgalo88
 
Mobile Day - Lecciones de vuelo
Mobile Day - Lecciones de vueloMobile Day - Lecciones de vuelo
Mobile Day - Lecciones de vueloSoftware Guru
 
7 y 8. interfaz grafica en java
7 y 8.  interfaz grafica en java7 y 8.  interfaz grafica en java
7 y 8. interfaz grafica en javaRaul Pomasoncco
 
Java Script Frame Works
Java Script Frame WorksJava Script Frame Works
Java Script Frame Workshectorguedea
 
Jruby On Rails. Ruby on Rails en la JVM
Jruby On Rails. Ruby on Rails en la JVMJruby On Rails. Ruby on Rails en la JVM
Jruby On Rails. Ruby on Rails en la JVMjavier ramirez
 
Reactvolution
ReactvolutionReactvolution
Reactvolution_Lagash
 
instrumentos de trabajo
instrumentos de trabajoinstrumentos de trabajo
instrumentos de trabajojorpical
 

Similar a Introducción a JavaFX (20)

Presentacion de JavaFx Webinar Peru - UPSB
Presentacion de JavaFx Webinar Peru - UPSBPresentacion de JavaFx Webinar Peru - UPSB
Presentacion de JavaFx Webinar Peru - UPSB
 
Jerónimo López | Introducción a GraalVM | Codemotion Madrid 2018
Jerónimo López | Introducción a GraalVM | Codemotion Madrid  2018  Jerónimo López | Introducción a GraalVM | Codemotion Madrid  2018
Jerónimo López | Introducción a GraalVM | Codemotion Madrid 2018
 
Gu is awt_swing
Gu is awt_swingGu is awt_swing
Gu is awt_swing
 
Cesnavarra 2009-boletín 10
Cesnavarra 2009-boletín 10Cesnavarra 2009-boletín 10
Cesnavarra 2009-boletín 10
 
HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5
 
Applets.pdf
Applets.pdfApplets.pdf
Applets.pdf
 
Codemotion 2016 - d3.js un taller divertido y difícil
Codemotion 2016 - d3.js un taller divertido y difícilCodemotion 2016 - d3.js un taller divertido y difícil
Codemotion 2016 - d3.js un taller divertido y difícil
 
Introducción a Qt
Introducción a QtIntroducción a Qt
Introducción a Qt
 
Introducción a Java FX
Introducción a Java FXIntroducción a Java FX
Introducción a Java FX
 
Mobile Day - Lecciones de vuelo
Mobile Day - Lecciones de vueloMobile Day - Lecciones de vuelo
Mobile Day - Lecciones de vuelo
 
Awt
AwtAwt
Awt
 
7 y 8. interfaz grafica en java
7 y 8.  interfaz grafica en java7 y 8.  interfaz grafica en java
7 y 8. interfaz grafica en java
 
Introduccion a java i
Introduccion a java iIntroduccion a java i
Introduccion a java i
 
sesion_01-JAVA.pdf
sesion_01-JAVA.pdfsesion_01-JAVA.pdf
sesion_01-JAVA.pdf
 
Java Script Frame Works
Java Script Frame WorksJava Script Frame Works
Java Script Frame Works
 
Jruby On Rails. Ruby on Rails en la JVM
Jruby On Rails. Ruby on Rails en la JVMJruby On Rails. Ruby on Rails en la JVM
Jruby On Rails. Ruby on Rails en la JVM
 
JRuby al Rescate de J2EE
JRuby al Rescate de J2EEJRuby al Rescate de J2EE
JRuby al Rescate de J2EE
 
12.gráficos y bases de datos
12.gráficos y bases de datos12.gráficos y bases de datos
12.gráficos y bases de datos
 
Reactvolution
ReactvolutionReactvolution
Reactvolution
 
instrumentos de trabajo
instrumentos de trabajoinstrumentos de trabajo
instrumentos de trabajo
 

Último

guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 

Último (16)

guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 

Introducción a JavaFX

  • 2. ¿Porqué debería pasar la próxima hora aquí? • Para conocer la plataforma que posiblemente reemplazará a Java ME • Para aprender lo básico del lenguaje con el cual crear aplicaciones en esta plataforma > Junto con las características de la biblioteca gráfica principal del lenguaje • Finalmente, si algo de todo esto nos convenció, obtener información sobre como ingresar al mundo de JavaFX
  • 3. PARTE 1 - JAVAFX
  • 4. ¿Qué es JavaFX? • JavaFX es una plataforma para dispositivos que funcionen como clientes de Rich Internet Applications (RIA). • Consiste de elementos comunes (gráficos, animaciones, texto y elementos multimedia) y elementos específicos para computadoras, dispositivos móviles y televisión.
  • 5. El Stack de JavaFX
  • 6. ¿Porqué Sun esta trabajando en JavaFX? • Java ya ha conquistado el lado del servidor de las aplicaciones, sin embargo, aún resta un gran trabajo por hacer en el lado del cliente. • Crear una gran interfaz con Swing requiere mucho trabajo. • La popularidad de Java en la UI ha decaído en favor de Flash, Ajax y otras soluciones más “livianas”. Adicionalmente, otras empresas han comenzado a presentar tecnologías de este tipo, como Silverlight (de Microsoft). • Dado que no se esperan grandes innovaciones del lado del servidor, es un excelente momento para concentrarse en solucionar los problemas de usabilidad de las UIs Java.
  • 7. “Our goal with JavaFX is to deliver a 'Media Stack' for the Java platform … It means five things: Audio, Video, 2D and 3D Graphics and Animation” Christopher Oliver
  • 8. PARTE 2 – JAVAFX SCRIPT 5
  • 9. JavaFX Script es un lenguaje declarativo pensado para la creación interfaces de usuario de aplicaciones multiplataforma con gran cantidad de contenido multimedia
  • 10. Java JFrame f = new JFrame(); if (com.awt.sun.util.AWTUtilities.isTranslucentySupported()) { com.awt.sun.util.AWTUtilities.setTranslucency(true); } frame.setUndecorated(true); JPanel panel = new JPanel() { protected void paintComponent(Graphics g) { Graphics2D gfx = (Graphics2D)g.create(); gfx.setRenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIASING_ON): gfx.setColor(Color.RED); gfx.drawOval(0,0,100,100); gfx.dispose(); } } frame.getRootPane().setcontent(panel);
  • 11. JavaFX Script Frame { stage: Stage { content: Circle { centerX: 50 centerY: 50 radius: 50 fill: Color.RED } fill: null // sin relleno } }
  • 12. Caracteristicas principales de JavaFX Script • Sintaxis declarativa • GUI • Swing • Data binding • Incremental evaluation • Estáticamente tipado • Características de estructuración, rehuso y encapsulación de código que permiten crear y mantener grandes programas escritos en este lenguaje
  • 13. Scripts • Un “script” es una o más declaraciones o expresiones import java.lang.System; var diez : Integer = 10; System.out.println("Dos veces {diez} es {2 * diez}."); // Dos veces diez es veinte. • No son obligatorios ni un “main” ni clases o funciones
  • 14. Clases class Caballero { var salud = 100; var fuerza = 10; function morir(){ salud = 0 } function daniar(cantidadDanio: Integer){ salud -= cantidadDanio } }
  • 15. Objetos var unCaballero = Caballero {} var caballeroGrosso = Caballero { salud: 150; fuerza: 15; } unCaballero.daniar(caballeroGrosso.fuerza); // unCaballero.salud = 75
  • 16. Tipos básicos Java String Number Boolean Boolean Integer Duration JavaFX Script java.lang.String java.lang.Number byte, short, int, long, BigInteger No disponible
  • 17. String var s1 = "Java"; var s2 = "FX"; var s3 = "Java{s2}"; // s3 = "JavaFX" var s4 = "{s1}{s2}"; // s4 = "JavaFX"
  • 18. Boolean var cool = true; var s = "Java{if(cool)"FX"else"Script"}"; //s = "JavaFX" var a = true; // a = true var b = false; // b = false var c = a and b; // c = false var d = a or b; // d = true var e = not a; // e = false
  • 19. Duration var t1 = 5ms; // 5 milisegundos var t2 = 10s; // 10 segundos var t3 = 30m; // 30 minutos var t4 = 1h; // 1 hora var t5 = t1 + t2 + t3 + t4; // 1 hora 30 min 10 seg y 5 miliseg
  • 20. Secuencias var x = [1,2,3]; // inicialización insert 10 into x; // [1, 2, 3, 10] insert 12 before x[1]; // [1, 12, 2, 3, 10] delete 12 from x; // [1, 2, 3, 10] insert [1..8] into x; // [1, 2, 3, 10, 1, 2, 3, 4, 5, 6, 7, 8,]
  • 21.
  • 22. Scene Graph - ¿Qué es? • Es una nueva API de modo retenido para las bibliotecas gráficas de Java. • Creada por el equipo que desarrolló Java2D. • Posee soporte nativo para blurs, glows y shadows. • Funciona perfectamente en combinación con Swing. • Permite optimizaciones interesantes a futuro.
  • 23. Scene Graph - ¿Qué tiene de bueno? • Hasta el momento, habia bibliotecas similares, pero ninguna equiparable en rendimiento, ni posibilidades de aceleración por hardware. • Es software libre (GPL v2), incluso antes de ser incluido en alguna versión del JRE. • Es un API Java: Groovy, Python, Ruby y otros lenguajes que corren sobre la JVM pueden beneficiarse de ella. • Permite enfocarse en QUE hace la aplicación, en vez de en COMO.
  • 24. Scene Graph – Ubicación en el stack Java
  • 25. Scene Graph - Componentes • Nodos > Gráficos, textos, componentes, imagenes > Al agruparlos, puede efectuarse la misma operación sobre todo el grupo • Estados > transformaciones, efectos, visibilidad • Eventos/ Listeners > Mouse, teclado, actualización de nodos • Animaciones > variación de propiedades en el tiempo
  • 26. javafx.scene.geometry • Ellipse • Polyline • Arc • Path • ShapeSubtract • QuadCurve • LineTo • SVGPath • Polygon • Line • Circle • ArcTo • PathElement • HlineTo • DelegateShape • ClosePath • VlineTo • CurveTo • QuadTo • ShapeIntersect • MoveTo • Rectangle • CubicCurve • Shape
  • 27. Circle import javafx.scene.geometry.*; import javafx.scene.paint.*; Circle { centerX: 100 centerY: 100 radius: 50 fill: Color.BLACK }
  • 28. Rectangle import javafx.scene.geometry.*; import javafx.scene.paint.*; Rectangle { x: 50 y: 50 width: 200 height: 100 arcWidth: 20 arcHeight: 20 fill: Color.BLACK }
  • 29. Ellipse import javafx.scene.geometry.*; import javafx.scene.paint.*; Ellipse { centerX: 50 centerY: 50 radiusX: 50 radiusY: 25 fill: Color.BLACK }
  • 30. ShapeIntersect import javafx.scene.geometry.*; import javafx.scene.paint.*; ShapeIntersect { fill: Color.BLACK a: Rectangle { width: 100 height: 50 } b: Ellipse { centerX: 100 centerY: 25 radiusX: 50 radiusY: 25 } }
  • 31. ShapeSubtract import javafx.scene.geometry.*; import javafx.scene.paint.*; ShapeSubtract { fill: Color.BLACK a: Rectangle { width: 100 height: 50 } b: Ellipse { centerX: 100 centerY: 25 radiusX: 50 radiusY: 25 } }
  • 32. Animación • Las animaciones en JavaFX Script son declarativas. • Se describen mediante “snapshots” (key frames). • Una animación es de uno de dos tipos, discreta o interpolada. • En cualquiera de los casos, el sistema inicia automáticamente la animación, la revierte o la detiene según sea indicado.
  • 33. Animación (II) • Las animaciones ocurren dentro de una linea de tiempo (Timeline). • Cada “timeline” contiene dos o más “key frames”. • También provee atributos para describirla (autoReverse, repeatCount, etc), así como funciones para controlarla (start, stop, pause, resume).
  • 34. Animación (III) • Cada key frame tiene asociado un momento relativo al timeline que lo contiene, además de una lista de key values y un trigger que puede ejecutar código en el momento en que el frame sucede. • Cada key value posee un valor final para una propiedad y una función para calcular los valores intermedios.
  • 35.
  • 36. Recursos JavaFX • Web del proyecto JavaFX > openjfx.dev.java.net • Blog de Chris Oliver > blogs.sun.com/chrisoliver • Blog de James Weaver > learnjavafx.typepad.com • Javapassion (15 de Noviembre) > javapassion.com/javafx • Blog de Silveira Neto > silveiraneto.net • Web de JavaFX > javafx.com
  • 37. MUCHAS GRACIAS Ezequiel Aranda Ezequiel.Aranda@Sun.com blogs.sun.com/argentina_ambassador Basado en un trabajo original de Silveira Neto http://silveiraneto.net