Buscar
Social
Ofertas laborales ES
miércoles
jun112008

db4objects libera Sharpen, una herramienta para convertir código Java a C#

db4objects (http://www.db4o.com), proveedor de la base de objetos open source db4o, ha liberado su herramienta de conversión de código fuente Java a C# (Sharpen) como software libre. db4objects ha utilizado la herramienta intensivamente para generar la mayoría del código fuente .NET del core de db4o y el conjunto de pruebas unitarias.

La herramienta tiene las siguientes caracteristicas:

  • Mapeo entre los tipos nativos de Java y .NET
  • Cumple con las convenciones de código C#
  • Mapeos de namespaces/clases/métodos definidos por el usuario
  • Mapeo de métodos a propiedades
  • Soporta generics
  • Conversiones parciales
  • Combina código fuente C# convertido y nativo
  • Soporta archivos sln de VS
  • Integración con Ant

Más información (en inglés) aquí

 

 

miércoles
jun112008

ItsNat v0.3 : puro SVG con AJAX, Safari, Opera y Móviles

He publicado la versión 0.3 de ItsNat, Natural AJAX.

Para los que no lo conozcan, ItsNat es un Framework Web AJAX Java. La principal característica de ItsNat es que define un "navegador universal W3C" en el servidor, un técnica que llamo TBITS, "The Browser Is The Server", en donde el navegador es básicamente un terminal del estado del servidor, en donde cualquier cambio en el DOM servidor usando W3C DOM Java APIs cambia el cliente automáticamente, y los eventos del usuario son enviados al servidor via AJAX y recibidos como W3C DOM Events.

* El motor de la versión v0.3 ha sido fuertemente refactorizado para permitir añadir con facilidad cualquier navegador con soporte AJAX. El resultado directo de esta refactorización es el soporte de una gran variedad de navegadores:

Desktop: aparte de MSIE 6+ y FireFox 1+ de la versión 0.2 se añaden Safari 3+ y Opera 9+ y basados en QtWebKit (Qt y QtJambi 4.4).

Navegadores de dispositivos móviles: Opera Mini 4, Opera Mobile 8.6, NetFront 3.5, Minimo 0.2, IE Mobile of Windows Mobile 6, iPhone/iPod Touch/iPhone SDK, Android (m5-rc15), S60WebKit (móviles Nokia S60 3rd), Iris 1.0.8 y QtWebKit (Qt 4.4 embedded). Todos ellos incluyen AJAX.

De esta manera es posible crear aplicaciones AJAX que corran en cualquier navegador de los listados con el mismo código fuente (o reutilizando muchas partes). Lo que en Opera llaman One Web como convergencia del mundo web desktop y móvil.

He remarcado IE Mobile 6 porque ha supuesto un enorme reto, IE Mobile 6 es un navegador muy pobre en DHTML y con muchísimos bugs y en buena parte es el que motivó la refactorización profunda de ItsNat. ItsNat con un gran esfuerzo y "sucios trucos" consigue que IE Mobile soporte prácticamente las mismas características DHTML que cualquier otro usando W3C DOM APIs en el servidor. El resultado no es perfecto (IE Mobile es técnicamente malo y deficiente) pero estoy seguro que en Redmon no podrán creerse lo que su trasto puede hacer y de forma tan sencilla de programar (via JavaScript a pelo es un infierno). Por supuesto incluyendo AJAX, Comet, server-sent events etc.

Los componentes son ahora configurables para funcionar en "modo joystick" y "modo selección sin teclado" pensando en navegador móviles permitiendo navegar por los elementos usando el joystick y sin necesitar teclado para la selección (no necesaria la tecla CTRL).

* Se introduce el soporte de páginas SVG puras con las mismas características que X/HTML, es decir para ItsNat una página SVG es tratada de la misma forma que una página X/HTML incluyendo eventos AJAX, Comet, server-sent events, componentes, referrers... lo de siempre. Obviamente esto sólo funciona en navegadores con soporte SVG tal y como FireFox (1.5+), Safari 3+, Opera 9+ y QtWebKit. SVG es una tecnología clave para competir con Flex y similares sin salir de las tecnologías Web.

* Otra implicación directa de la refactorización profunda son los visores remotos: ahora es posible monitorizar una página abierta con un navegador dado con cualquier otro de los soportados por ItsNat. El caso más extremo, y que funciona, es monitorizar una página abierta en IE Mobile con cualquier otro navegador.

* Modo Markup Driven en Forms: Es posible ahora sincronizar los formularios entre el cliente y el servidor de forma totalmente transparente tal que sólo sean necesarias APIs W3C DOM Java, es decir sin usar APIs de componentes, incluyendo actualización automática del DOM en el servidor cuando cambia el estado de los controles de formularios en el cliente. Esto posible gracias a los componentes de siempre en modo "markup driven" cuya API no es necesaria en este modo.

* Método ItsNatDocument.toDOM(String): que convierte una cadena con un trozo de markup en objetos DOM para ser insertados en el documento cubriendo una necesidad similar a la del innerHTML en el cliente. Es útil con trozos de markup medianos y complementaria al uso de las APIs DOM normales (mejor para trozos pequeños) o los templates de fragmentos (mejor para trozos grandes).

* El Feature Showcase es ahora un proyecto NetBeans 6.1 pero sigue siendo un ejemplo puro JVM 1.4

Para una lista completa de cambios consultar el Release Notes.

Por otro lado es posible ahora solicitar licencias de desarrollo comercial para proyectos de código cerrado. Las licencias de desarrollo comercial son GRATUITAS, permiten distribuir aplicaciones de código cerrado pero NO permiten instalaciones en producción. El enfoque busca que la empresa de desarrollo software no asuma el coste del software sino que sea el destinatario, de esta manera si una empresa tiene 20 clientes en vez de asumir el coste X de su software, sus 20 clientes asumen dicho coste como X/20.

La compra de licencias de producción estará disponible dentro de un par de meses y se venderán por núcleo de procesador sin límite de aplicaciones.

Recordaros el taller práctico de ItsNat ("hands on" que queda más "cool") el viernes 27 en el OpenJavaDay que coorganiza javaHispano junto con Sun. Los que vayais llevaros el NetBeans 6.1 perfil web instalado y el ItsNat 0.3 descargado.

Enlaces de ItsNat:

* Web

* Feature Showcase (demo/tutoriales online)

* Proyecto en SourceForge

* Descarga e instalación

* Página con información sobre el licenciamiento comercial.

 

Espero vuestros comentarios, sugerencias, opiniones, críticas (civilizadas) etc.

 

 

martes
jun102008

Jawr 2.3: integrado con DWR y Commons Validator

Se ha publicado la versión 2.3 de Jawr, la librería que permite combinar y comprimir javascript y CSS de modo configurable.

Jawr está incorporando componentes de integración con otras librerías java que generan javascript, para poder aprovechar al máximo sus capacidades de compresión y combinación. Las últimas adiciones en este sentido han sido DWR y Apache Commons  Validator.

DWR(direct Web remoting) es una librería que permite invocar código java directamente desde javascript. Para ello genera dinámicamente módulos .js que son stubs remotos de clases java. Ahora, con Jawr se puede combinar y comprimir estos stubs, además de una serie de scripts estáticos que se requieren para usar DWR.

Apache Commons Validator es una librería de validación que viene incorporada en Struts. A partir de unos archivos de configuración genera javascript que valida formularios HTML. Mediante Jawr ahora es posible combinar estos scripts y comprimirlos, otimizando el tiempo de carga de nuestras páginas. 

Los desarrolladores java interesados en mejorar el tiempo de carga de sus páginas (y sacar mucha mejor nota con YSlow) encontrarán en Jawr una herramienta fácil de configurar y con muchas posibilidades. 

martes
jun102008

Sale Jasypt 1.5

Hola a todos, acabo de publicar Jasypt 1.5

Jasypt (Java Simplified Encryption) es una librería orientada a permitir a los desarrolladores añadir capacidades de cifrado a sus proyectos de manera sencilla, incluyendo: password digesting, cifrado de textos o binarios, integración con Hibernate para cifrado transparente de los datos persistidos e integración con Spring Security para mejorar la seguridad de los passwords manejados por este framework. También permite el cifrado de valores en archivos .properties y su lectura de manera transparente.

La 1.5 es una versión de mantenimiento, con pocas (pero muy necesarias) novedades:

  • ICU4j es ahora una dependencia opcional (en lugar de obligatoria) para aquellos que usen Java SE 6. Esto ahorra una buena cantidad de megas en las implantaciones, ya que el tamaño de esta librería es considerable.
  • Se ha añadido soporte a la integración con Spring Security 2.x, equivalente al que ya existía para ACEGI 1.x.
  • Cambios menores como la posibilidad de poder elegir el algoritmo de generación segura de números aleatorios en RandomSaltGenerator (útil y necesario para aquellos que no usen la máquina virtual de Sun).
  • Documentación actualizada.


Podéis echarle un vistazo a la lista completa de funcionalidades aquí: http://www.jasypt.org/features.html

Más información en la web del proyecto: http://www.jasypt.org


Espero que os sea útil :-)

 

Saludos,
Daniel.

 

martes
jun102008

To closure or not to closure? (Opinión publicada en Sólo Programadores)

To closure or not to closure? (Opinión publicada en Sólo Programadores)

 

Daniel Lopez Janariz, Community Manager de la JavaTools Community de java.net

 Un tema candente actualmente en el mundo Java es la introducción, o no, en Java 7 de otro elemento de programación: las "closures". Simplificando, muchos lenguajes permiten manejar bloques de código parametrizable como si fueran datos, permitiendo asignarlos a variables, pasarlos como parámetro etc. La solución actual de Java a este problema, las "inner classes",  deja insatisfecha a mucha gente debido a sus limitaciones y poca elegancia comparada con otros lenguajes. 

Sin embargo, al mismo tiempo que ha crecido el apoyo para añadir "closures" a Java, también ha crecido el movimiento opuesto, el cual argumenta, entre otras cosas, que es demasiado tarde para un cambio radical en el lenguaje y que las especiales características de Java recomiendan cautela. El debate subyacente, el caso de las "closures" es sólo una de las batallas, enfrenta por un lado a los desarrolladores que prefieren ver como Java evoluciona y "se pone al día" siguiendo la estela de otros lenguajes, y los que prefieren priorizar el "espíritu Java" de lenguaje consolidado, simple, fácil de aprender, con compatibilidad asegurada, y dejar los aspectos más "dinámicos y modernos" para otros lenguajes, con los que se puede interactuar, si hace  falta.

El debate promete ser interesante y aunque la implementación final dejará a mucha gente insatisfecha en cualquier caso, la discusión, alimentada por la recientemente estrenada naturaleza Open Source de Java, destila libertad y será, en todo caso, enriquecedora.