Procesamiento con Spring Batch 2.0

spring frameworkGracias a los aportes de ale_holman y parivero contamos ahora con el tutorial Procesamiento con Spring Batch 2.0, una actualización completa del curso anterior para utilizar la nueva versión de este framework para el procesamiento por lotes.

En esta nueva versión se revisaron todos los capítulos y ejemplos para incluir la nueva librería Spring Batch 2.0. Además, se agregaron ejemplos para el manejo de excepciones y una muy interesante integración con Compass y Apache Lucene, para crear índices de manera simple.

Leer más...

Primeros pasos con Drools

droolsEn una nota anterior se presentó a Drools, un motor de reglas Java que se encarga de aplicar reglas de negocio dentro de nuestras aplicaciones. De esta manera aparece el concepto de Sistema de Administración de Reglas de Negocio (BRMS - Business Rules Management System), el cual nos permite parametrizar las reglas del negocio de forma externa a la aplicación que las utiliza.

En este artículo vamos a ver un poco más sobre Drools, y daremos los primeros pasos con este framework junto a un pequeño ejemplo de uso.

Leer más...

Drools 5.0 publicado

DroolsEl equipo de Drools acaba de anunciar la publicación de Drools 5.0, una nueva gran versión del motor de reglas más conocido en Java. Y el cambio más grande es que ahora vamos a tener que dejarlo de llamar "motor de reglas"! 

El API y la implementación de Drools tiene una nueva separación que no está más orientada a las reglas. Es un cambio estratégico importante, ya que Drools apunta a soportar otros tipos de lógica, como workflows y procesamiento de eventos. En vez de "orientado a las reglas", Drools está "orientado al conocimiento".

Leer más...

Armando un mock de un servidor HTTP

JettyLos Mock Objects son "objetos falsos" que sustituyen a otro en funcionalidad. Se utilizan ampliamente en las pruebas unitarias para poder simular el comportamiento de las dependencias. Por suerte hay varios frameworks que nos permiten crear mocks de objetos facilmente. Pero, ¿qué pasa cuando la dependencia es un servidor HTTP externo? Supongamos que tenemos un objeto que realiza alguna petición HTTP a un servidor web externo, que brinda algún tipo de servicio. ¿Cómo podemos simular el comportamiento de este servidor?

En este artículo vamos a ver cómo armar una prueba unitaria con JUnit que utilice Jetty para simular el comportamiento de un servidor HTTP.

Leer más...

Apache Hadoop bate dos récords mundiales

Apache HadoopEl equipo de Yahoo anunció que logró batir el record en el concurso anual GraySort, siendo ganador en 2 categorías. GraySort consiste en un conjunto de benchmarks, cada uno con sus propias reglas. Todos los benchmarks miden el tiempo para ordenar distinta cantidad de registros de 100 bytes cada uno (los primeros 10 bytes son la clave del registro, el resto el valor).

Para repartir la carga utilizaron un cluster gigante coordinado con Apache Hadoop. De esta manera, Apache Hadoop logró ordenar 1 Terabyte de datos en 62 segundos, y 1 Petabyte en 16.25 horas. Es la primera vez que un producto de software libre logra ganar esta competencia.

Leer más...

Generando clases as3 con Gas3

NuevoPara el intercambio de objetos entre servicios Java en un servidor y aplicaciones Flex, se requiere que las clases de intercambio de datos estén escritas tanto en el lenguaje Java como en Action Script (as3).

Gas3 es un generador de código que genera clases as3 (para Flex) a partir de clases Java, automatizando la tarea de duplicación de clases entre ambos lenguajes. En este artículo vamos a ver un pequeño ejemplo de uso de Gas3.

Leer más...

Integrando Flex con Spring

FlexEn el artículo anterior vimos una introducción a Flex 3, con un pequeño ejemplo para dar los primeros pasos.

En esta segunda nota de introducción veremos que las aplicaciones Flex pueden comunicarse con servicios y aplicaciones en servidores para el acceso a datos. Más que esto, pueden implementar toda su lógica de negocio en objetos deplegados en un servidor de aplicaciones. Analizaremos cuáles son los mecanismos y lenguajes soportados y un ejemplo paso a paso de una implementación con Java en el servidor usando Spring como framework de aplicación.

Leer más...

Diseño por Contrato con OVal y Spring

contratoOVal es un framework de validación para Java, que permite realizar comprobaciones a cualquier tipo de objetos y crear soluciones usando un enfoque de Diseño por Contrato. En este artículo vamos a ver brevemente qué es el Diseño por Contrato, y cómo utilizar OVal junto a Spring Framework para crear una infraestructura que facilite un Diseño por Contratos.

Leer más...

JUnit 4.6 publicado

JUnitYa está disponible JUnit 4.6, la nueva versión del framework de pruebas para Java basado en XUnit. Esta nueva versión incluye arreglos de bugs y una nueva arquitectura que permite reordenar y paralelizar tests y tests suites.

Entre las novedades más importantes se destaca el nuevo Core experimental, llamado MaxCore. MaxCore recuerda los resultados de las corriedas de tests anteriores, para luego poder ejecutar nuevos tests en otro órden. MaxCore prefiere a los tests nuevos por sobre los viejos, a los rápidos por sobre los lentos, y a los tests que fallaron recientemente por sobre los que hace mucho vienen fallando.

La revolución de la Web Asíncrona

MundoLas aplicaciones web legacy son sincrónicas por naturaleza. El usuario interactua con la interfaz web que se muestra en el navegador, el navegador realiza peticiones de vuelta al servidor de acuerdo a la interacción del usuario, y el servidor responde a estas peticiones con una nueva presentación para el usuario - fundamentalmente es un proceso sincrónico.

Sin embargo, hoy en día existe una variante: las aplicaciones Web Asincronas. Esta nueva forma de encarar las aplicaciones web está iniciando una revolución que cambiará completamente a las soluciones web del futuro.

Leer más...

Inspiración.

"Si tú tienes una manzana y yo tengo una manzana e intercambiamos las manzanas, entonces tanto tú como yo seguiremos teniendo una manzana cada uno. Pero si tú tienes una idea y yo tengo una idea, e intercambiamos las ideas, entonces ambos tendremos dos ideas"

Bernard Shaw