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

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

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鈥檚 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…)

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…)

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…)

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…)

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…)

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…)