miércoles, 4 de agosto de 2010

Libros de Java SE 6

Hasta hace poco, era difícil encontrar un libro que haga referencia a Java SE 6, pero me he dado cuenta que últimamente ya están disponibles en las librerías.

A mediados del año pasado encontré uno (muy famoso por cierto en cuanto a tecnología Java) llamado Profesional Java JDK 6, por W. Clay Richardson y otros autores y digo famoso debido a que tiene el sello WROX o no se si decir es de WROX.

Todavía estoy contento de mi adquisición, este libro me ha servido de ayuda para la mayoría de mis artículos tanto de Java SE 5 y Java SE 6. Comienza con un recuento de las novedades de Java 5 y luego (mucho más adelante) comienza a revelarte los secretos de Java 6.

He encontrado algunos pequeños errores, pero me parecen en algunos casos insignificantes, no hay que conformarse con lo que te dicen allí, hay que probar, analizar, ejecutar, etc... para darse cuenta que algunas veces cometen errores pequeños.

Bueno, no quiero dejar este comentario a medias, un error que encontré fue en la página 63 (hablo la versión en español) en un programa que habla sobre las anotaciones, donde hay dos clases y una interfaz, la interfaz es la que aparece "anotada", se llama TestParameters.

En una clase llamada StringUtility tiene un método concat con el siguiente cuerpo:



public String concat (String s1, String s2){
return (s1 + s2);
}

//y un método testConcat() de la siguiente manera

public boolean testConcat(){
String s1 = "test";
String s2 = " 123";
return(concat(s1,s2).equals("test 123");
}


Por supuesto, esto no arroja ningún error de compilación, luego en la clase TestFramework está el método invoke que utiliza la reflección (java.lang.reflect) de la siguiente manera:



static String invoke(Method m, Object o){
String result = "PASSED";
try{
m.invoke(o);
} catch (Exception ex){
System.out.println("Exception: " + ex +
"\n" + ex.getCause);
result "FAILED";
}
return (result);
}


Que tampoco tiene error de compilación, pero hay un error lógico, supongamos que el método testConcat() devuelva false debido a que se escribió return(concat(s1,s2).equals("test 12");, para el método invoke no hay error (No hay Exception) y por lo tanto imprime igualmente PASSED.

Debido a este error debe cambiarse el método testConcat a algo como esto:



public boolean testConcat() throws Exception
{
String s1 = "test";
String s2 = " 123";
boolean resultado = (concat(s1,s2).equals("test 123"));
if(resultado){
return resultado;
}
throw new Exception();
}


De esta forma, se arroja una Exception si el método falla y se captura cuando se hace la llamada m.invoke(o), es decir result sería "FAILED".

Espero haberme explicado; este error fue el mas grave que encontré, la verdad tiene muchos errores de transcripción pero creo que este tipo de error es insignificante para el buen lector que le interesa el contenido.

Bueno, siguiendo con el tema de los libros, decía que yo adquirí este libro aproximadamente hace un año y me sentí bastante satisfecho de su contenido, pero la verdad este post lo escribo para que tengamos en cuenta que ya existen muchos libros de Java SE 6.0 en las librerías y aquí le tengo otros dos que ví en ellas:

Java. Como Programar. Septima Edición. DEITEL. (Basado en Java SE 6)

Yo adquirí este libro en su versión Java SE 1.4 y me pareció excelente, es extenso en sus explicaciones y ejemplos y además te da un CD con todo el código fuente del libro. Fue muy buena fuente de consulta y me dio herramientas para realizar algunas de las preguntas de nuestros post acerca de la preparación para la prueba Sun Java Programmer que se escribieron en este blog desde Agosto hasta Diciembre 2009.

Mi sorpresa mayor fue que al lado de este libro, otro que se llama Java. Manual de referencia. Séptima edición por Herbert Schildt. McGrawHill (también basado en Java SE 6)de este no tengo referencias, pero he visto que el mismo autor en otros libros conocidos.

Lo que me alegra es que ya en las librerías nos presenten bibliografías de la última versión de Java.

Bueno por ahora no tengo más que agregar, si a la disposición de seguir aportando acerca de la tecnología Java y a la espero de una nueva versión que podamos probar y que nos siga generando ganancias en el sentido del conocimiento, ahorro de tiempo de programación y administración de recursos de sistema.

Hasta la próxima.