Bueno empezaremos con una serie de post acerca de JavaFX. Esta tecnologia sale al mercado para competir contra Flex y Silverlight, todavía está en duda si esta tecnología lograra el lugar que busca, pero me parece un buen momento para empezar a descubrirla.
Partiremos desde lo mas básico, instalando las librerías y buscando que IDE usar hasta que podamos hacer ejemplos donde podamos ir viendo el poder que nos ofrece este nuevo lenguaje de scripting. Para no hacer más largo este primer post paso a comentarles los pasos necesarios para preparar nuestras maquinas para trabajar
Pasos:
http://www.javafx.com/
Haremos un ejemplo básico para mostrar algunas características básicas y usaremos la consola para compilar y ejecutar nuestro ejemplo, veremos que los archivos no tienen una extensión java sino que poseen su propia extensión .fx igual estos son compilados a bytecode que quedan en archivos .class y luego serán ejecutados por la JVM.
Como primer paso debemos instalar el SDK y probar que la consola nos reconoce lo comandos javafxc y javafx, no debería haber problema alguno con esto pero si alguien tiene algún problema que comente y buscamos el porqué.
Para el ejemplo yo eh creado una carpeta llamada JavaFX donde dejare la siguiente estructura de directorios
C:\JavaFX\maintest\Main.fx
Archivo Main.fx:
package maintest;
// Define Address class.
class Address {
var street: String;
var city: String;
var state: String;
var zip: String;
}
// Create the first Address object instance.
var addressOne = Address {
street: "1 Main Street";
city: "Santa Clara";
state: "CA";
zip: "95050";
}
// Create the second Address object instance.
def addressTwo = Address {
street: "200 Pine Street";
city: "San Francisco";
state: "CA";
zip: "94101";
}
function run(args : String[]) {
for (arg in args) {
println("Parameters = {arg}");
}
println("Street One = {addressOne.street}");
println("Street Two = {addressTwo.street}");
}
Ahora más adelante explicaremos cada parte del código, este sería nuestro archivo Main.fx ahora lo compilaremos por medio de la consola, abrimos una consola de comandos y nos situaremos en C:\JavaFX.
Compilar paso 1:
Situados en el directorio anteriormente dicho escribimos lo siguiente
javafxc "maintest/Main.fx" esto nos genera los .class necesarios para poder ejecutar el ejemplo
Ejecutar paso 2:
Situados en el mismo directorio anterior escribimos
javafx maintest.Main 9 2 de esta forma estaremos ejecutando nuestro ejemplo pasándole dos parámetros el primero un String que contiene 9 y el segundo un String que contiene el 2.
Explicación básica del código:
Parte 1:
class Address {
var street: String;
var city: String;
var state: String;
var zip: String;
}
Aquí estamos definiendo la clase Address la cual tendrá 4 variables que se indican con la palabra reservada var "elNombreDeLaVariable" : "suTipoDeDato"
Parte 2 y 3:
// Create the first Address object instance.
var addressOne = Address {
street: "1 Main Street";
city: "Santa Clara";
state: "CA";
zip: "95050";
}
// Create the second Address object instance.
def addressTwo = Address {
street: "200 Pine Street";
city: "San Francisco";
state: "CA";
zip: "94101";
}
En ambos casos estamos declarando referencias a objetos del Tipo Address donde usamos { ... } como se usaría un constructor donde inicializamos los distintos valores de la clase, la diferencia importante entre estas dos referencias son que una se declaro con la palabra reservada var y la otra con def. Esto quiero decir que la que se declaro con def seria una referencia del tipo final y no puede cambiar durante la ejecución del script.
Parte 4:
function run(args : String[]) {
for (arg in args) {
println("Parameters = {arg}");
}
println("Street One = {addressOne.street}");
println("Street Two = {addressTwo.street}");
}
Aquí estamos definiendo la función run que sería el equivalente al main de una clase Java y recibe un array de argumento de longitud variable, en la primer línea iteramos sobre los argumentos y mostramos sus valores en las otras dos imprimimos los valores de las distintas direcciones para lograr imprimirlo se usa {addressOne.street} de manera que fuera un closure.
Bueno esto fue todo por este post por cualquier duda que posiblemente haya espero los comentarios y en qué forma se podría mejorar el post.
En próximas entradas veremos los tipos de datos de JavaFX así como en más detalles sus distintas características.
Saludos
Muy buen articulo, para comenzar con JavaFX
ResponderEliminarLuis...sos un genio. Explicas joya. Gracias por compartir tus conocimientos!!!
ResponderEliminaral intentar ejecutar el ejemplo me da este error
ResponderEliminarD:\JavaFX>D:\JavaFX\javafx-sdk1.2\bin\javafx.exe maintest.Main 9 2
Exception in thread "main" java.lang.NoClassDefFoundError: maintest/Main (wrong
name: Main)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12
4)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at com.sun.javafx.runtime.Main.main(Main.java:68)
Hola Yamit, según veo en el log vos le decís al comando javafx que ejecute la clase Main que estaría ubicada en D:\JavaFX\maintest\Main.class
ResponderEliminarEste error puede suceder ya sea porque la clase Main no se haya en esa ruta o porque no se generaron los archivos .class, fíjate si la compilación con javafxc esta dejando los archivos .class en el directorio donde luego intentas ejecutarlo.
Espero poder haberte ayudado, si sigue sin funcionar fíjate si podes poner tu estructura de directorio a ver si hay alguna cosa extraña.
Saludos
hola luis gracias por la pronta respuesta, el javafxc me genera dos archivos llamados:
ResponderEliminarMain$Address.class
Main.class
en esta ruta:
D:\JavaFX\maintest
acabo de intentar ejecutar lo siguiente:
parandome en el directorio D:\JavaFX\maintest (dentro del maintest, y no desde afuera)
javafx Main 9 2
y funciono...
ahora usando maintest.Main 9 2, me bota error,
ahora me pregunto si no habria que declarar en el script Main.fx el paquete al que pertenece??
algo asi como en java: package maintest ???
sin embargo lo importante es que ya funciona :D, aprovecho de paso para agradecerte por el blog, me va a ser de gran ayuda!!! mucho exito luis
Perdóname estas en lo cierto, obviamente falta declarar el package, se ve que me olvide de ponerlo en la parte del código.
ResponderEliminarMe alegro que ya este andando y ahora lo cambio asi no queda ese pequeño error, gracias por los comentarios y seguiré intentando ayudarte en lo que pueda
Saludos
Hola, podrias explicarme la diferencia entre JavaFX 1.2 SDK y JavaFX 1.2 Production Suite, si voy a empezar con JavaFx ¿cuál instalo?.
ResponderEliminarCarlos.
Hola como estas, la diferencia entre el JavaFX 1.2 SDK y el Production Suite consiste basicamente en que en realidad el SDK son las librerias necesarias por poder usar JavaFX esto instalaria el compilador y el interprete osea javafxc y javafx. Por otro lado tenes el Production Suite es cual es un conjunto de plugins para poder acercar a los desarrolladores y los artistas(Disenadores graficos). Contiene plugins para Photoshop y Illustrator(CS3 o CS4) el cual exportas las imagenes con formato JavaFX, puedes visualizar estas imagenes con JavaFX Graphics Viewer(tambien contenido en la Suite) y un SVG Converter, junto con ejemplos y ayuda.
ResponderEliminarEspero haber aclarado tu duda y haber sido util.En pocas palabras para empezar a desarrollar deberias instalar JavaFX 1.2 SDK.
Al fin Dios es grande, al fin encuentro un buen tutorial que me explique y me oriente he visto varios y ninguno esta tan bien explicado como el tuyo, gracias :D me sera de mucha ayuda
ResponderEliminarMe alegro te haya servido, igual tene en cuenta que JavaFX no tuvo tanto exito como se esperaba,asi que espero que estes entretenido con varias cosas y no solo apuntes todo a JavaFX.
ResponderEliminarSaludos,
Luis
que tal soy juan, como configuro la variable de entorno porque ya la configure pero el cmd no reconoce javafx, dice: "javafx" no se reconoce como un archivo interno o externo
ResponderEliminarSoy Juan, por otra parte, lo he intentado haciendo uso del IDE Eclipse Juno (version actual)pero no reconoce los imports, quiero saber si me puedes explicar paso a paso como configurar eclipse para que funcione el javafx
ResponderEliminarHola Juan la verdad que solo probe JavaFX desde el NetBeans que es mucho mas simple, te aconsejaria que lo prubes de ahi que ademas con muchas opciones y muchas ayudas.
EliminarCon respecto a la variable de entorno, acordate que cuando pones una variables de entorno nueva tenes que cerrar la consola de cmd y abrir una nueva para que la tenga en cuenta.
Cualquier cosa que necesites avisame.
Saludos, Luis
hola luis soy Juan, ya hice eso de la variable de entorno, baje el javafx SDK 2.2, segui los pasos para instalar y se creo una carpeta llamada Oracle; dentro de esta se crearon 2 carpetas, la SDK y la Runtime, cual de estas es la que va como variable de entorno, yo puse 2 en el path, hasta el bin del SDK y hasta el bin del Runtime; pero cree aparte otra variable de entorno JAVAFX_HOME en lacual solo puse hasta el bin del SDK
Eliminarahh otra cosa, se dice que la version 7 de java ya tiene incluido el javafx, pero yo estoy trabajando con java 6, es posible tener las dos versiones instaladas sin que surja ningun problema con los proyectos que tengo en java 6
Eliminar