Lo Nuevo de Spring 3.0 RC1

Tags: , ,

springsource

Hace poco el equipo de Spring Source liberó Spring 3.0 RC1 y viene con muchas nuevas características interesantes, para mi una de las mas interesantes es que ya viene con soporte para Java 6 y completamente basado en Java 5, ya era hora !. Me tomado el permiso de pegar la traducción que hizo Dos Ideas.

  • Completamente basado en Java 5. Esta la primer versión de Spring que necesita Java 5 o superior para funcionar, y que utiliza la sintáxis de Java 5 en todo el API de Spring, y también en su implementación. Por ejemplo, el API del BeanFactory retorna instancias tipadas con generics cuando es posible, y un ApplicationListener puede declarar tipos de eventos específicos con generics. En comparación, Spring 2.5 (la versión actual de Spring) todavía es compatible con el JDK 1.4, aunque mucha funcionalidad de alto nivel se construía en Java 5.
  • Lenguaje de expresiones de Spring (SpEL – Spring Expression Language). Un parser de expresiones para usar en la definición de los beans, que permite referenciar a estructuras anidadas (por ejemplo, propiedades de otros beans), y también a estructuras del sistema (por ejemplo, variables de entorno) usando la sintáxis común #{…} en el valor de las propiedaes de un bean. Esto también sirve como base para otras características basadas en expresiones en otros proyectos de Spring.
  • Soporte extendido para componentes basados en anotaciones. Se incluye el concepto de clases de configuración y métodos de factory anotados – ¡las características fundamentales del proyecto Spring JavaConfig finalmente están disponibles en Spring!. Sprint también permite inyectar valores de configuración a través de expresiones @Value, y referirse a valores de la configuración usando expresiones dinámicas #{…} o estáticas ${…}.
  • Modelo de estereotipos. Permite crear anotaciones “de atajo” a través del uso de meta-anotaciones. Por ejemplo, para determinar scopes predeterminados o características de transacción predeterminadas en estereotipos propios. Imaginen una anotación propia @MiServicio que indica @Service, @Scope(“request”) y @Transactional(readOnly=true) usando una única anotación. Este es el principio de No Repetirse aplicado al uso de anotaciones de componentes.
  • Anotaciones de inyección de dependencias estándar. Spring 3.0 provee un soporte inicial para el JSR-330 specification for Dependency Injection in Java- inyección a través de anotaciones usando javax.inject.Inject y sus calificadores asociados y modelo de proveedores, como una forma alternativa a la anotación @Autowired propia de Spring. Tengan en cuenta que el JSR-330 todavía no está terminado; el soporte para javax.inject en Spring se irá completando a medida que madure la especificación.
  • Modelo de validaciones declarativo basado en anotaciones de restricciones. Configuración al estilo de Spring de un proveedor de JSR-303 Bean Validation (como ser, Hibernate Validator 4.0). Spring 3.0 viene con una opción para hacer validaciones basadas en anotaciones en Spring MVC, exponiendo una vista unificada cuando no se cumplen las restricciones. Tengan en cuenta que el JSR-303 está próximo a terminarse, aunque todavía puede tener modificaciones.
  • Soporte para REST extendido. Soporte nativo para REST en Spring MVC, como ser mapeos de peticiones REST, extracción de variables URI a través de parámetros @PathVariable, y resolución de vistas guiadas por la negociación del contenido. Imaginen Spring MVC 2.5 con soporte de primera clase para REST – y manteniendo en enfoque de MVC. Hay soporte para el lado del cliente de REST a través de la clase RestTemplate.
  • Mapeo Objeto/XML (OXM). Tal como se usaba en Spring Web Services, ahora dentro del núcleo de Spring Framework. Abstracciones para el marshalling y unmarshalling con soporte directo para JAXB 2, Castor, etc. Se provee opciones de integración para soporte de contenidos XML en Spring MVC y Spring JMS.
  • Soporte para Portlet 2.0. Spring MVC soporta completamente los entorno de Portlet 2.0 y el nuevo modelo de recursos y eventos de Portlet 2.0. Se incluyen facilidades de mapeo para peticiones de portlet típicas: @ActionMapping, @RenderMapping, @ResourceMapping, @EventMapping.
  • Nuevo sistema de scheduling. Nuevos mecanismos de TaskScheduler y Trigger con soporte estilo cron, alineados con el mecanismo de Spring TaskExecutor. Spring 3.0 provee un namespace que soporta anotaciones @Async y @Scheduled. Esto se puede ejecutar sobre pooles nativos de hilos o en pooles manejados por Servidores de Aplicaciones, incluyendo soporte para los servidores de aplicaciones Java EE más populares.
  • Y por último, soporte inicial para Java EE 6. Spring 3.0 soporte el uso de JSF 2.0 y JPA 2.0 dentro de Spring, junto al soporte de JSR-303 y JSR-330. Se irá incluyendo soporte para otras tecnologías de Java EE 6 (como Servlet 3.0) a medida que se vayan concretando los productos.

Paquetes genéricos en jPOS

Tags: , , ,

jPOSPackage

El empaquetado es una de las glorias de jPOS a mi parecer, hace un tiempo escribí como jPOS creaba el mapa de bits primario y sencudario.  Mucha gente que inicia con jPOS cree (me incluyo yo en mis inicios) que nosotros debemos setear el campo primario y el campo secundario, pero que quede claro, esto no es necesario con jPOS. Por eso vamos hablar hoy del empaquetado y el desempaquetado en jPOS, los diferentes tipos de empaquetados que el frameworks nos ofrece y el Empaquetado Genérico, para crear el empaquetado a la medida.

Existen 2 maneras de crear un empaquetador, primero implementando el Interfaz ISOPackager que se encuentra en el paquete org.jpos.iso y heredando los métodos de ISOBasePackager que trae int unpack y byte[] pack. Existen muchas clases empaquetadoras en esta ubicación /org/jpos/iso/packager para diferentes tipos de protocolos de comunicación.

public interface ISOPackager extends LogSource {
     public byte[] pack (ISOComponent m) throws ISOException;
     public int unpack (ISOComponent m, byte[] b) throws ISOException;
     public void unpack (ISOComponent m, InputStream in) throws IOException, ISOException;
     public String getFieldDescription(ISOComponent m, int fldNumber);
     public ISOMsg createISOMsg ();
}

La otra manera es crear un empaquetado genérico, que no es mas que crear una estructura en XML donde indicamos, el id, el largo del mensaje, el nombre, y el tipo de dato, en ese campo vamos agregar la clase del tipo de dato que nos ofrece jPOS.

<!DOCTYPE isopackager SYSTEM "genericpackager.dtd">
<!-- ISO 8583:1993 (BINARY) field descriptions for GenericPackager -->
<isopackager>
  <isofield
      id="0"
      length="4"
      name="Message Type Indicator"
      pad="false"
      class="org.jpos.iso.IFB_NUMERIC"/>
  <isofield
      id="1"
      length="16"
      name="Bitmap"
      class="org.jpos.iso.IFB_BITMAP"/>
    ...
    ...
    ...
  <isofield
        id="128"
        length="8"
        name="Message authentication code field"
       class="org.jpos.iso.IFB_BINARY"/>
 </isopackager>

Si descargas jPOS, podrás encontrar listos y para su uso algunos ejemplos en la ubicación cfg/packager.

Nota: Debes tener en cuenta que el genericpackager.dtd y el generic-validating-packager.dtd deben estar en el mismo directorio y tener permisos de lectura (linux) para que el paquete genérico pueda leer la configuración creada por vos.

Una vez listo tenemos nuestro xml para el empaquetador genérico, que se adapte a nuestras necesidades solo agregamos el PATH como parametro del constructor de la clase GenericPackager y listo para usarse como en el siguiente ejemplo.

GenericPackager packager = new GenericPackager("miPaquetePersonalizado.xml");

Una vez cargada la configuración, ya podemos empaquetar y tendremos lista nuestra trama para enviarla por el socket. o si desempaquetamos, el canal que usemos se encargará de converir la trama en un objeto ISOMsg.

//Para reempaquetar
iso.recalcBitMap();
//o usar los métodos para empaquetar
iso.pack();
//o
// Para desempaquetar
iso.unpack();

Symfony, el Struts e Hibernate del PHP

Tags: , , , , ,

symfony-logo

Después de un tiempo escribiendo sobre Frameworks de Java, voy a regresar un poco a mis inicios, a PHP, yo he sido un programador de los que decian, los Frameworks atrasan (al menos en mi tiempo), pero debido a mi reciente experiencia con Spring Framework me di cuenta de las grandes ventajas de un Framework y decidí buscar el mejor para PHP.

Symfony es un completo framework diseñado para optimizar, gracias a sus características, el
desarrollo de las aplicaciones web

Symfony es un completo framework diseñado para optimizar, gracias a sus características, el desarrollo de las aplicaciones web, está desarrollado completamente con PHP 5. Ha sido probado en numerosos proyectos reales y se utiliza en sitios web de comercio electrónico de primer nivel. Symfony es compatible con la mayoría de gestores de bases de datos, como MySQL, PostgreSQL, Oracle y SQL Server de Microsoft.

Estas son algunas de sus caracteristicas:

sfACTION, Capa de Presentación

Toma lo mejor de la arquitectura MVC y la implementa de forma que el desarrollo de aplicaciones sea rápido y sencillo, en el siguiente gráfico se puede apreciar como es el flujo de trabajo, y aqui es donde hago a similitud con Struts, donde los ActionServlet y los sfAction tienen caracteristicas parecidas a la hora de manejar las peticiones en la capa de presentación.

mvcsymfony

El flujo de trabajo de Symfony

PROPEL, Acceso a Datos

La lógica de negocio de las aplicaciones web depende casi siempre en su modelo de datos. El componente que se encarga por defecto de gestionar el modelo en Symfony es una capa de tipo ORM realizada mediante el proyecto Propel. En las aplicaciones Symfony, el acceso y la modificación de los datos almacenados en la base de datos se realiza mediante objetos; de esta forma nunca se accede de forma explícita a la base de datos. Este comportamiento permite un alto nivel de abstracción y permite una fácil portabilidad. Practicamente es el Hibernate del PHP, creo que quedó mas que claro.

YALM, Configuración del Sistema

YAML (“YAML Ain’t Markup Language”) es un lenguaje muy sencillo que permite describir los datos como en XML, pero con una sintaxis mucho más sencilla. YAML es un formato especialmente útil para describir datos que pueden ser transformados en arrays simples y asociativos.  Symfony utiliza el formato YAML como el lenguaje preferido para almacenar su configuración.

http://www.symfony-project.org/

http://www.symfony.es/

Liberada RichFaces 3.3.0 GA, editor y queue novedades

Tags: , , , ,

richfaces331

Hoy se liberó la versión 3.3.0 de RichFaces, entre los elementos nuevos que trae son 2, los Queue y el Editor (imagen de arriba)

http://livedemo.exadel.com/richfaces-demo/richfaces/editor.jsf?c=editor&tab=usage

y abajo un ejemplo del Queue.

http://livedemo.exadel.com/richfaces-demo/richfaces/queue.jsf?c=queue&tab=usage

quequerichfaces

Descargate las librerias y los nuevos Skins de la siguiente direcciónes.

darkX-3.3.0.GA.jar Plug’n'Skin Example v.3.3.0. Skin Dark-X. 27.4 KB 14 Jan 2009 LGPL 76 Download
glassX-3.3.0.GA.jar Plug’n'Skin Example v.3.3.0. Skin Glass-X. 30.7 KB 14 Jan 2009 LGPL 66 Download
laguna-3.3.0.GA.jar Plug’n'Skin Example v.3.3.0. Skin Laguna. 25.2 KB 14 Jan 2009 LGPL 64 Download
richfaces-ui-3.3.0.GA-bin.zip JBoss RichFaces 3.3.0 Binary (zip) 30.4 MB 14 Jan 2009 LGPL 331 Download

http://www.jboss.org/jbossrichfaces/downloads/

© 2009 Jotadeveloper Blog. Nuestros contenidos están bajo licencia Creative Commons mientras no se indique lo contrario,
y pueden reproducirse libremente sin más que mencionar la fuente ("JotaDeveloper") y la URL concreta del artículo original. .

This blog is powered by Wordpress and JotaDeveloperTheme.