@0034 oliveira introducao ao netbeans.pdf

22
U MA INTRODUÇÃO A PLATAFORMA NETBEANS O presente documento tem como principal objetivo fornecer uma breve descrição da plataforma netbeans, mostrando como é possível, a partir de seus recursos, o desenvolvimento de aplicações rich client. A partir daí, contextualizamos seus benefícios para uma perspectiva de elaborarmos uma ferramenta gráfica de modelagem Daniel Interliche de Oliveira Grupo de Estudos em interação do LTS Escola Politécnica da Universidade de São Paulo

Upload: neide-c-r-uamir

Post on 22-Sep-2015

220 views

Category:

Documents


1 download

TRANSCRIPT

  • UMA INTRODUO A PLATAFORMA NETBEANS

    O presente documento tem como principal objetivo fornecer uma breve descrio da plataforma netbeans, mostrando como possvel, a partir de seus recursos, o desenvolvimento de aplicaes rich client. A partir da, contextualizamos seus benefcios para uma perspectiva de elaborarmos uma ferramenta grfica de modelagem

    Daniel Interliche de Oliveira

    Grupo de Estudos em interao do LTS Escola Politcnica da Universidade de So Paulo

  • Uma Introduo ao Netbeans Platform

    Breves consideraes

    Este documento visa introduzirmos os conceitos envolvidos no desenvolvimentos de aplicaes de alto nvel, pela utilizao da plataforma Netbeans. Trata-se de uma pea chave para o desenvolvimento do framework x-gov, j que traz diversas funcionalidades que podem ser exploradas de modo a proporcionarmos alta usabilidade no sistema. Abordamos aqui uma viso geral sobre modelagem grfica, com uma breve descrio de alguns exemplos de aplicao do conceito. Em seguida direcionamos nossa abordagem explorando como utilizar o Netbeans Platform juntamente com a a biblioteca visual library para a criao das FGM's. Finalmente, fornecemos um panorama, uma breve descrio de como utilizaremos estes conceitos no projeto X-gov.

    1.Introduo ao Conceito de Modelagem Grfica

    O objetivo de se trabalhar com ferramentas grficas de modelagem reduzir o trabalho do desenvolvedor ao criar aplicaes. Todas as bibliotecas necessrias para a execuo de determinadas tarefas so manipuladas em uma camada intermediria, por meio de uma interface grfica, que detm parte do esforo ou ainda parte do tempo que seria gasto pelo programador para o desenvolvimento de determinadas aplicaes. A camada intermediria provida de componentes grficos, que auxiliam no desenvolvimento de rotinas sem a necessidade da utilizao de tcnicas de programao, ou ainda o domnio de uma determinada linguagem de programao. O conceito de modelagem grfica utilizado pelos prprios IDE's, que utilizam recursos grficos para simplificar a utilizao de determinadas bibliotecas. A ttulo de exemplo podemos citar os recursos do Netbeans IDE para a implementao de componentes palletes, utilizando a biblioteca swing do Java. Um componente grfico criado, de forma que a programao necessria para desenvolver uma aplicao deste nvel, como um formulrio, mnima. Ou seja, os prprios IDE's exploram o conceito de modelagem, sempre focando a simplificao de tarefas. importante ressaltar quo poderoso pode ser a utilizao deste conceito, j que podemos aliar tcnicas de programao com recursos grficos, e a partir da criarmos uma plataforma de desenvolvimento de alto nvel. Alm disto, podemos reaproveitar os recursos do prprio IDE para a criao de plataformas de desenvolvimento de alto nvel. Este ltimo conceito, definido aqui como programao modular, ser explorado com mais detalhes mais adiante. A ilustrao abaixo fornece, a grosso modo, a arquitetura das plataformas de desenvolvimento que iremos lidar.

  • A plataforma de desenvolvimento, de acordo com a definio da figura, pode constituir um framework de aplicaes.

    2.Exemplos de Ferramentas Grficas de Modelagem

    Vamos agora partir para uma abordagem mais prtica, procurando ilustrar, por meio de exemplos, os usos finais do conceito de ferramentas grficas de modelagem. A idia que se mostre como podemos abstrair determinados task models atravs de interfaces grficas e ferramentas interativas, com recursos visuais, constituindo assim as FGM's. Note como estas podem ser uteis para implementar usabilidade nos sistemas, proporcionando facilidade de uso.

    The ConcourTaskTrees Enviroment

    Realizado pelo ISTI/CNR (Institute of Information Science and Technologies/National Research Council). A ferramenta, implementada em JAVA 1.3 beta, traz funcionalidades grficas para o desenvolvimento e analise de task models. O aplicativo a ser desenvolvido abstrado numa estrutura denominada ConcourTaskTree(CTT) que visa fornecer um fluxograma com o intuito de organizar e analisar os modelos a serem implementados. A figura abaixo ilustra como um sistema pode ser abstrado utilizando a CTT:

    As principais caractersticas da CTT so:

    Focus on Activities: Possibilita o detalhamento de implementaes de baixo nvel, ao

  • concentrar nas requisies do sistema referentes ao usurio Hierarchical Structure: Fornece suporte na decomposio de tarefas em vrios nveis

    semnticos estruturando os problemas e classificando-os de acordo com sua relevncia Graphical Syntax: Caracterstica que mais se enquadra no contexto deste artigo. Uma

    sintaxe grfica reflete a estrutura lgica do sistema em desenvolvimento, utilizando para este fim recursos visuais

    Concurrent Notation: Define relaes temporais entre as tarefas Task Allocation: Utilizao de cones para indicao de tarefas e descrio da performance

    de processos ou entidades

    A ferramenta, assim como mais informaes sobre o projeto pode ser obtida no site oficial: http://giove.isti.cnr.it/ctte.html

    Dialog-Graph-Editor

    Ferramenta implementada como um Plugin do Eclipse, utilizando o Eclipse Modeling Framework. Fornece suporte para o desenvolvimento de interfaces grficas (UI's). Task Models so descritos por meio da linguagem CTT. Utilizando as especificaes dos modelos como ponto de partida, a ferramenta auxilia na distino entre ns que representam dialog views (windows ou panels) e ns que representam a transio entre os respectivos dialog views. Alm disto, pode-se encontrar auxilio na criao de widgets (buttons, textfields, choiceboxes) relacionando-os aos task models. Uma vez descrita todas as especificaes e transies entre os componentes grficos, pode-se gerar, automaticamente, a interface grfica propriamente dita, utilizando recursos implcitos na ferramenta.

  • Este projeto possue uma caracterstica interessante, pois traz consigo um conceito que ser utilizado no projeto X-gov, o conceito de Plataforma, que ser abordado mais adiante. J adiantamos que constitui uma tcnica moderna de programao, j que a aplicao utiliza os recursos do Eclipse para criar um ambiente de desenvolvimento independente. Poderamos ter desenvolvido uma ferramenta anloga utilizando a plataforma Netbeans.

    Cogenive

    Facilita o desenvolvimento de ambientes virtuais interativos, constituindo um framework Ambientes Virtuais. Utiliza a linguagem CTT como forma de conectar os modelos ou entidades grficas, com suas respectivas funcionalidades e correlaes.

  • 3.Uma Introduo ao Conceito de Programao Modular

    No contexto em que estamos trabalhando, importante explorar o conceito de programao em mdulos, quais os seus benefcios e como utiliz-lo. Trata-se de uma tcnica de programao moderna, que nos permite reaproveitar cdigos j desenvolvidos por outras pessoas e organiz-los de uma maneira estruturada. Diante disto, a pergunta mais bvia que nos vem a a mente : o que um mdulo? Um mdulo consiste numa estrutura que possui diversas funcionalidades, disponibilizadas por um conjunto de bibliotecas. A priori no entraremos em detalhes no que diz respeito a arquitetura de um mdulo, por enquanto convm citarmos que sua estrutura detm posse de arquivos de configurao, meta-data, formulao de estrutura, organizador de dependncias, bibliotecas, servios, cdigos entre outros componentes. Um aplicativo que utiliza o conceito de programao orientada a mdulos constitudo por diversos mdulos, organizados por uma estrutura central que gerencia a interao entre suas funcionalidades, conforme ilustrado abaixo.

    Os prprios IDE's fazem uso deste conceito. Por exemplo, o Netbeans IDE pode ser estendido com a instalao de mdulos externos, os plugins. Desta forma adicionamos mais funcionalidades a nosso ambiente de desenvolvimento.

    4.1.:Introduzindo a Plataforma Netbeans

    No ultimo tpico introduzimos o conceito de programao modular, como uma forma de organizar o cdigo de nossa aplicao, de modo que, com esta prtica, possamos estruturar as diversas funcionalidades do sistema em mdulos. A plataforma Netbeans consiste num aplicativo da rea de trabalho genrica que fornece os servios comuns a todas as grande aplicaes desta natureza como gerenciamento de janelas, menus, configuraes e armazenamento, um gerenciador de atualizaes e acesso a arquivo. Comear utilizando estes componentes permite que nos concentremos totalmente na lgica comercial do sistema comercial em desenvolvimento. Tecnicamente, a

  • plataforma Netbeans um amplo framework baseado em Swing que proporciona o desenvolvimento de aplicaes rich client. O prprio Netbeans IDE foi baseado na Plataforma Netbeans. J que estamos contextualizando o conceito de aplicao modular, nos convm definirmos o que seria um mdulo Netbeans: trata-se de um conjunto de classes java que fornecem um recurso especfico a um aplicativo. Pensando desta forma, podemos adicionar vrios mdulos de tal forma que possamos agregar vrios recursos a nossa aplicao central. possvel por meio desta tcnica, desenvolvermos um framework de aplicaes em tempo hbil, sem perder tempo com suas funcionalidades bsicas, e nos concentrando nas especificaes principais do framework.

    4.2.:Estrutura de uma aplicao Desenvolvida a Partir da Plataforma Netbeans

    Todo aplicativo realizado a partir da plataforma Netebeans detm posse de um conjunto de mdulos essenciais para sua execuo, sendo estes: Boodstrap, Module System, Startup, Utilities, Fyle System. Este conjunto de mdulos denominado Runtime Container.

    O mdulo startup onde est contido o mtodo main, sendo portanto, necessrio para que a aplicao seja inicializada. Para ilustramos as funcionalidades que a interao destes mdulos nos proporciona, vamos criar uma aplicao central a partir da Plataforma Netbeans. No Netbeans IDE crie um novo projeto clicando em New Files>>Netbeans Module>>Netbeans Platform Application. Em seguida nomeie o projeto como DemoApplication, clique em finish para concluir. Em seguida v ao n do projeto, clique com o boto direito do mouse e selecione Properties. Ao abrir o menu, clique em libraries.

  • A janela acima mostra todos os Netbeans Modules disponveis, organizados em clusters. Um cluster um conjunto de mdulos que possuem alguma relao entre si. O nico que nos interessa neste momento o platform9. Extenda o n do platform9. Em seguida ative somente os mdulos contidos no runtime container, relembrando: Boodstrap, Startup, Module System, Utilities, File System. Clique em OK para finalizar a seleo dos mdulos. Execute a aplicao clicando em run. Note na Output Window que nossa aplicao est rodando, apesar de no possuir muitas funcionalidades.

    Vamos agora criar nosso prprio mdulo, implementado uma funcionalidade bsica: o famoso Hello Wolrd. Extenda o n do projeto. Clique com o boto direito em Mdules>>Add New. Nomeie o Mdulo como MyAPI, em seguida clique em Next. Em Code Name Base digite org.myorg.myapi. Clique em finish para finalizar o processo de criao do mdulo. Feito isso, j teremos nosso mdulo adicionado a nossa aplicao.

  • Podemos observar na janela denominada 'Projects' como organizada o conjunto de arquivos da aplicao. Na pasta Important Files>>Module Manifest temos um arquivo que fornece as especificaes do mdulo, como o pacote em que este est alocado, sua verso, alm de declaraes de dependncia com outros mdulos (ainda no adicionamos nenhuma).

    No mesmo diretrio, Important Files, temos a pasta Project Meta-Data. Por meio deste arquivo .xml podemos declarar as relaes de dependncia com outros mdulos. Este processo tambm pode ser automatizado, conforme veremos no prximo passo. V ao n do projeto e clique com o boto direito>>Add New>>Module Installer. Clique em finish. Podemos observar que uma classe java, de nome installer.java, foi acrescentada ao pacote org.myorg.myapi. Esta classe possue um mtodo, restored(), que ser acessado assim que a aplicao for executada. Novamente v nas propriedades do projeto>>Libraries e note que dois mdulos foram adicionados como dependencias do nosso mdulo. Abra o arquivo manifest.mf e veja que consta o acrcimo da classe installer.

    Agora vamos verificar que a nova dependncia foi adicionada ao arquivo Project.xml, automaticamente. Abra-o e verifique a nova linha de cdigo:

  • Realmente, ao checarmos as propriedades do mdulo podemos constar estas duas novas dependncias (vide prxima pgina).

    Feito isso vamos adicionar nossa funcionalidade bsica. Substitua a linha de comentrio do mtodo restored, da classe installer, pela linha de comando:

    System.out.Println(Hello World);

  • Execute a aplicao. Podemos verificar na Output Window o resultado.

    Este exemplo, apesar de simples, ilustra alguns conceitos bsicos no tocante a estrutura de um mdulo, e como este se comporta em relao a Plataforma Netbeans. claro que, aplicaes de alto nvel demandam mais detalhamento tcnico em relao as API's disponveis, que vo muito alm daquelas que formam o runtime conteiner. A figura abaixo ilustra a relao entre uma aplicao qualquer relacionada ao runtime conteiner, formando assim o escopo de nosso ambiente criado a partir da plataforma Netbeans.

    4.3.:Module System API

    Frisamos, logo no inicio deste captulo, que o mdulo que inicializa nossa aplicao o Startup, j que este possui o mtodo main. Um outro mdulo importante, digno de nossa ateno, neste momento, consiste no Module System API, responsvel pela relao e interao entre os mdulos, com suas respectivas declaraes de dependncias, uns para com os outros.

  • Na figura acima podemos notar que A declara dependncia em B. Como conseqncia o mdulo A pode ter acesso a classes do pacote com.myapp.api, porm no pode ter acesso a classes do pacote com.myapp.impl. Essa interao organizada pelo mdulo Module System API, conforme j declarado. A partir da detemos posse de um recurso poderosssimo, que nos permite reaproveitarmos recursos provenientes de diversos mdulos j existentes e interagirmos com nossa prpria API, implementando funcionalidades em nossa aplicao.

    4.3.:Demonstrando a Dinamicidade de Uma Aplicao Realizada a partir da Plataforma Netbeans

    O acesso a pacotes ou bibliotecas somente uma das formas de interao entre mdulos. H um recurso, tambm bastante poderoso, denominado Loockup API, que permite que possamos interagir uma instncia criada em um mdulo. Ou seja, outros mdulos podem ter acesso ao referido objeto, em seu estado atual. Desta forma, diferentes interfaces podem ter acesso aquela instncia. Para ilustrarmos o conceito vamos mostrar um exemplo de aplicao. No Netbeans IDE, selecione New Project>>Netbeans Modules>>Module Suite. Nomeie o projeto como SelectionSuite. Temos agora nosso suite de aplicaes, que consiste em uma aplicao da Plataforma Netbeans com todos os clusters disponveis internamente j adicionados. Sendo o Platform9 somente um deles. Portanto, temos, alm do runtime container, outros mdulos com diversas funcionalidades agregados a nossa suite. Ao executarmos nossa aplicao, veremos que o resultado um ambiente, com uma estrutura similar ao Netbeans IDE. Todo o esquema de organizao de arquivos, menus, janelas, j foi implementado, poupando-nos algum tempo no desenvolvimento destas tarefas. Estenda o n do projeto, clique com o boto direito em mdules>>Add New. Nomeie o mdulo como MyAPI. Clique em Next. Em Code Name Base digite org.myorg.myapi Faa o mesmo procedimento para adicionar mais dois mdulos, de nomes MyEditor e MyView, com seus pacotes padres nomeados myeditor e myview, respectivamente. A estrutura de nossa aplicao pode ser visualizada na figura abaixo:

  • Vamos entender a dinmica de nosso exemplo. Temos o mdulo MyAPI, em que iremos adicionar o cdigo da classe que representar nosso objeto. O mdulo MyEditor instanciar a classe criada em MyAPI, e a utilizar por meio de um servio que iremos fornecer, que poder ser acessado por uma interface grfica. O mdulo MyView nada mais do que uma interface grfica, no caso uma janela, que acessa o estado do objeto, simultaneamente com nosso provedor de servios, e o transmite visualmente, por um dysplay. Ou seja, no final teremos duas interfaces grficas distintas utilizando a mesma instancia, como se tivessem conversando entre si. Vamos tentar entender na prtica como isso funciona. No pacote org.myorg.myapi encontrado no mdulo org.myorg.myapi, adicione uma classe java, com o nome APIObject. Este ser nosso objeto! Substitua o cdigo gerado automaticamente pela linha de comando abaixo:

  • Rearranje o cdigo de acordo com as sugestes do Netbeans. Na seqncia, v nas propriedades do projeto>>API Versioning. No campo Public Packages selecione org.myorg.myapi. A partir de agora, esse pacote tornou-se pblico, de modo que os outros mdulos podem acess-lo.

    Precisamos de uma declarao de dependncia nos mdulos MyEditor e MyView, para que possamos acessar os recursos do mdulo MyAPI. Nas propriedade dos respectivos mdulos v em libraries>>Add Dependency e adicione MyAPI. Vamos agora criar nosso provedor de servios, que ser a interface que mostra o estado atual de nosso objeto. Para isso adicione mais duas dependncias ao mdulo MyEditor, a saber: Utilities API e Windows System API.

    Adicione dois JtextField ao nosso Jpanel, de nomes JtextField1 e JtextField2, respectivamente.

    O prximo passo agora criarmos um TopComponent, onde adicionaremos os componentes de nossa aplicao. Mude a assinatura da classe para:

    Aceite as sugestes do Netbeans. Acrescente a linha de cdigo abaixo no construtor de MyEditor:

  • A linha de cdigo associeteLookup torna a instncia 'obj' acessvel pelo mtodo Myeditor.getLookup().

    Para que possamos visualizar nosso componente na rea de trabalho da aplicao vamos adicionar uma ao no menu principal. No n do pacote org.myorg.myeditor, clique com o boto direito>>Add New>>Action. No menu, clique em next. Nomeie a classe como OpenEditorAction e a ao como Open Editor. Feito isto, adicione a linha de comando abaixo ao mtodo actionPerformed():

    Isto significa que cada vez que executamos a ao Open Editor instanciamos a classe MyEditor, modificando seu estado atual. Ao executarmos a aplicao podemos encontrar a ao adicionada disponvel no menu principal:

  • A figura abaixo mostra como modificamos o estado atual do objeto:

  • Conforme observado na figura acima, acionamos Open Editor 4 vezes, de modo que o atributo 'index', da classe APIObject, est num estado que fixa seu valor em 4. O prximo passo ser criarmos uma camada que recebe o objeto que est sendo consumido em MyEditor e fornecermos seu estado atual por meio de uma interface grfica, paralela a esta que criamos.

    Selecione com o boto direito o n do pacote org.myorg.myview>>New>>Window Component, que ser nossa interface grfica. Em Windows Position selecione a opo Navigator. Nomeie a classe como MyViewer. Agora temos o esqueleto de um TopComponent, um componente nico denominado MyViwerTopComponent. Arraste dois Jlabels, Jlabel1 e Jlabel2, respectivamente, para o corpo do componente.

    Clique em Source para ter acesso ao cdigo associado ao componente. Modifique a assinatura da classe:

    Implemente todos os mtodos abstratos. Modifique o cdigo fonte de modo que elespossua os seguintes mtodos:

  • O mtodo resultChanged uma implementao de nosso LookupListener. Toda a vez que o objeto APIObject sofre alguma alterao, os dois Jlabel's tambm sofrero alterao, atualizando o estado de nossa instncia. A partir de agora, cada vez que executamos a ao Open Editor, as duas janelas fornecero o estado do objeto, como se estivessem conversando, de forma que atuam paralelamente, conforme ilustrado na figura abaixo:

  • Por meio deste exemplo, pudemos observar a estrutura bsica de uma aplicao realizada a partir da Plataforma Netbeans. Alm disso, esperamos ter explorado alguns aspectos relacionados ao conceito de programao modular.

    4.4:Contextualizando as FGM's com a Plataforma Netbeans

    At agora denotamos quo poderoso pode ser fazermos usos da Plataforma Netbeans, visto que esta proporciona o reaproveitamento de recursos, permitindo-nos concentrarmos esforos no que realmente interessa. Pois bem, aplicando este conceito, vamos focar um pouco no que vamos desenvolver, a saber, as FGM's. Para isso utilizaremos uma biblioteca grfica denominada Visual Library, um poderoso recurso para aplicaes visuais. Antes de prosseguirmos vamos citar rapidamente dois exemplos, de pequenos projetos desenvolvidos a partir da Plataforma Netbeans, utilizando a Visual Library, ilustrando assim a caracterstica principal deste tipo de aplicao, que consiste na interao Interface Grfica-API.

    Thinking-Rock

  • Ferramenta que visa a construo de fluxogramas, com o intuito de organizar idias.

    Poseidon for UML Ferramenta desenvolvida para fornecer suporte ao desenvolvimento de UML cases.

    Ambos os exemplos consistem em ferramentas grficas de modelagens. Conforme pudemos notar, possvel modelarmos determinadas situaes graficamente, de modo a proporcionarmos mais

  • usabilidade em nossa ferramenta.