De que se trata o artigo:

O artigo apresenta o Apache Pivot, uma plataforma open-source para o desenvolvimento de aplicações ricas em Java e XML, abordando alguns de seus recursos em uma aplicação de exemplo, desenvolvida para desktop e com acesso a banco de dados.


Para que serve:

O Apache Pivot pode ser utilizado por desenvolvedores Java na criação de aplicações ricas para a internet, na forma de applets, ou ainda no desenvolvimento de aplicações desktop. A plataforma oferece um rico conjunto de componentes visuais, além de recursos que vão desde a definição de scripts em outras linguagens suportadas pela JVM até o consumo e definição de serviços web.


Em que situação o tema é útil:

Além de ser uma plataforma open-source, o fato de ser totalmente baseado em Java e XML faz do Apache Pivot uma opção interessante para o desenvolvedor Java que deseja construir aplicações ricas, uma vez que não exige esforços adicionais de integração ou o aprendizado de uma nova linguagem.

Resumo DevMan:

Os recursos disponíveis na plataforma Apache Pivot, aliados a um desenvolvimento totalmente baseado em Java e XML, faz com que os desenvolvedores Java tenham um menor esforço na criação de aplicações ricas para internet ou desktop. As interfaces gráficas com o usuário podem ser construídas em Java, mas são mais frequentemente declaradas através da linguagem de marcação BXML. Os recursos de data binding oferecidos pela plataforma tornam simples a integração entre as classes Java e os arquivos de marcação da interface gráfica, permitindo o controle total dos componentes. A BXML permite ainda a definição de scripts nas várias linguagens suportadas pela JVM a partir da versão 1.6, tanto para a declaração de funções utilitárias quanto para a definição de listeners de eventos.

A internacionalização das aplicações pode ser feita através da API padrão de Java para localização, ou ainda através de resource bundles baseados em arquivos no formato JSON. Além disso, a plataforma oferece recursos para consumo e definição de serviços web, e a possibilidade de se enriquecer a aplicação com efeitos visuais.

O desenvolvedor que queira construir aplicações ricas para a internet (RIA – Rich Internet Application) tem hoje à sua disposição diversas tecnologias, dentro e fora da plataforma Java. As tecnologias que até então tem tido maior destaque no desenvolvimento deste tipo de aplicação são o Microsoft Silverlight e o Adobe Flex, que juntamente com o JavaFX da Sun/Oracle – cuja expressividade de mercado não supera os dois primeiros – são opções proprietárias.

Algumas bibliotecas baseadas em JavaScript também merecem destaque dentre as tecnologias disponíveis, como é o caso do GWT (Google Web Toolkit), Cappuccino framework e ExtJS. Todos eles são open-source, mas apenas os dois primeiros podem ser utilizados livremente em aplicações proprietárias, sob diferentes licenças (Apache License 2.0 e LGPL 2.1, respectivamente).

Há ainda a possibilidade de se criar aplicações ricas totalmente baseadas em padrões abertos, como o HTML5, CSS e JavaScript, uma tendência que tem se mostrado atrativa para muitos desenvolvedores.

Diante das opções disponíveis (obviamente não limitadas às expostas acima), um desenvolvedor que queira construir sua aplicação RIA baseada em Java terá um esforço adicional de integração caso opte por certas tecnologias – como é o caso do Adobe Flex – ou ainda terá de aprender uma nova linguagem – como é o caso do JavaFX.

O projeto Pivot nasceu para ser uma alternativa open-source viável àqueles que queiram construir aplicações RIA, mas ainda assim desejam permanecer na plataforma Java. Ele teve início na VMware em 2007 e foi lançado como um projeto open-source em Junho de 2008. Depois de passar praticamente um ano como um projeto da Apache Incubator, o Pivot foi promovido, em dezembro de 2009, a um projeto oficial da Apache Software Foundation e chegou, em janeiro de 2011 à sua versão 2.0.

Neste artigo procuraremos apresentar as principais características desta plataforma, e alguns de seus recursos serão demonstrados através da construção de uma aplicação desktop de exemplo, com acesso a banco de dados.

Conhecendo os recursos da plataforma

O Apache Pivot é uma moderna plataforma de desenvolvimento voltada para a construção de aplicações ricas baseadas na internet. Estas aplicações podem ser executadas como applets, em navegadores, ou como aplicações desktop, instaláveis também através do Java Web Start. Por esta razão os desenvolvedores do Apache Pivot decidiram, a partir da versão 2.0, adotar um novo termo para definir as aplicações construídas com a plataforma: ao invés de Rich Internet Application (RIA), Installable Internet Application (IIA) foi o termo escolhido. Segundo a definição proposta, aplicações IIA são aquelas que tiram proveito dos recursos oferecidos pela internet e oferecem ao usuário a experiência de uma aplicação desktop, mas não exigem necessariamente um navegador para serem executadas.

Para saber mais sobre o Java Web Start, leia o artigo de mesmo nome publicado na Java Magazine 82, ou acesse o site http://www.java.com/pt_BR/download/faq/java_webstart.xml.

A plataforma oferece um conjunto abrangente de classes fundamentais, agrupadas em quatro categorias principais: Core, WTK, Web e Charts. Cada categoria é agrupada em uma biblioteca ou conjunto de bibliotecas:

Core - pivot-core-[versão].jar;

WTK - pivot-wtk-[versão].jar, pivot-wtk-terra-[versão].jar;

Web - pivot-web-[versão].jar, pivot-web-server-[versão].jar;

Charts - pivot-charts-[versão].jar.

O projeto das classes da biblioteca WTK é baseado no modelo arquitetural MVC (model-view-controller). Nele, o modelo (model) é representado por interfaces de coleções genéricas, definidas na biblioteca CORE. As classes de componentes representam o controle (control) e os skins dos componentes representam a visão (view).

Componentes visuais

Embora tenha sido projetado para ser familiar a desenvolvedores web, com experiência na construção de aplicações com AJAX, HTML, CSS e JavaScript, o Apache Pivot também será familiar a desenvolvedores Swing.

Um rico conjunto de componentes gráficos e gerenciadores de layout está disponível para a construção de interfaces com o usuário.

No site do projeto é possível encontrar a aplicação de exemplo “Kitchen Sink”, contendo os componentes mais utilizados disponíveis na plataforma. As Figuras 1 e 2 mostram exemplos encontrados nesta aplicação.

java

Figura 1. Exemplos de botões.

java

Figura 2. Exemplos de componentes de navegação.

Para ver outras aplicações de exemplo, acesse o link http://pivot.apache.org/demos/.

Os skins definem a aparência dos componentes visuais, uma vez que estes não possuem representação visual própria, e definem também os comportamentos em resposta à ação dos usuários através do teclado e do mouse.

Através das classes dos componentes é possível ter acesso a propriedades de estilo dos skins, que permitem customizar a aparência destes componentes de uma maneira parecida com Cascade Style Sheets. Por padrão, todos os componentes utilizam os skins definidos pelo look-and-feel Terra.

A partir da versão 2.0 o Pivot passou a oferecer também um conjunto maior de esquemas de cores, permitindo ao desenvolvedor mudar as cores de toda uma aplicação facilmente.

O suporte a gráficos no Apache Pivot é “plugável”, e a implementação atualmente disponível é baseada no JFreeChart. Já no caso de relatórios, não há nenhuma classe da plataforma dedicada a esta finalidade, mas é possível utilizar soluções comumente usadas em aplicações desktop ou web, como o JasperReports.

Em sua versão 2.0 o Apache Pivot passou a suportar imagens no formato SVG, através do projeto SVG Salamander. Para que imagens neste formato possam ser utilizadas em uma aplicação, o arquivo svgSalamander.jar é requerido, e pode ser encontrado no site https://svgsalamander.dev.java.net/.

Internacionalização

A internacionalização de aplicações desenvolvidas com o Apache Pivot pode ser feita através da API padrão de localização da plataforma Java, utilizando arquivos de propriedades (resource bundles). Além do suporte à internacionalização padrão da plataforma Java, o Apache Pivot possui o suporte a resource bundles baseados em arquivos no padrão JSON (JavaScript Object Notation). A Listagem 1 mostra um exemplo de resource bundle baseado no padrão JSON, enquanto que a Listagem 2 mostra o carregamento deste resource bundle por um método da classe principal da aplicação de exemplo.

Assim como acontece com os arquivos de propriedades, basta adicionar um sufixo ao nome do arquivo para indicar o idioma armazenado, como por exemplo: Main_pt_BR.json, Main_en_US.json, etc.

Para saber mais sobre o padrão JSON, acesse: http://www.json.org/.

Listagem 1. Resource bundle no padrão JSON utilizado na aplicação de exemplo.


  {  titulo: "Controle Financeiro",
      men_opcoes: "Op\u00E7\u00F5es",
      men_opcoes_lancamentos: "Lan\u00E7amentos",
      men_opcoes_categorias: "Categorias de Lan\u00E7amento",
      men_opcoes_sair: "Sair"
  }

Listagem 2. Método da classe Main que carrega o resource bundle para os componentes da tela principal.


  @Override
    public void startup(Display display, Map<String, String> properties)
        throws Exception {
      this.display = display;
   
      BXMLSerializer bxmlSerializer = new BXMLSerializer();
      bxmlSerializer.getNamespace().put("application", this);
   
      String language = properties.get(LANGUAGE_KEY);
      locale = (language == null) ? Locale.getDefault() : new Locale(
          language);
      Resources resources = new Resources(getClass().getName(), locale);
   
      try {
        window = (Window) bxmlSerializer.readObject(
            Main.class.getResource("main.bxml"), resources);
        window.open(display);
      }
      catch (SerializationException exception) {
        /* tratar */    
      }
      catch (IOException exception) {
        /* tratar */    
      }
    }

Interfaces gráficas baseadas em XML e classes serializadoras

Embora possam ser definidas inteiramente em Java, as interfaces gráficas em aplicações Pivot são geralmente definidas através de uma linguagem de marcação baseada em XML, a BXML. Veja o quadro “A Linguagem de Marcação BXML” para mais detalhes. A Listagem 3 mostra o arquivo BXML de marcação da tela principal da aplicação de exemplo, e a Figura 3 mostra a tela resultante.

...

Quer ler esse conteúdo completo? Tenha acesso completo