Buscar
Social
Ofertas laborales ES
martes
sep252007

Descripción de Web Beans en 4 partes

El estándar Web Beans, es un intento por estandarizar los frameworks de inyección de dependencia en JEE6. Los proyectos principales que sirven como guía del estándar son JBoss Seam y Guice. Lamentablemente el proyecto Spring no forma parte del estándar, quizás por la rivalidad existente entre JBoss y Spring. El líder del proyecto no es nada menos que Gavin King, quien desde el blog in.relation.to, nos describe el estándar en 4 partes. Conviene comenzar a hacer un seguimiento de este estándar, porque será una de las adiciones más importantes de JEE6. Por último, cabe destacar que la inyección de dependencia se ha vuelto tan importante en estos últimos años, que hay quienes pretenden incluir a Web Beans dentro del propio JDK, como característica nativa del lenguaje Java.

Descripción del Estándar según Gavin King:

- Parte I: Presentación de Web Beans
- Parte II: Inyección, anotaciones de binding, y tipos de componentes
- Parte III: Declarando componentes mediante XML
- Parte IV: Scopes, contextos, y métodos de resolución

 

+ Enlace Relacionado 

martes
sep252007

Scripting con Java 6

En el sitio "JavaTools Community" han publicado, entre otras cosas, unas referencias a  los posts sobre las capacidades de scripting para Java 6.

Su autor, Greneyed (Community Leader), desgrana en ocho entradas de su blog "Green pastures", lo que se puede hacer con el API de Java 6 y con los lenguajes de scripting: Javascript, Groovy, Jython, JRuby o PHP.

Por otro lado, en la web dedicada al JSR-233, se enumeran en una tabla los 'engines' (implementaciones del JSR para diferentes lenguajes de scripting) disponibles.

Java SE 6 viene por defecto con una versión de la implementación Java del Engine de Javascript de la Fundación Mozilla, Rhino 1.6R2, aunque no tiene todas sus funcionalidades.

Además, Dejan Bosanac, autor de "Scripting in Java", en su artículo "Scripting with Balance in Design and Performance" nos muestra como integrar estos lenguajes con Java.

Todo esto demuestra el futuro de los lenguajes de scripting haciendo de Java un middleware sobre el que se pueda programar en cualquiera de ellos. Hasta se nos permitirá realizar applets programados sobre javascript (scriptlets), al estilo:

<applet archive="../../scriptlet.jar" code="com.sun.scriptlet.Scriptlet" width=100 height=50>
<param name="scriptsrc" value="hello.js">
</applet>

y el código de hello.js

var font;
function init(applet) {
var Font = java.awt.Font;
font = new Font(Font.DIALOG, Font.BOLD, 18);
}
function paint(applet, g) {
g.setFont(font);
g.clearRect(0,0,100,50);
g.setColor(java.awt.Color.RED);
g.drawString('hello world', 0, 20);
}

 

lunes
sep242007

Video de humor sobre Javapolis 2007: HashCode Wars

Para promocionar la próxima Javapolis que se celebrará del 10 al 14 de diciembre de este año en Amberes, Bélgica; han publicado este video en parleys.com titulado "HashCode Wars: The return of the Strings" y que es protagonizado por Javva o el especialista en hashcode, Javva the hut o el java garbage collector y el Duke, grupo que combate a "dot not work".

Por cierto, lo más probable es que te lleves una sorpresa con el vídeo ya que ni el hashcode ni los strings son los que estás pensando.

 

lunes
sep242007

Estimación de tareas y proyectos

Leyendo por ahí, he encontrado un artículo muy interesante sobre la estimación de tareas.

 

Trata el proyecto de la construcción de un fuerte o cabaña para los niños. Lo interesante es que el constructor decide hacer una estimación y luego analizar cómo ha ido y comparar un poco lo que suele pasar en proyectos de software.

Una conclusión interesante es que es demasiado fácil estimar por debajo obviando tareas que simplemente no se cuentan o teniendo demasiado optimismo al valorar tareas que nunca se han hecho antes. Otra es el error de utilizar unidades de medida demasiado amplias / gruesas, en este caso días; se evita descomponer las tareas en otras más pequeñas y se termina por dar una estimación que no tiene en cuenta la realidad de las subtareas que comprende.

 

Quizá el error más importante -y que ocurre demasiado frecuentemente- es el de confundir objetivo con estimación. Una estimación bien hecha debe ser objetiva e independiente de la fecha objetivo que se pretenda alcanzar. Después se verá cómo poder alcanzar la fecha objetivo o si debe ser revisada, pero si la estimación se hace dependiendo de la fecha objetivo será siempre una estimación distorsionada e irreal.

lunes
sep242007

Spring BeanDoc. Primeros pasos

Una de las cosas que tiene Spring por las cuales creo me ha comenzado a gustar es que, tiene todo un conjunto de proyectos al rededor del framework principal.

Solo tenemos que ver el listado dentro del sitio oficial de Spring para darnos cuenta de esto:

De entre todos estos proyectos, le he dado una revisada al Spring BeanDoc y me ha encantado ya que existen un par de cosas que he aprendido sobre la documentacion:

 

  • Nunca es suficiente la documentación que dejas sobre tu código.
  • Mientras mas documentación legible dejes, menos te maldecirá la persona que lo retome.
  • Dicha persona puedes ser tu mismo si vuelves tiempo después al mismo proyecto :P

Por eso es que me ha encantado este subproyecto de Spring, ya que, como su nombre lo dice, ayuda a documentar la información de los Beans que utilizas en tu aplicación.

El presente documento muestra cuales son los pasos para poner en marcha y utilizar las bondades de esta herramienta:


Paso 1.
Accedemos a la página principal del proyecto y descargamos la última distribución estable.
http://spring-beandoc.sourceforge.net/

Home de SpringBeanDoc

Figura 1. Home de Spring BeanDoc


Este es el enlace para descargar la version 0.8.1

http://sourceforge.net/project/showfiles.php?group_id=209187


Download spring beandoc

Figura 2. Descarga desde sourceforge

Descargamos el archivo: spring-beandoc-0.8.1-bin.zip

Una vez descargado, al descomprimirlo obtenemos una estructura como la siguiente:

 

Estructura de carpetas

Figura 3. Estructura de carpetas de Spring BeanDoc.

La página principal nos pide que instalemos adicionalmente un programa que nos ayuda a generar los grafos de la documentación.

Paso 2. Instalación de GraphViz.

Visitamos http://graphviz.org/

Home graphviz

Figura 4. Home de graphviz.org

El enlace para descargar la versión actual - para Windows - es:

http://graphviz.org/Download_windows.php

Descargamos el archivo:graphviz-2.16.1.exe

Lo ejecutamos:

Instalacion de graphviz

Figura 5. Instalación de Graphviz.

 

Al terminar la instalacion, debe quedarnos una estructura como la siguiente:

Estructura de carpetas de graphviz

Figura 6. Estructura de carpetas de Graphviz.

 

Paso 3. Proceso de verificación.

A grandes rasgos, Spring BeanDoc genera la documentación y los grafos a partir de los XML's de configuracion de nuestros spring Beans.

La siguiente imagen intenda ilustrar esto:

Diagrama de bloques de spring beandoc

Figura 7. Diagrama de bloques de Spring BeanDoc.

La ubicación de esos XML's y otros parámetros de configuración se definen en un archivo .properties y a partir de él Spring BeanDoc se encarga de hacer el trabajo sucio.

Aquí las modificaciones que realice al archivo petclinic-beandoc.properties que se ubica dentro de la carpeta de examples:

  • Se definio la ubicación de los XML's de entrada
  • Se definio la carpeta de salida
  • Se definio la ubicación del archivo dot.exe que genera los grafos.

# ----------------------------------------------------------------------------
# Petclinic beandoc.properties configuration file.
#
# See the 'template-beandoc.properties file for annotated examples of what
# you can configure.
# ----------------------------------------------------------------------------

input.files=C:/WorkArea/dev/spring/beandoc/spring-beandoc-0.8.1/samples/petclinic/*.xml
output.dir=output/petclinic

html.title=Petclinic Application Context
html.cssUrl=wheat.css


compiler.dotExe=C:/Program Files/Graphviz2.16/bin/dot.exe

graphs.colourBeans[.*Proxy$]=#badbad
graphs.ignoreBeans[0]=^org\.springframework.*Property.*Configurer
graphs.ignoreBeans[1]=.*MessageSource
graphs.rankBeans[0]=.*DataSource
graphs.outputType=png
# ----------------------------------------------------------------------------

Ya que tenemos definido nuestro archivo properties, solo necesitamos ejecutar la clase que realiza la transformación:

Esta es:
org.springframework.beandoc.client.BeanDocClient

Esa clase se encuentra en el jar: spring-beandoc-0.8.1.jar y recibe un como parametro el archivo .properties.

Así, para generar nuestra documentación a partir del ejemplo del petclinic tenemos que debemos ejecutar:

[INSTALL_BEANDOC]/samples> java org.springframework.beandoc.client.BeanDocClient --properties petclinic-beandoc.properties

[Asegurate de agregar todos los jars ubicados en la carpeta [INSTALL_BEANDOC]\lib para que la compilación no se queje con un NoClassDefFoundError o en su defecto ejecutalo con la opcion -cp]

Y listo!!!

Documentacion generada

Figura 8. Documentación generada con la herramienta.

Hemos generado nuestra documentación de nuestro proyecto spring a partir de nuestros archivos XML utilizando la herramienta BeanDoc.

Saludos!!!
RuGI
Isaac Ruiz Guerra.