Buscar
Social
Ofertas laborales ES
sábado
abr252009

Creando librerias Javascript desde GWT

He publicado una version nueva de la libreria de widgets para GWT: GWTChismes. Aparte de algunas mejoras  y arreglar algunos problemas, lo realmente novedoso en esta versión es que la libreria se publica lista para ser usada desde puro javascript y no sólo desde java, esta nueva libreria se llama ahora JsChismes.

¿Como se consigue esto?, básicamente usando la libreria gwt-exporter y anotando las clases y metodos públicos a los que se quiere dar visibilidad.

Este procedimiento aporta un montón de ventajas al desarrollo de librerias javascript. Por un lado el desarrollador utiliza un entorno que le facilita la creacion de codigo (IDE, debug, tests, coverage, refactoring, reusability ...), y por otro se despreocupa del versionado de ficheros javascript, carga dinamica de css, css sprite, optimizacion de javascript, ofuscacion, etc. Además el usuario de la libreria no tiene que conocer java, gwt, etc., de manera que se facilita el uso de esta a diseñadores, programadores de php, ruby ...
jueves
abr232009

Lo nuevo en EJB 3.1

Está por terminarse la definición de Java EE 6, y una de las novedades más interesantes son los nuevos EJB. En el artículo EJB 3.1: un paso importante hacia la madurez (traducción del original) repasamos varias de las nuevas características que se vienen. Con ejemplos de código veremos como utilizar invocaciones asincrónicas, nuevos timers, contenedores embebibles, singletons, vistas sin interfaz y mucho más.

¡La verdad que varias de las características parecen más que interesantes! ¿Planean utilizar alguna de estas novedades?

jueves
abr232009

OpenXava 3.1.2: Aplicaciones AJAX desde entidades JPA

OpenXava 3.1.2, publicado recientemente, es un marco de trabajo dirigido por el modelo para desarrollar aplicaciones Java Enterprise de una manera ágil: Con OpenXava tu provees POJOs anotados con JPA y a cambio obtienes una aplicación AJAX lista para producción.

La principal novedad de esta versión 3.1.2 es el soporte para herencia de vistas. Aunque OpenXava  genera una interfaz de usuario funcional desde entidades JPA desnudas, tenemos la opción de refinar la interfaz producida con la anotación @View; de esta forma:

@Entity
@View(name="ConSecciones",
members =
"nombre, sexo;" +
"lenguajePrincipal;" +
"experiencias { experiencias }"
)
public class Programador {

Desde la versión 3.1.2 podemos definir una vista extendiendo de otra ya existente. Por ejemplo, podemos reutilizar la vista ConSecciones en una clase hija de  Programador:
@Entity
@View(name="ConSecciones", extendsView="super.ConSecciones",
members =
"marcoTrabajoFavorito;" +
"marcosTrabajo { marcosTrabajo }"
)
public class ProgramadorJava extends Programador {

Como podemos ver, la forma de extender una vista de una superclase es usando el prefijo super en extendsView. En este caso la vista ConSecciones de la entidad ProgramadorJava tendrá todos los miembros de la vista ConSecciones de la entidad Programador más los suyos propios.
Véamos el aspecto de la vista ConSecciones de ProgramadorJava:



Se puede aprender más sobre esta nueva característica en el wiki de OX.

Además de esto, OpenXava 3.1.2 tiene muchas nuevas características y arreglos, incluyendo la traducción de la guía de referencia a ruso, y la nueva anotación @OnSelectElementAction para colecciones.

¿Qué piensas acerca de generar una aplicación completa desde entidades JPA?
¿Te gusta la anotación @View?
¿Qué opinas de la nueva 'herencia de vistas'?

Más información en www.openxava.org
jueves
abr232009

El Futuro del Código Abierto

En javalobby he escrito un artículo reflexionando sobre el futuro del software de código abierto (que ha motivado una réplica). La motivación de este artículo es la reciente compra de Sun por parte de Oracle, dicha compra ha preocupado a mucha gente acerca del futuro de los productos de código abierto de Sun, uno de los más importantes conjuntos de software de código abierto del mundo (o sencillamente el más importante).

Esta compra ha promovido muchas especulaciones acerca del futuro y la viabilidad del modelo de desarrollo de código abierto en general, por una parte porque algunos plantean que esta compra es la constatación del fracaso de la apuesta por un modelo de negocio basado en  código abierto constatando que el comprador, Oracle, a pesar de que es un importante contribuidor al ecosistema del código abierto (por ejemplo con ADF Faces), el núcleo de su software, fundamentalmente la base de datos Oracle y los productos de Bea son productos de código cerrado y de pago, incluso las versiones de “entrada” como es el caso de Oracle Express. Otro nubarrón llega en la forma del cloud computing, una tendencia en donde se apuesta por el desarrollo del software como servicio (Software as a Service or SaaS), un modelo que no suele ser amigo del código abierto pues ni siquiera existe distribución del código fuente.

En un artículo previo de JavaLobby, Rod Johnson, CEO de SpringSource, la empresa que posee el ecosistema basado en Spring, plantea que Oracle, a pesar de la compra de Sun, no va a dirigir la innovación del mundo empresarial en Java, debido a que la mayor parte de esta innovación tiene lugar desde hace tiempo fuera de Sun y dirigida por la comunidad de programadores de proyectos de código abierto.

Yo no se si Oracle va a mantener el buen trabajo que ha estado haciendo Sun en el ámbito del código abierto, quizás el camino a seguir sea una estrategia en donde se mezcle software gratuito y de código abierto con software cerrado y de pago, en donde los primeros sirven como una puerta para los segundos. Actualmente Oracle tiene muchas opciones para hacer esto tal y como las parejas: MySQL-OracleDB, GlassFish-WebLogic, Sun JVM-JRockit, NetBeans-JDeveloper etc.

En un comentario al artículo de Rod Johnson, Jacob Jenkov hace públicas sus preocupaciones acerca del futuro del código abierto como modelo de negocio; él plantea dos problemas del código abierto desde esa perspectiva:

1) Hacer negocio desarrollando código abierto es difícil y no debería porque normalmente el producto añade valor que merece una compensación.

2) Como la mayoría de los proyectos de código abierto son totalmente gratuitos, las barreras para publicar cualquier cosa son muy bajas y no hay garantías de futuro. Esto da a lugar a montones de opciones para hacer lo mismo en donde es difícil de elegir la herramienta adecuada a tus necesidades con la incertidumbre añadida de si seguirá existiendo (continuada) el año siguiente.


Ante todo, nadie puede decir que las reflexiones de Jacob vayan en contra del código abierto pues él mismo es el autor de un producto de código abierto, el Butterfly DI Container, por tanto él ha aportado mucho más a este ámbito que el programador medio. Lo mismo se aplica a éste ártículo y su autor (es decir yo).

¿Es el desarrollo de software código abierto un modelo de negocio viable?

Desde luego SpringSource está en ese camino, por citar la empresa de Rod Jonson, Sun también intentó ese camino también. Es algo injusto decir que Sun falló en hacer dinero del código abierto porque no le dio mucho tiempo a producir un mundo de servicios en torno a productos más o menos nuevos o recientemente adquiridos tal y como MySQL y GlassFish. Quizás sin esta terrible crisis Sun sería rentable de nuevo como lo fue hace muy poco, antes de las compras de StorageTek y MySQL que supusieron obviamente pérdidas en la cuenta de resultados.

En mi opinión el futuro del código abierto como modelo de negocio es el licenciamiento dual, una mezcla de licencia no liberal y licencia comercial. El licenciamiento dual no excluye otros modelos de negocio “periféricos” tal y como la consultoría, la formación, el soporte o la venta de libros, pero el licenciamiento dual es un retorno al producto como el foco, un retorno a un modelo de negocio basado en licencias con precios asequibles y con todas las bondades del código abierto.
El objetivo del licenciamiento dual es alinear los ingresos de los usuarios con el licenciamiento comercial. Una analogía es el modelo de negocio de PayPal, PayPal es gratuito para los vendedores, no hay cuota de mantenimiento, pero cuando se obtiene un ingreso a través de PayPal, PayPal cobra una pequeña comisión. Este modelo funciona, “escala” (más ingresos implica más comisiones) y beneficia a ambos lados.

El producto de código abierto no debería ser una simple excusa para otro tipo de negocios. No hay ningún problema ético por mi parte para estas “excusas” (consultoría, formación etc), si funcionan ¡perfecto! El problema es que estos modelos tienen dificultades para “escalar” debido a que prácticamente cualquiera puede conseguir ser un experto de un producto concreto de código abierto sin recurrir a soporte, formación etc.

La solución no debería ser un retorno a software de código cerrado, de hecho el dar gratuitamente una versión de código abierto muy limitada es realmente un retorno al modelo de código cerrado, pues el programa “de verdad” no es de código abierto.

De hecho el modelo de negocio basado en código cerrado y con pago antes del uso tampoco es ya una alternativa convincente. Normalmente el código cerrado implica registros normalmente con datos falsos, un tiempo de evaluación, chequeo de fecha expiración, cambios en los registros del disco duro etc para proteger la inversión. En este contexto el usuario final es considerado a priori como un potencial delincuente.

Este modelo podría ser seductor de nuevo para una nueva empresa pensando en como distribuir su software y a la vez proteger su inversión, pero en la era Internet, es como tratar de dividir el mar con un muro. Cualquier puede abrir el eMule y buscar "WebSphere" y encontrará cientos de fuentes, es decir, es posible usar WebSphere también de forma totalmente gratuita. Si uno quiere ser un “mal chico” el código abierto y el cerrado y los tipos de licencias no son un problema. De hecho hay quienes prefieren obtener una copia de un programa de lugares piratas con un fin de evaluación o de aprendizaje evitando el lío de registrarse con datos falsos y los cambios a veces problemáticos en el registro del sistema operativo para obtener una versión de evaluación.
El modelo de software como servicio en la nube es incluso más cerrado.

En mi opinion el problema no es el excesivo número de opciones un tipo de tecnología, porque normalmente muchas opciones son muy parecidas (por ejemplo en desarrollo web). El problema es el número de “opciones soportadas”,  opciones con un compromiso de futuro. El mundo del desarrollo de software se beneficiaría del licenciamiento dual mejorando la calidad al existir un compromiso detrás y asegurando un futuro a medio o largo plazo si el producto es satisfactorio.

Como anécdota me gustaría citar un ejemplo, JACE, JACE fue un producto muy popular para programar en Java pero en C++ evitando JNI. JACE ha sido muy útil a muchos programadores cuando Java era demasiado pobre y el código nativo era necesario. Hoy día prácticamente nadie necesita este tipo de producto, de hecho la última versión de JACE tiene fecha de 2003 y basada en Java 1.3 y la web está caída. ¿Qué pasa si necesito este tipo de software? SourceForge indica que todos los días hay descargas de JACE. Hay dos opciones, intentar usar JACE que quizás no funcione en JVMs actuales (los tipos genéricos pueden ser un problema) o existe la opción de comprar JunC++ion que la alternativa de pago de código cerrado.

¿Por qué pongo este ejemplo? Porque yo mismo tengo una alternativa a JACE y JunC++ion que uso internamente en JNIEasy para chequear la licencia desde C++ usando las APIs de Java. Es similar a JACE y JunC++ion pero tiene alguna ventaja tal y como el uso del “new” en C++ de forma simétrica a Java que hace que el código sea más natural para un programador Java y quizás alguna ventaja más. Podría publicar esta herramienta interna como código abierto, pero cuando pienso en el tiempo que necesitaría para publicar algo decente (pulir cosas, añadir algunas más características, hacer javadocs, tutoriales, pensar nuevas versiones, mantenimiento, resolver dudas etc) de forma totalmente gratuita… cambio rápidamente de idea. Lo pongo como un ejemplo de que a veces el camino del código abierto totalmente gratuito paradójicamente puede dificultar la innovación. Esta es una razón por la que el licenciamiento dual puede beneficiar al mundo del código abierto.

¿Qué pensais?

¿Cuál es el futuro del Sofware Libre y/o Código Abierto?

¿Es el código abierto un modelo de negocio viable?

¿Es el licenciamiento dual un modelo de negocio viable?

¿Cómo afectará el cloud computing a los modelos de negocio basados en software?

 

jueves
abr232009

¿Qué solución Cloud Computing elegir?

En Developerworks han publicado un artículo que trata de ayudar a los programadores a decidir cuál de las tres principales soluciones de Cloud Computing se adapta más a sus necesidades. Windows Azure es la elección movió para aquellas personas que emplean las tecnologías de Microsoft. Amazon Ec2 es la solución más flexible, ya que prácticamente permite a cada uno montar el stack que quiera. La desventaja, es que requiere un mayor esfuerzo de configuración. Otro punto a favor de esta solución es lo bien integrada que está con los servicios de almacenamiento de Amazon (S3).

Google App Engine permite construir aplicaciones sin necesidad de preocuparse de configurar ninguna máquina, y es posible emplear los servicios de Google para la autenticación de usuarios. Además, esta solución es gratuita para bajos volúmenes de tráfico. Las desventajas son que no se puede configurar prácticamente nada el stack que Google proporciona. Además, el hecho de no tener acceso directo a la máquina donde corre la aplicación hace que algunas tareas (por ejemplo, el migrar datos ya existentes a la aplicación) sean muy complejas.


En general, Google App Engine es la mejor opción para una aplicación que comience desde cero o una Startup, siempre que emplear los lenguajes que soporta (Python y, recientemente, Java) no sea un problema. Amazon EC2 es la solución ideal para soluciones más complejas que van a requerir construir un stack propio y configurar la nuestra medida. También se adapta mucho mejor a la migración de aplicaciones ya existentes. Windows Azure, simplemente, es para la gente "de Microsoft".


¿Cuantos tenéis experiencia con alguna solución de Cloud Computing? ¿Nos comentáis vuestras impresiones?