viernes, 13 de marzo de 2009

Patrón M-V-C con JavaScriptMVC

Un compañero del curro, que coincido con el en las clases de inglés me comentó que están trabajando en un proyecto de TID con el framework JavaScriptMVC es algo que hay que tener en cuenta en el desarrollo de aplicaciones con mucho JavaScript y que cada día hay más para utilizar la tecnología Ajax.
A ver si le lío para que escriba algo, le daré la coña en las clases de inglés.

miércoles, 4 de marzo de 2009

JavaFx, la competencia a Flash

SUN ha sacado hace muy poco, creo que finales del año pasado una nueva SDK, llamada JavaFX orientado a dispositivos móviles, navegadores, televisiones conectadas a internet y todo tipo de cacharros conectados a la red. Es un API orientado a poder ofrecer contenidos con alto grado de rendimiento gráfico.
Muy interesante esta alternativa, pensando que funciona sobre J2ME (eso dice la publicidad) y esta JVM está instalada en gran parte de los dispositivos más conocidos.
Ejemplos:
Big Buck Bunny
Galería de ejemplos
Parece que SUN quiere seguir en la brecha y no perder comba.

miércoles, 21 de enero de 2009

Comandos Unix útiles para un compa y de paso para tod@s

Como sé que uno de nosotros está embarcado en un nuevo proyecto con HP-UX (del que yo no tengo ni idea) y debe ser algo pareceido a UNIX, aquí dejo mis conocimientos básicos que he utilizado y que seguro que en lgunos casos son incorrectos o no funcionan en todas las versiones de Unix pero siempre es bueno tener algo aproximado, por lo menos con esto yo he sobrevivido a soporte de máquinas en producción con Solaris como Sistema Operativo. En fin chuleta made in acme:

Comandos unix utiles

1. chmod 744 "elfichero"---> cambio de permiso del fichero
2. nohup ./startWebLogic.sh & ---->Ejecuta el fichero y manda la
salida al fichero nohup
3. tail -f nohup.out ----> Visualizamos lo que sale por el fichero
4. ps -edaf ----> visualiza todos los procesos que corren la máquina
5. ps -edaf | grep "palabra_filtro"----> saca todos los procesos que
pasan el filtro
6. kill -9 "numeroproceso"----> mata el proceso corresponediente
7. r "cualquier letra"---> ejacuta el último comando ejecutado que
empieza con la cadena especificada. si no se pone ninguna cadena ejecuta el
último comando ejecutado.
8. df -k ------> muestra las capacidades de las particiones
9. jobs
10. kill -9 %"numero del job"
11. ln -s "nombre del directorio real" "nombre del alias"----> crea
un link simbólico soft.
12. gzip -d ---->descomprime un gz en el directorio actual
13.tar xvf ----->desempaqueta un tar en el directorio actual
14.tar cvf "nombre del archivo tar" "archivos a empaquetar"----->
genera un fichero .tar
14 gzip "nombre del archivo a comprimir" ------> comprime el fichero
y lo graba con extensio.gz
15 rm -R "nombre de directorio" -------> borra todos los ficheros de
un directorio y los subdirectorios
16 du -kos "nombre de directorio"-----> nos da el tamaño del
directorio en KB (1024bytes)
17 df -k ------>Da el tamaño de las particiones y el espacio libre
que queda en cada una de ellas.
18 tar tvf "nombre archivo tar"---->Da el contenido del archivo tar.
19 dos2unix "nombre de fichero" > "nombrefichero" ----->formatea
bien los ficheros de texto editados en entorno windows. Por ejemplo los
retorno de carro
20. > envía la salida
21. hostname---->devuelve el nombre de la máquina
22 Fichero .profile:

Ejemplo
-------
#fijando el path
PATH=.:/usr/local/Solaris_JDK_1.2.1_04/bin:/bin:/usr/bin:/usr/sbin:
#meto el path donde guardar los scripts que me cree
PATH=$HOME/scripts:$PATH:.
export PATH
#exportando el vi
EDITOR=/usr/bin/vi
ED=/usr/bin/vi
EDIT=/usr/bin/vi
export EDITOR ED EDIT

#configurando el prompt
HOSTNAME=`hostname`
export=HOSTNAME
PS1='$HOSTNAME-$LOGNAME@$PWD'
export=PS1

#Fijando el vi como editor de la shell
set -o vi

#alias
alias ll='ls -laF'

23. find "directorio desde donde se va a buscar" -name "cadena a
buscar" -print
24. pkgmk -f prototype.pkg -o ---> genera el paquete y lo
sobreescribe si ya estaba en /var/spool/pkg
25. pkgadd "nombre del paquete" --->Instala el paquete. Hay que ser
root. Si el paquete no está en /var/spool/pkg hay que ejecutar
pkgadd -d "path al paquete".
26. pkgrm "nombre del paquete" ---> Borra el paquete.
27. command para las X del Exceed @(XTerm, method=stdappdb) -display
@d0.0.
28. cp -r "directorio origen" "directorio destino" ---> copia un
directorio al destino fijado
29. admintool ---> Herramienta visual (se necesita un servidor X
levantado) para crear usuarios.
30. chown -R "usuario":"grupo" "nombre del directorio" --> Cambiar
el propietario del directorio.
31. tip hardwire --> te permite hacer de consola a una máquina
solaris siempre que haya una conexión física a la máquina a la que se
quiera
conectar.
32. Para parar una máquina SUN ejecutar:

>sync
>sync
>sync
>reboot
33.ifconfig -a --> Da la información de red de la máquina.
Ejemplo
-------
$ ifconfig -a
lo0: flags=1000849 mtu 8232
index 1
inet 127.0.0.1 netmask ff000000
eri0: flags=1000843 mtu 1500
index
2
inet 172.16.70.18 netmask ffffff00 broadcast 172.16.70.255
groupname ipmp_imode1
eri0:1: flags=
9040843
mtu
1500 index 2
inet 172.16.70.16 netmask ffffff00 broadcast 172.16.70.255
eri1: flags=
69040843TAN
D
BY,INACTIVE> mtu 1500 index 3
inet 172.16.70.17 netmask ffffff00 broadcast 172.16.70.255
groupname ipmp_imode1

Esta información nos dice que tiene una dirección loopback
127.0.0.1.
Tiene una dirección
virtual con IP=172.16.70.18 montada sobre dos tarjetas físicas
172.16.70.16 e 172.16.70.17
donde la primera de ellas está funcionando y la otra está en standby
para entrar en funcionamiento
si la primera se cae.

34. ls -latr ---> Hace un listado ordenandolo por fecha.
35. /etc/resolv.conf ---> El fichero con los servidores de DNS
36. /etc/rc2.d/S99routeset ---> El fichero con todas las rutas de la
máquina.
37. uname -a ---> Da el nivel de parches de una máquina Solaris.
38. /etc/nsswitch.conf ---> Fichero donde se especifica la forma de
resolver los nombres de máquina (etc/hosts, DNS etc...).
39. En /etc/hostname.eri0 ---> Este fichero define la ip y otros
parámetros de red de la targeta de red eri0. Para cada interfaz existe un
fichero del tipo hostname.erix. Para interfaces que no son de serie sería
qfex
40. eprom ---> da la configuración de la eprom de la máquina.
41. /etc/inetd.conf --> Fichero de configuración de los servicios
TCP/IP de la máquina
42. /etc/vfstab ---> fichero donde se describe el sistema de
ficheros de la máquina
43. useradd -g staff -d /home/diego -s /bin/ksh -m diego ---> Crea
el usuario diego en el grupo staff, en el directorio /home/diego, con
la shell /bin/ksh
45. passwd "nombre_usuario" cambia el password al usuario.
46. stty erase "tecla a utilizar para borrar"--->defines la tecla
que quieres utilizar para borrar
47. sar "tiempo de cada muestreo en segundos" "numero de ciclos"
---> muestra la utilización de cpu de la máquina es una especie de top.
Ejemplo
sar 10 1000 realiza una muestra cada 10 segundos durante 1000
ciclos.
48. En los directorios /etc/rcx.d se ponen los scripts que se quiere
que ejecuten cuando se arranca la máquina. Si por ejemplo se arranca
en el nivel 3, se ejecutarán los scripts fijados en en los directorios
/etc/rc0.d, /etc/rc1.d, /etc/rc2.d y /etc/rc3.d. Solo se ejecutan
los ficheros que empiezan por S por ejemplo 'S99routese' para mas
detalles mirar el fichero /etc/init.d/README.
49. /usr/platform/sun4u/sbin/prtdiag ---> Nos da información de la
configuración de la máquina.
50. psrinfo -v --> Nos da información del procesador.
51. showrev -p --> Nos dice los parches que hay instalados
52. umask --> nos da la mascara por defecto que tiene el usuario al crea
los
ficheros.
53. kill -HUP "id process" --> Manda una señal de restart al proceso. Se
utiliza normalmente para rebotar un demonio y forzarle a recargar el
fichero
de configuración.
54.Ejemplo de como hacer un export display de forma automática. Solo hay
que meterlo en el .profile
#Exporta el display
rhost=`who am i | awk -F'(' '{print $2}' | awk -F':' '{print $1}' |awk -
F')'
'{print $1}'`
DISPLAY=$rhost:0.0
echo "DISPLAY=[$DISPLAY]"
export DISPLAY
55. fc -l --> Lista el histórico de los comandos ejecutados
56. fc -s "numero de la linea del histórico" --> Vuelve a ejecutar el
comando que ocupa la el número de línea especificado.
57. tr "cadena" "nuevo cadena" --> Este comando sustituye una cadena por la
nueva cadena.
58.snoop -x0 -o snoop_test port 8080 or port 389 or port 80.
snoop -x0 -o snoop_test port 8080 or port 389 or host 205.244.47.30
para http://www.imodelinks.com/ Este comando vuelca en el fichero
snoop_test.txt todo el tráfico de red de la máquina que entra por el puerto
8080 (puerto de escucha del Proxy Pull) el que se produce con el puerto 389
(puerto del SIU) y con el puerto 80 que es el puerto de los servidores web.
59. ldapsearch -h 172.16.20.108 -b o=SIU LOGIN-IP=172.16.70.25
Este comando realiza una consulta Ldap al SIU que está en la máquina
172.16.20.108, sobre los datos que tiene para la IP 172.16.70.25.

Os invito a que sigáis con la lista ......

Nuevo cliente Java para SVN: SVNKit 1.2.2

Como parece que se está consolidando la opción de utilizar para nuevos desarrollos el SVN, e ir aparcando nuestro querido CVS. Creo que es interesante seguirle la pista a este proyecto que no se ni si quiera se integra con eclipse pero seguramente es interesante conocer para nuestra intergración continua realizada bajo el proyeto R2D2.

viernes, 9 de enero de 2009

miércoles, 17 de diciembre de 2008

Design Patterns: Visitor (Visitante)

El patrónVisitor tiene como objetivo representar una operación que se realiza sobre una colección de elementos.
Es efectiva para estructuras con objetos de tipo heterogéneo, sobre los que pretendemos aplicar una nueva funcionalidad.
Usando este patrón nos evitamos "contaminar" las clases de los elementos y preguntar por el tipo de ellos (casting).
En su esquema estructural se concentra la funcionalidad en el Visitante, que implementará métodos visit() para cada tipo de elemento.
Cada elemento permitiría su visita con llamadas a métodos accept().
¿Queréis saber cómo se produce tal diálogo?
Nos vemos en el seminario!

martes, 16 de diciembre de 2008

Apache Tapestry

Tapestry es un marco de trabajo J2EE de código abierto para el desarrollo de aplicaciones Web Java basadas en componentes y orientadas a objetos. Simplemente, en lugar de tratar con el API Servlet o con las Actions de Struts. Tapestry almacena los datos de usuario con propiedades de objetos y maneja las acciones de usuario con métodos manejadores de eventos.

Otra característica importante de Tapestry es el uso de plantillas HTML. En Tapestry cada página es una plantilla HTML que contiene etiquetas HTML amigables para el navegador. Al contrario que las páginas JSP, JSTL o JSF, crear páginas Tapestry es relativamente fácil utilizando herramientas de diseño Web comunes, y puede previsualizarlas en un navegador.

Tapestry esta bajo la licencia de Apache Software 2.0. Se caracteriza por ser fácilmente integrable con cualquier tipo de Back-End, incluyendo J2EE, Spring…

Tapestry está organizado en torno a cuatro principios clave:
  • Simplicidad: las aplicaciones web no debe complejas.
  • Uniformidad: Lo que funciona en pequeñas aplicaciones deben funcionar en grandes aplicaciones. Diferentes desarrolladores deben encontrar soluciones similares a problemas similares.
  • Eficiencia: Las solicitudes deberán ser eficiente y escalable.
  • Feedback: Cuando las cosas van mal, el marco no debe ponerse en el camino, en realidad, debería servir de diagnóstico.

Estos cuatro principios de unidad se pueden resumir en: La opción más simple debe ser la elección correcta.

domingo, 14 de diciembre de 2008

Nuestros seminarios 2008

A continuación se presentan los seminarios propuestos para el 2008:

Seminario de XML y SAX

No ha llovido ni nada desde que David Megginson y su equipo en diciembre de 1997 presentaran al XML-DEV una prueba de concepto para el manejo de XML con Java, que pasaría a ser en enero de 1998 la versión de SAX 1.0. Actualmente es de facto el API de bajo nivel estándar para el manejo de XML, desde el cual se apoyan otros API´s y frameworks para el manejo de XML.

Este seminario pretende dar unas nociones básicas de todos los API´s que actualmente se manejan en Java para manipular y procesar documentos XML y como no, prestando especial atención al API de SAX.

Es fundamental conocer conceptos básicos de XML, para poder abordar con garantías de éxito desarrollos sobre otras tecnologías tan habituales como son los WebServices, Ajax, SOAP y el manejo de muchos estándares que utilizan Schemas como lenguaje para definirlos, sirva de ejemplo el seminario que nos dio el pasado año Ivan con su Batik

Así que oiremos APIs como: SAX, DOM, JAXP, JDOM, Stax. Parsers: Xerces, XML4J, Crimson, Oracle XML Parser, y MSXML (de Microsoft). Y algunas cosas más.

En fin algo que parece sencillo pero que tiene un montón de siglas, APIs, componentes, tecnologías, productos y frameworks. Espero que os pueda aclarar algo en esta jungla de siglas.

DNM

jueves, 11 de diciembre de 2008

Seminario Cocoon

Cocoon es un framework para la creación de aplicaciones web, centrado en XML y realizado sobre Spring. Permite la separación entre contenido y presentación, teniendo por un lado la generación de información adecuada en un formato estándar y por otro lado permite definir distintas vistas de esos datos. Así, la necesidad de tener disponibles los datos en un nuevo formato sólo implica la creación de una nueva vista. Su sistema de publicación está basado en XML/XSL.

Ventajas de este tipo de publicación:
  • Separación limpia entre contenido y presentación.
  • Permite separar claramente los papeles del programador y el diseñador.
  • Proporciona una mejora muy notable del mantenimiento: Se puede realizar un cambio radical de imagen de todo un site web con tan solo modificar las hojas XSL y sin tocar ni una sola línea de código.
  • A partir de un solo documento XML con el contenido, se pueden obtener páginas HTML para su presentación web, páginas WML para dispositivos WAP, documentos PDF para imprimir, etc.
  • Aunque no hay ningún estándar que regule como debe ser un sistema de publicación si que está basado en estándares con mucha fuerza en el mercado, por lo que es más sencillo pasar de usar uno a usar otro.
  • Es compatible con el resto de tecnologías web como servlets, JSPs...

martes, 9 de diciembre de 2008

Seminario Velocity

Dentro del mundo de la programación Web está extendido en todos los desarrollos de aplicaciones la utilización del MVC(Model View Controller).Una aproximación más del esfuerzo para separar el trabajo de un programador Web del de un diseñador Web dentro de este patrón es la utilización de Plantillas.Velocity es un motor de plantillas que mediante su lenguaje llamado VTL inserta contenido dinámico en la parte de la presentación de la aplicación.

Como ventaja a priori que puede tener frente a la utilización de JSP tenemos la posibilidad de separar la parte HTML y el código Java de manera completa, ya que en el caso de JSP podemos incorporar todo el código Java que queramos,cosa no muy recomendable.Como otras utilidades tenemos la generación de informes,envio de correos,etc.

Desventaja,el uso extendido de JSP y la industria que lo respalda que hace difícil la competencia.

Espero con este artículo mostrar que existen alternativas a los JSPs que quizás puedan ser interesantes.

PD:Ahora soy un G4, espero poder seguir siendo bienvenido en este blog 'G5' ;-)

jueves, 31 de julio de 2008

El estrés en el trabajo

Mikel me ha mandado un enlace a un artículo que me parece muy interesante, y que deberíamos tener siempre en cuenta cuando estamos trabajando y yo diría que se podría aplicar incluso cuando no estás trabajando. Al final siempre se cae en las mismas trampas hasta cuando te estás preparando las vacaciones u organizando tu tiempo libre.

Un saludo

DNM

jueves, 19 de junio de 2008

GRID Computing una realidad en el mundo científico

Para el que tenga curiosidad sobre las últimas aplicaciones prácticas del GRID computing sobre infraestructura de Internet (en la red académica con anchos de banda de vértigo) podéis leer cosas muy interesantes relacionadas con las historias en la que andan embarcados los del CERN en la puesta en marcha de la última generación del aceledador de partículas LHC (Large Hadron Collider) y su proyecto de GRID Computing asociado.

Que lo disfrutéis. Prohibido preguntar qué son los Hadrones ;-)

DNM

viernes, 13 de junio de 2008

Incrementando la memoria en los porcesos ANT

Una de los problemas típicos en el desarrollo de las pruebas unitarias y funcionales que realizamos con JUnit y JMeter respectivamente, es que se lanzan con el ANT y según crecen aparecen los típicos OutOfMemory lanzándolas ¿Como las resolvemos? pues bien fácil.

  1. Crear la variable de entorno ANT_OPTS
  2. Asingnarle la memoria deseada como por ejemplo -Xms256M -Xmx512M, que se corresponde con una reserva inicial de 256MB y una máxima de 512MB
Hay que pensar que sobre todo consume mucha memoria la generación de informes con XSLT si los XML con los resultados son muy grandes (típico en las pruebas de carga o estabilidad).

Espero que sea de utilidad

DNM

lunes, 26 de mayo de 2008

Caminando hacia un estandar para el Etiquetado del software en el CVS del G5

Como ya sabéis casi todos en todos los proyectos que está haciendo nuestro grupo todo el software se etiqueta con un criterio muy objetivo, que nos permite definir la calidad del software que va en cada entrega (versionado del código). Esto lo podemos hacer gracias a que seguimos un estilo de programación basada en TDD (Test Driven Development), y con la integración continua como pieza fundamental de nuestra forma de trabajar. Quiero utilizar este artículo como punto de inicio de discusión para concretar cual sería la forma mas coherente de etiquetar el software, que personalmente pienso debería permitir con el simple hecho de leer la etiqueta, tener una idea clara de cual es la calidad del software para que el cliente pueda determinar si le interesa "asumir el riesgo" de ponerlo en producción.

Actualmente nuestra nomenclatura es la siguiente.

NOMENCLATURA DE VERSIONADO EN EL CVS

El etiquetado de las versiones en el cvs de desarrollo tiene el siguiente formato generico:

V_XX_XX_XXXX

Un ejemplo sería v_00_05_00M1. La descripción de cada uno de los caractéres y su modificación es la siguiente:

  • Los dos primeros dígitos para la identificación de la versión principal, estos digitos se incrementan cuando:
    • Hay un cambio importante en la arquitectura de la plataforma. Es decir del core o capas generales de la arquitectura de la plataforma, Servidor de aplicaciones o Base de Datos.
    • Hay un incremento significativo de funcionalidades que cubre la plataforma. Normalmente estará asociado a incorporación de nuevas Capacidades o evoluciones importantes de las ya implementadas.
    • Evolución en JDKs y APIs de JEE.

  • Los dos siguientes digitos designan evoluciones moderadas para una versión principal dada. Estos dígitos se incrementan cuando:
    • Hay nuevas funcionalidades y mejoras sobre la versión anterior. Normalmente estarán asociadas a incorporación de nuevas Capacidades o funcionalidades de los interfaces de usuario.
  • Los dos últimos dígitos designan parches a la versión correspondiente.
  • Por último se tienen los siguientes textos:
    • Mx: (Mile Stone x) Designa una versión que pasa almenos el 70% de las pruebas automáticas Funcionales (JMeter) de regresión y pasa el 100% de las pruebas unitarias (JUnit) de regresión de la plataforma.
    • RCx: (Release Candidate x) Designa una versión que:
      • RC1: Pasa el 100% de todas, las pruebas de regresión (automáticas).
      • RC2: Pasa al menos un 70% de las pruebas definidas en el plan de pruebas para dicha versión.
      • RC3: Pasa las pruebas de RC1, RC2, el 95% de las pruebas definidas en el plan de pruebas para dicha versión que no estén pospuestas. Siempre que el 5% de las pruebas no pasadas no sean defectos importantes o críticos, en un estado de asignado o resolvíendose.
    • Rx: (Release) Designa una versión que pasa las pruebas de RC3 y:
      • Pasa las pruebas de carga definidas en el "Rendimiento de la aplicación".
      • Pasa las pruebas anteriores y las de estabilidad.
    • Sin texto: Es la versión estable del aplicativo donde ha pasado el100% de las pruebas de regresión, las pruebas definidas en el plan de pruebas , las pruebas de rendimiento, las pruebas de concurrencia, las pruebas de estabilidad definidas en la versión y se ha realizado una reunión entre el jefe del equipo de pruebas y el Jefe de Proyecto para aceptar los resultados del plan de pruebas.

DNM

192.168.5.30

jueves, 24 de abril de 2008

PayPal va a exigir EV SSL a los Navegadores

PayPal, la empresa más importante de pagos por internet, y que según hispasec más ataques de Phishing sufre, ha anunciado que para evitarlo va a bloquear los navegadores que no soporten tecnología EV SSL. Esto es un paso más en el incremento de la seguridad los navegadores como son de facto el cliente universal de todas las aplicaciones de internet. Verisign está detrás de todo esto así que seguro que marcará tendencias esta decisión de PayPal. No soy un experto en seguridad, pero por lo poco que entiendo se utiliza el estandar SSL para verificar por parte del navegador de forma automática que la conexión HTTPS a un dominio es realmente al que quiere acceder el usuario y el servidor web realmente lo valida. Son observaciones iniciales, para más detalles tendréis que leeros las especificaciones ;-).

DNM

miércoles, 2 de abril de 2008

Implantando SCRUM en el equipo

Para implantar SCRUM como metodología de trabajo para el proyecto SEL necesito que todo el mundo se lea el artículo de Jorge Serrano que explica a su abuela en qué consiste esta metodología. Espero los comentarios de todos vosotros ;-)

DNM

domingo, 9 de marzo de 2008

DIA, una herramienta Open Source para diagramas

Todos encontramos de vez en cuando la necesidad de plasmar un diseño, una arquitectura o incluso una idea a través de un diagrama, ya sea ER, UML, o unas cuantas cajas unidas por flechas.

Últimamente he estado probando DIA, una herramienta para hacer diagramas Open Source disponible para Linux y Windows, y lo más importante, simple y flexible.Viene ya con los elementos para hacer diagramas UML y ER.

A diferencia de herramientas CASE más complejas y completas, DIA no aspira a más que ser el típico "pintamonas" y lo hace bien.

Tras arrancarlo, aparecen dos pantallas. La principal es el área del diagrama, que presenta un continuo de hojas para a trabajar.
La secundaria de control permite escoger cualquiera de los elementos del lenguaje que estemos usando para el diagrama (UML, ER, etc...), además de líneas, cuadros, áreas de texto y demás formas.

En concreto para diagramas ER trae entidades, relaciones, atributos y los imprescindibles conectores.

  • Para las entidades, podemos ponerle nombre, indicar si es débil o asociativa, y los parámetros de formato (colores y fuentes)
  • Para las relaciones, permite indicar la cardinalidad, orientación del rombo, darle un nombre y cambiar los parámetros de formato.
  • Los conectores, una vez asociados a la entidad y a la relación, ajustan automáticamente la línea cuando mueves una u otra, y también permite cambiar los puntos de los "codos".

Lo he estado usando con un diagrama de unas 20 entidades aproximadamente, relaciones por todos los lados, etiquetas y algunas explicaciones, y no me ha dado mayor problema.

En resumen un pequeño "Visio" mucho más sencillo y open source.

Para linux lo podéis encontrar en los repositorios de vuestra distribución favorita, y para windows lo podéis descargar de sourceforge. (http://dia-installer.de/index_en.html)

Como curiosidad, el fichero que genera en un XML comprimido, así que supongo que podría llegar a acoplarse a eclipse e incluso a un CVS.

sábado, 1 de marzo de 2008

Artículo: JSF

La tecnología JavaServer Faces surge como una solución a la separación entre la presentación y el comportamiento en una aplicación Web, de forma tal que las actividades de los autores de las páginas puedan separarse de las actividades de los desarrolladores de la lógica. Además, esto posibilita el desarrollo de entornos de desarrollos (IDE) que permitan trabajar en el diseño con funcionalidades del tipo drag-and-drop. Esta tecnología define un modelo de componentes UI que permiten definir la estructura del componente, diferentes formas de presentación, validaciones, la navegación entre las páginas y otros elementos.

Al igual que Struts, JSF pretende normalizar y estandarizar el desarrollo de aplicaciones web. Hay que tener en cuenta JSF es posterior a Struts, y por lo tanto se a nutrido de la experiencia de este, mejorando algunas sus deficiencias. De hecho el creador de Struts (Craig R. McClanahan) también es líder de la especificación de JSF.

JSF trata la vista (el interfaz de usuario) de una forma algo diferente a lo que estamos acostumbrados en aplicaciones web. Sería más similar al estilo de Swing, Visual Basic, donde la programación del interfaz se hacer a través de componentes y basada en eventos (se pulsa un botón, cambia el valor de un campo, ...).

JSF es muy flexible. Por ejemplo nos permite crear nuestros propios componentes, o crear nuestros propios “render” para pintar los componentes según nos convenga y es más sencillo.


  • Autor: Isaac Remiro
Recursos y seminario completo en:

  • /cvspanel/formacion/JSF

viernes, 29 de febrero de 2008

Programación de sistemas en tiempo Real en Java

Yo personalmante no tenía ni idea de que hay un grupo de expertos trabajando en las especificaciones para que java sea un lenguaje que permita el desarrollo de aplicaciones en tiempo real.
De momento he encontrado una empresa Aonix qué está especializada en este tipo de desarrollos y quizá sea un buen sitio por donde empezar. Tienen incluso un producto PERC Pico con el que desarrollan productos comerciales.
¿Y que hace la comunidad Java? Pues hay un grupo en el Java Community Process el Real-time Specification for Java (RTSJ) que es el que marca las pautas.
Queda por investigar como está el mundo Opensource en este aspecto ¿Hay entornos de desarrollo específico?¿librerías GPL? etc.