domingo, 11 de marzo de 2012

Video: Introducción a Soluciones BRMS con Red Hat JBoss

El siguiente es un video introductorio a la plataforma BRMS (Business Rules Management System) de JBoss, Red Hat, subido a mediados del año pasado por Gustavo Brey, ex solution architect de Red Hat y actual gerente de tecnología de Pami. La plataforma BRMS está basada en el producto Open Source de JBoss, Drools, que incluye un motor de reglas de negocio, un motor de workflows (actualmente jBPM 5),  un procesador de eventos complejos, y algunos otros sub-productos más como Guvnor, para centralizar las reglas y los procesos de negocio en un repositorio y administrarlos.

Introduccion Soluciones BRMS - Red Hat JBoss from JBossAlchemist on Vimeo.

miércoles, 7 de marzo de 2012

Libro Abierto y Gratuito de Java Persistence API


Quisiera compartir este WikiBook. Esta semana estuve consultándolo, leyendo algunas de las secciones y es en verdad una muy buena referencia para todo lo relacionado con el mundo de JPA.

Java Persistence API es la especificación de un ORM (Object-Relational Mapper) para JavaEE y JavaSE. Actualmente la versión vigente es la 2.0 (JSR 317) y se encuentra en elaboración, en etapa de Early Draft Review, la versión 2.1 (JSR 338). Entre las implementaciones más conocidas podemos encontrar a productos como Hibernate, de JBoss Red Hat, Open JPA, de Apache, TopLink, de Oracle, y la que es hoy la implementación de referencia: EclipseLink, de la Eclipse Foundation.

El libro no sólo trata las incumbencias básicas de la especificación (mapeos, entityManager y JPQL), también trata cuestiones avanzadas como mapeos a Stored Procedures, Views, Eventos, etc. A mí me resultó particularmente útil la sección de Locking and Concurrency, un tema que los programadores descuidamos bastante y a veces debemos tener en cuenta.

Lo bueno es que al ser un WikiBook cualquiera puede colaborar ampliándolo y actualizándolo.

sábado, 3 de marzo de 2012

SOLID: Los 5 Principios Fundamentales de la Orientación a Objetos

SOLID es un acrónimo inventado por Robert C. Martin que resume los cinco principios fundamentales de la programación orientada a objetos. Es muy fácil entender las definiciones de herencia, composición, abstracción, encapsulamiento o polimorfismo. Pero así como conocer las reglas del ajedrez no te hace un buen jugador, lo mismo pasa con la programación orientada a objetos: se puede conocer los conceptos pero no saber utilizarlos.

Entender para qué sirve la orientación a objetos fue un proceso que demoró varios años. Muchos libros de patrones de diseño corrieron en el medio. Si un programador viene del paradigma de la programación estructurada, lo primero que hará será escribir clases como si fueran TDAs, archivos en donde poder agrupar atributos y métodos y nada más.

SOLID, por sus siglas en inglés, significa:

  • Single Responsibility: cada objeto debe tener una única responsabilidad
  • Open/Close: abierto para la extensión, clausurado ante cambios
  • Liskov Substitution: las clases hijas deben poder ser tratadas como las clases padre
  • Interface Segregation: es preferible muchas interfaces con pocos métodos a pocas interfaces con muchos métodos
  • Dependency Inversion: los componentes deben depender de abstracciones, no de implementaciones concretas
SOLID resume buenas practicas en el uso de las distintas técnicas que provee el paradigma, prácticas fundamentales para el buen diseño que propician la mantenibilidad, extensibilidad, adaptabilidad y escalabilidad del código, y sobre todo la salud de los programadores que tendrán que leer y/o modificar nuestro código (que podemos ser nosotros mismos dentro de unos años).

Estos principios son fundamentales para escribir un buen Modelo de Dominio orientado a objetos.

Me abstengo de escribir un post entero para cada principio (por lo menos por ahora). De la inversión de dependencia creo que he hablado alguna vez en este blog o en Tecnologías Java. No dejo links porque encontrar la explicación de los principios SOLID es tan simple como buscarlos en Google (un montón de gente ya los explica) o en Wikipedia. Y, por supuesto, siempre están los libros Robert C. Martin, que son la fuente original.