Blog: autor santi

Ardilla Quio Ardilla Quio

17 de Junio de 2011

Java Reflection (parte 3)

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.

26 de Abril de 2011

Java Reflection (parte 1)

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.

21 de Marzo de 2011

Expresiones regulares: conceptos avanzados

En nuestra entrada "Expresiones regulares: conceptos básicos" comenzamos a tratar los conceptos básicos para trabajar con expresiones regulares. Como el artículo se nos estaba quedando un poco más extenso de lo esperado, hemos preferido dividir el tema en dos capítulos para mejorar su organización y facilitar la comprensión. De esta forma continuaremos en esta entrada hablando sobre expresiones regulares, comentando ahora ciertos temas más avanzados que se nos quedaron en el tintero, como el concepto de voracidad, aserciones y diversas secuencias de escape de gran utilidad.

21 de Febrero de 2011

Expresiones regulares: conceptos básicos

A la hora de trabajar con cadenas de texto todos los lenguajes de programación nos proporcionan unas útiles pero simples funciones comunes: buscar una subcadena dentro de un texto, buscar la primera aparición de un carácter, etc. Pero para un tratamiento más avanzado la mayoría de lenguajes añaden librerías de funciones para trabajar con expresiones regulares. Las expresiones regulares nos proporcionan mucha más potencia, pues mediante el uso de unos simples patrones podemos especificar de forma concisa y flexible cadenas de texto para usar en búsquedas, reemplazamientos, etc.

19 de Enero de 2011

@font-face: Incrustando tipografías en una página web

Desde el principio una de las limitaciones más importantes en el diseño web ha sido en el uso de fuentes tipográficas. Aunque teóricamente era posible usar cualquier fuente en una página web, en realidad esto era impracticable debido a que cada visitante de la web debía tener la fuente en cuestión instalada en su ordenador para poder visualizarla correctamente. Por ello, hasta ahora los diseñadores web tenían que limitarse a usar un pequeño conjunto de fuentes "seguras": aquellas fuentes que vienen instaladas en los sistemas operativos más comunes (Windows, Mac OS X, Linux, ...) y que por lo tanto sabemos que van a estar instaladas en el 99% de los ordenadores visitantes.

21 de Diciembre de 2010

CSS hacks para Internet Explorer

En los últimos años los fabricantes de navegadores web se han concienciado por fin de la importancia de que sus productos se adhieran a los estándares HTML y CSS para un correcto visionado de las páginas web. Pero por desgracia eso no fue siempre así, y durante años los maquetadores han tenido que pelearse con navegadores que poseían motores de renderizado incompatibles y repletos de errores. Para ello, se han desarrollado diversas técnicas, conocidas como trucos o hacks de CSS, que permiten explotar las formas peculiares en las que distintos navegadores interpretan el código CSS y conseguir contrarrestar los errores de renderizado propios de cada navegador.

29 de Noviembre de 2010

Introducción a 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).

19 de Noviembre de 2010

Java: Double Brace Initialization

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, ...).