Primeros pasos con Android (I). Entorno de desarrollo.

Vamos a ver que es Android y que debemos hacer para poder llegar a desarrollar una aplicación. Android es un sistema operativo basado en Linux y que cuenta con una interfaz de desarrollo Java. Android permite ejecutar procesos en segundo plano, soporta gráficos en 2D y 3D, ofrece una buena interfaz de usuario y nos proporciona una base de datos SQLite embedida. Bien, para poder poner nuestro entorno de desarrollo a punto necesitaremos los siguientes componentes: Un IDE de desarrollo, en mi caso Eclipse Indigo.

Continuar

Reflection API (VII) – Enumerados

Un enumerado es usado para definir tipos de datos que tienen cierto orden, pudiendo ser usados asignando un valor a cada uno de los elementos. Todos los enumerados extienden implícitamente de java.lang.Enum. Los enumerados contienen una o más constantes, que define una única instancia del tipo enumerado. Una definición de un enumerado es muy similar a una clase en el que puede tener campos, métodos y constructores (con algunas restricciones). Puesto que los enumerados son clases, la reflexión no tiene necesidad de definir explícitamente una clase java.lang.reflect.Enum. En el Reflection API se definen los siguientes métodos para trabajar con tipos…

Continuar

Reflection API (VI) – Tipos Genericos

Los tipos genéricos fueron implementados como una transformación en tiempo de ejecución. Los tipos genéricos no permiten conocer en tiempo de ejecución el tipo con el que se ha parametrizado, es decir, en tiempo de ejecución no podemos distinguir si un atributo es Map o es Map. Cuando utilizamos tipos genéricos el compilador genera el mismo bytecode que cuando utilizamos tipos no genéricos, insertando en tiempo de ejecución el código necesarios para realizar un cast para convertirlos en el tipo apropiado en cada acceso. Debido a que el bytecode es idéntico, la información sobre el tipo del parámetro es almacenada…

Continuar

Java 7 y Google Guava – Clase Objects

Uno de los principales propósitos de ésta clase es facilitar ciertas tareas muy comunes a la hora de crear nuestros programas, proporcionándonos una serie de métodos muy útiles a la hora de tratar con objetos. Estas clases nos facilitaran la creación de métodos como equals, hasCode o toString. De esta manera reduciremos la cantidad de sentencias if’s y la cantidad de lineas de nuestro código, mejorando así su comprensión. equals El método equal es muy utilizado para comparar dos objetos. Cuando queremos comparamos dos objetos solemos utilizar el método equals de la clase Object. Una de las formas más comunes…

Continuar

Primer Vistazo a Google Guava

Google Guava es una librearía utilizada por Google en sus proyectos internos durante bastantes años y que fue liberada durante el año 2009. Cuando hablamos de Gueva nos referimos a un conjunto de herramientas que están diseñados para mejorar el desarrollo y la productividad. Lo que pretende Guava es hacernos la vida más fácil ofreciéndonos utilidades muy utilizadas pero que no están implementadas en la JDK. Algunas de sus principales utilidades son: Utilidades Básicas: Permite un uso más sencillo de las funcionalidades de Java, haciendo más sencillo el trabajo con pre condiciones, nulls, excepciones, y la implementación de los métodos…

Continuar

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, un objeto u otro array. El manejo de arrays utilizando reflexión es algo diferente del resto de objetos. Lo primero que podemos hacer es comprobar si el objeto que estamos tratando es un array, ésto lo haremos utilizando el método Class.isArray. Cuando ya…

Continuar

Reflection API (IV) – Métodos

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.

Continuar

Reflection API(III) – Obteniendo Atributos

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():

Continuar

Reflection API(II) – Utilizando los Constructores

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.

Continuar

Reflection API(I) – Manejo de clases

Cuando se compila el código fuente de un programa se pierde la información de la estructura del programa pero se conserva ésta información en forma de metadatos. La reflexión es utilizada principalmente para acceder a esta información en tiempo de ejecución. Podemos acceder a clases, interfaces, métodos o atributos sin conocer su nombre o el tipo de un objeto. De esta manera podremos instanciar clases y llamar a los métodos en tiempo de ejecución. A pesar de todas estas ventajas la reflexión puede generar problemas de seguridad o rendimiento en nuestras aplicaciones. Al poder acceder a todos los atributos y…

Continuar