Soporte JSON en Java EE 8

Publicado en Java, JSON. Leave a Comment »

Mejoras en el API Process en Java 9 (por fin!!!)

Por fin podremos hacer (de forma sencilla) cosas como:

Obtener el ID del proceso:

Obtener información sobre el proceso ejecutando:

Como parámetros, usuario,…

Aquí buscamos el proceso sleep de entre todos los procesos.

Aquí lanzamos el comparador de ficheros y lo damos un timeout de 1s vía Future:

Leer más

Publicado en Java. Leave a Comment »

¿Qué es Spring Retry?

Spring Retry es un proyecto Spring que da soporte a reinvocar operaciones erróneas en aplicaciones Spring.

Es un proyecto usado internamente por proyectos como Spring Batch, Spring Integration o Spring for Apache Hadoop.

Esta capacidad es muy útil cuando los errores pueden ser transitorios (por ejemplo un error en la red).

Spring Retry permite definir de forma declarativa (anotaciones) el control del proceso y definir políticas, además de extenderlo y personalizarlo.

Este ejemplo seguro que os da una idea de cómo funciona:

Cuando el método service lance una RemoteAccessException se reintentará la llamada (hasta 3 veces por defecto), si pasado este número de reintentos sigue la excepción entonces se invoca el método con la anotacion @Recover.

La anotación @Retryable soporta diferentes configuraciones.

En la web del proyecto podéis leerlo: https://github.com/spring-projects/spring-retry

 

Programación Funcional en Java

Functional Programming in Java 8 (Part 0): Motivation

As we begin a series on functional programming, see why you should consider making the move and how you can incorporate it using some familiar Java.

Functional Programming in Java 8 (Part 1): Functions as Objects

If functional programming has your attention, let’s start with the basics: functions. You can store functions as objects, take them as arguments, return them, and more.

Functional Programming in Java 8 (Part 2): Optionals

Use Optionals when there is a clear need to represent ‘no result’ or where null is likely to cause errors. Otherwise, stick to nulls.

An Introduction to Functional Programming in Java 8 (Part 3): Streams

Streams are an important functional approach that can impact performance via parallelism, augment and convert data structures, and add new tools to your kit.

An Introduction to Functional Programming in Java 8 (Part 4): Splitter

Now that you know some functional programming basics, let’s use lambdas to optimize our runtime with the help of a Splitter.

Publicado en Java. Leave a Comment »

Convirtiendo un CSV a JSON con Java (y sin crear DTOs intermedios)

Del artículo How to Convert CSV to JSON in Java de Jay Sridhar

Supongamos que tenemos este CSV:

rep_file_num,CIK,entity_name,street1,street2,city,state_code,zip,filing_date,doc_type_code

814-00034,0000731812,SIERRA RESOURCES CORP,629 J STREET,SUITE 202,SACRAMENTO,CA,95814,12/30/96,15

814-00053,0000821472,WESTFORD TECHNOLOGY VENTURES LP,17 ACADEMY ST 5TH FLOOR,[NULL],NEWARK,NJ,07102-2905,01/28/04,NO ACT …

814-00098,0000878932,"EQUUS TOTAL RETURN, INC.",EIGHT GREENWAY PLAZA,SUITE 930,HOUSTON,TX,77046,08/25/16,40-APP/A

¿Cómo lo convertiríais a un JSON de este tipo?

{ 
 "rep_file_num" : "814-00098", 
 "CIK" : "0000878932", 
 "entity_name" : "EQUUS TOTAL RETURN, INC.", 
 "street1" : "EIGHT GREENWAY PLAZA", 
 "street2" : "SUITE 930", 
 "city" : "HOUSTON", 
 "state_code" : "TX", 
 "zip" : "77046", 
 "filing_date" : "08/25/16", 
 "doc_type_code" : "40-APP/A" 
}

Pues con este sencillo código:

La clase CSV se encarga de gestionar el fichero al estilo Excel, podéis ver lo que tiene la clase aquí.

Publicado en Java. Leave a Comment »

Publicado Hazelcast IMDG 3.8

Hazelcast logo

Se ha publicado la versión 3.8 del grid open-source Hazelcast IMDG 3.8 GA.

Esta versión tiene numerosas novedades (algunas de ellas las esperábamos ansiosos!!)

(Jesús, ya sabes lo que te toca :D)

Una de las mejoras fundamentales de Hazelcast IMDG 3.8 es la mejora en el uptime-time del cluster: ahora el número de veces que el cluster debe pararse para mantenimiento se ha reducido.

Además se han incluido mejoras para gestionar la persistencia y el despliegue multi-data center.

Veamos algunas de las novedades:

Rolling Upgrade (Enterprise)

Es la capacidad para actualizar las versiones de los nodos del cluster sin interrupción del servicio.

Docs: http://www2.hazelcast.com/e/30822/x-html-rolling-member-upgrades/btvcj4/368721839

Dynamic WAN Sync (Enterprise)

Usando replicación WAN puedo copiar los datos de un cluster a otro sin interrupción en el servicio.

Docs: http://www2.hazelcast.com/e/30822/gle-index-html-wan-replication/btvcjb/368721839

Hot Backup Cluster (Enterprise)

Permite hacer un backup de un cluster en ejecución a través de un API REST o del centro de despliegue.

Docs: http://www2.hazelcast.com/e/30822/l-single-index-html-hot-backup/btvcjd/368721839

Scheduled Executor Service

Es una implementación distribuida del API Java ScheduledExecutorService, permite hacer Schedule de tareas en el cluster.

Docs: http://www2.hazelcast.com/e/30822/tml-scheduled-executor-service/btvcjg/368721839

Open Sourcing Continuous Query Cache

En esta release se ha hecho open-source la funcionalidad Continuos Query Cache, que permite combinar los contenidos de una caché con streams de eventos para actualizar la caché.

Es muy útil si necesitas hacer queries de datos de un IMap distribuido muy rápidamente. De esta forma los resultados de la query estarán siempre listos de forma local a la aplicación.

Docs: http://www2.hazelcast.com/e/30822/ex-html-continuous-query-cache/btvcjj/368721839

Projection for Queries

Las queries pueden ahora devolver campos específicos de u entry. Esto minimiza el tráfico por red e mejora el throughput.

Docs: http://www2.hazelcast.com/e/30822/-single-index-html-projections/btvcjl/368721839

Fast Aggregations

Antes de Hazelcast IMDG 3.8, las agregaciones se basaban en el motor Map-Reduce de Hazelcast. Esta funcionalidad es el sucesor y ahora ejecuta sobre una infraestructura de Queries, que mejora el rendimiento en un ratio de cientos puesto que ejecutan en paralelo en cada partición.

Docs: http://www2.hazelcast.com/e/30822/e-index-html-fast-aggregations/btvcjn/368721839

Improvements on Near Cache

2 mejoras principales:

· Es consistente eventually vs weakly consistent

· El cliente de Near Cache puede persistir keys en un filesystem y recargarlos en restart.

Docs: http://www2.hazelcast.com/e/30822/l-single-index-html-near-cache/btvcjq/368721839

User Code Deployment (Beta)

Permite cargar nuevas clases a los nodos Hazelcast IMDG dinámicamente sin reiniciar. Es por tanto un classloading dinámico y distribuido.

Docs: http://www2.hazelcast.com/e/30822/html-user-code-deployment-beta/btvcjs/368721839

Split Brain Protection for Queue and Lock

Cluster quorum es un esfuerzo para hacer las estructuras de datos más consistentes a fallos de red.

Docs: http://www2.hazelcast.com/e/30822/ex-html-split-brain-protection/btvcjz/368721839

 

Podéis leer más sobre esta release aquí:

Herramientas y Técnicas para monitorizar el consumo de memoria y CPU de aplicaciones Java

Publicado en Java. Leave a Comment »
A %d blogueros les gusta esto: