Featured Post

Reflection API (V) – Arrays

Un array es un objeto que contiene referencias de objetos con un número fijo de componentes del mismo tipo; la longitud de un array no se puede modificar. Para crear un array es necesario conocer su longitud y el tipo de los datos que va a contener. Cada uno de sus elementos puede ser un tipo primitivo,...

Read More

Reflection API (IV) – Métodos

Posted by Antonio | Posted in Java, Programación | Posted on 29-11-2011

Etiquetas: , ,

1

Usando reflexión podemos acceder a los métodos de una clase en tiempo de ejecución. Para ello podemos utilizar la clase Method. Usar la reflexión nos permite acceder a los métodos de una clase y determinar si éste ha sido heredado o pertenece a la clase que estamos utilizando, algo que es imposible saber cuando llamamos a un método sin reflexión.

Obtención de los Métodos de una Clase

Para obtener los métodos de una clase utilizaremos el método getMethods de la clase Class y nos devolverá un array de objetos Method.

Reflection API(III) – Obteniendo Atributos

Posted by Antonio | Posted in Java, Programación | Posted on 23-11-2011

Etiquetas: , ,

0

Mediante el uso de la reflexión podemos acceder a los atributos de una clase y modificar su valor en tiempo de ejecución. Esto lo podemos hacer mediante la clase java.lang.reflect.Field. Este clase nos permitirá acceder a toda la información de los atributos, como nombre, tipo, modificadores o anotaciones.

Obtener los Atributos

Para obtener todos los atributos de una clase utilizaremos el método getFields():

Frameworks de persistencia.Diferencias

Posted by kanibalcriticon | Posted in Base de Datos, Programación | Posted on 18-11-2011

Etiquetas: , , ,

0

Existen varios frameworks de persistencia como Hibernate, Ibatis, OpenJPA, etc… pero hoy voy a tratar las principales diferencias entre los dos primeros. Antes de nada aclarar que un framework de persistencia es un marco de trabajo que se sitúa entre la lógica de negocio y la capa de base de datos, abstrayendo uno del otro.

Hibernate es una herramienta ORM que facilita el mapeo de los atributos de una base de datos relacional con el modelo de datos de la aplicación. Este mapeo se hace mediante archivos XML o anotaciones en los beans. También ofrece la posibilidad de utilizar un lenguaje de consulta de datos HQL (Hibernate Query Lenguage).

Por su parte, Ibatis , asocia los beans del modelo de la aplicación con sentencias SQL contenidos en ficheros XML.

¿Qué es NoSQL?

Posted by Antonio | Posted in Base de Datos, NoSQL | Posted on 16-11-2011

Etiquetas: , , , , ,

3

Durante los últimos años las bases de datos relacionales han dado soporte a la gran mayoría de las aplicaciones. Con los años se han ido mejorando, normalizandolas en todo lo posible, escalandolas según crece la demanda y utilizando sistemas de persistencia. Pero últimamente, con la aparición de grandes aplicaciones online, como Facebook, Twitter o LinkedIn, se plantea problemas de escalabilidad y rendimientos de las bases de datos relacionales con miles de usuarios concurrentes y con millones de consultas diarias, entonces surge el termino NoSQL, pero ¿qué quiere decir?.

Cuando hablamos de NoSQL no nos referimos únicamente a un tipo de bases de datos sino a diferentes soluciones dadas para almacenar datos cuando las bases de datos relacionales nos generan problemas. Las bases de datos NoSQL son sistemas de almacenamiento de información que no cumplen con el esquema entidad-relación, no imponen una estructura de datos en forma de tablas y relaciones entre ellas , en ese sentido son más flexibles, ya que suelen permitir almacenar información en otros formatos como clave-valor (similar a tablas Hash), Mapeo de Columnas, Documentos o Grafos.

HTML5, primeros pasos – semántica

Posted by Antonio | Posted in HTML5, Programación | Posted on 14-11-2011

Etiquetas: ,

4

Comenzar un proyecto en HTML5 es muy sencillo, únicamente tenemos que añadir el siguiente doctype como primera línea de nuestro código. El doctype nos sirve para indicar el tipo de documento:

[html]
< !DOCTYPE html>
[/html]

Aquí empezamos a ver una de las características principales de HTML5, la sencillez. En versiones anteriores de HTML se definían varios tipos de etiquetas doctype, ahora sólo existe una etiqueta y como podéis comprobar mucho más sencilla. Si lo que deseamos es actualizar nuestra página en HTML4 lo único que debemos realizar es el cambio del doctype y ya tendremos nuestra página en HTML5.

En HMTL5 algunos elementos no tienen una representación especial en pantalla, sino que se comportan como un div o un p. Pero cada una tiene un significado semántico. Este significado permite a los navegadores y los buscadores presentar y usar los documentos o aplicaciones en una gran variedad de contextos. Esto promueve modificaciones importantes en la maquetación y desarrollo de los sitios Web, introduciendo importantes cambios en lo que conocíamos hasta ahora.

Inyección de Dependencia para Tontos

Posted by Antonio | Posted in Programación | Posted on 12-11-2011

Etiquetas: , ,

0

La Dependencia de Inyección es un concepto muy sencillo: si tienes un objeto que interactua con otros objetos, la responsabilidad de encontrar una referencia a estos objetos en tiempo de ejecución se saca fuera del objeto en si mismo.

¿Qué significa para un objeto “interactuar” con otros objetos? Generalmente significa invocar métodos o leer atributos de estos objetos. Así si tenemos una clase A que invoca el método Calculate de la clase B, podemos decir que A interactua con B.

En el siguiente ejemplo se muestra una clase A interactuando con una clase B. También podemos decir que A depende de la clase B para llevar a cabo una responsabilidad. En este caso, no solo se invoca al método Calculate pero también se crea una nueva instancia de la clase.

Reflection API(II) – Utilizando los Constructores

Posted by Antonio | Posted in Java, Programación | Posted on 11-11-2011

Etiquetas: , , ,

3

Los constructores son utilizados en la creación de objetos, que son la instanciación de una clase. Por lo general llevan a cabo las operaciones necesarias para inicializar la clase antes de que se invocan los métodos o se acceda a los campos. La Reflexión nos permite conocer y recuperar los constructores de una clase y obtener información de su declaración, como los modificadores, los parámetros, las anotaciones, y excepciones que se producen. También tendremos la posibilidad de instanciar una clase mediante la utilización de estos constructores. El API de Reflexión nos proporciona la clase java.lang.reflect.Constructor para el manejo de los constructores.

Modernizr, detectar compatibilidad HTML5

Posted by Antonio | Posted in CSS3, HTML5, Programación | Posted on 09-11-2011

Etiquetas: , , ,

0

Actualmente no todas las funcionalidades de HTML5 son soportadas por todos los navegadores. Si tenemos alguna duda sobre si nuestro navegador es compatible con alguna de las funcionalidades de HTML5 podemos comprobarlo en las muchas páginas web que nos hacen un resumen de las compatibilidades. Por ejemplo, en findmybyip podemos encontrar una tabla con la compatibilidad para todos los navegadores o también podemos hacer un test a nuestro navegador para comprobar que funcionalidades soporta, la podemos hacer en html5test.

Comenzar un proyecto en HTML5 puede llegar a ser un quebradero de cabeza sobre todo cuando necesitamos compatibilidad entre los distintos navegadores. Entonces nos puede surgir la preguntar ¿Cómo puedo comenzar un proyecto en HTML5 sin preocuparme del navegador? La respuesta es Modernizr.

Modernizr es una pequeña librería en javascript que nos permite conocer si un navegador es compatible con ciertas funcionalidades de HTML5 y CSS3. De esta manera se detecta si alguna funcionalidad es o no es compatible con el navegador que estamos utilizando y así podemos implementarla con JQuery, Prototype o cualquier otro framework de javascript.

HTML5 y CSS3, el futuro de la web

Posted by Antonio | Posted in CSS3, HTML5, Programación | Posted on 05-11-2011

Etiquetas: , ,

2

¿Qué es HTML5? HTML5 es un conjunto de estándares para el diseño y desarrollo web, incluye desde la especificación del nuevo lenguaje HTML, pasando por el desarrollo de la nueva versión de CSS, hasta la creación de nuevos APIs para el desarrollo de nuevas funcionalidades.

Comencemos con un poco de historia:

  • En el año 1999 W3C publica la especificación de HTML 4.0.1.
  • Entre el año 2000 y 2001 se publican las especificaciones de XHTML 1.0 y 1.1.
  • Al año siguiente, 2002, se comienza el trabajo de desarrollo de XHTML 2.0 que pretendía dar un nuevo enfoque al desarrollo Web. Es un lenguaje basado completamente en XML. Pero este nuevo estándar no era compatible con la antigua versión de HTML.
  • En 2004, grandes empresas como Opera o Mozilla se reúnen para desarrollar un nuevo estándar al margen del W3C, ya que no estaban de acuerdo con el camino que había tomado W3C en el desarrollo de XHTML 2.0. De esta manera nació whatwg, al que más adelante se unieron empresas como Apple o Google.

Razón para llamar a .isEmpty en Collections

Posted by Antonio | Posted in Java, Programación | Posted on 04-11-2011

Etiquetas: , ,

1

Yo siempre he visto este código:

Ésto es lo primero que viene a la cabeza de muchos programadores cuando piensan en “no vacía”. Sin embargo, existe un método que es más apropiado en la mayoría de los casos: isEmpty().

Las principales razones, aparte del tamaño, son:

  • Es más expresivo (el código es más fácil de leer y de mantener).
  • Es más rápido, en algunos casos de varios ordenes de magnitud. Dos ejemplos en los que esto es muy visible son las clases ConcurrentLinkedQueue y NavigableMap / NavigableSet.Todas estas clases implementan el método “size” iterando a través de la colección y debido a esto, la llamada al método size es cada vez más lenta a medida que aumenta el número de elementos.