lunes, 26 de diciembre de 2011

Oracle y el fin de Java

El fin del mundo Java conocido.

Puede parecer alarmista, pero creo que el mundo java está llegando a su fin, por lo menos tal y como lo conocemos. El desarrollo de aplicaciones en Java ha ido cambiando y poco a poco han ido apareciendo nuevos lenguajes y formas de acometer proyectos.

La complejidad propia del desarrollo con este lenguaje y la complejidad sometida por metodologías de desarrollo orientadas a procesos ha hecho que muchas empresas empiecen a mirar otras alternativas como por ejemplo metodologías ágiles.

Pero en este caso, el artículo no habla de las complejidades propias del desarrollo con lenguaje java, ni de las metodologías asociadas a estos proyectos, si no de la propia Oracle, propietaria de esta plataforma de desarrollo desde que compró a Sun Microsystems.

Mucho se ha rumoreado y mucho se sigue especulando sobre el futuro del desarrollo de aplicaciones en Java. Desde luego la filosofía de Oracle nada tiene que ver con la filosofía de apertura de Sun. A este último siempre se le achacó el que no abriera la plataforma de desarrollo de Java al exterior y conservara las patentes, pero por lo menos aunque conservando las patentes, dejó que otras empresas colaboraran en la definición de está normas y prácticas de desarrollo, así como definiciones que acabaron siendo parte de las nuevas APIs y formas de J2SE y sobretodo de J2EE. Algo que hizo estandarizar los proyectos en los servidores de aplicaciones fueran del proveedor que fueran.

Decía que la filosofía de Oracle desde luego no es para nada igual a la de Sun Microsystems. Oracle es un gigante que quiere maximizar sus beneficios y ha realizado numerosas compras de empresas líderes en sus sectores. De un plumazo se ha hecho los servidores de aplicaciones más relevantes del sector: Weblogic, SunOne y OAS, comprando a Sun se ha hecho también con la base de datos gratuita más implantada en proyectos, MySql. Dispone a su vez de una de las herramientas de desarrollo para Java más usadas en este sector como NetBeans, se quedó también con toda la familia de productos de Sun y su galería de servidores Solaris.

Además de otros sectores, el fin de Java no viene por estas compras, si no por los movimientos que está realizando Oracle en este mundo. De momento canceló el proyecto OpenSolaris, ha puesto demandas a Google por uso del JDK en los dispositivos Android, hecho por el cual Google contrató al ingeniero que desarrolló el jdk y ha creado una versión de jdk adaptada a sus necesidades libre de cargas para con Oracle.

Por otra parte, también modificó la licencia de uso del servidor de integración continua Hudson, creado por ingenieros de Sun y de libre distribución, de tal modo que los creadores de Hudson han abandonado el proyecto creando un gemelo llamado Jenkins.

Java se ha convertido en el lenguaje rey para aplicaciones empresariales, nacido inicialmente como respuesta a la afronta de Microsoft y que permitió el agrupamiento de grandes empresas rivales a trabajar de alguna manera aunando esfuerzos, y resulta que el enemigo estaba en casa.

Entiendo los motivos de negocio que pueden llevar a Oracle a tomar este tipo de decisiones, pero creo que en general es una equivocación para el mundo del desarrollo de aplicaciones basadas en Java. Pese a las dificultades del desarrollo de este tipo de aplicaciones, las empresas preferían este modelo, porque estaba basado en buenas prácticas y por lo menos casi estándares. Pero este movimiento monopolístico sólo hará que las cosas cambien más deprisa.

La pregunta es clara, ¿cuánto tardará Oracle en dar el golpe de estado? ¿Cuánto tardará en decir que Java le pertenece y todo aquel que quiera desarrollar aplicaciones debe pagar royalties? De manera directa o indirecta con sus servidores o aplicaciones.

Me imagino que IBM debe de estar ya buscando alternativas. No es un movimiento sencillo, y yo calculo que al ritmo que se mueven las aplicaciones de Internet, 5 años será el tiempo suficiente para el cambio, y si contamos el ritmo de las aplicaciones empresariales, no más de 10 años.

Ahora bien, ¿Cuál será el soporte candidato al relevo? Esa es una buena pregunta, cada vez hay más movimientos en este sentido. En el caso del lenguajes Python y Ruby parecen una buena alternativa, aunque estar trabajando a nivel de fichero creo que es un atraso. Por otro lado Groovy y Scala pueden ser dos buenas alternativas a los desarrolladores Java y sobretodo con los datos que tenemos hoy día, creo que Springframework es una alternativa a tener en cuenta. Lástima que esté completamente basado en Java, pero se puede ver como VMWare está realizando movimientos creando una infraestructura basada en cloud y lenguajes como Groovy, Scala y Ruby  y mezclando con Spring, dando resultados como Grails.

El mundo Java está cambiando, Oracle devora todo lo que contiene este mundillo y sólo le falta atacar el mundo de las aplicaciones móviles, Google lo ha visto venir, incluso crea sus propios lenguajes y herramientas de desarrollo, algo normal para no depender de nadie, pero puede ser infructuoso a largo plazo aislarse tal y como hizo Nokia, mientras otros como IBM con capacidad de hacer fuerza y capacidad de decisión  y hacerse oir, se dedican a hablar del mundo del futuro y su único interés es vender hierro, y no ven la realidad que se acerca.

Tiempos de cambios, hay que ser visionario, las oportunidades saldrán para aquellos que estén preparados.

miércoles, 21 de diciembre de 2011

Botones Css3 adiós photoshop

Corren nuevos tiempos para los diseñadores.

No cabe duda que Css3 ha venido a quedarse, algunas de sus propiedades son realmente impresionantes y ha sido gracias a muchas voces relacionadas con el diseño gráfico para Internet las que se han tenido en cuenta.

Revisando unos materiales online sobre diseño de widgets para la web desde UIParade, me topé con un vídeo, donde explicaba  cómo hacer un botón con un buen diseño en photoshop (en concreto este vídeo tutorial), así que me propuse hacer lo mismo mediante CSS3 y básicamente este es el resultado:




El efecto es mejorable y cabría añadir el icono del tick dentro del botón, pero el resultado, aún con esquinas redondeadas, se parece bastante y es totalmente funcional, con rollover y todo.

Para poder ver el resultado debes disponer de un navegador con soporte a CSS3 y que soporte gradientes y sombras. Hasta la fecha los navegadores que mejor soporte dan a CSS3 son Firefox y los basados en Webkit, como Safari y Google Chrome. Opera no da un buen resultado y si has venido hasta aquí con Internet Explorer, lo siento pero no podrás ver mucho.

Sí que he encontrado algunas diferencias sobretodo en Chrome a la hora de interpretar el fondo, no lo realiza del todo uniforme. Pero no es una mala solución, ya que no se ha manejado ninguna imagen.

Las conclusiones pueden ser muchas, pero a grandes rasgos en el vídeo necesitamos adquirir una licencia de photoshop y un buen conocimiento del mismo programa, mientras que con CSS3 solamente un bloc de notas sería suficiente y otra conclusión es que no hay sobrecarga de imágenes, no hay múltiples peticiones de las mismas, ni conexiones concurrentes desde nuestro navegador (algo que por otra parte se puede resolver usando CSS Sprites), también el contenido es indexable y al ser texto descarga muy rapidamente.

La desventaja es que a día de hoy el soporte a CSS3 no es completo por todos los navegadores, aunque en el caso de Internet Explorer se puede aplicar un parche para entienda CSS3.

CSS3 viene empujando fuerte y cada vez se ve mejor su potencial, sobretodo en el desarrollo de aplicaciones móviles y tablets. Por otro lado, los diseñadores deberán empezar a conocer este tipo de herramientas y tecnología para los nuevos diseños web.

A continuación dejo el código usado para crear el botón:


<style type="text/css">
#contenedor {
  background-image: -moz-repeating-linear-gradient(150deg, rgb(102, 102, 102) 1px, rgb(0, 0, 102) 3px);
  background-image: -webkit-repeating-linear-gradient(150deg, rgb(102, 102, 102) 1px, rgb(0, 0, 102) 3px);
  background-image: repeating-linear-gradient(150deg, rgb(102, 102, 102) 1px, rgb(0, 0, 102) 3px);
  height: 100px;
  width: 150px;
  padding-top: 10px;
  padding-right: 10px;
  padding-bottom: 10px;
  padding-left: 10px;
}
#btnEnviar {
  color: rgb(6, 21, 50);
  left: 20%;
  position: relative;
  top: 20%;
  background-image: -moz-linear-gradient(rgb(94, 172, 202), rgb(70, 128, 150));
  background-image: -webkit-linear-gradient(rgb(94, 172, 202), rgb(70, 128, 150));
  background-image: linear-gradient(rgb(94, 172, 202), rgb(70, 128, 150));
  background-image: -webkit-gradient(linear, center top, center bottom, color-stop(0, rgb(94, 172, 202)), color-stop(1, rgb(70, 128, 150)));
  border-top-width: 1px;
  border-right-width: 1px;
  border-bottom-width: 1px;
  border-left-width: 1px;
  border-top-style: solid;
  border-right-style: solid;
  border-bottom-style: solid;
  border-left-style: solid;
  border-right-width: 1px;
  border-right-style: solid;
  border-right-color: rgb(51, 51, 255);
  border-bottom-width: 1px;
  border-bottom-style: solid;
  border-bottom-color: rgba(51, 51, 255, 0.25);
  -webkit-border-radius: 5px 5px 5px 5px;
  border-radius: 5px 5px 5px 5px;
  -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5);
  box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5);
  text-shadow: 0px -1px 0px rgb(0, 0, 102), 1px 1px 1px rgba(255, 255, 255, 0.5);
  padding-top: 10px;
  padding-right: 20px;
  padding-bottom: 10px;
  padding-left: 20px;
  font-weight: bold;
  vertical-align: middle;
}
#btnEnviar:hover {
  color: rgb(255, 102, 0);
  text-shadow: -1px -1px 1px rgba(255, 204, 51, 0.5), 1px 1px 1px rgba(255, 204, 0, 0.5);
}
#btnEnviar:active {
   border-top-color: #1b435e;
   background: #1b435e;
   }
</style>
 

El código html es simple, un div y un button:


<div id="contenedor">

<button id="btnEnviar" name="enviar" type="submit" value="Enviar">Enviar</button>
</div>

Articulos relacionados