java 1.4 a java 6 - obcom · java se 6 (11 de diciembre de 2006) …viene de la diapositiva...

25
Java 1.4 a Java 6 Eduardo Ostertag Jenkins, Ph.D. OBCOM INGENIERIA S.A. (Chile) [email protected]

Upload: others

Post on 25-Sep-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Java 1.4 a Java 6 - OBCOM · Java SE 6 (11 de Diciembre de 2006) …viene de la diapositiva anterior… Actualiza JAXB (Java Architecture for XML Binding) a versión 2.0 + integración

Java 1.4 a Java 6

Eduardo Ostertag Jenkins, Ph.D.

OBCOM INGENIERIA S.A. (Chile)

[email protected]

Page 2: Java 1.4 a Java 6 - OBCOM · Java SE 6 (11 de Diciembre de 2006) …viene de la diapositiva anterior… Actualiza JAXB (Java Architecture for XML Binding) a versión 2.0 + integración

Breve historia de Java (*)

(*) http://en.wikipedia.org/wiki/Java_version_history

Page 3: Java 1.4 a Java 6 - OBCOM · Java SE 6 (11 de Diciembre de 2006) …viene de la diapositiva anterior… Actualiza JAXB (Java Architecture for XML Binding) a versión 2.0 + integración

JDK 1.0 (23 de Enero de 1996)

Nombre interno (codename) “Oak”

La primera versión estable fue JDK 1.0.2 que se llamó “Java 1”

Page 4: Java 1.4 a Java 6 - OBCOM · Java SE 6 (11 de Diciembre de 2006) …viene de la diapositiva anterior… Actualiza JAXB (Java Architecture for XML Binding) a versión 2.0 + integración

JDK 1.1 (19 de Febrero de 1997)

Reorganiza el modelo de eventos de AWT (Abstract Windowing Toolkit)

Agrega Clases Internas al lenguaje

JavaBeans (componentes reusables)

JDBC (Java Database Connectivity)

RMI (Remote Method Invocation)

Reflección sólo con instrospección (no era posible hacer modificaciones en ejecución)

Page 5: Java 1.4 a Java 6 - OBCOM · Java SE 6 (11 de Diciembre de 2006) …viene de la diapositiva anterior… Actualiza JAXB (Java Architecture for XML Binding) a versión 2.0 + integración

J2SE 1.2 (8 de Diciembre de 1998)

Nombre interno (codename) “Playgound”

Renombrado “Java 2”, y el JDK se cambió a J2SE para distinguirlo de J2EE y J2ME

Agrega “strictfp” (punto flotante estricto)

Agrega Swing (biblioteca gráfica)

Agrega JIT (Just-in-time compilation)

Java Plug-in (conexión con navegadores)

Java IDL para interoperar con CORBA

Agrega “Collections” (List, Queue, Set, …)

Page 6: Java 1.4 a Java 6 - OBCOM · Java SE 6 (11 de Diciembre de 2006) …viene de la diapositiva anterior… Actualiza JAXB (Java Architecture for XML Binding) a versión 2.0 + integración

J2SE 1.3 (8 de Mayo de 2000)

Nombre interno (codename) “Kestrel”

JVM “HotSpot” (JIT y optimizaciones)

Mejora compatibilidad RMI con CORBA

JavaSound (I/O dispositivos, MIDI)

Agrega JNDI (Java Naming and Directory Interface)

Agrega JPDA (arquitectura de depuración)

Generación de clases durante la ejecución (Synthetic Classes / Dynamic Proxies)

Page 7: Java 1.4 a Java 6 - OBCOM · Java SE 6 (11 de Diciembre de 2006) …viene de la diapositiva anterior… Actualiza JAXB (Java Architecture for XML Binding) a versión 2.0 + integración

J2SE 1.4 (6 de Febrero de 2002)

Nombre interno (codename) “Merlin”

Agrega “assert” al lenguaje

Agrega Expresiones Regulares

Agrega Encadenamiento de Excepciones

Agrega Protocolo Internet v6 (IPv6)

Agrega I/O sin bloqueo (java.nio)

Agrega “Logging” (registro de eventos)

…continua en la próxima diapositiva…

Page 8: Java 1.4 a Java 6 - OBCOM · Java SE 6 (11 de Diciembre de 2006) …viene de la diapositiva anterior… Actualiza JAXB (Java Architecture for XML Binding) a versión 2.0 + integración

J2SE 1.4 (6 de Febrero de 2002)

…viene de la diapositiva anterior…

Agrega I/O imágenes como JPEG, PNG

Integra parser XML y procesador XSLT

Extensiones a Seguridad y Criptografía

Agrega “Java Web Start” (JNLP)

Agrega Preferencias (java.util.prefs)

Page 9: Java 1.4 a Java 6 - OBCOM · Java SE 6 (11 de Diciembre de 2006) …viene de la diapositiva anterior… Actualiza JAXB (Java Architecture for XML Binding) a versión 2.0 + integración

J2SE 5.0 (30 de Septiembre de 2004)

Nombre interno (codename) “Tiger”

Agrega “Generics” (List<Empleado>)

Agrega “Annotations” (@Override, …)

Agrega “Boxing/Unboxing” (Integer i = 9;)

Agrega “Enumerations” (enum)

Agrega “for each” (Array, Iterable)

Agrega “Varargs” (parámetros variables)

…continua en la próxima diapositiva…

Page 10: Java 1.4 a Java 6 - OBCOM · Java SE 6 (11 de Diciembre de 2006) …viene de la diapositiva anterior… Actualiza JAXB (Java Architecture for XML Binding) a versión 2.0 + integración

J2SE 5.0 (30 de Septiembre de 2004)

…viene de la diapositiva anterior…

Mejora modelo de memoria JVM (hebras)

Agrega “import static …”

Generación automática “stub” para RMI

Agrega “synth” (skinnable LAF) a Swing

Agrega “Concurrent” (múltiples hebras)

Agrega “Scanner” (parse streams/buffers)

Último soporte a Windows 9x (95/98/ME)

Page 11: Java 1.4 a Java 6 - OBCOM · Java SE 6 (11 de Diciembre de 2006) …viene de la diapositiva anterior… Actualiza JAXB (Java Architecture for XML Binding) a versión 2.0 + integración

Java SE 6 (11 de Diciembre de 2006)

Nombre interno (codename) “Mustang”

No soporta Windows 9x (95/98/ME)

Soporta “scripting” + “JavaScript Rhino”

Mejoras importantes en rendimiento

Soporte de Servicios Web

Soporte de JDBC 4.0

Agrega API para invocar compilador Java

…continua en la próxima diapositiva…

Page 12: Java 1.4 a Java 6 - OBCOM · Java SE 6 (11 de Diciembre de 2006) …viene de la diapositiva anterior… Actualiza JAXB (Java Architecture for XML Binding) a versión 2.0 + integración

Java SE 6 (11 de Diciembre de 2006)

…viene de la diapositiva anterior…

Actualiza JAXB (Java Architecture for XML Binding) a versión 2.0 + integración con StAX (Streaming API for XML)

Agrega “Pluggable Annotations”

Muchas mejoras GUI (SwingWorker, orden y filtro de tablas, doble-buffering, …)

Muchas mejoras en JVM (sincronización, compilador, GC, velocidad start-up, …)

Page 13: Java 1.4 a Java 6 - OBCOM · Java SE 6 (11 de Diciembre de 2006) …viene de la diapositiva anterior… Actualiza JAXB (Java Architecture for XML Binding) a versión 2.0 + integración

Java SE 7 (7 de Julio de 2011)

Nombre interno (codename) “Dolphin”

JVM soporta lenguajes dinámicos (PHP,…)

Punteros comprimidos de 64-bits

Cambios pequeños al lenguaje:

Instrucción “switch” ahora permite “String”

Instrucción “try” con “dispose” automático

Mejoran inferencia de tipos genéricos

Simplifican declaración de “Varargs”

…continua en la próxima diapositiva…

Page 14: Java 1.4 a Java 6 - OBCOM · Java SE 6 (11 de Diciembre de 2006) …viene de la diapositiva anterior… Actualiza JAXB (Java Architecture for XML Binding) a versión 2.0 + integración

Java SE 7 (7 de Julio de 2011)

…viene de la diapositiva anterior…

Cambios pequeños al lenguaje:

Literales de valores enteros binarios (0b1011)

“_” en literales de valores numéricos (1_234)

“catch” de múltiples excepciones

Mejoras a “Concurrency”

Mejoras a I/O (java.nio.file, attribute)

Agrega “Elliptic Curve Cryptography”

…continua en la próxima diapositiva…

Page 15: Java 1.4 a Java 6 - OBCOM · Java SE 6 (11 de Diciembre de 2006) …viene de la diapositiva anterior… Actualiza JAXB (Java Architecture for XML Binding) a versión 2.0 + integración

Java SE 7 (7 de Julio de 2011)

…viene de la diapositiva anterior…

Agrega XRender a Java 2D (GPUs)

Nuevas APIs para manejo gráfico

Soporte de nuevos protocolos (Stream Control Transmission Protocol, Sockets Direct Protocol)

Actualizaciones a XML y Unicode

Page 16: Java 1.4 a Java 6 - OBCOM · Java SE 6 (11 de Diciembre de 2006) …viene de la diapositiva anterior… Actualiza JAXB (Java Architecture for XML Binding) a versión 2.0 + integración

Avances de Java 1.4 a Java 6

Page 17: Java 1.4 a Java 6 - OBCOM · Java SE 6 (11 de Diciembre de 2006) …viene de la diapositiva anterior… Actualiza JAXB (Java Architecture for XML Binding) a versión 2.0 + integración

Tipos genéricos (desde Java 5.0)

Java 1.4

List v = new ArrayList();

v.add("test");

String s = (String) v.get(0); // OK

Integer i = (Integer) v.get(0); // Error de ejecución

Java 5.0

List<String> v = new ArrayList<String>();

v.add("test");

String s = v.get(0); // OK

Integer i = v.get(0); // Error de compilación

Page 18: Java 1.4 a Java 6 - OBCOM · Java SE 6 (11 de Diciembre de 2006) …viene de la diapositiva anterior… Actualiza JAXB (Java Architecture for XML Binding) a versión 2.0 + integración

Anotaciones (desde Java 5.0)

Java 1.4

/**

* @ejbgen:session type="Stateless" default-transaction="Required"

* @ejbgen:jndi-name remote="cl/obcom/emp/EmpRemote"

*/

public class EmpBean implements SessionBean {…}

Java 5.0

@Stateless

@TransactionAttribute(TransactionAttributeType.REQUIRED)

public class EmpBean implements EmpRemote {…}

Page 19: Java 1.4 a Java 6 - OBCOM · Java SE 6 (11 de Diciembre de 2006) …viene de la diapositiva anterior… Actualiza JAXB (Java Architecture for XML Binding) a versión 2.0 + integración

Auto Boxing/Unboxing (desde Java 5.0)

Java 1.4

Integer i = new Integer(9); // Encajonar “int” en “Integer”

int k = i.intValue(); // Desencajonar “int” de “Integer”

Java 5.0

Integer i = 9; // Auto Boxing (encajonar)

int k = i; // Auto Unboxing (desencajonar)

Page 20: Java 1.4 a Java 6 - OBCOM · Java SE 6 (11 de Diciembre de 2006) …viene de la diapositiva anterior… Actualiza JAXB (Java Architecture for XML Binding) a versión 2.0 + integración

Enumeraciones (desde Java 5.0)

Java 1.4

public static final int CHILE = 1; // Definimos “int” CHILE

public static final int PERU = 2; // Definimos “int” PERU

public void metodo(int pais) {…} // Recibe cualquier “int”

Java 5.0

public enum Pais { CHILE, PERU, … }; // Enumeración “Pais”

public void metodo(Pais pais) {…} // Sólo recibe un “Pais”

Page 21: Java 1.4 a Java 6 - OBCOM · Java SE 6 (11 de Diciembre de 2006) …viene de la diapositiva anterior… Actualiza JAXB (Java Architecture for XML Binding) a versión 2.0 + integración

Iteración “for each” (desde Java 5.0)

Java 1.4

public void cancelarTareas(Collection tareas)

{

for (Iterator iter = tareas.iterator(); iter.hasNext();)

((Tarea) iter.next()).cancelar();

}

Java 5.0

public void cancelarTareas(Collection<Tarea> tareas)

{

for (Tarea tarea : tareas)

tarea.cancelar();

}

Page 22: Java 1.4 a Java 6 - OBCOM · Java SE 6 (11 de Diciembre de 2006) …viene de la diapositiva anterior… Actualiza JAXB (Java Architecture for XML Binding) a versión 2.0 + integración

Parámetros variables (desde Java 5.0)

Java 1.4

public void agregar(List lista, String e1, String e2)

{

lista.add(e1); // Sólo se pueden agregar

lista.add(e2); // 2 elementos a la lista

}

Java 5.0

public void agregar(List<String> lista, String … elementos)

{

for (String e : elementos) // “elementos” es un array

lista.add(e); // cuyo largo es variable

}

Page 23: Java 1.4 a Java 6 - OBCOM · Java SE 6 (11 de Diciembre de 2006) …viene de la diapositiva anterior… Actualiza JAXB (Java Architecture for XML Binding) a versión 2.0 + integración

Import static (desde Java 5.0)

Java 1.4

import java.lang.Math;

System.out.println(“Circunferencia = " + (Math.PI * 5));

System.out.println(“Area = " + (Math.PI * Math.pow(2.5, 2)));

Java 5.0

import static java.lang.Math.PI;

import static java.lang.Math.pow;

System.out.println(“Circunferencia = " + (PI * 5));

System.out.println(“Area = " + (PI * pow(2.5, 2)));

Page 24: Java 1.4 a Java 6 - OBCOM · Java SE 6 (11 de Diciembre de 2006) …viene de la diapositiva anterior… Actualiza JAXB (Java Architecture for XML Binding) a versión 2.0 + integración

Servicios Web (desde Java 6)

Java 6

import javax.jws.*;

@WebService(name=“HelloWS",targetNamespace="http://ws.obcom.cl/")

public class ServicioAmigable

{

@WebMethod(operationName="hello")

public String hola(@WebParam(name="name") String nombre)

{

return “¡¡Hola " + nombre + “!!";

}

}

Page 25: Java 1.4 a Java 6 - OBCOM · Java SE 6 (11 de Diciembre de 2006) …viene de la diapositiva anterior… Actualiza JAXB (Java Architecture for XML Binding) a versión 2.0 + integración

Muchas gracias