Estás en:

Blog: Java

Java Reflection (parte 3)

17 Jun 2011 por Santi

Comentarios en Java Reflection (parte 3): 11

Java

En las anteriores entradas Java Reflection parte 1 y Java Reflection parte 2) hemos comentado conceptos básicos sobre cómo obtener en tiempo de ejecución los tipos, atributos y métodos de un objeto, y las manipulaciones básicas sobre los mismos (acceder y cambiar sus valores). También hemos explicado algunas manipulaciones más complejas (obtención de instancias a partir de constructores específicos, acceder y modificar elementos privados, ...).

En esta tercera parte nos dedicaremos a explicar cómo trabajar con reflexión con dos elementos un poco más avanzados de Java: arrays y tipos genéricos (Java Generics). Aunque quizás puedan ser considerados elementos básicos del lenguaje de programación (los arrays deben ser el primer tipo complejo que se enseña en las clases de programación), la manipulación vía Java Reflection de los mismos es un poco más compleja que los elementos vistos hasta el momento, aunque descubriremos que una vez aprendidos los conceptos básicos tal complejidad es sólo aparente.

Java Reflection (parte 2)

19 May 2011 por Santi

Comentarios en Java Reflection (parte 2): 9

Java

En nuestra anterior entrada, Java Reflection (parte 1), comentamos cómo obtener el tipo, constructores e instancias de una clase cuando no conocíamos en tiempo de compilación los detalles específicos de la misma.

En este artículo, comentaremos cómo obtener y manipular los atributos y métodos de una clase.

Java Reflection (parte 1)

26 Abr 2011 por Santi

Comentarios en Java Reflection (parte 1): 17

Java

Una de las funcionalidades más potentes y poco conocidas de Java es su soporte para reflexión. Mediante la Java Reflection API el programador puede inspeccionar y manipular clases e interfaces (así como sus métodos y campos) en tiempo de ejecución, sin conocer a priori (en tiempo de compilación) los tipos y/o nombres de las clases específicas con las que está trabajando.

Quizás pueda parecernos en una primera impresión una funcionalidad con usos limitados. Pero debemos saber que, por ejemplo, muchos frameworks de alto nivel como Hibernate, Spring o Tapestry hacen un uso extensivo de esta API para facilitarle la vida al programador al permitirle que use simples clases POJO para trabajar con ellas. Otros frameworks menos potentes (o versiones antiguas de estos mismos frameworks), obligaban al programador a que sus clases implementaran ciertos interfaces o pertenecieran a complicadas jerarquías de clases, lo cual limitaba la flexibilidad del programador y complicaba la comprensión del código.

Introducción a Apache Tapestry

29 Nov 2010 por Santi

Comentarios en Introducción a Apache Tapestry: 3

Apache Tapestry

Apache Tapestry es un framework Java de código abierto para la implementación de aplicaciones web mediante la arquitectura Modelo-Vista-Controlador. Inició sus andaduras allá por 1999 de la mano de su creador, Howard Lewis Ship para posteriormente ser adoptado como proyecto por la Fundación Apache. Actualmente se encuentra en la versión 5.1, bajo licencia Apache Software Licence 2.0.

Tapestry forma parte de una "nueva generación" de frameworks web (como por ejemplo JavaServer Faces o Apache Wicket) que intentan aportar un nuevo enfoque al desarrollo de aplicaciones web en Java (basados en componentes y orientados a eventos) frente al clásico y archiconocido Apache Struts (basado en acciones).

Java: Double Brace Initialization

19 Nov 2010 por Santi

Comentarios en Java: Double Brace Initialization: 1

Java

Cuando uno se dedica a buscar en Google la respuesta a alguna duda de programación a veces encuentra la solución a sus problemas, a veces pierde el tiempo y otras veces pierde el tiempo pero descubre algo interesante.

Cuando buscas dudas sobre Java en Stackoverflow suele pasar lo mismo. Una de las cosas interesantes que descubrí en una de esas ocasiones fue un hilo sobre las características ocultas de Java, donde los participantes hablan sobre ciertas características de Java que no son muy ampliamente conocidas. Este tipo de hilos son muy populares en Stackoverflow, existe uno para cada uno de los lenguajes de programación más populares, muy recomendable su lectura.

Una de las características que más llamó mi atención (y por lo visto de muchos de los participantes) de las que se comentan en ese hilo es la llamada "Double Brace Initialization" (Inicialización con Doble Llave). Bajo este nombre se esconde una nueva sintaxis para la inicialización de colecciones (listas, mapas, conjuntos, ...).