Novedades en Java 1.5

0
69634

Novedades en Java 1.5

Java está en continua evolución y nosotros desde www.adictosaltrabajo.com
le hacemos un férreo marcaje….

Os vamos a contar en este tutorial algunas de las nuevas características de
Java.

Para los que hemos trabajado con C++ estas novedades se parecen bastante a lo
que estábamos acostumbrados a utilizar….

Se supone que durante mucho tiempo se había definido Java como un C++–++,
es decir, le habían quitado algunos cosas y le habían puesto otras…. ahora
casi hay que decir que es un C++-+++. Para mi gusto, cada día me parecen más
iguales ……

Podéis consultar el enlace de SUN para ver un resumen de las nuevas características y el enlace al documento detallado.


http://java.sun.com/j2se/1.5.0/docs/relnotes/features.html

Nos vamos a descargar los binarios y la documentación del siguiente
enlace…

http://java.sun.com/j2se/1.5.0/download.jsp

Y comenzamos la instalación (que no me ha dado ningún problema)

Nos aseguramos que ha finalizado bien

Y cambiamos las variables de entorno para incluir el directorio de los
binarios

Y asegurarnos que no tenemos cosas raras con las clases cambiando el
classpath

Yo ahora ejecutaría java -version para asegurarme que
estoy usando la versión adecuada de Java (si tengo muchas en mi máquina)

C:\java\j2sdk1.5.0>java -version
java version "1.5.0-beta"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-beta-b32c)
Java HotSpot(TM) Client VM (build 1.5.0-beta-b32c, mixed mode)

Un buen punto para comenzar a trabajar es este enlace donde tiene un resumen
(demasiado reducido) de como utilizar las nuevas técnicas.

http://java.sun.com/developer/technicalArticles/releases/j2se15/

Vamos a ir poco a poco poniendo unos ejemplos sencillitos

Colecciones Genéricas

Las colecciones en Java pueden almacenar cualquier tipo de objeto (Object).
El único problema que podemos encontrar es que si metemos un tipo inadecuado,
el error nos dará en tiempo de ejecución.

Con Java 1.5 y la introducción de los tipos genéricos (gererics), podemos
asegurarnos que en compilación se valida la asignación de tipos.

Cambia un poco la notación pero no es muy significativo el cambio…

Si compilamos, nos dará un error y es porque tenemos que especificar que
deseamos incluir en compilación las particularidades de Java 1.5.

C:\java\j2sdk1.5.0>javac *.java
java15.java:8: '(' or '[' expected
                ArrayList<Integer> milista =  new ArrayList<Integer>();
                                                           ^
1 error

C:\java\j2sdk1.5.0>

Lo solucionamos fácilmente añadiendo una opción de compilación

java -source 1.5 *.java

Si ahora pretendemos introducir en nuestro ArrayList una cadena de
caracteres…

Encontramos el siguiente error:


C:\java\j2sdk1.5.0>javac -source 1.5 *.java
java15.java:12: cannot find symbol
symbol  : method add(int,java.lang.String)
location: class java.util.ArrayList<java.lang.Integer>
                milista.add(1, new String("cadena"));
                       ^
1 error

C:\java\j2sdk1.5.0>

Nuestras propias clases genéricas

Las clases nativas de Java ahora soportan esta funcionalidad (como acabamos
de ver con las colecciones).

 Nosotros podemos crear nuestras propias clases con estas
características (y recuerda mucho a C++ aunque existen sutiles diferencias ….
sobre todo en lo que a generación de código se refiere)

Iteraciones simplificadas

Una de las ventajas más inmediatas que podemos encontrar al usar jsdk 1.5 es
la simplificación de los bucles…

Podemos ver la salida …. y funciona correctamente

C:\java\j2sdk1.5.0>java java15
El valor de x es 51
El valor de x es 12

También se puede utilizar para los arrays de tipos simples y objetos…

Conversiones implicitas

Otra de las cosas curiosas es la nueva capacidad para realizar conversiones
directas entre tipos auxiliares (como Integer) y los tipos nativos que
representan (int).

En el siguiente código comprobamos que no es necesario un casting
como sería de prever , algo como:

int total = milista.get(0).intValue();
 

Enumeraciones

En Java no existen (mejor dicho, existían) los tipos enumerados de datos (al
estilo C) pero tenemos ahora la opción:

El resultado es:

C:\java\j2sdk1.5.0>java java15
La prioridad es: alta

Si decompilamos el código podemos ver que se está haciendo por dentro
…… así que cuidadito con estas cosas (el peso de la clase).

Funciones con parámetros variables

Otra característica interesante añadida es la capacidad de disponer de
métodos con el número de parámetros variable.

Si volvemos a descompilar podemos verificar el código que está generando. En
este caso vemos que nos simplifica de un modo sencillo el problema de este tipo
de funciones (se suelen usar para componer mensajes).

Printf en Java

Cuando he visto esto casi me echo a llorar de la ilusión. El famoso printf
tan usado en C ya forma parte del lenguaje Java…… francamente estupendo. De
un modo sencillo (cuando lo conoces) te permite definir como representar
multitud de tipos de datos sin mucho trabajo.

Hemos forzado la salida a 14 posiciones, con el simbolo siempre y cuatro
decimales… 

C:\java\j2sdk1.5.0>java java15
El valor es       
+10,2300

Grupos de constantes sin interfaces

Hay veces que declaramos un interfaz en Java únicamente para tener agrupadas
una serie de variables y diciendo que una clase implementa ese interfaz, tenemos
acceso a ellas.

No está demasiado bien hecho porque estamos acoplando una clase con un
interfaz, innecesariamente (esto es un conocido anti-patrón). ¿Qué pasa si alguien añade un método a ese interfaz?
Pues que muchas clases se ven obligadas a implementarlo sin demasiado
sentido…

En Java 1.5 podemos resolver el problema de la siguiente situación

Creamos un interfaz de utilidades ….

En nuestra clase introducimos un import static …… vamos, para todos los
efectos, es como las antiguas macros de preproceso en C.

Usamos el comando de compilación

javac -d . -source 1.5 *.java

Si ahora descompilamos vemos que no queda referencia del interfaz ……
estupendo

Referencias

Una presentación estupenda http://www.cs.rit.edu/~ats/lfl/2003-2/java/lea.pdf

Comentario

Parece que nos obligan a que el trabajo de los programadores, estos años,
tiene que ser aprender tecnología y estar en una continua I+D (en vez de
resolver problemas de negocio con tecnologías estables y cada vez más
sencillas). Hay tantas cosas nuevas y opciones para hacer la misma cosa que uno
puede perder fácilmente el norte…..

Sobre el
Autor ..

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad