Java 1.4 a Java 6
Eduardo Ostertag Jenkins, Ph.D.
OBCOM INGENIERIA S.A. (Chile)
Eduardo.Ostertag@obcom.cl
Breve historia de Java (*)

(*) http://en.wikipedia.org/wiki/Java_version_history
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ó ...
JDK 1.1 (19 de Febrero de 1997)








Reorganiza el modelo de eventos de AWT
(Abstract Windowing Toolkit)
Agrega C...
J2SE 1.2 (8 de Diciembre de 1998)











Nombre interno (codename) “Playgound”
Renombrado “Java 2”, y el JDK s...
J2SE 1.3 (8 de Mayo de 2000)










Nombre interno (codename) “Kestrel”
JVM “HotSpot” (JIT y optimizaciones)
Mej...
J2SE 1.4 (6 de Febrero de 2002)



Nombre interno (codename) “Merlin”
Agrega “assert” al lenguaje
Agrega Expresiones Regu...
J2SE 1.4 (6 de Febrero de 2002)








…viene de la diapositiva anterior…
Agrega I/O imágenes como JPEG, PNG
Integr...
J2SE 5.0 (30 de Septiembre de 2004)



Nombre interno (codename) “Tiger”
Agrega “Generics” (List<Empleado>)
Agrega “Annot...
J2SE 5.0 (30 de Septiembre de 2004)











…viene de la diapositiva anterior…
Mejora modelo de memoria JVM (he...
Java SE 6 (11 de Diciembre de 2006)



Nombre interno (codename) “Mustang”
No soporta Windows 9x (95/98/ME)
Soporta “scri...
Java SE 6 (11 de Diciembre de 2006)









…viene de la diapositiva anterior…
Actualiza JAXB (Java Architecture for...
Java SE 7 (7 de Julio de 2011)






Nombre interno (codename) “Dolphin”
JVM soporta lenguajes dinámicos (PHP,…)
Punte...
Java SE 7 (7 de Julio de 2011)


…viene de la diapositiva anterior…



Cambios pequeños al lenguaje:




Literales de...
Java SE 7 (7 de Julio de 2011)








…viene de la diapositiva anterior…
Agrega XRender a Java 2D (GPUs)
Nuevas APIs...
Avances de Java 1.4 a Java 6
Tipos genéricos (desde Java 5.0)
Java 1.4
List v = new ArrayList();
v.add("test");
String s = (String) v.get(0);

// OK

I...
Anotaciones (desde Java 5.0)
Java 1.4
/**
* @ejbgen:session type="Stateless" default-transaction="Required"
* @ejbgen:jndi...
Auto Boxing/Unboxing (desde Java 5.0)
Java 1.4
Integer i = new Integer(9);

// Encajonar “int” en “Integer”

…
int k = i.i...
Enumeraciones (desde Java 5.0)
Java 1.4
public static final int CHILE = 1;

// Definimos “int” CHILE

public static final ...
Iteración “for each” (desde Java 5.0)
Java 1.4
public void cancelarTareas(Collection tareas)

{
for (Iterator iter = tarea...
Parámetros variables (desde Java 5.0)
Java 1.4
public void agregar(List lista, String e1, String e2)

{
lista.add(e1);

//...
Import static (desde Java 5.0)
Java 1.4
import java.lang.Math;

…
System.out.println(“Circunferencia = " + (Math.PI * 5));...
Servicios Web (desde Java 6)
Java 6

import javax.jws.*;
…
@WebService(name=“HelloWS",targetNamespace="http://ws.obcom.cl/...
Muchas gracias
Próxima SlideShare
Cargando en…5
×

Java 1.4 to java 6

644 visualizaciones

Publicado el

Publicado en: Educación
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
644
En SlideShare
0
De insertados
0
Número de insertados
2
Acciones
Compartido
0
Descargas
6
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Java 1.4 to java 6

  1. 1. Java 1.4 a Java 6 Eduardo Ostertag Jenkins, Ph.D. OBCOM INGENIERIA S.A. (Chile) Eduardo.Ostertag@obcom.cl
  2. 2. Breve historia de Java (*) (*) http://en.wikipedia.org/wiki/Java_version_history
  3. 3. 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”
  4. 4. 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)
  5. 5. 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, …)
  6. 6. 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)
  7. 7. 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…      
  8. 8. 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)
  9. 9. 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…      
  10. 10. 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)
  11. 11. 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…      
  12. 12. 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, …)
  13. 13. 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…
  14. 14. 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…  
  15. 15. 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
  16. 16. Avances de Java 1.4 a Java 6
  17. 17. 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
  18. 18. 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 {…}
  19. 19. 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)
  20. 20. 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”
  21. 21. 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(); }
  22. 22. 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) lista.add(e); } // “elementos” es un array // cuyo largo es variable
  23. 23. 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)));
  24. 24. 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 + “!!"; } }
  25. 25. Muchas gracias

×