Cuando puse una sección de libros en mi web tenía muy diáfano que este sería el primero que analizaría (por llamarlo de cierta manera). Para quien no lo sepa, Joshua Bloch es uno de los gurus de Java (por no llamarlo el guru) Es, por ejemplo, el creador de java.util.collection, una api que aconsejo encarecidamente contemplar para admirar lo que es un código bien realizado, estructurado y documentado. Hace unos años dió la campanada al abandonar Sun y fichar por Google donde todavía continúa. Effective Java no es su único libro pero sí el más famoso. Es probablemente uno de los libros Java más vendido y me atrevería a decir que el más útil. Lo primero que hay que remarcar es que Effective Java no es un libro para aprender a programar, se da por supuesto que el lector ya tiene unos conocimientos básicos, sino que está orientado a, tal como dice su nombre, crear código eficiente y práctico. Estructurado en 10 secciones principales ( Creación y destrucción de objetos Métodos comunes a todos los objetos Clases e Interfaces Genericos Enums y anotaciones Métodos Programación en común Excepciones Concurrenci y Serialización ) destripa los dificultades o yerros más comunes, no siempre fáciles de detectar, dando ejemplos y instrucciones de cómo evitarlos así como (excelentes) consejos de cómo programar correctamente. Por ejemplo, la sección de excepciones, una de mis favoritas por la poca documentación existente sobre el tema, contiene 9 recomendaciones (o items como él los llama) de las que, simplemente leyendo el título, podemos aprender algo: ?Utiliza excepciones solo para cláusulas excepcionales?, ?Utiliza excepciones que hereden de Exception para yerros recuperables y excepciones que hereden de RuntimeException par yerros de programación?, ?Evita el uso innecesario de excepciones que hereden de Exception?, ?Privilegia el uso de excepciones estandar?, ?Documenta las excepciones lanzadas por un método?, etc... Otros items de otras secciones son: ?Favorece interfaces sobre reflexión?, ?Evita una sincronización excesiva?, ?Favorece interfaces sobre clases abstractas?, ?Diseña y documenta la herencia o sino prohibela?, ?Sobreescribe siempre el método toString? y no sigo que es un vicio. En total 78 secciones de sabios consejos y yerros a evitar. Todos están explicado de forma muy didactica y clara. ¿Nunca habéis leído un libro que por cada párrafo interesante agrega tres de relleno? Pues aquí no sucede. Cada item es corto y conciso, en común no más de cuatro páginas, expone un asunto o recomendación, pone un ejemplo y explica una o algúnas soluciones. Por supuesto tienen lugar algunos items más extensos: ?Favorece composición sobre herencia? de 7 páginas o el destinado a cómo realizar un buen método equals que tiene 12 pero en ningún momento da la sensación de relleno. Todo es información útil. Podría continuar alabando el libro ad infinitum pero no quiero excederme. Tan sólo terminaré diciendo que este fuese el primer libro de informática que recomendé a una chica que me gustaba y de la que ahora soy su afortunado novio. Vamos, que sus virtudes son infinitas.