qtjambi

43
Juan Luis Baptiste [email protected] Campus Party Colombia 2008 Introducción a QtJambi

Upload: campus-party

Post on 24-May-2015

4.210 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Qtjambi

Juan Luis [email protected]

Campus Party Colombia2008

Introducción a QtJambi

Page 2: Qtjambi

2

Tabla de Contenidos

Que es QtJambi?

Acerca de Qt...

Características generales de Qt

Arquitectura de Qt

Características de Qt 4.4

Características de QtJambi

Ejemplos

Page 3: Qtjambi

3

Tabla de Contenidos

Comparación con otros frameworks Java

Herramientas de desarrollo de Qt

Descripción del taller a desarrollar

Page 4: Qtjambi

4

Que es QtJambi?

Un framework de desarrollo en Java con base las 

librerías Qt C++ multiplataforma.

Incluye un API muy intuitivo en Java que provee las 

mismas funcionalidades del API de C++.

Librerías muy completas para desarrollo de 

aplicaciones cliente o servidor.

Page 5: Qtjambi

5

Que es QtJambi?

Se pueden mezclar componentes hechos en Java y C+

+ en un solo proyecto, con los siguienes beneficios:

Aumento de la eficiencia de desarollo.

Libertad y flexibilidad.

Aseguramiento de un framework ya probado.

Page 6: Qtjambi

6

Qt

Hablemos de Qt primero...

Page 7: Qtjambi

7

Acerca de Qt...

Desarrollada por la empresa Trolltech 

http://www.trolltech.com

Qt es la base de KDE y miles de aplicaciones libres.

Miles de desarrolladores en todo el mundo.

Qt corre en diferentes plataformas:

x86

PowerPC

PDA's

Page 8: Qtjambi

8

Características de Qt

API en C++ con una librería de clases muy 

completa.

Multiplataforma:

Linux/X11 (UNIX en general)

MS Windows

Apple Mac OS X

Linux embebido

Windows CE

Page 9: Qtjambi

9

Características de Qt

Acerca de Qt (continuación)

Multiplataforma

Encapsulamiento de las aplicaciones del s.o.

API idéntico en todas las plataformas

“Write once, compile everywhere” 

Ejecutables natívos en cada plataforma

Unix o Linux

Qt/X11 lib

Aplicación

MS Windows

Qt/Windows lib

Aplicación

MacOS

Qt/Mac lib

Aplicación

Page 10: Qtjambi

10

Características de Qt

Conjunto de herramientas que simplifican el 

desarrollo:

Diseñador de interfaces gráficas: Qt Designer.

Herramienta de internacionalización de aplicaciones: 

Qt Linguist.

Sistema de compilación multiplataforma: qmake.

Herramienta para generación de documentación: Qt 

Assistant.

Plugin para Eclipse.

Page 11: Qtjambi

11

Arquitectura de Qt

Page 12: Qtjambi

12

Características de Qt 4.4

Integración con WebKit, el motor HTML Open 

Source.

Desarrollado por Apple con base KHTML del proyecto 

KDE.

Ahora mantenido por Apple, KDE y Nokia/Trolltech.

Permite mezclar contenido y funcionalidades nativas 

y web para crear interfaces innovativas

Page 13: Qtjambi

13

Caracterìsticas de Qt 4.4

Desarrollo de aplicaciones multimedia 

multiplataforma:

Incluye soporte de Phonon, el framework multimedia 

de KDE 4.

Abstrae formatos y frameworks multimedia de las 

aplicaciones.

Soporte de Xquery para manejo de XML.

Desarrollo de aplicaciones concurrentes para 

arquitecturas multicore con QtConcurrent.

Page 14: Qtjambi

14

Caracterìsticas de Qt 4.4

Poderoso canvas 2D:

Page 15: Qtjambi

15

Características de Qt 4.4

Integración muy sólida con OpenGL:

Page 16: Qtjambi

16

Características de Qt 4.4

Soporte de Xquery para manejo de XML.

Desarrollo de aplicaciones concurrentes para 

arquitecturas multicore con QtConcurrent.

Presentación de las interfaces rápida y fácilmente 

con CSS.

Page 17: Qtjambi

17

QtJambi

Ahora si, enfoquémonos en QtJambi

Page 18: Qtjambi

18

Características de QtJambi

El API de QtJambi provee toda la funcionalidad de 

Qt C++.

Código mucho más simple que otros frameworks 

como SWT/Swing

Requiere de un JRE y JNI para correr.

Manejo de memoria automática (es Java, duh !!)

Page 19: Qtjambi

19

Características de QtJambi

Uso de Qt Designer para el diseño de las interfaces 

gráficas (nada de esos complicados layouts de 

Swing).

Manejo de layouts muy simple.

Integración con Eclipse.

Utiliza JDBC para la conexión a bases de datos.

Page 20: Qtjambi

20

Características de QtJambi

Se puede mezclar con AWT/Swing.

Utiliza Apache ant para la compilación de los 

proyectos.

Page 21: Qtjambi

21

Características de QtJambi

Generador de QtJambi:

Es la fundación de QtJambi.

Herramienta que permite mapear clases C++ a Java.

El código generado llama interamente a la clase 

correspondiente C++.

Page 22: Qtjambi

22

Un ejemplo: Hola mundo !!

package com.trolltech.examples.tutorial;

import com.trolltech.qt.gui.*;

public class HelloWorld

{

    public static void main(String args[])

    {

        QApplication.initialize(args);

        QPushButton hello = new QpushButton("Hola Mundo!");

        hello.resize(120, 40);

        hello.setWindowTitle("Hola Mundo");

        hello.show();

        QApplication.exec();

    }

}

Page 23: Qtjambi

23

Comunicación entre objetos

Comunicación entre objetos, “Señales y slots” 

Objetos emiten señales cuando un evento ocurre

Señales se “conectan” a los slots de otros objetos

Los slots son métodos públicos comunes y corrientes

Mecanísmo completamente OO

Page 24: Qtjambi

24

Comunicación entre objetos

Page 25: Qtjambi

25

Otro Ejemplo: Señales y slots

public class Quit

{

    public static void main(String args[])

    {

        QApplication.initialize(args);

        QPushButton quit = new QPushButton("Quit");

        quit.resize(80, 40);

        quit.setFont(new QFont("Times", 18, QFont.Weight.Bold.value()));

        quit.clicked.connect(QApplication.instance(), "quit()");

       quit.setWindowTitle("Calling It Quits");

        quit.show();

        QApplication.exec();

    }

}

Page 26: Qtjambi

26

Comparación entre Swing y QtJambi

Manejo de eventos en Swing: button.addActionListener(new ActionListener() {

    public void actionPerformed(ActionEvent e)  {

      showDialog();  // code to execute when button is pressed

    }

});

Manejo de eventos en QtJambi:

button.clicked.connect(this, "showDialog()");

Page 27: Qtjambi

27

Comparación 2 entre Swing y QtJambi

Pintar un rectángulo en 

Swing: void doPrinting() {

    PrinterJob printJob = PrinterJob.getPrinterJob();

    printJob.setPrintable(this);

    if (printJob.printDialog())   {

      try  {

        printJob.print();

      }

      catch (Exception ex)   {

        ex.printStackTrace();

      }

    }

}

public int print(Graphics graphics, PageFormat pageFormat, int

pageIndex)   throws PrinterException{

    if (pageIndex != 0)   {

      return Printable.NO_SUCH_PAGE;

    }

    Graphics2D graphics2D = (Graphics2D)graphics;

    Rectangle2D.Double rectangle = new Rectangle2D.Double();

    rectangle.setRect(pageFormat.getImageableX() + 1,

                      pageFormat.getImageableY() + 1, 144, 144);

    graphics2D.draw (rectangle);

    return Printable.PAGE_EXISTS;

}

Pintar un rectángulo en 

QtJambi: void doPrinting () {

    QPrinter printer = new QPrinter();

    QPainter painter = new QPainter();

    QPrintDialog printDialog = new QPrintDialog(printer, this);

    if (printDialog.exec())  {

      painter.begin(printer);

      Graphics2D graphics2D = (Graphics2D) graphics;

      Rectangle2D.Double rectangle = new Rectangle2D.Double();

      rectangle.setRect(pageFormat.getImageableX() + 1,

                        pageFormat.getImageableY() + 1, 144, 144);

      graphics2D.draw (rectangle);

      painter.end();

    }

}

Page 28: Qtjambi

28

Comparación 2 entre Swing y QtJambi

24 lineas de código 14 lineas de código.

41,6% menos código.

Page 29: Qtjambi

29

Qt Designer

Herramienta de desarrollo visual tipo WYSIWYG.

Drag and drop de los widgets deseados al dialogo 

que se esté diseñando.

Conexión de señales y slots con drag and drop.

Las formas se pueden previsualizar sin necesidad 

de compilarlas.

Page 30: Qtjambi

30

Qt Designer

Las formas se pueden previsualizar sin necesidad 

de compilarlas.

Los widgets se pueden extender con propios.

Las interfaces generadas no son dependientes del 

lenguaje (C++ o Java), son archivos XML (de 

extensión .jui) que describen la interfaz.

Page 31: Qtjambi

31

Qt Designer

Page 32: Qtjambi

32

Qt Designer

Para convertir los archivos .ui en código Java se usa 

la herramienta juic.

Pero no es necesario correrla manualmente, el 

plugin de Eclipse lo hace por nosotros.

Page 33: Qtjambi

33

Plugin para Eclipse

Plugin que integra QtJambi en Eclipse  versión 3.2.x 

en adelante.

Herramientas como Qt Designer Qt Script Assistan y 

scripts de Ant también son integrados.

Page 34: Qtjambi

34

Plugin para Eclipse

Page 35: Qtjambi

35

El Taller

Ahora lo bacano, el taller !!

Page 36: Qtjambi

36

El Taller

● El taller consiste de tres partes:

1)Instalar de Eclipse y QtJambi.

2)Instalar el plugin para Eclipse

3)Desarrollo de una mini aplicación.

Page 37: Qtjambi

37

Instalar Eclipse y QtJambi

1)Descomprimir el archivo:

eclipse­java­europa­winter­linux­gtk.tar.gz

2)Descomprimir el archivo:

qtjambi­linux32­gpl­4.4.0_01.tar.gz

Page 38: Qtjambi

38

Instalar el plugin

1)Descomplimir el archivo dentro de la carpeta eclipse:

qtjambi­eclipse­integration­linux32­4.4.0_01.tar.gz.

2)Ejecutar Eclipse con el parámetro ­clean:

./eclipse ­clean

3)Ir al Window­>Preferences­>QtJambi Preference 

Page

4)Colocar la ruta a QtJambi.

5)Reiniciar Eclipse.

Page 39: Qtjambi

39

Instalar el plugin

Page 40: Qtjambi

40

El taller

Como crear un nuevo proyecto:

1)Seleccionar File­>New­>Project

2)Abrir Qt Jambi y seleccionar “Qt Jambi Project (Using 

Designer Form)“

3)Colocarle un nombre al proyecto.

4)Presionar Next 2 veces.

5)Ingresar un nombre de paquete y un nombre para la 

clase principal.

6)Presionar Finish.

Page 41: Qtjambi

41

Desarrollo de la aplicación

Vamos a desarrollar reproductor de música que:

Use phonon para reproducir los archivos de audio.

Use WebKit para abrir la página del artista en 

Wikipedia.

Tenga una barra de menú con entradas como 

Archivo, Reproducción, Ayuda, etc..

Page 42: Qtjambi

42

Bibliografía

http://doc.trolltech.com

http://trolltech.com/products/qt/features/language­support/java

http://doc.trolltech.com/qtjambi­4.4/html/com/trolltech/qt/qtjambi­index.html

Page 43: Qtjambi

43

QtJambi

Gracias !!!