Artigo Java Magazine 31 - Eclipse Visual com SWT

Artigo publicado pela Java Magazine edição 31.

Esse artigo faz parte da revista Java Magazine edição 31. Clique aqui para ler todos os artigos desta edição

Atenção: por essa edição ser muito antiga não há arquivo PDF para download.Os artigos dessa edição estão disponíveis somente através do formato HTML. 

Eclipse Visual

Primeiros Passos com o SWT

 

Conheça na prática o SWT, que permite criar aplicações gráficas multiplataforma, como responsividade e aparência de aplicações nativas, sem sacrificar a compatibilidade

 

Fernando Lozano

 

Ao iniciar o Projeto Eclipse há cerca de cinco anos, a IBM decidiu criar um tookit gráfico alternativo ao Swing – O SWT. Com o tempo e o sucesso do Eclipse, muitos desenvolvedores passaram a considerar seriamente o SWT como alternativa ao tookit gráfico padrão do Java, o Swing Hoje, além de ser adotado no Eclipse e seus muitos plug-ins, o SWT é utilizado por várias aplicações populares, como o RSSOwl, um agregador de notícias RSS (Figura1) e Azureus, um cliente para a rede de compartilhamento de arquivos BitTorrent (e atualmente um dos projetos mais ativos no SourceForge).

Apesar das críticas de que o SWT fragmentaria a plataforma Java, e das discursões inflamadas sobre a qual seria o melhor toolkit gráfico, o SWT é visto por cada vez mais profissionais e empresas como uma alternativa viável (ou superior) para o desenvolvimento de aplicações gráficas com Java.

Este artigo apresenta os primeiros passos no desenvolvimento SWT, para usuários do Eclipse e também para usuários de outros IDEs (Nada obriga  o desenvolvedor de aplicações SWT a utilizar o Eclipse).

 

Todos os exemplos neste artigo foram testados com JVMs livres, entre elas Kaffe, JamVM, SableVM e GCJ – além das JVMs 5.0 e 1.4.2 as Sun.

 

 

Figura 1. Aplicação SWT rodando sobre o Kaffe VM em Linux

 

Arquitetura do SWT

O SWT foi criado para ser ao mesmo tempo poderoso, leve e multiplataforma. Para isso utiliza o máximo possível dos recursos nativos da plataforma, mas sem perder portabilidade. Há versões do SWT diferentes para cada plataforma suportada – estas variam desde o PocketPC com J2MW, até sistemas Linux e Solaris de 64bits, passando por QNX, MAC OS  Windows e outras variantes do Unix. Mas a API exposta pelo SWT para aplicações é independente de plataforma, com cad um implementando esta API usando código Java específico.

Nesse sentido, pode-se considerar que o SWT é uma extensão da JVM. Para entender o motivo, podemos fazer uma analogia com a classe java.io.File. Uma aplicação Java utiliza os mesmos métodos de para verificar a existência de um arquivo (exists()) e para obter seu tamanho (length()), mas a implementação destes métodos varia radicalmente para cada plataforma, pois é necessário utilizar os recursos específicos do sistema operacional para essas operações.

O fato da classe File ser implementada de forma diferente em cada plataforma não impede, por exemplo, que uma aplicação Java desenvolvida e compilada em Windows rode sem modificações no Mac OS. Da mesma forma, o fato de se desenvolver uma aplicação SWT utilizando a versão para Linux, não impede que a aplicação seja executada, sem modificações ou recompilação, em Windows ou outras plataformas. Basta que esteja disponível a versão específica do SWT. O uso de código nativo pelo SWT é um detalhe interno da sua implementação, que não afeta as aplicações escritas para este toolkit.

 

Preparando o ambiente

Na Listagem 1 está uma aplicação SWT simples. Antes de explicar o código, vamos usar essa aplicação para validar a configuração do ambiente de desenvolvimento, e para verificar a instalação do SWT (caso não seja utilizado o Eclipse). Para acompanhar os passos de configuração a seguir, crie um projeto no Eclipse com a nova classe. A Figura 2 mostra a aplicação executando em Linux (Fedora) com Gnome e Windows XP.

Em princípio é possível desenvolver aplicações SWT utilizando apenas o download básico do Eclipse Platform + JDT, ou mesmo sem utilizar o Eclipse em absoluto (veja o quadro "SWT Fora do Eclipse"). Mas o PDE e o plug-in Visual Editor (VE) fornecem capacidades adicionais que poderão interessar ao desenvolvedor. O suporte oferecido pelo PDE e VE, entretanto, ainda é voltado principalmente para o desenvolvimento de plug-ins e não de aplicações SWT independentes. Isso leva alguns a preferir não usar esse suporte. Para os curiosos, Figura 3 mostra a edição de uma tela simples no VE.

 

Embora seja possível usar o VE sem o PDE, esta configuração fornece apenas suporte ao desenvolvimento Swing e não a SWT.

 

Devido a mudanças na forma como o Eclipse 3.1 empacota seus plug-ins em relação a versões anteriores, o leitor pode preferir obter o SWT isoladamente, ou então baixar o PDE. (Lembrando que antes da versão 3.1 o PDE não fornecia nenhuma facilidade específica para o desenvolvimento SWT, exceto pela documentação.)

A Tabela 1 apresenta várias configurações possíveis do Eclipse, o tamanho total

de download e recursos oferecidos por cada uma para o desenvolvimento SWT.

 

Listagem 1. Primeira aplicação SWT:OiSwt.Java___________________

 

import org.eclipse.swt.SWT;

import org.eclipse.SWT.layaout.RowLayout;

import org.eclipse.SWT.widgets.Display;

import org.eclipse.SWT.widgets.Label;

import org.eclipse.SWT.widgets.shell;

 

public class OiSwt {

     public static void main(String[]args){

          Display display = new Display();

          Shell.shell =new Shell (display, SWT.DIALOG_TRIM);

          shell.setText(“Oi do SWT”);

          shell.setLayout (new RowLayout());

           Label msg = newLabel(shell, SWT.NULL);

          msg.setText(“\nNem parece que fui escrito em Java :-)\n”);

          shell.pack();

          shell.open();

           while (!shell, isDisposed()) {

              if(!display.readAndDispatch()){

                display.sleep();

             }

           }

           display.dispose();

     }

}

 

 

Figura 2. Aplicação mínima em Linux e Windows

 

 

Figura 3. Editor visual VE para aplicações SWT

 

 

Componentes

Tamanho total do download (versão 3.1.1)

Facilidades para desenvolvimento SWT

Plataforma + JDT

37Mb

. Nenhum, fora os fornecidos pelo JDT para aplicações não-SWT

Plataforma + JDT+PDE

42 Mb

. Executar aplicação SWT

. Definição da variável de classpath para referenciar bibliotecas inclusas no próprio Eclipse

. Javadocs do SWT (dentro da documentação da Eclipse API)

Eclipse SDK

45Mb

. As mesmas facilidades da Plataforma + JDT + PDE, mas inclui os fontes do Workbech, do SWT e de plug-ins

Plataforma + JDT + PDE + GEF + EMF + VE

53 Mb

. Assistentes para criação de aplicações SWT e edição visual destas aplicações

 

Configuração do Eclipse 2.x13.0.x

Em versões até a 3.0, a SWT pode ser encontrado dentro do plug-in org.eclipse. swt.<plataforma> _ <versão>, por exemplo org.eclipse.swt.win32_3.0.2 no Windows, ou org.eclipse.swt.gtk_3.0.2 no Linux. Dentro deste plug-in, a pasta ws/<plataforma>, por exemplo ws/win32 (ou ws/gtk), fornece um ou mais pacotes jar contendo as classes do SWT. Todos devem ser inseridos como jars externos no classpath do projeto, como ilustra a Figura 4.

Se você tem o PDE instalado, pode usar a variável ECLIPSE_HOME e assim fazer uma referência relativa aos jars do SWT. Se vários desenvolvedores trabalham no mesmo projeto, o uso de uma variável permite que cada um tenha o Eclipse instalado numa pasta diferente, e que mesmo assim os metadados do projeto (arquivos .project e .classpath) sejam compartilhados via CVS. Para usar essa variável, abra as propriedades do projeto e dentro da aba Libraries da categoria, clique em. Então selecione Add Variable a variável e clique no botão Expand para selecionar os pacotes do SWT dentro da sua instalação do Eclipse (veja a Figura 5).

Se neste ponto o leitor tentar executar a aplicação, verá um erro como:

 

Exception in thread “main” java.lang. UnsatisfieldLinkEror:

    no swt-pi-gtk-3064 in java .library.path

 

Isso acontece porque ainda é necessário indicar para a JVM onde localizar as bibliotecas nativas do SWT. Precisamos alterar as configurações de execução: use o comando Run |Run para abrir a configuração criada pelo Eclipse para nosso exemplo OiSwt e selecione a aba Arguments. Depois, na caixa VM Arguments forneça o caminho para as bibliotecas nativas do SWT. Este caminho está no mesmo plug-in onde buscamos os pacotes jar, só que na pasta os/<so>/<arquitetura>, por exemplo os/win32/x86 ou os/linux/x86 (veja um exemplo na " [...] continue lendo...

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados