22 septiembre 2006
Ajustando Battlewizard bajo MacosX
Un dato importante acerca de Battlewizad es que puede ejecutarse bajo cualquier S.O. que soporte Java 1.4 o superior; esta caracterísitica le hace adecuado para cualquier usuario, use Windows, Linux o incluso Mac.
En este post cubriremos la ejecución de Battlewizard sobre una plataforma MacosX Tiger.
Cualquiera que utilice habitualmente MacosX sabrá que existen ciertos detalles importantes bastante diferentes de otros sistemas operativos; porejemplo, las barras de menú se encuentran siempre en la parte superior de la pantalla, justo al lado de la manzana. Con unos sencillos ajustes podemos dar a nuestra aplicación Java un look and feel nativo de modo que los usuarios de MacosX puedan instalar y ejecutar esta aplicación sin ser consciente de que están ejecutando una aplicación multi-plataforma.
Es importante darse cuenta de que Battlewizard contará con un lanzador para los sistemas MacosX que hará uso de todos estos temas.
1.- Usando JVM sin ajustes
Si lanzamos Battlewizard con una maquina JVM sin ajustes, tendrá el siguiente aspecto:

2.- Colocando la barra de menús en su sitio
Haremosuso de algunas propiedades de sistema de JVM para conseguir esto; simplemente añade el siguiente argumento a la linea de ejecución de jvm para el lanzamiento de battlewizard:
-Dapple.laf.useScreenMenuBar=true
Y el resultado es el siguiente:

Se puede ver como labarra de menús ahora está en la zona superior.
3.- Cambiando el nombre de la clase....
Como se puede ver en la última imagen, la barra de menús descansa donde debe, pero el nombre de la aplicación es el nombre completo de la aplicación, junto con sus paquetes.
Eso carece de estilo, así que lo cambiamos para poder ver el nombre en ese punto.
En este caso, usamos una opción de jvm especial para MacosX en vez de una propiedad del sistema:
-Xdock:name="Battlewizard"
Y aquí llega el resultado:

4.- Añadiendo un a entrada "About" en el menú del sistema
No es realmente importante, pero todas las aplicaciones MacosX tienen uno de esos así que... por qué no nosotros?
Usando la propiedad del sistema:
-Dcom.apple.mrj.application.apple.menu.about.name=Battlewizard
nos permitirá ver la siguiente opción de menú:

JVM por defecto habilita el Double Buffering para todos sus gráficos. El resultado es una animación más suave y eliminación de parpadeos.
MacosX usa un engine gráfico, llamado Quartz 2D, aprte del framework gráfico principal; es un engine de dibujo en 2D avanzado independiente de resolución y dispositivo. Sus potentes características incluyen capas de transparencia, dibujo basado en paths, offscreen rendering, gestión avanzada del color así como creación, visualización y parseo de documentos PDF.
Este engine siempre realiza Double Buffering así que, si no lo desactivamos en Java, tendremos un doble buffering de un dobre buffering. Funcionar, funciona, pero no veremos mucha mejora y en cambio si que notaremos un descenso del rendimiento.
Para poder deshabilitar el doble buffering de Java, usamos la siguiente propiedad del sistema:
-Dawt.nativeDoubleBuffering=true

6.- Otras opciones
Dos opciones más pueden usarse para cambiar nuestra aplicación y hacerla más a tono con MacosX.
-Dcom.apple.mrj.application.growbox.intrudes=false
La opción de arriba hace que las aplicaciones respeten la "zona de crecimiento" de una ventana de MacosX; en caso contrario, los componentes podrían invadir esa "zona de crecimiento".
-Dcom.apple.macos.smallTabs=true
La última de las opciones es para ajustar el tamaño de las pestañas. Es difícil hacer diseños GUI para aplicaciones multi-plataforma si quieres establecer con precisión el tamaño y posición de los componentes. Un obstáculo es que el tamaño de las fuentes es diferente en las distintas plataformas. Apple te permite elegir entre Pestañas grandes o pequeñas, siendo por defecto las primeras.
Conclusión
Aunque Java es un lenguaje de desarrollo multi-plataforma, debemos ser conscientes de que cada una de estas plataformas tiene pequeños detalles que pueden ser activados. Es muy útil conocer cómo cambiar estas caractéristicas con el menor esfuerzo posible.
En este post cubriremos la ejecución de Battlewizard sobre una plataforma MacosX Tiger.
Cualquiera que utilice habitualmente MacosX sabrá que existen ciertos detalles importantes bastante diferentes de otros sistemas operativos; porejemplo, las barras de menú se encuentran siempre en la parte superior de la pantalla, justo al lado de la manzana. Con unos sencillos ajustes podemos dar a nuestra aplicación Java un look and feel nativo de modo que los usuarios de MacosX puedan instalar y ejecutar esta aplicación sin ser consciente de que están ejecutando una aplicación multi-plataforma.
Es importante darse cuenta de que Battlewizard contará con un lanzador para los sistemas MacosX que hará uso de todos estos temas.
1.- Usando JVM sin ajustes
Si lanzamos Battlewizard con una maquina JVM sin ajustes, tendrá el siguiente aspecto:

2.- Colocando la barra de menús en su sitio
Haremosuso de algunas propiedades de sistema de JVM para conseguir esto; simplemente añade el siguiente argumento a la linea de ejecución de jvm para el lanzamiento de battlewizard:
-Dapple.laf.useScreenMenuBar=true
Y el resultado es el siguiente:

Se puede ver como labarra de menús ahora está en la zona superior.
3.- Cambiando el nombre de la clase....
Como se puede ver en la última imagen, la barra de menús descansa donde debe, pero el nombre de la aplicación es el nombre completo de la aplicación, junto con sus paquetes.
Eso carece de estilo, así que lo cambiamos para poder ver el nombre en ese punto.
En este caso, usamos una opción de jvm especial para MacosX en vez de una propiedad del sistema:
-Xdock:name="Battlewizard"
Y aquí llega el resultado:

4.- Añadiendo un a entrada "About" en el menú del sistema
No es realmente importante, pero todas las aplicaciones MacosX tienen uno de esos así que... por qué no nosotros?
Usando la propiedad del sistema:
-Dcom.apple.mrj.application.apple.menu.about.name=Battlewizard
nos permitirá ver la siguiente opción de menú:

JVM por defecto habilita el Double Buffering para todos sus gráficos. El resultado es una animación más suave y eliminación de parpadeos.
MacosX usa un engine gráfico, llamado Quartz 2D, aprte del framework gráfico principal; es un engine de dibujo en 2D avanzado independiente de resolución y dispositivo. Sus potentes características incluyen capas de transparencia, dibujo basado en paths, offscreen rendering, gestión avanzada del color así como creación, visualización y parseo de documentos PDF.
Este engine siempre realiza Double Buffering así que, si no lo desactivamos en Java, tendremos un doble buffering de un dobre buffering. Funcionar, funciona, pero no veremos mucha mejora y en cambio si que notaremos un descenso del rendimiento.
Para poder deshabilitar el doble buffering de Java, usamos la siguiente propiedad del sistema:
-Dawt.nativeDoubleBuffering=true

6.- Otras opciones
Dos opciones más pueden usarse para cambiar nuestra aplicación y hacerla más a tono con MacosX.
-Dcom.apple.mrj.application.growbox.intrudes=false
La opción de arriba hace que las aplicaciones respeten la "zona de crecimiento" de una ventana de MacosX; en caso contrario, los componentes podrían invadir esa "zona de crecimiento".
-Dcom.apple.macos.smallTabs=true
La última de las opciones es para ajustar el tamaño de las pestañas. Es difícil hacer diseños GUI para aplicaciones multi-plataforma si quieres establecer con precisión el tamaño y posición de los componentes. Un obstáculo es que el tamaño de las fuentes es diferente en las distintas plataformas. Apple te permite elegir entre Pestañas grandes o pequeñas, siendo por defecto las primeras.
Conclusión
Aunque Java es un lenguaje de desarrollo multi-plataforma, debemos ser conscientes de que cada una de estas plataformas tiene pequeños detalles que pueden ser activados. Es muy útil conocer cómo cambiar estas caractéristicas con el menor esfuerzo posible.
Etiquetas: Unkasoft Platform