SlideShare ist ein Scribd-Unternehmen logo
1 von 39
Mejoras Java 5-7 (Java SE7)

              Mejoras más importantes
                   •Mejoras menores
                   •Genericidad
                   •Bucle for-each
                   •Boxing
                   •Enumeraciones
                   •Parámetros variables
                   •Importación estática
                   •Metadatos
                   •Mejoras específicas del JDK 1.6
                   •Más información

Programación III                        Tema 5 - Java 6
Mejoras menores Java 6
           – Mejoras en el garbage collector
           – Nueva clase StringBuilder (buffer de
             caracteres)
           – Mejora significativa de Java 2D, gestión de
             imágenes y OpenGL.
           – Mejora de gestión de imágenes jpeg
           – Mejoras en algunas clases de la API (lang, util,
             comunicaciones, seguridad y criptografía,
             sonido...)
           – Opciones adicionales de compilación, javadoc...

Programación III                 Tema 5 - Java 6
Mejoras menores Java SE7
           – Literales binarios (0b0010...)
           – Subrayados entre dígitos en literales numéricos
             (1234_5678_9012_3456L) (no vale 3_.14)
                   • Como si no estuvieran, para mejorar legibilidad
           – Strings en sentencias switch (String.equals)
           – Mejoras en gestión del heap
           – Más de una excepción en cada catch
                   catch (IOException|SQLException e) {
           – try con recursos
                   try (java.io.BufferedWriter writer = ...) {
                    // Hace un close al final (sin poner finally)
                   } // Deben implementar java.lang.AutoCloseable
Programación III                         Tema 5 - Java 6
Genericidad (generics) (1/3)

   • Problema
           – Al trabajar con contenedores (Collection)
             estamos obligados a hacer casting continuo:
                     static void quitaVacios(Collection c) {
                         for (Iterator i = c.iterator();
                              i.hasNext(); )
                           if (((String) i.next()).length() == 0)
                              i.remove();
                     }
           – Esto es incómodo y también inseguro (puede
             generar un error en ejecución)


Programación III                     Tema 5 - Java 6
Genericidad (2/3)
           – La genericidad permite informar al compilador
             del tipo de la colección, de modo que puede ser
             chequeado en compilación, y evita el cast:
                   static void quitaV(Collection<String> c) {
                       for (Iterator<String> i = c.iterator();
                            i.hasNext(); )
                         if ((i.next()).length() == 0)
                            i.remove();
                   }
           – El uso de la genericidad obliga a que todos los
             elementos de la colección sean ahora de la clase
             indicada entre < y > (String en el ejemplo)
           – Similar al “template” de C++

Programación III                   Tema 5 - Java 6
Genericidad (3/3)
           – Las colecciones (las vemos después) no son el
             único uso de la genericidad, se pueden usar en
             otros puntos (aunque programar nuevas clases
             genéricas es complejo)
           – La genericidad en Java 1.5 afecta a todas las
             clases contenedoras, como List, Vector, Tree...
           – Una clase puede ser genérica sobre un tipo...
                   • Vector<E>    (ej. Vector<Integer>)
                   • ArrayList<E>    (ej. ArrayList<Persona>)
           – O sobre varios...
                   • HashMap<K,V>   (ej.
                     HashMap<Integer,Persona>)
Programación III                   Tema 5 - Java 6
Mejoras Java 7 Genericidad

   • Inferencia de tipos genéricos
             Map<String, List<String>> myMap
              = new HashMap<String, List<String>>();
           // En Java SE 7 se puede poner el "diamond" <>:
             Map<String, List<String>> myMap = new
             HashMap<>();




Programación III                 Tema 5 - Java 6
Bucle for-each (1/2)
           – Relacionado con las colecciones, se permite un
             nuevo tipo de bucle. Para evitar la pesada
             construcción:
                   for (Iterator i = palos.iterator();
                        i.hasNext();) {
                       Palo palo = (Palo) i.next();
                      ...
                   }


           – Se puede utilizar un nuevo tipo de for:
                   for (Palo palo: palos) {
                      ...
                   }

Programación III                   Tema 5 - Java 6
Bucle for-each (2/2)
           – El símbolo “:” se lee “en”
           – Pueden anidarse bucles sin problema:
                   for (Palo p : listaPalos)
                      for (Numero n : listaNumeros)
                         baraja.add( new Carta(p,n) );
           – Y la construcción es aplicable a arrays:
                   int sumaArray(int[] a) {
                       int res = 0;
                       for (int i : a)
                           res += i;
                       return res;
                   }
           – En general, for-each puede utilizarse siempre que no se
             modifica la colección según se recorre (para ese caso
             hay que volver al esquema tradicional)

Programación III                      Tema 5 - Java 6
“Boxing”
           – Donde se espere un objeto no se puede poner un
             valor primitivo (p. ej. lista de enteros)
           – Solución: wrappers (Integer en vez de int)
           – Problema: código muy “sucio”:
                   LinkedList l = new LinkedList();
                   l.add( new Integer(i) );
                   ...
                   int j = ((Integer) l.get(0)).intValue();
           – Java 1.5 incorpora autoboxing (convertir
             primitivo al wrapper) y unboxing (convertir el
             wrapper a primitivo) de forma transparente:
                   l.add( i );
                   ...
                   int j = l.get(0);
Programación III                   Tema 5 - Java 6
Enumeraciones (1/3)
           – Java 1.4 no permite enumeraciones, lo que obliga a
             utilizar constantes:
                      public   static   final   int     PRIMAVERA   =   0;
                      public   static   final   int     VERANO      =   1;
                      public   static   final   int     OTOÑO       =   2;
                      public   static   final   int     INVIERNO    =   3;
           – Esto presenta múltiples problemas:
                   • No hay un tipo diferenciado (podría pasarse cualquier otro
                     entero por error)
                   • No hay nombres diferenciados (podrían confundirse con otros
                     nombres)
                   • No hay información (cada valor es un número, sin relación con
                     su “significado”)
           – Los lenguajes modernos mejoran esto con las
             enumeraciones, y Java las incorpora en su versión 1.5.
Programación III                            Tema 5 - Java 6
Enumeraciones (2/3)
           – En Java 1.5 esta enumeración se haría:
                      enum Estacion { PRIMAVERA, VERANO, OTOÑO,
                       INVIERNO }
           – Esta declaración define una NUEVA CLASE
                   • Puede redefinir métodos de Object
                   • Puede añadir métodos propios
                   • Se visualiza como el string del nombre, no como un
                     entero
                   • Es Comparable y Serializable...
           – Veamos un ejemplo



Programación III                        Tema 5 - Java 6
Enumeraciones (3/3)
                   public class Carta {
                       public enum Rango { DOS, TRES, CUATRO, CINCO, SEIS, SIETE,
                                           SOTA, CABALLO, REY, AS }
                       public enum Palo { OROS, COPAS, ESPADAS, BASTOS }
                       Rango rango;
                       Palo palo;
                       public Carta(Rango r, Palo p) {
                           rango = r;
                           palo = p;
                       }

                       public String toString() { return rango + " de " + palo; }

                       public static List<Carta> baraja = new ArrayList<Carta>();

                       // Inicialización ...
                       public void static main (String s[]) {
                           for (Palo p : Palo.values())
                               for (Rango r : Rango.values())
                                   baraja.add(new Carta(r,p));
                       }
                   }




Programación III                              Tema 5 - Java 6
Parámetros variables
                          (varargs)
           – Java 1.4 no permite número de parámetros variable (lo que obliga a
             no permitir construcciones como el println de C)
           – Se puede simular pasando varios objetos dentro de un único array
             de objetos
           – Java 1.5 permite indicar parámetros múltiples con puntos susp.:
                   public static int suma( Integer... listaEnts ) {
                      int sum = 0;
                      for (Integer i : listaEnts) {
                         sum += i; //combinado con unboxing
                      }
                      return sum;
                   }
           – Se comporta como un array de parámetros
           – Con lo que podríamos hacer
                   int i = Arit.suma( 1, 2, 3 );   // autoboxing
                   int j = Arit.suma( 5, 10, 15, 20, 25, 30 );
                   ...
           – Se incorpora un nuevo método printf

Programación III                        Tema 5 - Java 6
Importación estática
           – Los nombres estáticos (las antiguas variables y
             funciones “globales”) obligan a abusar de los
             prefijos de nombres de clase. Por ejemplo:
                   import java.lang.Math;
                   ...
                   double r = Math.cos(Math.PI * alfa);
           – Java 1.5 facilita este proceso permitiendo
             importar también nombres de atributos y
             métodos estáticos, para evitar el prefijo de
             clase:
                   import static java.lang.Math.*;
                   // podría ser uno a uno:
                   //    import static java.lang.Math.PI;
                   ...
                   double r = cos(PI * alfa);
Programación III                   Tema 5 - Java 6
Metadatos (Anotaciones)
           – Java, siguiendo la idea de .NET de MS, incorpora
             en la versión 1.5 anotaciones
           – Las anotaciones permiten añadir metadatos en el
             propio programa, no como comentarios
                   • Veremos alguna más adelante




Programación III                       Tema 5 - Java 6
Mejoras del JDK 1.6
   • Mayor facilidad en el desarrollo de Servicios
     Web XML.
   • Integración sencilla con otros lenguajes de
     scripting como JavaScript, Python y Ruby.
   • Mejora en el acceso a bases de datos
     mediante JDBC4.0 así como la API Java DB.
   • Mejoras en el desarrollo de aplicaciones de
     escritorio (ventanas) mediante componentes
     nuevos, gestores de hilos de interfaz, filtros
     de ordenación y actualización, etc.

Programación III             Tema 5 - Java 6
Mejoras del JDK 1.6
   • Mayores utilidades para perfilar el rendimiento de
     una aplicación y diagnóstico.
   • Mayor acceso a funcionalidades del compilador
     para compilación de código objeto bajo demanda
     o para desarrollar herramientas para la plataforma.
   • Mejor gestión de anotaciones así como posibilidad
     de ejecutar los procesadores necesarios según las
     mismas.
   • Mejoras en la distribución de aplicaciones de
     escritorio (ventana) mediante una mejor
     integración con el sistema, plug-ins, webstart, etc.

Programación III             Tema 5 - Java 6
Mejoras del JDK 1.6

   • Más y mejores estructuras de seguridad en la
     plataforma tanto para el desarrollo usando
     tecnologías de autentificación como en la
     administración de seguridad de la aplicación.
   • Al haberse desarrollado multitud de
     programas y líneas de testeo, la plataforma
     Java cada vez está resultando más estable,
     fiable y robusta. Solución a problemas del
     pasado, bugs, problemas de compatibilidad
     hacia atrás, etc…
Programación III             Tema 5 - Java 6
Colecciones

   • Colecciones = contenedores
           – Objetos que sirven como grupo de objetos
           – Se usan para almacenar, recoger, manipular
             y comunicar datos
           – Suelen representar grupos naturales (carpeta de
             documentos, un directorio de contactos...)
           – Son imprescindibles en todo lenguaje
                   • La colección más básica es el array (y el fichero en
                     memoria secundaria)
                   • En Java 1.2 estaban también Vector y Hashtable
                   • En Java 1.5 se incorpora todo el framework
                     Collections
Programación III                          Tema 5 - Java 6
Framework Java
                  Collections
   • Es una arquitectura unificada para manejar
     contenedores en Java (desde la 1.5)
           – Interfaces (representaciones abstractas)
           – Implementaciones (clases instanciables)
           – Algoritmos (búsqueda, ordenación...)
   • Estilo STL de C++ (más sencillo)
   • De amplio espectro
           – Se pueden usar en muchos casos concretos
           – Modo seguro y contrastado de usar EEDD
           – Aunque hay que conocerlas bien!
Programación III                Tema 5 - Java 6
JC: Interfaces

   • Semántica de agrupación
           – Diferentes usos
           – Interfaces abstractos
           – Forman una jerarquía
   • Todas las colecciones son genéricas
           – Los tipos se controlan en compilación
           – Pero también pueden hacerse polimórficas
             conteniendo a su vez clases padre o interfaces
           – Para simplificar, las variantes de implem. no
             están incluidas en los interfaces

Programación III                 Tema 5 - Java 6
JC: Variantes en Interfaces

   • Las variantes de implementación son 3:
                   • inmutables, tamaño fijo, append-only
   • JC decide meter las diferencias como
     métodos opcionales
           – "optional" indicado en la documentación
           – Cada clase puede o no soportarlos
           – Si se llaman y no lo están, excepción
             UnsupportedOperationException



Programación III                        Tema 5 - Java 6
JC: Descripción de los Interfaces

   • Collection: Agrupación de elementos
           – Set (conjunto): Colección sin duplicados
                   • SortedSet: Ordenado por valor (comparación)
           – List (lista, secuencia): colección ordenada por
             posición (estilo array). Puede tener duplicados
           – Queue (cola): Almacén ordenado de elementos
             hasta su proceso
   • Map: Agrupación de emparejamientos
     clave-elemento (sin duplicados)
           – SortedMap: Ordenado por clave

Programación III                        Tema 5 - Java 6
JC: Ordenación

   • Algunos tipos son ordenados y otros
     permiten ordenar:
           List l = ...             Collections.sort( l );
           – Imprescindible: implementar Comparable<T>
                   public int compareTo( T o );
           – Hay clases básicas comparables:
                   • Boolean, Byte, Character
                   • Long, Integer, Short, Double, Float
                   • BigInteger, BigDecimal
                   • String, Date, File ...
           – Y podemos definir las nuestras. Ejemplo:
Programación III                         Tema 5 - Java 6
JC: Ejemplo de Comparable
   import java.util.*;
   public class Nombre implements Comparable<Nombre> {
       private final String nombre, apellidos;
       public Nombre(String nombre, String apellidos) {
           if (nombre == null || apellidos == null)
               throw new NullPointerException();
           this.nombre = nombre;
           this.apellidos = apellidos;
       }
       public String nombre() { return nombre; }
       public String apellidos() { return apellidos; }
       public boolean equals(Object o) {
           if (!(o instanceof Nombre)) return false;
           Nombre n = (Nombre) o;
           return n.nombre.equals(nombre) &&
                  n.apellidos.equals(apellidos);
       }
Programación III                Tema 5 - Java 6
Ejemplo de Comparable (2)
             public int hashCode() {
                 // objetos iguales (equals) deben tener hash iguales
                 return 31*nombre.hashCode() + apellidos.hashCode();
             }

             public String toString() {
                 return nombre + " " + apellidos;
             }

             public int compareTo(Nombre n) {
                 int ultimaCmp = apellidos.compareTo(n.apellidos);
                 return (ultimaCmp != 0 ? ultimaCmp :
                         nombre.compareTo(n.nombre));
             }
   }


Programación III                     Tema 5 - Java 6
¿Cómo se ordena?
                      Algoritmo
   Nombre n1, n2, n3, n4, n5;
   // Uso 1: explícita (ALGORITMO) de Collections
          ArrayList<Nombre> ln = new ArrayList<Nombre>();
          ln.add( n1 = new Nombre( "Buzz", "Lightyear" ));
          ln.add( n2 = new Nombre( "Woody", "Allen" ));
          ln.add( n3 = new Nombre( "Tim", "Burton" ));
          ln.add( n4 = new Nombre( "Richard", "Marx" ));
          ln.add( n5 = new Nombre( "Groucho", "Marx" ));
          Collections.sort( ln );
          System.out.println( ln );

   [Woody Allen, Tim Burton, Buzz Lightyear, Groucho Marx,
      Richard Marx]




Programación III               Tema 5 - Java 6
¿Cómo se ordena?
                             Estructura
                   // Uso 2 de ordenación: en estructura ordenada
                   TreeSet<Nombre> sn = new TreeSet<Nombre>();
                   sn.add( n1 );
                   sn.add( n2 );
                   sn.add( n3 );
                   sn.add( n4 );
                   sn.add( n5 );
                   System.out.println( sn );

   [Woody Allen, Tim Burton, Buzz Lightyear, Groucho Marx,
      Richard Marx]




Programación III                        Tema 5 - Java 6
¿Y más de un orden?
                Comparator
   • Tenemos un problema si necesitamos más de
     un orden (sólo uno en Comparable)
           – Solución: Comparator
                   static final Comparator<Nombre> ORDEN_DE_NOMBRE =
                    new Comparator<Nombre>() {
                          public int compare(Nombre n1, Nombre n2) {
                                 return n1.nombre.compareTo(n2.nombre);
                          }
                   };
   (...)
                   Collections.sort( ln, ORDEN_DE_NOMBRE );
                   System.out.println( ln );

   [Buzz Lightyear, Groucho Marx, Richard Marx, Tim Burton,
      Woody Allen]
Programación III                         Tema 5 - Java 6
JC: Implementaciones

   • Las clases que permiten hacer todo esto son:




           – Estas son las de propósito general
           – Algunos interfaces tienen varias
             implementaciones con EEDD distintas (set, map)
Programación III                Tema 5 - Java 6
JC: Implementaciones
                     típicas
   • Lo habitual será usar:
           – Set: HashSet
                   • SortedSet: TreeSet
           – List: ArrayList
           – Map: HashMap
                   • SortedMap: TreeMap
           – Queue: LinkedList (FIFO)
                   • Con prioridad (ord. por valores): PriorityQueue
   • No están sincronizadas (ver threads)
           – Para la mayor parte de usos no hace falta

Programación III                          Tema 5 - Java 6
JC: Otras implementaciones

   • JC funciona con wrappers para cambios
           – Se crea una segunda colección que "envuelve" a
             la original con otras características
   • Sincronización (threads)
           List<Nombre> ln = Collections.synchronizedList(
                    new ArrayList<Nombre>() );

   • No modificable (los objetos no cambian)
           List<Nombre> ln = Collections.unmodifiableList(
                    new ArrayList<Nombre>() );

   • Otras especializadas

Programación III                 Tema 5 - Java 6
JC: Otras utilidades

   • Vista de un array como una List:
           Nombre[] vNoms = new Nombre[100];
           (...)
           List<Nombre> lNoms = Arrays.asList( vNoms );
           – No permite modificaciones (es sólo una vista)
   • Constantes vacías
           – Si se necesitan para paso de valor inicial vacío
                   • Collections.emptySet()
                   • Collections.emptyList()
                   • Collections.emptyMap()


Programación III                        Tema 5 - Java 6
JC: Algoritmos

   • Todos están en la clase Collections
           – Ordenar: sort( list ), sort( list, Comparator )
           – Desordenar aleatoriamente: shuffle( list )
           – Manipular datos:
                   • Invertir posición: reverse( list )
                   • Rellenar (sustituir) de un valor: fill( list )
                   • Copiar de una lista a otra: copy( list1, list2 )
                   • Intercambiar elementos: swap( list, ind1, ind2 )
                   • Añadir varios elementos: addAll ( list, elto... )



Programación III                          Tema 5 - Java 6
JC: Algoritmos (2)
           – Buscar datos
                   • Búsqueda en lista ordenada: binarySearch( list, elem
                     )
                   • Búsqueda por orden específico:
                     binarySearch( list, elem, comparator )
                   • La búsqueda devuelve dos informaciones en una:
                      – Valor positivo o 0 si se encuentra elemento: su posición
                      – Valor negativo si no se encuentra: el punto donde se
                        insertaría = (-pos-1)
           – Composición:
                   • Contar elementos: frequency( colección, elem )
                   • Comprobar que no hay elementos comunes:
                     disjoint( colección1, colección2 )
           – Buscar valores extremos: min y max
Programación III                            Tema 5 - Java 6
JC: Mejoras en Java 6

   • Nuevos interfaces:
           – Deque - cola de doble dirección
           – BlockingDeque - una Deque concurrente que
             espera a la cola no vacía o no llena
           – NavigableSet - un SortedSet mejorado con
             métodos de navegación que buscan resultados
             cercanos, y permiten recorrer en las dos
             direcciones.
           – NavigableMap - un SortedMap mejorado del
             mismo modo.
           – ConcurrentNavigableMap .
Programación III               Tema 5 - Java 6
JC: Mejoras en Java 6 (2)

   • Nuevas implementaciones:
           –       ArrayDeque - implementación de Deque.
           –       LinkedBlockingDeque - de BlockingDeque.
           –       ConcurrentSkipListSet - de NavigableSet.
           –       ConcurrentSkipListMap - de
                   ConcurrentNavigableMap.

   • Mejoras en clases existentes:
           – LinkedList - implementa Deque.
           – TreeSet - implementa NavigableSet.
           – TreeMap - implementa NavigableMap.
   • Utilidad de Arrays copiar/truncar: copyOf
Programación III                             Tema 5 - Java 6
Otras mejoras importantes
                 de Java 7
   • Nueva y mejorada E/S (NIO 2.0)
           – Path mejorando a File
           – Globs además de Patterns
           – Mejoras de trabajo directo con ficheros
   • Gestión de ZIP y JAR como sists. de ficheros
   • Mejoras para la generación de aplicaciones
     de internet (RIA, Rich Internet Applications)
   • Integración de JavaFX
           – Una plataforma nueva y avanzada para interfaz
             de usuario
Programación III                 Tema 5 - Java 6

Weitere ähnliche Inhalte

Was ist angesagt?

Unidad5 estructuras basicas de datos en lenguaje java
Unidad5 estructuras basicas de datos en lenguaje javaUnidad5 estructuras basicas de datos en lenguaje java
Unidad5 estructuras basicas de datos en lenguaje javaGente de Alicante
 
Utp sirn_sl8 sistemas difusos i 2013-3
 Utp sirn_sl8 sistemas difusos i 2013-3 Utp sirn_sl8 sistemas difusos i 2013-3
Utp sirn_sl8 sistemas difusos i 2013-3jcbenitezp
 
Java fundamentos 15 consejos prácticos - ITLA Tech Day 2018
Java fundamentos   15 consejos prácticos - ITLA Tech Day 2018Java fundamentos   15 consejos prácticos - ITLA Tech Day 2018
Java fundamentos 15 consejos prácticos - ITLA Tech Day 2018Eudris Cabrera
 
Utp sirn_2014-2 lab3
 Utp sirn_2014-2 lab3 Utp sirn_2014-2 lab3
Utp sirn_2014-2 lab3jcbp_peru
 
Utp ia_2014-2 lab3
 Utp ia_2014-2 lab3 Utp ia_2014-2 lab3
Utp ia_2014-2 lab3jcbp_peru
 
Jyoc java-cap10 clases complementarias y enumerados
Jyoc java-cap10 clases complementarias y enumeradosJyoc java-cap10 clases complementarias y enumerados
Jyoc java-cap10 clases complementarias y enumeradosJyoc X
 
Gustavo 07 redes neuronales matlab
Gustavo 07   redes neuronales matlabGustavo 07   redes neuronales matlab
Gustavo 07 redes neuronales matlabWige Marr
 
KERAS Y TENSORFLOW
KERAS Y TENSORFLOWKERAS Y TENSORFLOW
KERAS Y TENSORFLOWjose vasante
 
Utp sirn_2015-1 lab3
 Utp sirn_2015-1 lab3 Utp sirn_2015-1 lab3
Utp sirn_2015-1 lab3jcbp_peru
 
Programación en Prolog para Inteligencia Artificial
Programación en Prolog para Inteligencia ArtificialProgramación en Prolog para Inteligencia Artificial
Programación en Prolog para Inteligencia ArtificialEgdares Futch H.
 
Java clases dictadas
Java clases dictadasJava clases dictadas
Java clases dictadasGaloGabriel
 
Utp ia_sl2 patrones de aprendizaje de las rna
 Utp ia_sl2 patrones de aprendizaje de las rna Utp ia_sl2 patrones de aprendizaje de las rna
Utp ia_sl2 patrones de aprendizaje de las rnajcbenitezp
 

Was ist angesagt? (20)

Introducción a scala
Introducción a scalaIntroducción a scala
Introducción a scala
 
Clase4_Python-CTIC
Clase4_Python-CTICClase4_Python-CTIC
Clase4_Python-CTIC
 
Unidad5 estructuras basicas de datos en lenguaje java
Unidad5 estructuras basicas de datos en lenguaje javaUnidad5 estructuras basicas de datos en lenguaje java
Unidad5 estructuras basicas de datos en lenguaje java
 
Introduccion lenguaje java
Introduccion lenguaje javaIntroduccion lenguaje java
Introduccion lenguaje java
 
Utp sirn_sl8 sistemas difusos i 2013-3
 Utp sirn_sl8 sistemas difusos i 2013-3 Utp sirn_sl8 sistemas difusos i 2013-3
Utp sirn_sl8 sistemas difusos i 2013-3
 
Java fundamentos 15 consejos prácticos - ITLA Tech Day 2018
Java fundamentos   15 consejos prácticos - ITLA Tech Day 2018Java fundamentos   15 consejos prácticos - ITLA Tech Day 2018
Java fundamentos 15 consejos prácticos - ITLA Tech Day 2018
 
Utp sirn_2014-2 lab3
 Utp sirn_2014-2 lab3 Utp sirn_2014-2 lab3
Utp sirn_2014-2 lab3
 
Utp ia_2014-2 lab3
 Utp ia_2014-2 lab3 Utp ia_2014-2 lab3
Utp ia_2014-2 lab3
 
Jyoc java-cap10 clases complementarias y enumerados
Jyoc java-cap10 clases complementarias y enumeradosJyoc java-cap10 clases complementarias y enumerados
Jyoc java-cap10 clases complementarias y enumerados
 
Gustavo 07 redes neuronales matlab
Gustavo 07   redes neuronales matlabGustavo 07   redes neuronales matlab
Gustavo 07 redes neuronales matlab
 
Python para principiantes
Python para principiantesPython para principiantes
Python para principiantes
 
KERAS Y TENSORFLOW
KERAS Y TENSORFLOWKERAS Y TENSORFLOW
KERAS Y TENSORFLOW
 
Utp sirn_2015-1 lab3
 Utp sirn_2015-1 lab3 Utp sirn_2015-1 lab3
Utp sirn_2015-1 lab3
 
Hilos en java
Hilos en javaHilos en java
Hilos en java
 
Curso python
Curso pythonCurso python
Curso python
 
Estructurada 7
Estructurada 7Estructurada 7
Estructurada 7
 
Programación en Prolog para Inteligencia Artificial
Programación en Prolog para Inteligencia ArtificialProgramación en Prolog para Inteligencia Artificial
Programación en Prolog para Inteligencia Artificial
 
Java clases dictadas
Java clases dictadasJava clases dictadas
Java clases dictadas
 
Semana 3 Herencia en Java
Semana 3   Herencia en JavaSemana 3   Herencia en Java
Semana 3 Herencia en Java
 
Utp ia_sl2 patrones de aprendizaje de las rna
 Utp ia_sl2 patrones de aprendizaje de las rna Utp ia_sl2 patrones de aprendizaje de las rna
Utp ia_sl2 patrones de aprendizaje de las rna
 

Ähnlich wie Programación III (Java) - 05 Genericos y Colecciones - java6-7

Ähnlich wie Programación III (Java) - 05 Genericos y Colecciones - java6-7 (20)

Introduccion java
Introduccion javaIntroduccion java
Introduccion java
 
Presentación Java Evolution - GlobalLogic Club
Presentación Java Evolution - GlobalLogic ClubPresentación Java Evolution - GlobalLogic Club
Presentación Java Evolution - GlobalLogic Club
 
Ruby para Java Developers
Ruby para Java DevelopersRuby para Java Developers
Ruby para Java Developers
 
Programación III (Java) - 01 Introduccion
Programación III (Java) - 01 IntroduccionProgramación III (Java) - 01 Introduccion
Programación III (Java) - 01 Introduccion
 
Java12
Java12Java12
Java12
 
Java argumentos variables
Java argumentos variablesJava argumentos variables
Java argumentos variables
 
Fundamentos de Java / 15 consejos prácticos sobre Java que cambiarán la for...
Fundamentos de Java /   15 consejos prácticos sobre Java que cambiarán la for...Fundamentos de Java /   15 consejos prácticos sobre Java que cambiarán la for...
Fundamentos de Java / 15 consejos prácticos sobre Java que cambiarán la for...
 
Java world
Java worldJava world
Java world
 
CUESTIONARIO PARA PRIMER EXAMEN
CUESTIONARIO PARA PRIMER EXAMENCUESTIONARIO PARA PRIMER EXAMEN
CUESTIONARIO PARA PRIMER EXAMEN
 
Diana
DianaDiana
Diana
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
Java
JavaJava
Java
 
CUESTIONARIO PARA PRIMER EXAMEN
CUESTIONARIO PARA PRIMER EXAMENCUESTIONARIO PARA PRIMER EXAMEN
CUESTIONARIO PARA PRIMER EXAMEN
 
CUESTIONARIO PARA PRIMER EXAMEN
CUESTIONARIO PARA PRIMER EXAMENCUESTIONARIO PARA PRIMER EXAMEN
CUESTIONARIO PARA PRIMER EXAMEN
 
Información básica Java
Información básica JavaInformación básica Java
Información básica Java
 
Calse 3 JAVA 2012
Calse 3 JAVA 2012Calse 3 JAVA 2012
Calse 3 JAVA 2012
 
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011
 
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
 
S6-Contenedores
S6-ContenedoresS6-Contenedores
S6-Contenedores
 

Mehr von Andoni Eguíluz Morán

Cebek oficina fija oficina movil 2 - 201611
Cebek   oficina fija oficina movil 2 - 201611Cebek   oficina fija oficina movil 2 - 201611
Cebek oficina fija oficina movil 2 - 201611Andoni Eguíluz Morán
 
Cebek - oficina fija oficina movil 1 - 201610
Cebek - oficina fija oficina movil 1 - 201610Cebek - oficina fija oficina movil 1 - 201610
Cebek - oficina fija oficina movil 1 - 201610Andoni Eguíluz Morán
 
El papel de las tic en la construccióLa integración de recursos didácticos di...
El papel de las tic en la construccióLa integración de recursos didácticos di...El papel de las tic en la construccióLa integración de recursos didácticos di...
El papel de las tic en la construccióLa integración de recursos didácticos di...Andoni Eguíluz Morán
 
Falta de profesionales tecnológicos.Cómo lo abordamos
Falta de profesionales tecnológicos.Cómo lo abordamosFalta de profesionales tecnológicos.Cómo lo abordamos
Falta de profesionales tecnológicos.Cómo lo abordamosAndoni Eguíluz Morán
 
Cebek oficina fija oficina movil 2 - 201512
Cebek   oficina fija oficina movil 2 - 201512Cebek   oficina fija oficina movil 2 - 201512
Cebek oficina fija oficina movil 2 - 201512Andoni Eguíluz Morán
 
Cebek - Oficina fija oficina movil 1 - 201512
Cebek - Oficina fija oficina movil 1 - 201512Cebek - Oficina fija oficina movil 1 - 201512
Cebek - Oficina fija oficina movil 1 - 201512Andoni Eguíluz Morán
 
Uso seguro de las TIC en el mundo educativo
Uso seguro de las TIC en el mundo educativoUso seguro de las TIC en el mundo educativo
Uso seguro de las TIC en el mundo educativoAndoni Eguíluz Morán
 
CCD2015 - Creación contenidos digitales
CCD2015 - Creación contenidos digitalesCCD2015 - Creación contenidos digitales
CCD2015 - Creación contenidos digitalesAndoni Eguíluz Morán
 
Cebek - Medidas basicas de seguridad - 201504
Cebek - Medidas basicas de seguridad - 201504Cebek - Medidas basicas de seguridad - 201504
Cebek - Medidas basicas de seguridad - 201504Andoni Eguíluz Morán
 
CYPED 2015 - Comunicación y Participación en Entornos Digitales
CYPED 2015 - Comunicación y Participación en Entornos DigitalesCYPED 2015 - Comunicación y Participación en Entornos Digitales
CYPED 2015 - Comunicación y Participación en Entornos DigitalesAndoni Eguíluz Morán
 
Cebek - jornada identidad digital corporativa
Cebek - jornada identidad digital corporativaCebek - jornada identidad digital corporativa
Cebek - jornada identidad digital corporativaAndoni Eguíluz Morán
 
Gamificación, serious games y negocio (SGGN-1409)
Gamificación, serious games y negocio (SGGN-1409)Gamificación, serious games y negocio (SGGN-1409)
Gamificación, serious games y negocio (SGGN-1409)Andoni Eguíluz Morán
 
Programación III (Java) - 06 Ventanas
Programación III (Java) - 06 VentanasProgramación III (Java) - 06 Ventanas
Programación III (Java) - 06 VentanasAndoni Eguíluz Morán
 

Mehr von Andoni Eguíluz Morán (20)

Cebek oficina fija oficina movil 2 - 201611
Cebek   oficina fija oficina movil 2 - 201611Cebek   oficina fija oficina movil 2 - 201611
Cebek oficina fija oficina movil 2 - 201611
 
Cebek - oficina fija oficina movil 1 - 201610
Cebek - oficina fija oficina movil 1 - 201610Cebek - oficina fija oficina movil 1 - 201610
Cebek - oficina fija oficina movil 1 - 201610
 
El papel de las tic en la construccióLa integración de recursos didácticos di...
El papel de las tic en la construccióLa integración de recursos didácticos di...El papel de las tic en la construccióLa integración de recursos didácticos di...
El papel de las tic en la construccióLa integración de recursos didácticos di...
 
Falta de profesionales tecnológicos.Cómo lo abordamos
Falta de profesionales tecnológicos.Cómo lo abordamosFalta de profesionales tecnológicos.Cómo lo abordamos
Falta de profesionales tecnológicos.Cómo lo abordamos
 
Cebek oficina fija oficina movil 2 - 201512
Cebek   oficina fija oficina movil 2 - 201512Cebek   oficina fija oficina movil 2 - 201512
Cebek oficina fija oficina movil 2 - 201512
 
Cebek - Oficina fija oficina movil 1 - 201512
Cebek - Oficina fija oficina movil 1 - 201512Cebek - Oficina fija oficina movil 1 - 201512
Cebek - Oficina fija oficina movil 1 - 201512
 
Uso seguro de las TIC en el mundo educativo
Uso seguro de las TIC en el mundo educativoUso seguro de las TIC en el mundo educativo
Uso seguro de las TIC en el mundo educativo
 
Uso ético y seguro de las TIC
Uso ético y seguro de las TICUso ético y seguro de las TIC
Uso ético y seguro de las TIC
 
Redes Sociales Educativas
Redes Sociales EducativasRedes Sociales Educativas
Redes Sociales Educativas
 
CCD2015 - Creación contenidos digitales
CCD2015 - Creación contenidos digitalesCCD2015 - Creación contenidos digitales
CCD2015 - Creación contenidos digitales
 
Cebek - Medidas basicas de seguridad - 201504
Cebek - Medidas basicas de seguridad - 201504Cebek - Medidas basicas de seguridad - 201504
Cebek - Medidas basicas de seguridad - 201504
 
CYPED 2015 - Comunicación y Participación en Entornos Digitales
CYPED 2015 - Comunicación y Participación en Entornos DigitalesCYPED 2015 - Comunicación y Participación en Entornos Digitales
CYPED 2015 - Comunicación y Participación en Entornos Digitales
 
Cebek - jornada identidad digital corporativa
Cebek - jornada identidad digital corporativaCebek - jornada identidad digital corporativa
Cebek - jornada identidad digital corporativa
 
Gamificación, serious games y negocio (SGGN-1409)
Gamificación, serious games y negocio (SGGN-1409)Gamificación, serious games y negocio (SGGN-1409)
Gamificación, serious games y negocio (SGGN-1409)
 
SGGN 20140605
SGGN 20140605SGGN 20140605
SGGN 20140605
 
Programación III (Java) - 09 Cierre
Programación III (Java) - 09 CierreProgramación III (Java) - 09 Cierre
Programación III (Java) - 09 Cierre
 
Programación III (Java) - 08 threads
Programación III (Java) - 08 threadsProgramación III (Java) - 08 threads
Programación III (Java) - 08 threads
 
Programación III (Java) - 07b Swing
Programación III (Java) - 07b SwingProgramación III (Java) - 07b Swing
Programación III (Java) - 07b Swing
 
Programación III (Java) - 07 Eventos
Programación III (Java) - 07 EventosProgramación III (Java) - 07 Eventos
Programación III (Java) - 07 Eventos
 
Programación III (Java) - 06 Ventanas
Programación III (Java) - 06 VentanasProgramación III (Java) - 06 Ventanas
Programación III (Java) - 06 Ventanas
 

Kürzlich hochgeladen

La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptxJunkotantik
 
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxPROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxEribertoPerezRamirez
 
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...YobanaZevallosSantil1
 
Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Angélica Soledad Vega Ramírez
 
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdfOswaldoGonzalezCruz
 
Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)
Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)
Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)veganet
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024IES Vicent Andres Estelles
 
Manejo del Dengue, generalidades, actualización marzo 2024 minsa
Manejo del Dengue, generalidades, actualización marzo 2024 minsaManejo del Dengue, generalidades, actualización marzo 2024 minsa
Manejo del Dengue, generalidades, actualización marzo 2024 minsaLuis Minaya
 
Los Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadLos Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadJonathanCovena1
 
PPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfPPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfEDILIAGAMBOA
 
Monitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptx
Monitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptxMonitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptx
Monitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptxJUANCARLOSAPARCANARE
 
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfMapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfvictorbeltuce
 
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfFisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfcoloncopias5
 
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfBIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfCESARMALAGA4
 
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxc3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxMartín Ramírez
 
Técnicas de grabado y estampación : procesos y materiales
Técnicas de grabado y estampación : procesos y materialesTécnicas de grabado y estampación : procesos y materiales
Técnicas de grabado y estampación : procesos y materialesRaquel Martín Contreras
 
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOTUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOweislaco
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas123yudy
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxYeseniaRivera50
 

Kürzlich hochgeladen (20)

La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptx
 
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxPROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
 
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
 
Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...
 
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
 
Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)
Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)
Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024
 
Manejo del Dengue, generalidades, actualización marzo 2024 minsa
Manejo del Dengue, generalidades, actualización marzo 2024 minsaManejo del Dengue, generalidades, actualización marzo 2024 minsa
Manejo del Dengue, generalidades, actualización marzo 2024 minsa
 
Los Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadLos Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la Sostenibilidad
 
PPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfPPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdf
 
Monitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptx
Monitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptxMonitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptx
Monitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptx
 
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfMapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
 
Sesión La luz brilla en la oscuridad.pdf
Sesión  La luz brilla en la oscuridad.pdfSesión  La luz brilla en la oscuridad.pdf
Sesión La luz brilla en la oscuridad.pdf
 
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfFisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
 
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfBIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
 
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxc3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
 
Técnicas de grabado y estampación : procesos y materiales
Técnicas de grabado y estampación : procesos y materialesTécnicas de grabado y estampación : procesos y materiales
Técnicas de grabado y estampación : procesos y materiales
 
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOTUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
 

Programación III (Java) - 05 Genericos y Colecciones - java6-7

  • 1. Mejoras Java 5-7 (Java SE7) Mejoras más importantes •Mejoras menores •Genericidad •Bucle for-each •Boxing •Enumeraciones •Parámetros variables •Importación estática •Metadatos •Mejoras específicas del JDK 1.6 •Más información Programación III Tema 5 - Java 6
  • 2. Mejoras menores Java 6 – Mejoras en el garbage collector – Nueva clase StringBuilder (buffer de caracteres) – Mejora significativa de Java 2D, gestión de imágenes y OpenGL. – Mejora de gestión de imágenes jpeg – Mejoras en algunas clases de la API (lang, util, comunicaciones, seguridad y criptografía, sonido...) – Opciones adicionales de compilación, javadoc... Programación III Tema 5 - Java 6
  • 3. Mejoras menores Java SE7 – Literales binarios (0b0010...) – Subrayados entre dígitos en literales numéricos (1234_5678_9012_3456L) (no vale 3_.14) • Como si no estuvieran, para mejorar legibilidad – Strings en sentencias switch (String.equals) – Mejoras en gestión del heap – Más de una excepción en cada catch catch (IOException|SQLException e) { – try con recursos try (java.io.BufferedWriter writer = ...) { // Hace un close al final (sin poner finally) } // Deben implementar java.lang.AutoCloseable Programación III Tema 5 - Java 6
  • 4. Genericidad (generics) (1/3) • Problema – Al trabajar con contenedores (Collection) estamos obligados a hacer casting continuo: static void quitaVacios(Collection c) { for (Iterator i = c.iterator(); i.hasNext(); ) if (((String) i.next()).length() == 0) i.remove(); } – Esto es incómodo y también inseguro (puede generar un error en ejecución) Programación III Tema 5 - Java 6
  • 5. Genericidad (2/3) – La genericidad permite informar al compilador del tipo de la colección, de modo que puede ser chequeado en compilación, y evita el cast: static void quitaV(Collection<String> c) { for (Iterator<String> i = c.iterator(); i.hasNext(); ) if ((i.next()).length() == 0) i.remove(); } – El uso de la genericidad obliga a que todos los elementos de la colección sean ahora de la clase indicada entre < y > (String en el ejemplo) – Similar al “template” de C++ Programación III Tema 5 - Java 6
  • 6. Genericidad (3/3) – Las colecciones (las vemos después) no son el único uso de la genericidad, se pueden usar en otros puntos (aunque programar nuevas clases genéricas es complejo) – La genericidad en Java 1.5 afecta a todas las clases contenedoras, como List, Vector, Tree... – Una clase puede ser genérica sobre un tipo... • Vector<E> (ej. Vector<Integer>) • ArrayList<E> (ej. ArrayList<Persona>) – O sobre varios... • HashMap<K,V> (ej. HashMap<Integer,Persona>) Programación III Tema 5 - Java 6
  • 7. Mejoras Java 7 Genericidad • Inferencia de tipos genéricos Map<String, List<String>> myMap = new HashMap<String, List<String>>(); // En Java SE 7 se puede poner el "diamond" <>: Map<String, List<String>> myMap = new HashMap<>(); Programación III Tema 5 - Java 6
  • 8. Bucle for-each (1/2) – Relacionado con las colecciones, se permite un nuevo tipo de bucle. Para evitar la pesada construcción: for (Iterator i = palos.iterator(); i.hasNext();) { Palo palo = (Palo) i.next(); ... } – Se puede utilizar un nuevo tipo de for: for (Palo palo: palos) { ... } Programación III Tema 5 - Java 6
  • 9. Bucle for-each (2/2) – El símbolo “:” se lee “en” – Pueden anidarse bucles sin problema: for (Palo p : listaPalos) for (Numero n : listaNumeros) baraja.add( new Carta(p,n) ); – Y la construcción es aplicable a arrays: int sumaArray(int[] a) { int res = 0; for (int i : a) res += i; return res; } – En general, for-each puede utilizarse siempre que no se modifica la colección según se recorre (para ese caso hay que volver al esquema tradicional) Programación III Tema 5 - Java 6
  • 10. “Boxing” – Donde se espere un objeto no se puede poner un valor primitivo (p. ej. lista de enteros) – Solución: wrappers (Integer en vez de int) – Problema: código muy “sucio”: LinkedList l = new LinkedList(); l.add( new Integer(i) ); ... int j = ((Integer) l.get(0)).intValue(); – Java 1.5 incorpora autoboxing (convertir primitivo al wrapper) y unboxing (convertir el wrapper a primitivo) de forma transparente: l.add( i ); ... int j = l.get(0); Programación III Tema 5 - Java 6
  • 11. Enumeraciones (1/3) – Java 1.4 no permite enumeraciones, lo que obliga a utilizar constantes: public static final int PRIMAVERA = 0; public static final int VERANO = 1; public static final int OTOÑO = 2; public static final int INVIERNO = 3; – Esto presenta múltiples problemas: • No hay un tipo diferenciado (podría pasarse cualquier otro entero por error) • No hay nombres diferenciados (podrían confundirse con otros nombres) • No hay información (cada valor es un número, sin relación con su “significado”) – Los lenguajes modernos mejoran esto con las enumeraciones, y Java las incorpora en su versión 1.5. Programación III Tema 5 - Java 6
  • 12. Enumeraciones (2/3) – En Java 1.5 esta enumeración se haría: enum Estacion { PRIMAVERA, VERANO, OTOÑO, INVIERNO } – Esta declaración define una NUEVA CLASE • Puede redefinir métodos de Object • Puede añadir métodos propios • Se visualiza como el string del nombre, no como un entero • Es Comparable y Serializable... – Veamos un ejemplo Programación III Tema 5 - Java 6
  • 13. Enumeraciones (3/3) public class Carta { public enum Rango { DOS, TRES, CUATRO, CINCO, SEIS, SIETE, SOTA, CABALLO, REY, AS } public enum Palo { OROS, COPAS, ESPADAS, BASTOS } Rango rango; Palo palo; public Carta(Rango r, Palo p) { rango = r; palo = p; } public String toString() { return rango + " de " + palo; } public static List<Carta> baraja = new ArrayList<Carta>(); // Inicialización ... public void static main (String s[]) { for (Palo p : Palo.values()) for (Rango r : Rango.values()) baraja.add(new Carta(r,p)); } } Programación III Tema 5 - Java 6
  • 14. Parámetros variables (varargs) – Java 1.4 no permite número de parámetros variable (lo que obliga a no permitir construcciones como el println de C) – Se puede simular pasando varios objetos dentro de un único array de objetos – Java 1.5 permite indicar parámetros múltiples con puntos susp.: public static int suma( Integer... listaEnts ) { int sum = 0; for (Integer i : listaEnts) { sum += i; //combinado con unboxing } return sum; } – Se comporta como un array de parámetros – Con lo que podríamos hacer int i = Arit.suma( 1, 2, 3 ); // autoboxing int j = Arit.suma( 5, 10, 15, 20, 25, 30 ); ... – Se incorpora un nuevo método printf Programación III Tema 5 - Java 6
  • 15. Importación estática – Los nombres estáticos (las antiguas variables y funciones “globales”) obligan a abusar de los prefijos de nombres de clase. Por ejemplo: import java.lang.Math; ... double r = Math.cos(Math.PI * alfa); – Java 1.5 facilita este proceso permitiendo importar también nombres de atributos y métodos estáticos, para evitar el prefijo de clase: import static java.lang.Math.*; // podría ser uno a uno: // import static java.lang.Math.PI; ... double r = cos(PI * alfa); Programación III Tema 5 - Java 6
  • 16. Metadatos (Anotaciones) – Java, siguiendo la idea de .NET de MS, incorpora en la versión 1.5 anotaciones – Las anotaciones permiten añadir metadatos en el propio programa, no como comentarios • Veremos alguna más adelante Programación III Tema 5 - Java 6
  • 17. Mejoras del JDK 1.6 • Mayor facilidad en el desarrollo de Servicios Web XML. • Integración sencilla con otros lenguajes de scripting como JavaScript, Python y Ruby. • Mejora en el acceso a bases de datos mediante JDBC4.0 así como la API Java DB. • Mejoras en el desarrollo de aplicaciones de escritorio (ventanas) mediante componentes nuevos, gestores de hilos de interfaz, filtros de ordenación y actualización, etc. Programación III Tema 5 - Java 6
  • 18. Mejoras del JDK 1.6 • Mayores utilidades para perfilar el rendimiento de una aplicación y diagnóstico. • Mayor acceso a funcionalidades del compilador para compilación de código objeto bajo demanda o para desarrollar herramientas para la plataforma. • Mejor gestión de anotaciones así como posibilidad de ejecutar los procesadores necesarios según las mismas. • Mejoras en la distribución de aplicaciones de escritorio (ventana) mediante una mejor integración con el sistema, plug-ins, webstart, etc. Programación III Tema 5 - Java 6
  • 19. Mejoras del JDK 1.6 • Más y mejores estructuras de seguridad en la plataforma tanto para el desarrollo usando tecnologías de autentificación como en la administración de seguridad de la aplicación. • Al haberse desarrollado multitud de programas y líneas de testeo, la plataforma Java cada vez está resultando más estable, fiable y robusta. Solución a problemas del pasado, bugs, problemas de compatibilidad hacia atrás, etc… Programación III Tema 5 - Java 6
  • 20. Colecciones • Colecciones = contenedores – Objetos que sirven como grupo de objetos – Se usan para almacenar, recoger, manipular y comunicar datos – Suelen representar grupos naturales (carpeta de documentos, un directorio de contactos...) – Son imprescindibles en todo lenguaje • La colección más básica es el array (y el fichero en memoria secundaria) • En Java 1.2 estaban también Vector y Hashtable • En Java 1.5 se incorpora todo el framework Collections Programación III Tema 5 - Java 6
  • 21. Framework Java Collections • Es una arquitectura unificada para manejar contenedores en Java (desde la 1.5) – Interfaces (representaciones abstractas) – Implementaciones (clases instanciables) – Algoritmos (búsqueda, ordenación...) • Estilo STL de C++ (más sencillo) • De amplio espectro – Se pueden usar en muchos casos concretos – Modo seguro y contrastado de usar EEDD – Aunque hay que conocerlas bien! Programación III Tema 5 - Java 6
  • 22. JC: Interfaces • Semántica de agrupación – Diferentes usos – Interfaces abstractos – Forman una jerarquía • Todas las colecciones son genéricas – Los tipos se controlan en compilación – Pero también pueden hacerse polimórficas conteniendo a su vez clases padre o interfaces – Para simplificar, las variantes de implem. no están incluidas en los interfaces Programación III Tema 5 - Java 6
  • 23. JC: Variantes en Interfaces • Las variantes de implementación son 3: • inmutables, tamaño fijo, append-only • JC decide meter las diferencias como métodos opcionales – "optional" indicado en la documentación – Cada clase puede o no soportarlos – Si se llaman y no lo están, excepción UnsupportedOperationException Programación III Tema 5 - Java 6
  • 24. JC: Descripción de los Interfaces • Collection: Agrupación de elementos – Set (conjunto): Colección sin duplicados • SortedSet: Ordenado por valor (comparación) – List (lista, secuencia): colección ordenada por posición (estilo array). Puede tener duplicados – Queue (cola): Almacén ordenado de elementos hasta su proceso • Map: Agrupación de emparejamientos clave-elemento (sin duplicados) – SortedMap: Ordenado por clave Programación III Tema 5 - Java 6
  • 25. JC: Ordenación • Algunos tipos son ordenados y otros permiten ordenar: List l = ... Collections.sort( l ); – Imprescindible: implementar Comparable<T> public int compareTo( T o ); – Hay clases básicas comparables: • Boolean, Byte, Character • Long, Integer, Short, Double, Float • BigInteger, BigDecimal • String, Date, File ... – Y podemos definir las nuestras. Ejemplo: Programación III Tema 5 - Java 6
  • 26. JC: Ejemplo de Comparable import java.util.*; public class Nombre implements Comparable<Nombre> { private final String nombre, apellidos; public Nombre(String nombre, String apellidos) { if (nombre == null || apellidos == null) throw new NullPointerException(); this.nombre = nombre; this.apellidos = apellidos; } public String nombre() { return nombre; } public String apellidos() { return apellidos; } public boolean equals(Object o) { if (!(o instanceof Nombre)) return false; Nombre n = (Nombre) o; return n.nombre.equals(nombre) && n.apellidos.equals(apellidos); } Programación III Tema 5 - Java 6
  • 27. Ejemplo de Comparable (2) public int hashCode() { // objetos iguales (equals) deben tener hash iguales return 31*nombre.hashCode() + apellidos.hashCode(); } public String toString() { return nombre + " " + apellidos; } public int compareTo(Nombre n) { int ultimaCmp = apellidos.compareTo(n.apellidos); return (ultimaCmp != 0 ? ultimaCmp : nombre.compareTo(n.nombre)); } } Programación III Tema 5 - Java 6
  • 28. ¿Cómo se ordena? Algoritmo Nombre n1, n2, n3, n4, n5; // Uso 1: explícita (ALGORITMO) de Collections ArrayList<Nombre> ln = new ArrayList<Nombre>(); ln.add( n1 = new Nombre( "Buzz", "Lightyear" )); ln.add( n2 = new Nombre( "Woody", "Allen" )); ln.add( n3 = new Nombre( "Tim", "Burton" )); ln.add( n4 = new Nombre( "Richard", "Marx" )); ln.add( n5 = new Nombre( "Groucho", "Marx" )); Collections.sort( ln ); System.out.println( ln ); [Woody Allen, Tim Burton, Buzz Lightyear, Groucho Marx, Richard Marx] Programación III Tema 5 - Java 6
  • 29. ¿Cómo se ordena? Estructura // Uso 2 de ordenación: en estructura ordenada TreeSet<Nombre> sn = new TreeSet<Nombre>(); sn.add( n1 ); sn.add( n2 ); sn.add( n3 ); sn.add( n4 ); sn.add( n5 ); System.out.println( sn ); [Woody Allen, Tim Burton, Buzz Lightyear, Groucho Marx, Richard Marx] Programación III Tema 5 - Java 6
  • 30. ¿Y más de un orden? Comparator • Tenemos un problema si necesitamos más de un orden (sólo uno en Comparable) – Solución: Comparator static final Comparator<Nombre> ORDEN_DE_NOMBRE = new Comparator<Nombre>() { public int compare(Nombre n1, Nombre n2) { return n1.nombre.compareTo(n2.nombre); } }; (...) Collections.sort( ln, ORDEN_DE_NOMBRE ); System.out.println( ln ); [Buzz Lightyear, Groucho Marx, Richard Marx, Tim Burton, Woody Allen] Programación III Tema 5 - Java 6
  • 31. JC: Implementaciones • Las clases que permiten hacer todo esto son: – Estas son las de propósito general – Algunos interfaces tienen varias implementaciones con EEDD distintas (set, map) Programación III Tema 5 - Java 6
  • 32. JC: Implementaciones típicas • Lo habitual será usar: – Set: HashSet • SortedSet: TreeSet – List: ArrayList – Map: HashMap • SortedMap: TreeMap – Queue: LinkedList (FIFO) • Con prioridad (ord. por valores): PriorityQueue • No están sincronizadas (ver threads) – Para la mayor parte de usos no hace falta Programación III Tema 5 - Java 6
  • 33. JC: Otras implementaciones • JC funciona con wrappers para cambios – Se crea una segunda colección que "envuelve" a la original con otras características • Sincronización (threads) List<Nombre> ln = Collections.synchronizedList( new ArrayList<Nombre>() ); • No modificable (los objetos no cambian) List<Nombre> ln = Collections.unmodifiableList( new ArrayList<Nombre>() ); • Otras especializadas Programación III Tema 5 - Java 6
  • 34. JC: Otras utilidades • Vista de un array como una List: Nombre[] vNoms = new Nombre[100]; (...) List<Nombre> lNoms = Arrays.asList( vNoms ); – No permite modificaciones (es sólo una vista) • Constantes vacías – Si se necesitan para paso de valor inicial vacío • Collections.emptySet() • Collections.emptyList() • Collections.emptyMap() Programación III Tema 5 - Java 6
  • 35. JC: Algoritmos • Todos están en la clase Collections – Ordenar: sort( list ), sort( list, Comparator ) – Desordenar aleatoriamente: shuffle( list ) – Manipular datos: • Invertir posición: reverse( list ) • Rellenar (sustituir) de un valor: fill( list ) • Copiar de una lista a otra: copy( list1, list2 ) • Intercambiar elementos: swap( list, ind1, ind2 ) • Añadir varios elementos: addAll ( list, elto... ) Programación III Tema 5 - Java 6
  • 36. JC: Algoritmos (2) – Buscar datos • Búsqueda en lista ordenada: binarySearch( list, elem ) • Búsqueda por orden específico: binarySearch( list, elem, comparator ) • La búsqueda devuelve dos informaciones en una: – Valor positivo o 0 si se encuentra elemento: su posición – Valor negativo si no se encuentra: el punto donde se insertaría = (-pos-1) – Composición: • Contar elementos: frequency( colección, elem ) • Comprobar que no hay elementos comunes: disjoint( colección1, colección2 ) – Buscar valores extremos: min y max Programación III Tema 5 - Java 6
  • 37. JC: Mejoras en Java 6 • Nuevos interfaces: – Deque - cola de doble dirección – BlockingDeque - una Deque concurrente que espera a la cola no vacía o no llena – NavigableSet - un SortedSet mejorado con métodos de navegación que buscan resultados cercanos, y permiten recorrer en las dos direcciones. – NavigableMap - un SortedMap mejorado del mismo modo. – ConcurrentNavigableMap . Programación III Tema 5 - Java 6
  • 38. JC: Mejoras en Java 6 (2) • Nuevas implementaciones: – ArrayDeque - implementación de Deque. – LinkedBlockingDeque - de BlockingDeque. – ConcurrentSkipListSet - de NavigableSet. – ConcurrentSkipListMap - de ConcurrentNavigableMap. • Mejoras en clases existentes: – LinkedList - implementa Deque. – TreeSet - implementa NavigableSet. – TreeMap - implementa NavigableMap. • Utilidad de Arrays copiar/truncar: copyOf Programación III Tema 5 - Java 6
  • 39. Otras mejoras importantes de Java 7 • Nueva y mejorada E/S (NIO 2.0) – Path mejorando a File – Globs además de Patterns – Mejoras de trabajo directo con ficheros • Gestión de ZIP y JAR como sists. de ficheros • Mejoras para la generación de aplicaciones de internet (RIA, Rich Internet Applications) • Integración de JavaFX – Una plataforma nueva y avanzada para interfaz de usuario Programación III Tema 5 - Java 6