Your Java just went bad? Try a Soylatte!

por Javier Cañadillas, el 12 de December de 2007

O de cómo instalar el JDK 1.6 en Mac OS X y sacar provecho de él configurando el nuevo y crujientito Netbeans 6 para que lo use por defecto1. (Update: Tal vez queráis echar un vistazo también antes de hacer nada de lo que aquí se dice al post Otro Soylatte más (en taza de loza esta vez))

Últimamente hemos estado hablando algo en Venera7 acerca de JRuby on Rails y su conveniencia para los entornos empresariales. Una de las razones que lo hacen idóneo para ese tipo de despliegues es una cuestión de rendimiento, el cual mejora siempre con la última release del JDK. Así pues, siempre que sea posible, lo mejor será utilizar el JDK 1.6 junto con la última versión estable del compilador JRuby, que debería venir incluida con la última versión de Netbeans 6.

Si nuestra plataforma de desarrollo favorita es Mac OS X, desgraciadamente la versión oficial del JDK de Apple no avanza lo rápido que a los desarrolladores les gustaría, y a estas alturas de Leopard aún andamos con la versión 1.5 pese a que ya lleva un buen rato ahí fuera. Afortunadamente, siempre hay gente como Landon Fuller, que se ha currado un espectacular porting del JDK 1.6 de OpenBDS a Mac OS X y lo ha bautizado como SoyLatte2. ¡Ya podemos disfrutar de las últimas mejoras en el JDK en nuestro Mac!

La instalación del nuevo JDK es muy sencilla. He seguido los siguientes pasos en mi Macbook Pro Intel que deberían funcionar en cualquier ordenador Apple sin problemas:

  1. Primero me descargué la última versión en binario de Soylatte de la página oficial del proyecto. En mi caso no soy tan afortunado de tener un procesador a 64bit, así que pese a tener Leopard tuve que optar por la versión de 32.
  2. Una vez descargado, deescomprimí el archivo tar.gz y lo arrastré a la carpeta /usr/local.
  3. Para que Mac OS X reconozca por defecto el nuevo JDK, lo único que hay que hacer es añadir la ruta correcta a nuestro PATH. Para que el cambio sea permanente hay que hacerlo en el fichero .bash_profile que está en el home del usuario con el que habitualmente nos logamos al sistema. Además, nos aseguramos de que en la sesión actual estamos haciendo uso de él y de que funciona. Utilizando nuestra aplicación de terminal favorita (terminal o iterm son dos buenas opciones), hacemos un poquito de trabajo con la linea de comandos:
    $ echo "export PATH=/usr/local/soylatte16-i386-r3/bin:$PATH" >> ~/.bash_profile
    $ export PATH="/usr/local/soylatte16-i386-r3/bin":$PATH
    $ java -version Java(TM) SE Runtime Environment (build 1.6.0_03-p3-landonf_28_nov_2007_00_17-b00) Java HotSpot(TM) Server VM (build 1.6.0_03-p3-landonf_28_nov_2007_00_17-b00, mixed mode)
    

Bien, si hemos llegado hasta aquí todo está preparado para meterle mano a Netbeans 6.

Elegir un JDK específico en Netbeans es trivial; es una característica básica del IDE el poder seleccionar la versión del JDK con la que estamos trabajando. Sin embargo, para hacer funcionar Netbeans con Soylatte, hay que utilizar Swing bajo X11. No es tan bonito ni tan rápido pero, ¡funciona!

El autor de tamaño logro es Fabrizio Guidici, que en su blog detalla cómo hacer la configuración. Yo simplemente la estoy siguiendo en mi Mac con las últimas versiones disponibles y añadiendo mis propios comentarios.

Los pasos para hacer la configuración son los siguientes:

  1. Obviamente, descargar e instalar la última versión de Netbeans 6. En el momento de escribir este artículo la versión final ya estaba disponible, así que es la que he usado. Lo mejor en ir a la página principal para obtener la más reciente.
  2. Yo hice la instalación de Netbeans por defecto, así que el paquete debería estar en /Applications/NetBeans. Los paquetes de aplicación son navegables, así que me referiré al directorio sobre el que trabajaremos como $NETBEANS. Por comodidad, lo mejor es asignar a la variable el valor del directorio, así que en un terminal hacemos:
    $ export NETBEANS = /Applications/NetBeans/NetBeans 6.0.app/Contents/Resources/NetBeans
    
  3. Editamos el fichero $NETBEANS/bin/netbeans con nuestro editor favorito (por ejemplo, vi) para quitar un par de lineas que dan problemas con Soylatte3. Las lineas a borrar son:
    -J-Xdock:name=NetBeans \
         '"-J-Xdock:icon=$progdir/../nb6.0/netbeans.icns"' \
    
  4. Para terminar, especificamos la ruta a Soylatte en el fichero $NETBEANS/etc/netbeans.conf, editándolo y alterando el valor de la opción netbeans_jdkhome para que diga:
    netbeans_jdkhome=/usr/local/soylatte16-i386-r3
    

    Antes de guardar y salir, necesitamos hacer un cambio más en el mismo fichero para que se utilice el Look & Feel Swing en vez de Acqua, ya que si no Netbeans 6 tampoco conseguirá arrancar:

    netbeans_default_options=".... existing options.... --laf com.sun.java.swing.plaf.gtk.GTKLookAndFeel -J-Dswing.aatext=true"
    

Y eso es todo, ya podemos arrancar nuestro Netbeans 6, que lanzará el servidor X para poder funcionar. La selección de menús no va particularmente rápida, pero por lo demás el IDE es funcional.

Coda

Si bien usar Soylatte es una bocanada de aire fresco para los desarrolladores Java en Mac OS X, aún está el problema de tener a Apple con una estrategia menos que clara en lo que respecta a Java.

Java es una plataforma muy viva y crítica para cualquier desarrollo Enterprise. Son muchos los programadores que, atraidos por las ventajas de Mac OS X, en su momento se hicieron switchers. El problema es que el soporte a Java en Apple es cada vez peor (el caso de la falta de JVM en el iPhone es un flagrante ejemplo de ello). Es como si Apple ya se creyese con la suficiente fuerza como para descartar completamente a toda una plataforma y comunidad de desarrolladores y forzar una revolución en la plataforma de elección de la mayoría. El hecho de esta falta de soporte oficial está dañando la imagen de Mac OS X como alternativa viable, y está empezando a verse una vuelta a Windows de los desarrolladores Java.

Está claro que Java nunca será Cocoa en el entorno Mac OS X, pero no es tampoco el objetivo. El soporte de Mac OS X como plataforma de desarrollo Java tiene que mejorar porque la comunidad está ahí, la demanda existe y además los desarrolladores Java han sido hasta ahora grandes impulsores de la alternativa Mac.

La solución se ha demostrado sencilla. Si una sola persona puede solucionar el problema en su tiempo libre, una compañía debería hacerlo instantáneamente. Y si no, la opción es sencilla: ¡que Apple le haga una oferta a estos chicos!

Notas
  1. El crédito del por qué de este artículo se lo tienen que llevar Nando y Mario de EGE, por mantenerme al tanto de tan estupenda noticia []
  2. De ahí el título en inglés; era mucho más fácil hacer la broma de esa manera. []
  3. Se trata de los parámetros de Mac OS X utiliza para poner el nombre del menú principal y el icono de la aplicación []