Professional Documents
Culture Documents
Fernando Lozano
http://www.lozano.eti.br
Consultor Independente
Prof. Faculdades UniABEU
Prof. SENAC
Editor Adjunto da Revista Java Magazine
© 2004 Fernando Lozano, http://www.lozano.eti.br Desenvolvimento Java para Desktops Livres Pag. 1
Sobre o Autor
● Red Hat Certified Engineer
LPI Certified Professional Level I
Sair GNU/Linux Certified Professional
● IBM Certified Network Engineer
IBM Certified DB2 Administrator &
Developer
● Microsoft Certified Systems Engineer
Microsoft Certified Solutions Developer
● Webmaster da Free Software Foundation
● Conselheiro do LPI Brasil
● Editor Adjunto da Revista Java Magazine
● Autor do Livro "Java em GNU/Linux"
Ed. Alta Books www.altabooks.com.br
© 2004 Fernando Lozano, http://www.lozano.eti.br Desenvolvimento Java para Desktops Livres Pag. 2
Agenda
● Java no Desktop
● JVMs Alternativas
● Integração ao Gnome/KDE
● Bibliotecas gráficas Livres
● IDEs e outras ferramentas
© 2004 Fernando Lozano, http://www.lozano.eti.br Desenvolvimento Java para Desktops Livres Pag. 3
Java no Desktop
© 2004 Fernando Lozano, http://www.lozano.eti.br Desenvolvimento Java para Desktops Livres Pag. 4
Desenvolvimento GUI em
Java
● O Java original fornecia a biblioteca AWT, que
oferecia uma abordagem de “menor denominador
comum” das plataformas gráficas suportadas
(Motif, Windows e MacOS)
● O Java2 padronizou a biblioteca Swing, que
implementava todos os controles visuais em Java,
utilizando apenas as primitivas gráficas da
plataforma
● Apesar de recursos avançados, como arquitetura
MVC e pluggable Look-And-Feel modules, o Swing
não emplacou no desktop
© 2004 Fernando Lozano, http://www.lozano.eti.br Desenvolvimento Java para Desktops Livres Pag. 5
O Java É Rico o Suficiente?
© 2004 Fernando Lozano, http://www.lozano.eti.br Desenvolvimento Java para Desktops Livres Pag. 6
Problemas do Swing
● Problemas gerais:
● Lentidão, quando comparado com os componentes
nativos equivalentes
● Aparência estranha, não segue os temas da área de
trabalho (apesar do LAF “GTK nativo”)
● Problemas específicos nos desktops livres:
● Digitação de acentos e símbolos
● Copiar e colar com outras aplicações
● Aspecto dos fontes
● Internacionalização
© 2004 Fernando Lozano, http://www.lozano.eti.br Desenvolvimento Java para Desktops Livres Pag. 7
Problemas da Especificação
ou da Implementação?
● O Java da Sun utiliza AWT Peers baseados no
Motif, enquanto que os desktops livres são
baseados no GTK ou no Qt e extensões do X11
como o Xft
● O Swing utiliza as primitivas gráficas e recursos
(fontes, ícones) conforme fornecidos pelo AWT
● O X11 não define aspectos como formatos da área
de transferência nem anti-aliasing de fontes
● Implementações alternativas podem implementar
AWT Peers baseados no GTK, por exemplo, o que
já resolve os problemas relacionados com fontes,
digitação e área de transferência
© 2004 Fernando Lozano, http://www.lozano.eti.br Desenvolvimento Java para Desktops Livres Pag. 8
LAFs São a Solução?
© 2004 Fernando Lozano, http://www.lozano.eti.br Desenvolvimento Java para Desktops Livres Pag. 9
JMVs Alternativas
© 2004 Fernando Lozano, http://www.lozano.eti.br Desenvolvimento Java para Desktops Livres Pag. 10
Questões de Licença
© 2004 Fernando Lozano, http://www.lozano.eti.br Desenvolvimento Java para Desktops Livres Pag. 11
JVMs e JDKs Alternativos
● Kaffe
O mais antigo, ficou parado por longo tempo mas está
novamente ativo
● GCJ
O que mais tem evoluído, com o diferencial da
compilação nativa
● SableVM, JAM
Fornecem apenas JVMs, utilizando as APIs desenvolvidas
pelo projeto Classpath
● Jikes
É apenas um compilador Java, frequentemente utilizado
em lugar do fornecido com o Java2 SDK
© 2004 Fernando Lozano, http://www.lozano.eti.br Desenvolvimento Java para Desktops Livres Pag. 12
Compatibilidade com o Java2
© 2004 Fernando Lozano, http://www.lozano.eti.br Desenvolvimento Java para Desktops Livres Pag. 13
J2SD ou J2ME
© 2004 Fernando Lozano, http://www.lozano.eti.br Desenvolvimento Java para Desktops Livres Pag. 14
Integração ao Gnome/KDE
© 2004 Fernando Lozano, http://www.lozano.eti.br Desenvolvimento Java para Desktops Livres Pag. 15
O Desktop Livre
© 2004 Fernando Lozano, http://www.lozano.eti.br Desenvolvimento Java para Desktops Livres Pag. 16
Pacotes Java
© 2004 Fernando Lozano, http://www.lozano.eti.br Desenvolvimento Java para Desktops Livres Pag. 17
Dicas
© 2004 Fernando Lozano, http://www.lozano.eti.br Desenvolvimento Java para Desktops Livres Pag. 18
Alternativas ao Swing
© 2004 Fernando Lozano, http://www.lozano.eti.br Desenvolvimento Java para Desktops Livres Pag. 19
Alternativas ao Swing
● SWT
● Biblioteca gráfica definida em Java mas
implementada com componentes nativos, sempre
que possível
● Base do popular IDE Eclipse
● Portado para Windows, Mac, Unix, QNX e PocketPC
● Versões baseadas em Motif ou GTK
● Não suporta recursos avançados do desktop, como
applets de painel
© 2004 Fernando Lozano, http://www.lozano.eti.br Desenvolvimento Java para Desktops Livres Pag. 20
Alternativas ao Swing
● Java-Gnome
● Fornece bindings do GTK, Pango, Libglade e outras
APIs do Gnome para a linguagem Java
● Ainda não foi portado para SOs não-Unix, apesar do
GTK rodar com sucesso em Mac, Windows e OS/2
● Processo de compilação ainda exige um Java2 SDK
tradicional – é um bug, pois seria possível fazer tudo
com o GCJ ou Kaffe!
● Segue o mesmo estilo dos bindings do GTK para
C/C++, Pascal, Python, Perl, PHP, ...
● Suporte em progresso para applets do painel e
Bonobo
© 2004 Fernando Lozano, http://www.lozano.eti.br Desenvolvimento Java para Desktops Livres Pag. 21
Hello, Word Java com GTK+
● import gnu.gdk.*;
import gnu.gtk.*;
class GtkOi
{
public static void main(String[] args) {
Gtk.init(args.length, args);
GtkWindow win = new GtkWindow(GtkWindowType.TOPLEVEL);
win.setTitle("Teste do GTK+");
win.signalConnect("destroy", "mainQuit", Gtk.class);
GtkLabel lbl = new GtkLabel(
"Aplicativo GTK+ escrito em Java!");
lbl.setPadding(10, 10);
win.add(lbl);
win.showAll();
Gtk.main();
}
}
© 2004 Fernando Lozano, http://www.lozano.eti.br Desenvolvimento Java para Desktops Livres Pag. 22
Vantagem das Alternativas
© 2004 Fernando Lozano, http://www.lozano.eti.br Desenvolvimento Java para Desktops Livres Pag. 23
Desvantagens das
Alternativas
● Portabilidade ainda reduzida em comparação com
o Swing (será verdade, em relação ao SWT?)
● Os IDEs Java são focados no Swing, não suportam
desenvolvimento visual com as alternativas
● Componentes de terceiros também são focados
no Swing
● Incompatibilidade com APIs Java avançadas, como
Java2D e Imaging API
(note que não há incompatibilidade com APIs
como o Java Activation Framework ou Javaspeech)
© 2004 Fernando Lozano, http://www.lozano.eti.br Desenvolvimento Java para Desktops Livres Pag. 24
O Híbrido: SwingWT
© 2004 Fernando Lozano, http://www.lozano.eti.br Desenvolvimento Java para Desktops Livres Pag. 25
IDEs e Outras Ferramentas
© 2004 Fernando Lozano, http://www.lozano.eti.br Desenvolvimento Java para Desktops Livres Pag. 26
IDEs Visuais Java Livres
© 2004 Fernando Lozano, http://www.lozano.eti.br Desenvolvimento Java para Desktops Livres Pag. 27
Ferramentas Visuais para
Java com GTK ou SWT
● IDEs visuais para Java são escritos para o AWT ou
para o Swing, e não suportam o GTK ou AWT.
● Projetos abertos como o Eclipse ou o NetBeans
podem vir a suportar o GTK no futuro, se houver
interesse da comunidade.
● O Eclipse já fornece plug-ins para
desenvolvimento visual SWT
● Os bindings do GTK para Java incluem a LibGlade,
de modo que o Glade pode ser utilizado para
desenhar a interface gráfica de aplicativos Java
com GTK
© 2004 Fernando Lozano, http://www.lozano.eti.br Desenvolvimento Java para Desktops Livres Pag. 28
Uma Amostra das
Ferramentas Disponíveis
● ArgoUML – case UML completo, com suporte a
Java, PHP e C# (extensões de terceiros para SQL e
EJBs)
● Mogwai – Diagramas E/R
● iReports – desenhador visual de relatórios,
geração de PDF, RTF, HTML e XLS via
JasperReports
● Flow4J – plug-in do Eclipse para geração de
código à partir de fluxogramas
(útil para complexos fluxos de negócios ou IU)
● JSwat – depurador visual em Java
© 2004 Fernando Lozano, http://www.lozano.eti.br Desenvolvimento Java para Desktops Livres Pag. 29
FIM
© 2004 Fernando Lozano, http://www.lozano.eti.br Desenvolvimento Java para Desktops Livres Pag. 30
Referências
● www.javasoft.com
● linux.java.net
● www.freedesktop.org
● gcc.gnu.org/java
● www.kaffe.org, www.sablevm.org
● java-gnome.sourceforge.net
● www.gtk.org, glade.gtk.org
● swingwt.sourceforge.net
● www.eclipse.org, www.netbeans.org
● www.argouml.org, ireports.sourceforge.net
© 2004 Fernando Lozano, http://www.lozano.eti.br Desenvolvimento Java para Desktops Livres Pag. 31
Perguntas
● Dúvidas:
fernando@lozano.eti.br
● Palestras, artigos e
Apostilas:
www.lozano.eti.br
● Livro:
Java em GNU/Linux
www.altabooks.com.br
© 2004 Fernando Lozano, http://www.lozano.eti.br Desenvolvimento Java para Desktops Livres Pag. 32