miércoles, septiembre 26, 2007

Degesys se decide por Eclipse RCP

Después de algunas semanas evaluando diferentes opciones e incluso elaborando una PoC (prueba de concepto), en Degesys hemos llegado al convencimiento de que debemos desarrollar las interfaces de usuario para escritorio con Eclipse RCP.
Mis compañeros Pablo Navais y Sixto Cantolla han estado haciendo este trabajo, durante el cuál han evaluado fundamentalmente Eclipse RCP, NetBeans RCP, Spring RCP y Swing Application Framework (JSR-296) y en el estudio que han elaborado han concluído lo siguiente:
  • Eclipse RCP es el más maduro, estable, completo y bien documentado del mercado. Además, al estar basado en SWT (e.d. componentes nativos) tiene un mejor rendimiento. Permite incorporar componentes Swing sin problemas. Tiene una curva de aprendizaje elevada, pero una vez pasada la barrera es muy productivo.
  • NetBeans RCP no está mal, pero Eclipse RCP está mejor.
  • Spring RCP se basa en independizarse del método de renderizado (usa Swing de momento) pero está aún un poco "verde". Además, no tiene mucha documentación y tiene algunos defectos bastante llamativos. De todos modos, siempre podremos integrar Spring y Eclipse RCP. :-)
  • Y el que está verde del todo es Swing Application Framework, que no está aún concluída la especificación y tardará además en madurar (igual que le ocurre a cualquier framework). Sin embargo, por lo que se ha podido intuir, es una opción que en el futuro está llamada a jugar fuerte.
  • JavaFX parece que tiene problemas de rendimiento de tal calibre que ni tan siquiera lo consideramos.
En breve comenzaremos a desarrollar nuestra primera aplicación de escritorio: una consola de administración para un servicio interno que ya tenemos desarrollado. No es algo muy ambicioso, pero es la mejor manera de aprender. Si trataramos de hacer una aplicación para un cliente directamente, lo más seguro es que nos pegáramos el batacazo del siglo... y no queremos eso... :-)


jueves, septiembre 13, 2007

Tuscany SCA + Spring

Acabo de conseguir echar a andar uno de los ejemplos de Tuscany SCA en el que se muestra cómo usarlo con la extensión Spring. Está todo mavenizado pero hay que hacer algún "hack" porque hay dependencias SNAPSHOT que aún no han sido liberadas.

  1. Hay que hacer checkout desde https://svn.apache.org/repos/asf/incubator/tuscany/java/sca/samples/simple-bigbank-spring. Yo lo he hecho desde mi Eclipse 3.3 con JDK 6 y con el plugin m2 para Maven. Así, en mi workspace tengo el proyecto "simple-bigbank-spring" pero ni compila ni nada.
  2. Botón derecho + "Enable Dependency Management" para habilitar el plugin de Maven.
  3. Botón derecho + "Properties" para revisar el classpath:
    • Añadir la librería del JRE (yo he puesto la que tengo por defecto: JDK 6)
    • Quitar el directorio raíz del proyecto como carpeta para el código fuente y seleccionar los estándar de Maven: src/main/java, src/main/resources y src/test/java.
    • Cambiar el directorio destino de las clases compiladas de "bin" a "target/classes".
    • Pulsar "OK" y aceptar que se borre el contenido de "bin".
  4. Tocar el pom.xml:
    • Añadir el repositorio de snapshots de apache: http://people.apache.org/repo/m2-snapshot-repository


    • <repository>
      <id>apache.snapshot</id>
      <url>http://people.apache.org/repo/m2-snapshot-repository</url>
      </repository>

    • Eliminar el elemento "relativePath" del "parent".
    • Cambiar todas las dependencias 1.1-incubating-SNAPSHOT por 1.0-incubating-SNAPSHOT.
  5. (Es posible que tengáis que deshabilitar y volver a habilitar las dependencias de Maven para que pille estos cambios).
  6. Ejecutar el goal "install" con Maven, lo cuál descargará bastantes librerías, y al final deberíais tener el proyecto perfectamente compilado y listo para ejecutar.
  7. Ejecutad la única prueba en src/test/java/bigbank/BigBankTestCase (con botón derecho "Run As Junit Test").

El resultado en la consola es:

log4j:WARN No appenders could be found for logger (org.apache.tuscany.sca.implementation.spring.SCAApplicationContext).
log4j:WARN Please initialize the log4j system properly.
Spring parent context - getBean called for name: stockQuoteService
Getting stock quote for: IBM, value: 104.73
Account summary: currency: USD, [ID:Foo_CHA12345, balance:1500.0, ID:Foo_SAA12345, balance:1500.0, ID:Foo_STA12345, symbol:IBM, quantity:100, balance:10473.0]

miércoles, septiembre 12, 2007

Informática vocacional vs Informática alimenticia

En ocasiones me siento muy identificado con artículos como éste , lo que pasa es que cuando veo el recibo mensual de la hipoteca me veo enfrentado a mis propios demonios que me piden dejar de trabajar en lo que me gusta y centrarme en ganar pasta y nada más... :-(

Aristóteles era un tipo prudente (la prudencia es la madre de la sabiduría) y ya dijo:
La virtud está en el término medio.

Lo que pasa es que a veces resulta muy difícil ser virtuoso... :-)