Download Un vistazo al desarrollo de aplicaciones en la plataforma Java

Document related concepts
no text concepts found
Transcript
Un vistazo al desarrollo de
aplicaciones en la plataforma
Java utilizando NetBeans 6
Ezequiel Aranda
Sun Campus Ambassador - UNICEN
[email protected]
Agenda
La plataforma Java
NetBeans 6.0
Java FX
Certificaciones - SAI
¿Por dónde empezar?
¿Qué es Java?
• Java es un lenguaje de programación orientado a objetos
desarrollado a principios de los años 90.
• El lenguaje en sí mismo toma mucha de su sintaxis de C y
C++, pero tiene un modelo de objetos más simple y elimina
herramientas de bajo nivel.
• Es independiente de la plataforma . Las primeras
implementaciones de Java rezaban:“write once, run
anywhere”.
• Posee un sistema de administración de memoria
automático, el Garbage Collector.
Un poco de historia
• Java se creó originalmente como una
herramienta de programación para un
proyecto set-top-box conocido como *7.
• Fue realizado por un equipo de 13 personas, dirigidas por
James Gosling.
• Los objetivos de Gosling eran implementar una máquina
virtual y un lenguaje con una estructura y sintaxis similar a
C++.
Un poco de historia (II)
• En un principio, el sistema *7 no encontró un
lugar en el mercado.
• Gosling y su equipo se reunieron y notaron
que “la nueva y popular Internet” tenia
exactamente el tipo de configuración de red
que ellos habían visionado para la industria de
la TV por cable.
• Con esto en mente, crearon el navegador
WebRunner y realizaron un demo que
mostraba una molécula animada en una
reunión de profesionales de la industria del
entretenimiento e Internet.
• Todos sabemos
historia….
como
termina
esta
¿Porqué Java?
• El lenguaje se denominó inicialmente ”Oak‘ . Luego pasó a
denominarse ”Green‘ tras descubrir que Oak era ya una
marca comercial registrada.
• El término ”JAVA‘ fue acuñado en una cafetería
frecuentada por algunos de los miembros del equipo.
• No está claro si es un acrónimo o no, algunas hipótesis
indican que podría tratarse de las iniciales de sus
creadores: James Gosling, Arthur Van Hoff, y Andy
Bechtolsheim. Otras abogan por “Just Another Vague
Acronym”.
La plataforma Java
• Una plataforma es el ambiente de software o hardware en el
que corre un programa.
• La plataforma Java consta de dos componentes
> La máquina virtual de Java
> La API de Java (Application Programming Interface)
• La API de Java es una vasta colección de componentes de
software que proveen un conjunto de funciones útiles.
La plataforma Java (II)
• En Java el código fuente se escribe en un archivo de texto plano
con extensión .java.
• Luego, el código es compilado a archivos .class . Un archivo .class
no contiene código nativo a un tipo de procesador, en cambio
contiene bytecodes .
• Finalmente, la aplicación es compilada Just in Time por la maquina
virtual de Java, transformando los bytecodes en código nativo en
tiempo de ejecución.
La plataforma Java (III)
• El bytecode es lenguaje nativo de cualquier implementación de la máquina
virtual de Java. De esta forma se logra que un programa Java corra en
cualquier plataforma que disponga de una JVM.
La plataforma Java (IV)
• La mayoría de los sistemas operativos modernos
proveen grandes cantidades de código reusable.
• Generalmente, este código es provisto en forma de
bibliotecas dinámicas .
• Dado que la plataforma Java no depende de ningún
sistema operativo especifico, las aplicaciones no
pueden depender de bibliotecas existentes.
• En cambio, la plataforma provee un conjunto de
bibliotecas de clases estándar .
La plataforma Java (V)
• Las bibliotecas de clases Java tienen tres propósitos dentro
de la plataforma:
> Proveer un conjunto de funciones para tareas comunes (parsing
de strings, mantener listas, etc)
> Proveer interfaces abstractas a tareas que dependen fuertemente
del sistema operativo y/o hardware (acceso a redes y archivos,
por ejemplo)
> Proveer emulación para características que no están presentes en
una plataforma, o al menos chequeos que nos permitan saber si
una característica esta o no presente
La plataforma Java (VI)
• Se han producido otros compiladores para la máquina virtual de
Java.
• Algunos de estos lenguajes existían previamente mientras que
otros son extensiones del lenguaje Java.
• Estos incluyen:
> Groovy
> Jython, intérprete Python que incluye jythonc, un compilador Python-a>
>
>
>
Java bytecode
Scala
JRuby, intérprete de Ruby
Rhino, intérprete de JavaScript
Kawa y SISC, intérpretes de Scheme
La plataforma Java (VII)
• Existen distintas “ediciones” de la plataforma Java:
> Java ME (Micro Edition)
> Java SE (Standard Edition)
> Java EE (Enterprise Edition)
¿Qué es NetBeans?
• Un IDE Java completo y modular
>
>
>
>
Soporte “Out-of-box” para Java SE, Java EE, Java ME
Gran conjunto de mólulos de terceros (plug-in's)
Desarrollo intuitivo con drag-and-drop
Debugger, Profiler, Refactoring, etc...
• Gratuito y open-source
> Open source desde Junio de 2000
> Extensa comunidad de usuarios y desarrolladores
• Completa plataforma para construir aplicaciones
> Aplicaciones cliente
> Framework de ventanas, menús, barras de herramientas, etc
Novedades de NetBeans 6.0
• Mejoras al editor de código
• Soporte para Ruby, JRuby, y Ruby on Rails
• Sencilla instalación y actualización
• Data binding en componentes SWING
• Profiling integrado, “puntos de profiling”
• Características para el desarrollo de aplicaciones web
visuales
• Creador de juegos para dispositivos móviles
• Mejoras en SOA y UML
• Mejoras en la plataforma Netbeans
Debugging y Profiling
• Debugging visual (breakpoints, watchpoints)
• Debugging remoto de un proceso
• Modificación de código al vuelo
• Debugging de JSP, Servlets, monitor de trafico HTTP
• Ver, suspender y resumir threads
• Monitor de actividad de Threads
• Datos visuales de tiempo de CPU y llamadas a métodos
• Vista centrada en objetos: allocated, live, age
• Telemetría de JVM: uso de heap, garbage collection
Developer Collaboration
• Desarrollo de aplicaciones en forma colaborativa
• Sistema de mensajes sensible a cambios en el código
• El ambiente de desarrollo completo es compartido
• Edición multi-party
• Revisiones de código
• Debugging colaborativo
• Servidor público en share.java.net
Matisse
• Problemas que surgen al construir una GUI (sin
Matisse):
> Lidiar con APIs Swing
> Por ejemplo GridBagLayout
> Cambiar de tamaño y alinear los elementos
> Crear aplicaciones con diferentes locales
> Comportamiento dependiendo del SO
> Binding de datos a los elementos de GUI
• Matisse resuelve estos problemas
Java DB
• Distribución soportada por Sun de Apache Derby
• Ideal para desarrollo y ejecución de aplicaciones Java
> basada en estándares: 100% Java, SQL, JDBC, Java SE, EE, ME CDC
> Sofisticado: stored procedures, triggers, tipos de datos definidos por el usuario
> Pequeño: 2MB!
> Seguro: encriptación on-disk, passwords
> Soporte: Soporte 24/7 de Sun
• Donde está Java DB?
> En Java Enterprise system, Portal Server, Application Server, Glassfish
> Soportado en NetBeans, Java Studio Creator, y Java Studio Enterprise
> Java SE 6!
demo
Java EE
• La plataforma Java EE esta construida sobre
la plataforma Java SE.
• Provee un API y un ambiente de ejecución
para desarrollar y ejecutar aplicaciones en red
de gran magnitud, multi-tiered, escalables,
confiables y seguras (comúnmente llamadas
Enterprise ).
Java EE (II)
• En una aplicación multi-tiered la funcionalidad es dividida en areas
funcionales aisladas, llamadas tiers.
Java EE (III)
• APIs de Java EE
Java EE en NetBeans 6
•
•
•
•
•
•
•
•
Desarrollo de aplicaciones Web
Soporte Java EE 5
Debugging, testing, profiling
Struts y JavaServer Faces (JSF)
JBoss 4, WebLogic 9, WebSphere
Desarrollo de web services (cliente + servicio)
Desarrollo de aplicaciones AJAX
EJB
Java ME
• La plataforma Java ME provee una API y una
máquina virtual reducidas.
• La API de Java ME es un subconjunto de la de
Java SE junto con bibliotecas especiales útiles para
el desarrollo de aplicaciones para dispositivos
pequeños
• Frecuentemente las aplicaciones Java ME son
clientes de servicios de aplicaciones Java EE.
Java ME (II)
• Java ME se divide en:
> Configuraciones: especificaciones que detallan una VM y un
conjunto de bibliotecas para dispositivos dentro de un
determinado rango (CDC y CLDC son las disponibles
actualmente).
> Perfiles: complementan las configuraciones añadiendo APIs
de alto nivel (por ejemplo MIDP – profile para teléfonos
celulares).
> Paquetes opcionales: funciones especiales para tecnologías
no incluidas originalmente (BD especificas, gráficos 3D, etc).
Java ME (III)
CLDC
• Connected, Limited Device Configuration
• El propósito de CLDC es estandarizar una plataforma
altamente portable y con un mínimo consumo de
memoria para el desarrollo de aplicaciones Java para
dispositivos con recursos limitados, pero con
capacidades de conexión.
• Ejemplos: teléfonos celulares, pagers, PDAs, set-topboxes para TVs, algunos electrodomesticos, etc...
Mobile Information Device Profile (MIDP)
• Perfil para dispositivos móviles de datos
• Una aplicación MIDP es conocido como MIDlet
• Trabaja sobre CLDC
• Se enfoca en:
> Ciclo de vida de la aplicación
> Seguridad
> Almacenamiento en red y persistencia
> Sonido, temporizadores, UI
Sun Wireless Toolkit for Java
• Implementacion de CLDC y MIDP
> incluye... WMA, MMAPI, JTWI, J2ME Web Services, PDAP, Bluetooth
and OBEX, Mobile 3D Graphics
•
•
•
•
•
Emulador
Soporte OTA
Encriptador
Ofuscador
Pre-verificador
NetBeans Mobility Pack
• Usa Sun Wireless Tooklit for Java
• Creación de interfaces gráficas con Drag-anddrop
• Soporte para fragmentación
MIDP 2.0 Gaming APIs
• API de alto nivel
> Implementaciones en código nativo
> Reduce el tamaño de la aplicación
• GameCanvas permite dibujar y consultar estados de las
teclas
• Los Sprites y TiledLayers son los elementos visuales
> Los sprites pueden animarse, transformarse, moverse y detectar
colisiones.
> Los TiledLayers son grillas que contienen imágenes.
> Los TiledLayers se utilizan para generar grandes áreas virtuales (por
ejemplo, escenarios con desplazamientos)
> Los TiledLayers pueden contener piezas estáticas o animadas
demo
JavaFX
• JavaFX es una nueva familia de tecnologías Java
anunciadas por primera vez en mayo de 2007
• Ideadas con el propósito de ser utilizadas para
crear Rich Internet Applications (RIAs)
• Actualmente compuesto por:
> JavaFX MobileJavaFX Script
> JavaFX Script
JavaFX Mobile
• JavaFX Mobile es un sistema operativo Java
para la nueva generación de dispositivos
moviles.
• Proveé implementaciones de Java ME y Java SE
corriendo sobre un kernel Linux.
• Permite:
> Mejorar la portabilidad y performance de las
aplicaciones, proveyendo un middleware y un
stack de aplicaciones implementadas en Java.
> Funcionalidad on-device mas interesante,
comunicando las aplicaciones a través de
interfaces y tecnologias avanzadas.
> Personalizar rapidamente los dispositivos a las
distintas compañias.
Diferencias entre el modelo tradicional y
JavaFX Mobile
Componentes JavaFX Mobile
JavaFX Script
• JavaFX Script es un lenguaje de scripting
declarativo estáticamente tipado para la plataforma
Java
• Provee:
>
>
>
>
>
Data-binding automático
Soporte completo para gráficos 2D
Componentes Swing estándar
Animación declarativa.
Como esta construido sobre la plataforma Java, es
sencillo utilizar cualquier clase Java en los scripts
JavaFX.
JavaFX Script - ¿Porqué?
• Escribir GUIs es difícil (y molesto)
> Matisse reduce el trabajo de crear GUis, pero todavía hay demasiados
“listeners”.
• Las interfaces por defecto son planas y aburridas
> Un conjunto de cajas grises rectangulares (no solo en Java), no comparables
con otras tecnologías web, como Flash.
• Java 2D provee mucho de lo que se necesita
> Pero es complicado de usar para este propósito y no posee un comportamiento
“composicional”
• JavaFX combina widgets de tipo Swing con primitivas Java 2D en una sintaxis
declarativa que soporta comportamiento composicional y transformaciones
avanzadas como translaciones, rotaciones,clipping, shearing, etc
JFX Script – Ejemplos de Código
class HelloWorldModel {
attribute saying: String;
}
Definición de la clase
var model = HelloWorldModel {
saying: "Hello Campus"
};
Instancia de la clase
HelloWorldModel
var win = Frame {
title: bind "{model.saying} JavaFX"
width: 200
content: TextField {
value: bind model.saying
}
visible: true
};
Frame con un campo
de texto. El titulo y el
valor del campo están
vinculados con el
atributo de “model”.
JFX Script – Ejemplos de Código (II)
var x = [1,2,3];
insert 10 into x;
insert 12 before x[1];
delete x[. == 12];
delete x[. >= 3];
insert 5 after x[. == 1];
insert 13 as first into x;
delete x;
Inicialización
x == [1, 2, 3, 10]
x == [1, 12, 2, 3, 10]
x == [1, 2, 3, 10]
x == [1, 2]
x == [1, 5, 2]
x == [13, 1, 5, 2]
x == []
function factors(n) {
return select i from i in [1..n/2] where n % i == 0;
}
Queries para vectores!
JFX Script – Ejemplos de Código (III)
class X {
attribute nums: Number*;
}
trigger on new X {
insert [3,4] into this.nums;
}
Evento de creación
Evento al insertar en
vector
Evento al cambiar valor
trigger on insert num into X.nums {
System.out.println("just inserted {num} into X.nums at
position {indexof num}");
}
trigger on X.num[oldValue] = newValue {
System.out.println("X.num: just replaced {oldValue} with
{newValue}");
}
JFX Script – Ejemplos de Código (IV)
import javafx.ui.canvas.*;
import javafx.ui.*;
Canvas para dibujar
Canvas {
content: Group {
transform: [rotate(20,0,0)]
content:
[Rect {
x: 20
y: 20
height: 80
width: 300
...
},
Ellipse {
cx: 150
cy: 80
...
},
}]
}
}
Agrupamiento de
controles
Grupo transformadas
Declaración de gráfico
2D
Opciones para ejecutar código JFX Script
Corriéndolo con Java Web Start:
• Java Web Start es la implementación de referencia de la
especificación JNLP (Java Networking Launching Protocol)
• Permite arrancar aplicaciones Java que están en un servidor web de
aplicaciones comprobando previamente si el cliente tiene la versión
actualizada de dicha aplicación (JRE)
• El arranque de dichas aplicaciones puede ser efectuado mediante
enlaces en una página web o bien a través de enlaces en el escritorio
cliente.
• Se asegura que una aplicación es distribuida siempre en su última
versión.
Opciones para ejecutar código JFX Script (II)
Ejecutándolo desde un programa Java:
public class FxScriptLauncher2 {
public static void main(String[] args) {
try {
// set up script:
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByExtension("fx");
engine.put("now:java.util.Date", new Date());
InputStreamReader reader = new
InputStreamReader(FxScriptLauncher2.class.getResourceAsStream("HelloWorld.fx"));
engine.eval(reader);
} catch (Exception e) {
e.printStackTrace();
}
}
}
import java.io.InputStreamReader;
import java.util.Date;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
demo
Netbeans 6.0:
¿Por dónde
empezar?
• Bajar Netbeans 6.0
• Unirse al proyecto Netbeans.org
• Crear una cuenta de desarrollo
colaborativo
• Hacer los tutoriales
• Participar en los foros
• Escribir una aplicación de escritorio
• Probar el módulo de colaboración
con tus amigos
http://www.netbeans.org
• Bajar Java FX y el plug-in para
Netbeans o Eclipse
• Unirse al proyecto OpenJFX en
Java.net
• Hacer los tutoriales
• Participar en los foros de JavaFX
• Comenzar a adentrarse en las
posibilidades de JavaFX
http://openjfx.dev.java.net
Java FX
¿Qué puedo
Hacer?
Acelera tu carrera profesional con SAI
• Entrenamiento GRATIS vía web de JavaTM, SolarisTM y mas.
> Página de la iniciativa: http://ar.sun.com/training/sai/index.jsp
> Cursos en: http://learningconnection.sun.com
• Company name: SAI-Universidad de La Punta
• Company ID: CUS-0000116543
Acelera tu carrera profesional con SAI (II)
• Incrementá tu potencial de obtener salarios mayores con
certificaciones Sun
> Sun Certified Associate/Programmer for the Java 2 Platform SE
> Sun Certified Web Component Developer for Java EE
> Sun Certified Mobile Application Developer for Java ME
> Sun Certified System/Network Admin for Solaris Operating
System
• Exámenes de entrenamiento gratis
• Exámenes oficiales rebajados de U$S 120-200 a U$S 40
¿Preguntas?
Muchas Gracias!
Ezequiel Aranda
Sun Campus Ambassador - UNICEN
[email protected]
blogs.sun.com/argentina_ambassador