Desarrollando aplicaciones Java en Mac OS X, por Jose M. Palomar

Una de las cosas que llamó mi atención sobre Mac OS X, después claro está de que estuviese construido sobre BSD, es su excelente soporte de Java. En Mac OS X Java no es un componente opcional que haya que seleccionar o que descargarse, se instala silenciosamente con el sistema operativo. Ciertamente me pareció un detalle muy loable por parte de Apple añadir su propio JDK (Java Development Kit) a su sistema operativo y añadió atractivo sobre una plataforma de por sí muy atractiva.

Esto abría todo un nuevo abanico de posibilidades más allá del estilo de vida digital. Mac OS X podía convertirse en una plataforma de desarrollo de aplicaciones y esto para mí como programador era algo muy importante.

Soporte del JDK

Como ya hemos indicado antes Apple instala el JDK de serie con el Mac OS X y además como con cualquier otro componente del sistema operativo provee actualizaciones del mismo de vez en cuando que se pueden instalar de forma transparente usando la Actualización de Software de que dispone el Mac OS X. Además Apple no se conforma con dar soporte al JDK sino que también lo hace de algunos componentes opcionales como Java 3D o Java Advanced Imaging y provee APIs Java para la mayoría de sus tecnologías.

Pero no todo es un camino de rosas, hay voces críticas con Apple que se quejan del excesivo retraso con el que se actualiza el JDK, en concreto, con el que se actualiza a las nuevas especificaciones del lenguaje. Por ejemplo, la versión 1.5 de la especificación también denominada JDK 5.0 está disponible directamente de Sun para plataforma Windows, Linux (i386) y Solaris desde hace ya más de un año y no estará disponible para Mac OS X hasta que no sea lanzado Tiger. Sin embargo quiero romper una lanza en favor de Apple y es que esto mismo ocurre en muchas otras plataformas, por ejemplo, con el JDK de IBM que se usa en AIX o en Linux PPC. Personalmente opino que, si bien sería interesante que los retrasos fuesen lo más pequeños posibles, el ritmo de adopción real de estos cambios en la comunidad de desarrolladores es lento por lo que tampoco debería tener mucha importancia.

Las herramientas

Una de las ventajas de Java es el “Write Once – Run Everywhere” o lo que es lo mismo la portabilidad de los desarrollos. Es es, si nosotros escribimos una aplicación Java en Linux y la compilamos con el JDK disponible la podremos ejecutar en Mac OS X con el JDK de Apple sin tocar nada de nada. Esto es una gran ventaja y ha hecho posible que TODAS las herramientas y APIs escritos en Java disponibles en otras plataformas lo estén directamente en Mac OS X. Esto se aplica a todas las aplicaciones escritas en Java, como por ejemplo el Azureus.

Esto es muy importante para un desarrollador ya que sin buenas herramientas es muy complicado realizar aplicaciones de forma eficiente. Con Java la gama de herramientas es bastante amplia y además gran cantidad de ellas son gratuitas. Pasaremos a mencionar alguna de ellas:

– Xcode. La propia herramienta de Apple tiene soporte para el desarrollo de aplicaciones Java. El desarrollo de aplicaciones Java en Xcode está orientado a las aplicaciones tradicionales de escritorio y muy ligado al desarrollo de aplicaciones para Mac OS X. En mi opinión solo es útil si vais a desarrollar aplicaciones que solo para Mac OS X, lo cual teniendo en cuenta la ventaja de la portabilidad parece una tontería.

– jEdit. jEdit es un potente editor de textos desarrollado en Java que soporta un sin fin de lenguajes como HTML, XML, Java, C/C++ e incluso PHP. jEdit dispone de un sin fin de plugins que le proporcionan todo tipo de nuevas funcionalidades y que se instalan directamente desde la propia aplicación desde el servidor de plugins. Ah y ademas es gratis. jEdit puede ser una buena opción para proyectos pequeños con pocas clases o como herramienta auxiliar a otra principal que estés usando. Una gran herramienta.

– Eclipse. Hace no mucho se publicó un artículo en la Web de Apple sobre el desarrollo de aplicaciones Java con esta herramienta en Mac OS X. Eclipse es un proyecto open source patrocinado inicialmente por IBM y que cuenta actualmente con numerosos apoyos tanto dentro de la comunidad open source como de la industria de desarrollo. La idea es proveer de una plataforma de desarrollo de aplicaciones común sobre la cual los fabricantes puedan basar sus propias herramientas. IBM por ejemplo ha basado su últimas generaciones de aplicaciones de desarrollo de software WebSphere Application Developer, ahora Rational Applicaction Developer, sobre Eclipse. Esto es posible porque la plataforma tiene una arquitectura a la que se pueden añadir nuevas funcionalidades mediante plugins. Hay una gran comunidad de desarrollo entorno a Eclipse que desarrollan plugins tanto gratuitos como comerciales. Se trata de una excelente herramienta aunque un poco mas lenta de lo que debería en Mac OS X. Con Eclipse podemos desarrollar aplicaciones tradicionales, y Web mediante plugins de terceros. Desgraciadamente la parte de la herramienta que soporta la edición visual de aplicaciones no está soportada actualmente para Mac OS X. Por último indicar que Eclipse también soporta otros lenguajes de programación como C/C++ o PHP.

– NetBeans. NetBeans es el principal rival de Eclipse. Es su equivalente pero patrocinado por Sun Microsystems. Aunque se abrió una brecha muy grande en cuanto a funcionalidad entre las últimas versiones de Eclipse y NetBeans hay que decir que los chicos de NetBeans se han puesto las pilas y actualmente existen funcionalidades disponibles en NetBeans que no lo están en Eclipse como por ejemplo el soporte nativo de las aplicaciones Web y J2EE. Al igual que ocurre con Eclipse, NetBeans se puede extender mediante la inclusión de plugins y existe una comunidad activa de desarrolladores. AL contrario que con Eclipse el editor visual si está disponible para Mac OS X.

– IntelliJ IDEA. IntelliJ IDEA es una excelente herramienta comercial de desarrollo de aplicaciones Java desarrollada por la empresa JetBrains. Soporta el desarrollo de aplicaciones tanto tradicionales como web y J2EE. Como características interesantes de este producto el soporte de módulos dentro de un proyecto, sus capacidades de análisis del código fuente en busca de malas prácticas, sus excelente capacidades de refactoring del código y un excelente editor.

Conclusiones

Como se puede observar el soporte de Java en Mac OS X roza la excelencia, por lo menos desde mi punto de vista, y además existen un gran número de herramientas de todo tipo disponibles que nos asistirán en la ardua labor de desarrollar nuestras aplicaciones. En próximos artículos iremos mostrando como llevar a cabo nuestros desarrollos con algunas de estas herramientas.

Enlaces de interés

Java Technology

Apple Java

Apple Xcode

jEdit

eclipse.org

netBeans.org

IntelliJ IDEA

0 0 votos
Article Rating
Subscribe
Notify of
15 Comments
Oldest
Newest Most Voted
Opiniones Inline
Ver todos los comentarios
Anónimo
Anónimo
19 years ago

La versión 4 de NetBeans va bastante más rápida que la versión 3, y en interfaz también parece más cuidado…

Anónimo
Anónimo
19 years ago

El soporte de Java en Mac NO roza precísamente la excelencia.

La excusa de que el Java es “Write Once – Run Everywhere”, exáctamente igual que todos los lenguajes de programación que existen en múltiples plataformas (C, C++, Python, etc) ha causado más daños que beneficios.

Todos esos proyectos multiplataforma se encuentran siempre con el problema de que:
1. Java es más lento en MacOS X. (como se menciona en el artículo, hay que darle muchas vueltas a un programa Java para que realmente se mueva en Mac)
2. a la versión de Mac de la librería correspondiente siempre le falta algo (en un párrafo del artículo así se reconoce aunque se niega en el siguiente “TODOS los APIs están disponibles”?? y
3. las versiones de las librerías de interfaz requieren demasiado ajuste (en Mac especialmente) para que el aspecto de los programas no chirrie.

Mac es una herramienta de desarrollo muy buena. Eclipse también, a pesar de estar hecha en Java. Pero Java no es la herramienta que ningún programador elegiría voluntariamente para crear una aplicación (o en palabras de un experto en el tema “de todos los programadores profesionales que conozco sólo uno trabajaría voluntariamente con Java y de todos los programadores profesionales que conozco que NO trabajan en Sun ninguna trabajaría voluntariamente en Java”).

Un ejemplo, citado en el mismo artículo, que describe la falacía de que Java es Write Once – Run Sometimes: hay partes de Eclipse que no están implementadas para Mac, a pesar del “perfecto soporte” de Java en el Mac.

Ojo, para servlets, beans, etc, si, ningún problema. Pero Java no es el mejor lenguaje para aplicaciones “normales” en los que hay que tratar con las librerías de interface. Al menos en Mac.

Es la humilde opinión de alguien que ha sufrido uno de esos proyectos “geniales” en los que el 80% del tiempo se ha dedicado a convertir “esa cosa” en un programa Mac que los usuarios no tirasen a la cara del fabricante. Ninguno de los programadores involucrados en el tema entendía por qué, de repente, al genio correspondiente se le había ocurrido hacer aquel proyecto en Java. Paralelamente, para el mismo cliente (en esa ocasión estaba como consultor Mac para una multinacional) estaba portando aplicaciones C++ a Mac sin ningún problema…

También es la opinión de alguien que usa casi a diario dos programas (uno comercial, otro OS) hechos en Java. Los programas son útiles, pero lentos y muy suyos…

Anónimo
Anónimo
19 years ago

Más sobre Eclipse en Mac OS X:

http://developer.apple.com/tools/eclipse.html

Anónimo
Anónimo
19 years ago

Se te ha olvidado mencionar uno muy interesante, aunque de pago —pero no muy caro, unos 99USD—:

Sun Java Studio Creator

Anónimo
Anónimo
19 years ago

Gibli, no recuerdo ahora mismo dónde lo leí, pero comentan que Apple da el mejor soporte que existe para el desarrollo de de aplicaciones J2EE, y que en cierto modo eso es lo que buscan, más allá de un perfecto Java de escritorio…

Anónimo
Anónimo
19 years ago

Gibli,

– Yo no digo que Java sea más lento en OS X que en otras plataformas, digo que Eclipse es más lento debido a que el SWT solo está otimizado para Windows.

– Todos los APIs que no utilizan JNI (Java Native Interface) y están pegados a alguna librería nativa están disponibles. No se exactamente cuantos serán pero siempre son APIs opcionales.

– Las partes que no estan hechas de Eclipse, en concreto el editor visual, le deben sus problemas al uso por parte de la gente de Eclipse del SWT que es una librería que usa JNI.

No es que Java sea la plataforma más adecuada para según que cosas. Si se plantease realizar aplicaciones de escritorio sólo para Mac o para Windows probablemente no utilizaría Java. Sin embargo en un proyecto multiplataforma no deja de ser una opción viable. La lentitud de Java respecto a una aplicación nativa es algo que se mejora en cada release del JDK.

Lo que está claro es que no se pueden pedir peras al olmo, Java es lo que es y llega hasta donde llega y nunca llegará a los extremos a los que se puede llegar con una aplicación nativa. La cuestión es si para la mayoría de los proyectos es necesario llegar a ciertos extremos, como por ejemplo en una simple aplicación de gestión.

Anónimo
Anónimo
19 years ago

Uppss cierto que se pasó Sun Java Studio Creator, la verdad es que ni siquiera lo he probado :P.

Anónimo
Anónimo
19 years ago

Juan, en eso tienes razón. Apple siempre ha apoyado (en el terreno de Java) más la creación de applets y servlets que la creación de aplicaciones. Ahí Java es gueno.

JM, el problema es que no llega en lo básico. No hablo de APIs de 3D ni cosas raras. El proyecto que mencioné era más simple que una aplicación de gestión: procesaba colas. La parte complicada de rematar fue todo lo que no era la aplicación: menuses, ayuda, etc, etc.

Por cierto, que acabo de leer una entrevista en Drunkenblog donde se habla mucho de lo que supuso el cambio de Objective-C a Java en WO y de cómo eso abre las puertas a la hora de vender desarrollos en WO porque de repente se está vendiendo una solución J2EE y no un “algo” de Apple.

A veces es más útil pasar el filtro de “tecnología imprescindible” que el de hacerlo bien. Otro punto positivo para Apple.

En el lado negativo (que no afecta a Apple directamente) hay movida con el tema de OO y la necesidad de tener un JRE instalado para hacer determinadas cosas (usar la versión de Access, por ejemplo). Para los tecnocuriosos está en el slashdot de hoy.

Y sigue sin gustarme Java. 🙂

Anónimo
Anónimo
19 years ago

Yo comentaba que Sun Java Studio Creator era de pago, y es cierto, pero puedes utilizar una versión de prueba durante 30 días:

Descargar Sun Java Studio Creator

Anónimo
Anónimo
19 years ago

Yo como no entiendo nada…

Anónimo
Anónimo
19 years ago

Mande?

Anónimo
Anónimo
19 years ago

También podeis poner entre los entornos de desarrollo uno para principiantes BlueJ, es interesante porque existe para las tres plantaformas Mac/Win/Linux; es gratuito y está documentado. Haced las búsquedas en google. Es de una universidad danesa.

Anónimo
Anónimo
19 years ago

Pero porqué es prácticamente imposible entrar a los chats con el java de sun correspondiente al macOSX?

Anónimo
Anónimo
18 years ago

Quisiera que me mandaran inforación acerca del programa de javacreator..Porque ese programa estoy llevando.
y también si me pudieran mandar información acerca del programa.
E inclusos unos ejemplos se les agradecería mucho
Gracias por su comprensiónç
ATENTAMENTE. Pedro Cerqueda Alvarado.

Anónimo
Anónimo
16 years ago

hola cuando me bajo un juego java 3D en vez de estar hecha para pasarla directamente al cel me sale como desarmado como le hago para armarlo plis lo necesito

15
0
Me encantaría saber tu opinión, por favor, deja un comentariox
()
x