Patrón Singleton

El patrón Singleton forma parte de los patrones creacionales. Se trata de uno de los patrones más usados y conocidos por los desarrolladores, y también es uno de los patrones más controvertidos. El patrón Singleton se encarga de controlar que únicamente se crea una instancia de una clase en toda la aplicación mediante el uso de un único punto de acceso. La definición que se da en el libro “Design Patterns: Elements of Reusable Object-Oriented Software” es: “Garantiza que una clase sólo tenga una instancia y proporciona un punto de acceso global a ella.” El diagrama de definición del patrón…

Continuar

¿Qué es Play 2 Framework?

Play! 2 es un framework para el desarrollo rápido de aplicaciones web con Java y Scala, está basado en el patrón MVC (Modelo, Vista, Controlador), agregando la filosofía de Convención sobre Configuración. Play! explota el modelo de desarrollo guiado por pruebas integrando tests unitarios con JUnit y pruebas de integración con Selenium. Algunas de sus características son: Poderoso Sistema de Builds Play! utiliza sbt como sistema de builds. Tiene una serie de scripts predefinidos que nos ayudan a comenzar con nuestra aplicación(play new, run o start), además de un fichero con script pre configurados que será suficiente para la mayor…

Continuar

Java 8 – Métodos Default y Static en Interfaces

La nueva versión de Java tiene previsto su lanzamiento para el 18 de Marzo, aunque ya se puede descargar una Beta Version. La característica más conocida de esta nueva versión son las lambdas. Pero tiene otras muchas novedades como un nuevo motor de Javascript, interfaces funcionales, operaciones con grandes cantidades de datos, eliminación del Permagen o la clase Time. Voy a intentar explicar todas estas características poco a poco, a lo largo de una serie de artículos. Hoy empezaré con un par de mejoras en los interfaces. Default Methods Cuando se crea un interfaz se declaran métodos abstractos y son…

Continuar

Inyección de dependencias. ¿Qué es y para qué sirve?

La inyección de dependencias (DI) es un patrón de diseño que deriva de un patrón más genérico llamado Inversión de Control. DI hace uso de la modularidad y la reutilización, las cuales siempre deberíamos tener en cuenta si nuestra aplicación va a estar dotada de mayor funcionalidad. Más adelante, veremos en que consiste la Inversión de Control, pero hoy vamos a centrarnos en la DI, visto además de una manera simplista, con un ejemplo sencillo.

Continuar

String Constant Pool

Los tipos de datos String son algo muy común en los desarrollos de aplicaciones, y para poder optimizar la memoria, la máquina virtual de Java reserva un área especial de la memoria donde guarda las referencias a los objetos de tipo String, denominada “String Constant Pool”. ¿Cómo Funciona? Se trata de una zona de memoria donde se almacenan las referencias a los objetos String. De esta manera, cada vez que se crea un String, la máquina virtual de Java primero comprueba si la cadena se encuentra en el String Constant Pool, si la cadena ya existe devuelve la referencia a…

Continuar

Cambiar texto de un TextView desde Activity

Aprovechando el proyecto creado en anteriores entregas, vamos a ver como podemos cambiar el texto de un TextView desde un Activity, esto nos vendrá bien para mostrar errores u otro tipo de mensajes sin tener que cambiar estar pasando de un Activity a otro. Para ver como hacerlo, cogeremos primero un Activity con un TextView cuyo texto hemos definido en el archivo res/values/strings.xml [xml] < ?xml version="1.0" encoding="utf-8"?> Hello MyFirstAndroidAppActivity! MyFirstAndroidApp Hasta Luego ! [/xml]

Continuar

¿Qué es Scala?

¿Qué es Scala? El nombre de Scala viene de “scalable” y “language”, esto indica cual es el propósito de este lenguaje. Scala se trata de un lenguaje de programación multi-paradigma, combina características de los lenguajes funcionales y de los lenguajes orientados a objetos. En otros lenguajes los objetos y las funciones son dos conceptos distintos, pero en Scala son dos conceptos entrelazados, por ejemplo, una función valor es un objeto. Este aspecto es muy útil para mejorar las escalabilidad de las aplicaciones.

Continuar

Argumentos variables en un método

El paso de argumentos variables a un método se introdujo a partir de la versión 5 de Java. Hasta ese entonces, si queríamos tener un método que tratara argumentos de diferente tamaño sin tener que hacer una sobrecarga creando un método diferente según el número de argumentos que se le pasarán, se hacía pasando como argumento un array conteniendo los objetos o tipos que después queríamos tratar. Pero a partir de Java5, esto ya no es necesario hacerlo, no digo que no se haga, sino que se encarga Java de hacerlo, no nosotros. La codificación de este tipo de argumento…

Continuar

Weak Reference o como ayudar al recolector de basura

Una weak reference o referencia débil es como su propio nombre indica una referencia a un objeto que no impide que el recolector de basura la borre. Normalmente se utilizan referencias fuertes (Strong references) a la hora de definir objetos pero esto puede dar lugar en algunos casos a errores del tipo OutOfMemoryError, debido a que esos objetos no son liberados de memoria. Para evitar esto se cuenta con estas weak reference que no hacen otra cosa que decirle al recolector de basura que cuando no estén usadas en ese momento, pase a borrarlas.

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