Acelerar la compilación de GWT durante la fase de desarrollo

GWT es una tecnología de google que permite escribir páginas web como si fueran aplicaciones desktop en Java. Para lograr ésto, GWT se vale de un compilador que lee código fuente escrito en Java y lo transforma o lo traduce en código JavaScript.

Aunque GWT trae una herramienta para depurar el código (llamado Hosted Mode) usando la característica de debugger que tienen los IDE de Java. Es necesario de tanto en tanto, ver la aplicación montada en el entorno real, es decir, dentro de la aplicación web en un navegador. Este proceso de compilación de código Java a JavaScript es bastante lento, midiéndose en minutos cuando se trata de aplicaciones web grandes. Este factor se agrava cuando se usa la internacionalización y la aplicación web se tiene que ver en varios idiomas.

Resulta que el compilador genera una versión distinta del código para cada idioma y para cada navegador de los soportados. Entre los navegadores está (ie, firefox 1, firefox 2 en adelante, opera y safari). Cuando se está en pleno desarrollo, normalmente las pruebas se hacen en un sólo navegador y en un sólo idioma.

Lo bueno es que GWT permite configurar ésto, reduciendo dramáticamente el tiempo de compilación y por ende el tiempo de espera hasta que la aplicación está completamente desplegada. Para hacer ésto se debe agregar la siguiente línea en el archivo xml que define cada módulo que tiene definido un punto de entrada:
<module>
 <inherits name="com.google.gwt.user.User"></inherits>

 <set-property name="user.agent" value="gecko1_8"></set-property>
</module>

Esto hace que sólo se compile para Firefox 2 en adelante. Los valores permitidos para esta propiedad son:
ie8, gecko1_8, safari, ie9, ie10

Pero ojo sólo se puede poner un valor a la vez. Es decir todo o uno.

Si se tienen definidos varios idiomas se debe dejar uno sólo:
<module>
  <inherits name="com.google.gwt.user.User"></inherits>
  <inherits name="com.google.gwt.i18n.I18N"></inherits>

  <!-- Spanish -->
  <extend-property name="locale" values="es"></extend-property>

  <!-- English language, independent of country -->
  <!--<extend-property name="locale" values="en">-->
</module>

En mi aplicación el tiempo de compilación se redujo a la mitad.

Es importante recordar arreglar estos valores para el deploy final de la aplicación, especialmente si se publicará en internet.

Hasta la próxima...

Nota: Si esta información te es de utilidad o piensas que se puede mejorar, por favor deja un comentario con tus observaciones.

4 comentarios:

  1. < extend-property name="locale" values="es_PY">

    ResponderEliminar
  2. < set-property-fallback name="locale" value="es_PY"/>

    ResponderEliminar
  3. La forma de cambiar el idioma. Tambien cambia el simbolo de la moneda, el separador de miles y decimal. En este caso para el primero "G", segundo "." y tercero ","

    ResponderEliminar
  4. Interesante para localizarlo al país. Me gusta lo del fallback asi se puede poner el property en "es_PY" y el fallbaxk en "es"

    ResponderEliminar

- Comenta, comenta, adelante. Así nos animas a seguir el blog -

Búsqueda

CodeWeavers