Compilar y ejecutar aplicaciones con QtJambi desde consola

Hace ya bastante tiempo que publique un post para quienes deseaban introducirse en la programación de aplicaciones Java haciendo uso del framework QtJambi.
En el mismo, explique como usar estas librerías haciendo uso de un plugin para integrarlo a Eclipse con el fin de simplificar pasos ya que yo mismo tenia problemas cuando intentaba compilar y ejecutar aplicaciones que hicieran uso de este framework sin ningún IDE de por medio.

Resulto ser que no era tan complicado como pensaba, simplemente que estaba comentiendo un error con el script que provee la gente de Trolltech junto con la implementación de QtJambi para Linux. Mejor dicho, debido a un alias que tenia asignado al comando “ls”. Nada grave ni difícil de solucionar… uno de esos típicos “que bolu….” que tanto nos pasa.

En fin, vamos a lo importante.

Lo primero e indispensable que necesitamos para correr aplicaciones hechas con QtJambi es (ademas de un JDK) el paquete provisto por Trolltech para nuestra plataforma. En mí caso, es el “Qt Jambi Open Source Edition for Java Developers: X11 Binary, 32 Bit”

Una vez que lo tenemos, simplemente lo descomprimimos y realizamos:

#source set_qtjambi_env.sh

Con esto nos aseguramos que las carpetas con las clases que utiliza QtJambi se encuentren en nuestra variable CLASSPATH.

Ahora, solo nos queda escribir nuestro programa y ejecutarlo de la forma habitual con:

$javac Test.java
$java Test

Así es, no más complicaciones que esas… un buen ejemplo en donde debemos pensar antes que renegar :).
Pronto levanto la segunda parte del articulo, mientras tanto, dejo un código fuente sencillo para realizar un “hola mundo” con Jambi.

  1. import com.trolltech.qt.gui.*;
  2. public class Test {
  3. public static void main(String[] args) {
  4. QApplication.initialize(args);
  5. QPushButton button = new QPushButton(“Hola Mundo”);
  6. button.show();
  7. QApplication.exec();
  8. }
  9. }

Eclipse GanyMade esta aquí

Hace un par de días, salio una nueva versión de la que es considerada una de las mejores IDE’s para desarrollar aplicaciones Java (si bien cuenta con soporte a muchos otros lenguajes por parte propia o de terceros.
Como hace un rato termine de rendir y queria probarlo, me dí el gusto y esto es lo que paso…

Luego de descomprimir el paquete universal para Linux que descargué de su página oficial, crear un enlace simbolico (o acceso directo para los que vienen de Windows) en mí escritorio al ejecutable, inice Ganymade por primera vez. Como es costumbre, me pregunto cual sería la carpeta para mi “workspace” para la cual elegí la misma carpeta que vengo usando para las versiones anteriores.

Todo resulto estar tal y como lo había dejado la última vez que cerre Europe (Algo que era de suponer) mismos archivos abiertos y mís proyectos estaban ahí tal cual los deje.
El primer cambio, a simple vista, es un boton en la barra de menús que realmente siempre me pregunte porque no existia, se trata del “Breadcumb”… cuya traducción literal sinceramente desconozco, pero nos permite tener una visión de la jerarquia que tiene la clase que estamos editando, (como si se tratara del Package explorer) pero en la propia ventana de edición. Comenzando desde la carpeta donde se encuentra nuestro proyecto, pasando por los paquetes y clases hasta llegar al metodo que estamos editando, si hacemos click en las flechas de alado, rapidamente vemos el resto de los elementos de esa categoria, algo muy útil que se suma al resto de las caracteristicas de Eclipse.

Lo otro nuevo que veo, es la posibilidad de movernos por un “historial” en cuanto a las clases que hemos estado editando, es decir, podemos ir atras, adelante e incluso lo mismo pero para errores, bookmarks, breakpoints, etc.
Creo que esto seria todo “para mí”, si bien vengo usando Eclipse para casi todo lo que sea Java ultimamente, todavía hay muchas caracteristicas que estoy descubriendo.
Si todavía no lo probaste, realmente lo recomiendo. Sobre todo si leemos el “Overview” que viene junto al programa (al cual accedemos mediante la pantalla de bienvenida) ya que la cantidad de herramientas y “facilidades” que nos brinda, son realmente increibles.

Por último, decir que si quieren descargarlo deben darse una vuelta por http://www.eclipse.org/downloads/packages/ y ademas recomiendo el resto del sitio que no tiene desperdicio.

Java va completando su camino al código abierto


Esta es una novela que viene dando que hablar desde hace rato. Una noticia importante para la comunidad de código abierto ya que Java es uno de los lenguajes más utilizados actualmente para desarrollos de este tipo.
Tras muchos años de promesas y negociaciones, en el 2006 Sun licencio Java bajo los terminos de la GPL. Pero aún quedaban muchas librerías del API de Java que eran cerrados, sobre todo aquellos que fueron desarrollados por terceros.
Finalmente las negociaciones paracen haber concluido y ya varios blogs se hacen eco de que Sun terminara su paso a la GPL durante este año.

Vale la aclaración de que estoy hablando de la plataforma Java de Sun, pero tambien seria bueno comentar que el proyecto IcedTea que comenzo Red Hat el año pasado, el cual busca crear una implementación de Java basandose en el OpenJDK y el CLASSPATH del proyecto GNU, consiguio pasar el rigurosa prueba de compatibilidad de Java.
Sin duda, muy buenas noticias para el mundo java y de código abierto.

Una "ojeada" a Jambi, primera parte

Aprovechando la salida de Qt Jambi 4.4 (de ahora en más, simplemente Jambi), me puse a echar una mirada a este conjunto de APIs tan interesante.
Mi idea con este post es contar un poco de que se trata Jambi e introducir un poco a la programación con las librerías QT en Java, para lo cual trabajare con un pequeño ejemplo en el cual armaremos un sencillo navegador web haciendo uso de la recientemente incorporada integración con el motor WebKit que incluye Jambi.

¿Que vamos a hacer?

La idea de este articulo/tutorial es ver dos cosas, por un lado, dar una introducción a la programación con Qt y luego armar un pequeño programa que haga uso de Jambi y de una de las nuevas características incluidas en la versión 4.4 que es la integración con WebKit.

Si bien cuando comencé a escribir esto, pensé en hacer todo un solo articulo, considere que seria mejor separarlo en 2 partes para no hacerlo excesivamente largo y molesto para quienes lo leen por medio de los feeds.

En esta primera parte, are una breve introducción a las librerías Qt/Jambi y el proceso para integrar Jambi con Eclipse (la forma más sencilla de utilizarlo)
En la segunda veremos ya como aplicar esto en una sencilla aplicación que utilice, como ya dije, un poco de los conceptos que veremos y la reciente integración con WebKit.

Por ultimo, me gustaría aclarar que ni por asomo soy un experto en Qt o Jambi, simplemente lo estoy usando para un pequeño proyecto que tenemos con unos compañeros de facultad y me parecio una buena forma de compartir lo que fuí aprendiendo sobre este tema y de paso asentar algunas cosas… así que sepan que esto esta propenso a errores ;)

¿Jambi, Qt… que es eso?

Para no divagar ni decir cosas que no son, simplemente copiare y pegare la definición de QT que existe en Wikipedia, quizá seria más adecuado usar la definición “oficial” pero mejor saltarnos todo la parte “marquetinera” (igualmente recomiendo su lectura, por razones obvias)

“Qt es una biblioteca multiplataforma para desarrollar interfaces gráficas de usuario.”

Qt, de manera nativa, usa el lenguaje de programación C++ y es acá donde entra en juego Jambi que es, precisamente, una implementación de dicha librería para el lenguaje Java. Otra característica importante de Jambi es la posibilidad de integrar código C++ en nuestras aplicaciones Java e incluso cuenta con una herramienta para “traducir” código C++ en Java. Para más información sobre esto último, recomiendo la lectura del whitepaper que se encuentra en la página de Qt.
Si bien se puede dar una definición un poco más compleja (y exacta) esto nos bastara por ahora. Para más información les recomiendo la comple ta (aunque desordenada) documentación oficial de Jambi: http://doc.trolltech.com/qtjambi

Entendiendo Qt

Como dije anteriormente, Jambi es una implementación en Java de Qt y por tanto, hereda toda la “filosofía” (por llamarlo de alguna manera) de este. Es por esto que debemos conocer algunas cosas respecto a la forma de “ver las cosas” que tiene Qt antes de ponernos a programar.

Sin entrar en tecnicismos, lo primero y principal es saber que para Qt, todo es un widget, desde un botón, hasta una ventana, e incluso podemos agrupar widgets y crear uno propio. Sin más, podemos decir que una aplicación Qt es un widget que a su vez contiene un conjunto de widgets en su interior que pueden estar formados por otro conjunto de widgets.

Estos widgets, se comunican unos a otros mediante lo que Qt llama “Signals and slots“, esto es, los widgets emiten señales (signal) que son tomados por un slot especifico de otro widget lo que provoca alguna acción.

Por ejemplo, tenemos un botón dentro de una ventana, que al hacer click en el provoca que la ventana se cierre. Esto podríamos explicarlo, diciendo que tenemos un widget del tipo “QPushButton” dentro de otro widget del tipo “QApplication” que emite una señal “clicked()” que es recibida por el slot “quit()” del widget QApplication.

Hablando, ahora sí, en forma un poco más técnica, podemos decir que QWidget es una clase abstracta que es heredada por todos los widgets que componen Qt (y aquellos que definamos nosotros). Es decir, que tanto nuestra aplicación, como el botón del que hablábamos, son objetos de las clases QApplication y QPushButton que heredan los métodos y propiedades de la clase QWidget.
O sea, que para incorporar widgets en nuestra aplicación, basta con que instanciemos un objeto de la clase de dicho widget (botones, cuadros de texto, ventanas, etc) y luego los mostremos.

Preparando todo

Bien, ahora que “sabemos” que es Qt y tenemos una mínima idea de con que nos vamos a encontrar, estamos con ganas de probar eso escribiendo algo, pero para eso, primero debemos preparar nuestro entorno antes de poder escribir (o mejor dicho ejecutar) algo.

Para simplificar un poco el proceso de descarga e instalación de estas librerías, recomiendo el uso del paquete de integración con Eclipse que podemos descargar desde su página oficial.
El proceso consiste, básicamente, en la descarga de dicho paquete para nuestra plataforma (linux32/64,Windows, etc), descomprimirlo en la carpeta donde tenemos instalado Eclipse, y luego ejecutar este último con la directiva “-clea n”. Una vez hecho esto, bastara con que configuremos las preferencias de Jambi dentro de Eclipse para que sepa en donde se encuentran instalados, para ello, dentro de Eclipse, nos dirijimos a Window >> Preferences y de ahí a “Qt Jambi preferences” e indicamos la ruta hacia el lugar donde instalamos las librerias, como se ve en la imagen,

Creo que hasta acá bastara con la introducción. En la continuación ya comenzaremos a escribir un poco de código para entender mejor todo esto. Desde ya, si te intereso lo que escribí, te insito a que no te quedes con estos “apuntes de estudiante” y recurras a la documentación oficial de Trolltech y que revises su página web completa, como dije, la documentación es completa, pero desordenada.

En los próximos días, la continuación…

Qt Jambi 4.4 liberado

Trolltech anunció el lanzamiento de Qt Jambi 4.4 ; la última versión de su framework para desarrollo de aplicaciones Java.
Esta nueva versión toma los beneficios de Qt 4.4 y permite a los desarrolladores Java programar aplicaciones web y multimedia utilizando la potencia de las librerias Qt.

Entre las nuevas caracteristicas de Qt Jambi 4.4 tenemos:

  • Integración con Webkit (potente motor de navegación)
  • Integración con Phonon, que nos permite reproducir y manipular videos y sonidos en nuestras aplicaciones.
  • Soporte para drivers JDBC como backend para las clases de Qt Jambi SQL

Algo muy interesante sin duda, que ya mismo saldré a probar.

Fuente: Kde.News