Buscar
Social
Ofertas laborales ES
miércoles
feb062008

Licencias de JavaRebel gratuitas para los desarrolladores de software libre

JavaRebel es un producto comercial que pretende resolver el doloroso ciclo de codificación, compilación y despliegue de aplicaciones Java. Para ello permite la modificación de bytecode "on the fly" sin necesidad de reiniciar el servidor de aplicaciones o de volver a hacer un despliegue de la aplicación. En su versión 1.1 están trabajando en conseguir recargar anotaciones y otros artefactos de configuración habituales en los framework web a través de una integración más estrecha con estos framework.

En una carta abierta a la comunidad los desarrolladores de JavaRebel animan a los diferentes frameworks web java a integrarse con su producto para permitir una recarga completa de las aplicaciones desarrolladas en ese framework. Para facilitar esto, también han decidido regalar licencias del producto a todos los desarrolladores de software libre.

miércoles
feb062008

ScalaTest, JUnit para Scala

Bill Venners ha anunciado la primera versión pública de ScalaTest, una especie de "JUnit" para Scala. Scala es un lenguaje de programación de carácter funcional que compila a bytecode y que presenta unas características excelentes para el desarrollo de aplicaciones altamente paralelas.

 

ScalaTest se basa en una herramienta que Bill construyó en su día para testar aplicaciones Java; antes de hacerla pública apareció JUnit y Bill sintió que su herramienta ya no tenía demasiado sentido y no le dio publicidad. Ahora la ha reutilizado para este nuevo lenguaje de programación de la plataforma Java.

¿Cuantos por aquí habéis empleado Scala?

lunes
feb042008

Jawr, herramienta para empaquetar y comprimir javascript y CSS

Recientemente he publicado una librería open source llamada Jawr. Se trata de una herramienta que ayuda a los desarrolladores web en la creación y mantenimiento de código javascript usando un sistema modular, en lugar de meter todo dentro de uno o dos archivos enormes. También hace funciones de compresión, tanto para javascript como para CSS. Además de permitir estructurar el código en archivos separados, reduce los tiempos de carga de las páginas al minificar y comprimir los archivos hasta la séptima parte de su tamaño original.

La actual tendencia hacia aplicaciones web "ricas" lleva a un aumento en el uso de javascript y AJAX. Esto implica que el volumen y complejidad del código javascript en una aplicación promedio ha crecido considerablemente.
El programador java está acostumbrado a distribuir el código en módulos separados (clases), cada uno de los cuales reside normalmente en un archivo independiente. Sin embargo, al desarrollar en javascript hay que tener en cuenta que los clientes deben descargarse el código mediante peticiones HTTP. Los navegadores más usados hacen solo dos peticiones HTTP concurrentes contra el mismo host, de modo que cuantos más archivos haya que descargar, tanto mayor será el tiempo que tarda en cargar una página.

En consecuencia, una aplicación en la que el javascript esté altamente modularizado tendrá unos tiempos de carga de página inaceptables. Podeis leer un artículo muy interesante sobre este tema en este artículo de uno de los autores de Flickr: Serving JavaScript Fast.

¿Cómo se resuelve este problema? Las soluciones más habituales normalmente dificultan el proceso de desarrollo:

  • La forma más sencilla de solucionar el problema es meter todo el javascript en unos pocos archivos enormes. Estos archivos son difíciles de mantener: es difícil localizar partes específicas del código, hay que tener cuidado cuando varias personas tocan el archivo a la vez, y es difícil seguir el historial de cambios en el control de versiones.
  • Por otro lado, se puede crear un script de construcción (tipo ant) que una todos los módulos al compilar el proyecto. Esto tiene la desventaja de obligarnos a hacer un ciclo completo de compilación-redespliegue cada vez que queremos probar el mínimo cambio al javascript o CSS. Además, hay que tomarse el trabajo de crear el script de construcción y mantenerlo, cosa que al final no se hace salvo en los proyecto más grandes (y ni aún en estos).

Jawr permite crear archivos .js y .css 'virtuales' que se denominan bundles (paquetes). Usando un sencillo archivo .properties, se añaden archivos individualmente o directorios enteros a los paquetes. Funciona del siguiente modo:

  • Cuando se despliega en producción, Jawr minifica y une todos los archivos que pertenecen a los paquetes. Los paquetes se crean en una versión normal y otra comprimida con gzip. Este proceso tiene lugar en el momento del despliegue de la aplicación, de modo que después no hay un coste de proceso añadido a las peticiones.
  • Una tag library se emplea para generar enlaces en las páginas, que convierten una referencia a un .js particular en un enlace al paquete al que dicho .js pertenece.
  • Un servlet se configura para atender peticiones para archivos .js y .css. En caso de que el navegador lo permita, el contenido se enviará comprimido con gzip.

Jawr tiene un modo de ejecución para desarrollo en el que los paquetes no se utilizan. En lugar de esto, la tag library crea enlaces individuales para cada uno de los miembros del paquete, que se sirven sin minificar ni comprimir. Esto permite realizar un desarrollo  sobre directorio WAR explotado, en el que podemos cambiar código javascript, refrescar una página y ver inmediatamente los cambios.

Para cambiar del modo de producción al de desarrollo no hay más que cambiar un flag del archivo .properties de configuración. Otras ventajas incluyen el uso de técnicas de cacheo agresivas, para forzar a que los clientes no descarguen los paquetes más de una vez, la posibilidad de declarar paquetes globales que se cargan automáticamente en cada página, mecanismos sencillos para especificar el orden en que se empaquetan los archivos, etc.

Eso sí, la documentación, aunque bastante completa, está toda en inglés... sorry! :-(

Podeis descargarlo de esta dirección. (También se puede usar el Maven).  

lunes
feb042008

Próximos Seminarios de Paradigma Tecnológico

Próximos Seminarios de Paradigma Tecnológico

 

FechaTítuloHorario
08-febStruts 2 con AJAX9 h - 11 h
22-febHibernate 39 h - 11 h
24-marOpen Architecture Ware9 h - 12 h
07-abrPruebas automáticas con JRuby9 h - 12 h

¿En qué consisten estos seminarios?

Los Seminarios Técnicos de Paradigma Tecnológico son acciones puramente técnicas de dos horas de duración. Esta formación se imparte por desarrolladores especializados que utilizan estas tecnologías en el día a día en sus proyectos y que atenderán y resolverán todas las dudas que se planteen durante el seminario. ¿Documentación?Una vez impartido el seminario, se dejará documentación en el wiki con la presentación utilizada. Ya tenéis disponible la información del primer seminario impartido “Ciclo de vida de aplicaciones e Integración Contínua”¿Quién puede asistir?Son seminarios gratuitos a los que pueden asistir tanto clientes de Paradigma Tecnológico como técnicos interesados en conocer estas tecnologías.¿Dónde se imparten?Los 2 siguientes seminarios se impartirán en la siguiente dirección:

C/La Palma, 10. Madrid

 
¿ Cómo puedo asistir?

Envíanos un correo a seminarios@paradigmatecnologico.com

Más información: http://paradigmatecnologico.pbwiki.com o enlazando a la sección de seminarios desde la web www.paradigmatecnologico.com. 
lunes
feb042008

Dell podría estar a punto de anunciar un teléfono basado en Android

Según PC Pro magazine, Dell está a punto de anunciar un terminal móvil basado en el sistema operativo de Google Android. La compañía tiene cierta experiencia en dispositivos móviles (PDA) empleando Windows mobile como sistema operativo, pero no en terminales móviles.

 

Por lo de ahora es sólo un rumor, pero al menos a mí me tiene bastante sentido. Entre que el precio de los PCs no ha parado de caer en los últimos años, reduciendo los márgenes de ganancia para las compañías que los venden, la creciente popularidad de los dispositivos móviles, y el hecho de que cada vez más los usuarios emplearán estos terminales para tareas para las cuales típicamente usaban un PC (consultar el correo, navegar por Internet, organizar agendas...) tiene bastante sentido que los fabricantes de PC comiencen a explorar este mercado.