Java 8 – Streams

java 8 - StreamsLos Streams son una secuencia de elementos que soportan operaciones de agregación secuencial y paralela. Una de las nuevas características de Java 8 que permite manipular las colecciones como nunca, casi parecido a un sueño. (más…)

Leer Más

Ordenar Listas en Java

Ordenar Listas en JavaSi eres programador seguramente te has encontrado con el problema de Ordenar Listas, pero ¿Estamos utilizando la solución correcta o estamos reinventando la rueda? Pues en este artículo hablaremos de las formas estándares que ofrece Java para ordenar listas sin tener que programar más de lo requerido.

 

Básicamente Java ofrece dos interfaces que serán claves para realizar un ordenamiento simple, las cuales son Comparator  y Comparable, estas dos interfaces atienden contextos diferentes en el ordenamiento de las listas, pues existen dos escenarios concretos (Si ya conoces la teoría puedes brincarte a la última sección):

 

Objetos preparados para ser Ordenados

 

El escenario más simple para ordenar un Lista, es cuando sus elementos están preparados para ser ordenados, esto implica que los elementos de la lista implementan la interface Comparable. Al implementar esta interface, las clases deberá implementar el método public interface Comparable<T>, el cual sirve para comprar un objeto contra otro, este método recibe como parámetro otro objeto, el cual utilizaremos para comprarlo contra el actual para responder con un entero, el cual deberá ser:

 

  • < 0 (Menor que cero): cuando el objeto actual es menor que el otro
  • = 0 (Igual a cero): cuando los objetos son iguales
  • > 0 (Mayor que cero): cuando el otro objeto es mayor.

 

Cuando una clase implementa Comparable entonces podemos decir que está preparada para ser Ordenada y ordenarla será tan simple como hacer lo siguiente:

Collections.sort(lstSortEmployees);

Asumiendo que la variable lstSortEmployees es una lista de objetos que implementan Comparable. (más…)

Leer Más

Java 8 – Métodos referenciados

métodos referenciadosLos métodos referenciados son una de las nuevas características de Java 8 que nos permite hacer referencia a los métodos y constructores por medio de una interface funcional, dicho de otra manera, podemos implementar la funcionalidad de un método abstracto por medio de la implementación de un método ya implementado, asignando el método implementado al método abstracto. Esto puede resultar un tanto extraño, sobre todo porque Java era, hasta la versión 8 un lenguaje demasiado estricto. (más…)

Leer Más

WebSocket con Java

WebSockets con JavaEn este artículo aprenderemos a implementar WebSocket con Java, ya que en el pasado ya había dado una completa Introducción a los WebSocket y explicamos que estos fueron introducidos como una mejora en HTML5, pero también dijimos que los WebSocket son ejecutados por el navegador, y estos requieren de dos partes, un WebSocket cliente (Navegador) y un WebSocket Server (Backend). Pues bien, ya habíamos platicado como es que los WebSocket funcionan del lado del navegador, es por eso que ahora hablaremos de la otra cara, los WebSocket Server.

 

Como el título de este articulo lo dice, hablaremos de cómo implementar los WebSocket utilizado Java como BackEnd, pero cabe mencionar que todos los lenguajes de programación deberían de tener sus propias API’s para soportar conexiones del lado del servidor.  Los WebSocket fueron agregados a apartar de la versión Java EE 7 bajo la especificación JSR 356, es por ello que todos los Application Server certificados para Java EE 7 deberán de tener una implementación estándar de dicha especificación. Basta de charla y pasemos a cómo implementar un WebSocket con Java.

 

Implementando un WebSocket con Java

 

Para explicar cómo funcionan los WebSocket vamos a implementar un ejemplo muy simple, crearemos una barra de progreso la cual se cargará del valor 0 al 100 simulando que un proceso se está ejecutando en el BackEnd. En el formulario tendremos un botón que iniciara el proceso, cuando el usuario presione el botón, enviaremos un mensaje al BackEnd por medio del WebSocket, en ese momento, el BackEnd iniciara con un proceso de notificaciones el cual enviará por medio del WebSocket un mensaje con las actualizaciones de la barra de progreso. Este ejemplo está desarrollado con Java 8 y Wildfly 9.0.

WebSocket con Java (más…)

Leer Más

Entity Manager & Persistence Context

Tutorial de JPA persistence.xmlHasta el momento solo hemos trabajado con el Entity Manager para realizar las operaciones básicas, pero existen detalles más finos que es necesario entender para convertirnos en expertos de JPA. Cuando trabajamos con JPA es común interactuar con el Entity Manager, ¿pero que tanto sabemos acerca de los Persistence Context en realidad?

 

Primero que nada, tenemos que saber que el Persistence Context se crea mediante un Persistence Unit y el Entity Manager se crea a partir de un Persistence Context, veamos la siguiente imagen para entender mejor:

persistence context

 

Veamos que todo parte del archivo persistence.xml del cual ya hablamos anteriormente, en este archivo se definen los Persistence Unit, y mediante estos es creado el Persistence Context, el Persistence Context tiene la finalidad de delimitar el alcance de las transacciones, pero también está delimitado a administrar las Entidades definidas por el Persistence Unit con el que fue creado.  Adicionalmente, el Entity Manager hace referencia a un Persistence Context el cual será utilizado para administrar las entidades y las transacciones. (más…)

Leer Más

Introducción a Java Transaction API(JTA)

Guia de JPA-JTAJTA o Java Transaction API es la encarga de administrar las transacciones del lado del servidor, abstrayendo casi en su totalidad al programador de abrir o cerrar las transacciones, de esta forma el programador únicamente se preocupa por la lógica de negocio aumentando drásticamente la productividad y los errores de Runtime. (más…)

Leer Más

Web Services con Java (JAX-WS)

ReflectionToStringBuilderLos Web Services cada vez son más indispensable a la hora de construir aplicaciones, debido a que ya casi cualquier aplicación empresarial, requiere integrarse o comunicarse con otra. Por este motivo Java ofrece la librería JAX-WS la cual es definida por la especificación JSR 224. La especificación remplace a la JAX-RCP, la cual era únicamente para llamadas a procedimientos remotos, lo cual es diferente a los Web Services.

 

Crear Web Services con Java es mucho más fácil de lo que pudiéramos creer, pues ya que tan solo es necesario anotar una clase, para que esta sea expuesta automáticamente como tal por medio del servidor de aplicaciones. Para demostrar esto, desarrollaremos un Servicio para consultar y crear Empleados.

 

Lo primero que tenemos que hacer, es crear una clase que queremos exponer como WebService, luego la tenemos que anotar con @WebService :

(más…)

Leer Más

Operaciones básicas

Operaciones básicasUna parte esencial de utilizar JPA es saber utilizar las operaciones básicas, operaciones mediante las cuales es posible consultar, persistir, actualizar y eliminar entidades, de estas operaciones estaremos hablando hoy.

 

Gran parte de la funcionalidad de JPA es expuesta por medio de la Interface EntityManager, de la cual ya hemos hablado con anterioridad, y es por medio de esta interface, que es posible realizar las operaciones básicas. Las operaciones o métodos que exponen EntityManager son persist, merge, remove, find entre otras, que son sin duda las operaciones que más utilizaremos los proyectos.

En la sección anterior de este tutorial, hablamos de los estados de las entidades, las cuales será clave para entender cómo y cuándo deberemos utilizar dichas operaciones.

 

Sin más, las operaciones se describen a continuación:

(más…)

Leer Más

Java 8 – Interfaces funcionales

Interfaces funcionalesSe le conoce como interface funcional a toda aquella interface que tenga solamente un método abstracto, es decir puede implementar uno o más métodos default, pero deberá tener forzosamente un único método abstracto. Si no te queda claro que es un método abstracto en una interface, es un método sin implementar.

Las interfaces funcionales es un nuevo concepto que fue agregado a partir de la versión 8 de Java y cobran su importancia al utilizar expresiones lambda (λ).

 

Ejemplo de interfaces funcionales:

 

A continuación, veremos ejemplos de dos interfaces funcionales válidas: (más…)

Leer Más

Java 8 – Default Method

Default MethodUna de las novedades que trae Java 8 a nivel del lenguaje, son los Default Method o Métodos default, los cuales permiten agregar métodos implementados en las interfaces. Antes de la versión 8 de Java era totalmente imposible definirles cuerpo a los métodos de las interfaces ya que nos marcaba error de compilación.

 

Para agregar un método default solo será necesario marcar un método con el operador default , veamos un ejemplo de cómo se implementan:

 

 

Los métodos default se utilizan cuando es necesario implementar un cuerpo sin la necesidad de tener que implementar por separado una clase abstracta, además los métodos por default se pueden sobrescribir en caso de que la implementación por default no cumpla con lo que requerimos. Tenemos que resaltar que los métodos default no remplazan a las clases abstractas, pues estas últimas son mucho más potentes, debido a que nos permiten definir propiedades a nivel de clase, constructores y métodos privados. Veamos una limitante de los métodos default:

(más…)

Leer Más