Interfaces Funcionales en Java 8

En esta nueva versión de la JDK se han realizada varias modificaciones en los interfaces. En el anterior artículo explique los métodos default y static y en este artículo explicaré otra de las mejoras en los interfaces, los interfaces funcionales. La mayoría de los desarrolladores de Java hemos tenido que trabajar alguna vez con los interfaces Runnable, ActionListener, Comparator o Callable. Estos interfaces tienen en una característica en común, únicamente tienen un método abstracto. A este tipo de interfaces se les conoce como Single Abstract Method Interfaces o SAM Interfaces. La forma más común de utilizarlos es implementándolos mediante una…

Continuar

Java 8 ya se encuentra disponible

Hoy se ha lanzado la nueva versión de Java y ya esta disponible para descargar en la página oficial de Java. Algunas de las nuevas características incluidas son: Nuevas características del lenguaje: Lambda Expressions, quizá la característica más esperada de esta nueva versión. Permiten pasar métodos como argumento. Las expresiones lambda permiten instanciar interfaces con un sólo método (interfaces funcionales) de forma muy sencilla. La referencia a métodos simplifica la lectura de las expresiones lambda.

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

Mejora en el manejo de recursos con Java 7 – ARM

Java 7 añade nuevas características bastante interesantes como son mejoras en la JVM, posibilidad del uso de String en los switch, formatos binarios de números… Entre estas nuevas características se encuentra la sentencia try-with-resources o ARM (Automatic Resource Management). Hasta ahora el manejo de los recursos, como ficheros, sockets, streams o conexiones a base de datos, debía ser realizado por el los programador, con los posibles errores que ésto puede originar. Con esta nueva sentencia, la JVM es la encargada de manejar todos los recursos que sean declarados dentro de la sentencia try-with-resources. Antes de Java 7 Antes de Java…

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

Android, pasar de una actividad a otra.

La clase Activity es el principal componente de las aplicaciones Android, ella se definen las actividades a realizar en nuestra aplicación. En la anterior entrada relacionada, vimos como crear nuestra activity que nos mostrara un mensaje personalizado. Hoy veremos como pasar de una Activity a otra. Para ello, deberemos crearnos nuestra nueva activity, como explique en la anterior entrada, en nuestro caso quedará tal que así:

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