Desenvolvimento de aplicações com JBuilder Sérgio Furgeri Analista de Sistemas pela Unimep – Piracicaba, Mestre em Gerenciamento de Sistemas de Informação pela PUC-Campinas, autor de diversos livros na área de computação e Consultor de Sistemas da empresa TiSoft. Resumo A área computacional tem sofrido profundas mudanças nos últimos anos, principalmente no que diz respeito à maneira como os programas são criados a partir das linguagens de programação. Dentro deste contexto, a linguagem de programação Java tem contribuído para inserir novos conceitos e metodologias de desenvolvimento de software. Devido ao grande sucesso da linguagem Java, diversos fabricantes de software tem criado ferramentas RAD (Rapid Application Development) para agilizar o processo de desenvolvimento. Este artigo apresenta uma ferramenta o JBuilder, uma ferramenta RAD para criação de aplicações em Java. Será fornecida uma visão geral sobre a ferramenta e também os passos necessários para a criação de uma pequena interface do usuário. Palavras-chave Java, JBuilder, IDE, RAD, aplicação. 1 1. Introdução Nos últimos anos Java tem se destacado no mercado de software e se tornado uma das linguagens de programação mais usadas. A tendência da utilização da linguagem Java se evidencia mais e mais a cada dia. Um recente estudo feito no final de 2003 pela BZ Research indicou um aumento na utilização do Java, onde 72% dos 950 pesquisadores entrevistados afirmaram utilizar o Java como linguagem de programação, enquanto que em 2002 esse número era de apenas 50%. Comparando-se Java com sua principal concorrente em termos de linguagem de programação, outra pesquisa realizada em Julho do mesmo ano dizia que somente 17% dos pesquisadores usavam sistemas.NET (Software Development Times, 2003). Java tem literalmente invadido diversos segmentos sendo usada, por exemplo, no desenvolvimento de aplicativos para Desktop (Deitel, 2000), aplicações Web (Morgan, 2000) e, mais recentemente, sua utilização tem se voltado para o mercado de pequenos dispositivos móveis, como celulares e PDA's - Personal Digital Assistance (Muchow, 2002) e JavaTv (Sun, 2004). Devido ao grande sucesso de Java, diversos fabricantes de software têm investido nesta linguagem, adaptando seus sistemas para que, de alguma forma, possam interagir com "coisas" criadas a partir de Java. Atentas a essa clara demonstração de que a linguagem Java ainda tem um grande potencial a ser explorado pelo mercado, foram criadas ferramentas para aumentar a eficiência no desenvolvimento em Java. Inicialmente, essas ferramentas funcionavam como meros editores de texto usados para criar um ambiente mais amigável. Com o passar dos anos, as ferramentas foram ganhando recursos avançados que permitiram não apenas agilizar o processo de desenvolvimento, bem como, gerar código automaticamente, recurso disponível em ferramentas Case, como o Rational Rose XDE Developer da IBM (IBM, 2004). Ao se referir a ferramentas que facilitam o processo de desenvolvimento, dois termos merecem destaque: IDE - Integrated Development Environment ou Ambiente de Desenvolvimento Integrado, termo surgido a partir Turbo Pascal da Borland, e que integrava editor de textos, compilador, linkeditor e depurador em um único aplicativo, criando um ambiente adequado para facilitar o desenvolvimento de 2 software e RAD - Rapid Application Development, ou desenvolvimento Rápido de Aplicações, uma evolução natural do IDE que contém um construtor de formulários e os componentes ou classes direcionados ao acesso a bancos de dados (Lozano, 2004). Toda ferramenta RAD engloba os conceitos da IDE, entretanto, o contrário não é verdade, isto é, uma ferramenta pode ser IDE, mas não RAD. Por exemplo, as ferramentas Eclipse (www.eclipse.org) e JCreator (www.jcreator.com) são ferramentas IDE, entretanto, não possuem interface gráfica para possibilitar a inserção de botões, caixas de texto e outros objetos (Fundão, 2003). Ferramentas RAD estão presentes na maioria das linguagens de programação como, por exemplo, Delphi, Visual Basic e, mais recentemente, Java. O JBuilder 9, apresentado neste artigo, é uma ferramenta IDE RAD. De forma popular, essas ferramentas são conhecidas como “ferramentas visuais de desenvolvimento”, referindo-se ao ambiente com janelas, típico da plataforma Windows. Existem diversos ambientes visuais para desenvolvimento em Java, dentre os quais destaca-se o JBuilder da Borland, muito semelhante ao Delphi. O JBuilder possui grande portabilidade entre plataformas e todos os recursos que a colocam como uma autêntica ferramenta RAD. Outras ferramentas bastante usadas no mercado são WebSphere Studio da IBM e Oracle JDeveloper. Observe no gráfico seguinte o Ranking das ferramentas mais usadas no desenvolvimento em Java no mundo. Figura 1. Ranking das Ferramentas Java mais utilizadas. 3 Ranking Ferramentas RAD Java Oracle JDeveloper ; 21% Outros; 7% Borland JBuilder ; 37% IBM WebSphere ; 35% Fonte: Software Development Times, December.15, 2003. A Borland vem apostando alto na ferramenta JBuilder no Brasil, sendo ela um dos principais focos de atuação da empresa no mercado para a disseminação da linguagem Java. O próprio JBuilder chegou a crescer quase 200% em 2003, representando algo em torno de 20% a 30% do faturamento da empresa, enquanto que Delphi, a ferramenta mais tradicional da Borland, manteve-se respondendo por 40% (Software Development Times, 2003). De acordo com os pontos expostos, percebe-se a importância de conhecer a linguagem Java, bem como uma ferramenta para agilizar o processo de desenvolvimento. Se o leitor estiver planejando melhorar sua carreira nos próximos anos é melhor começar a aprender Java. O principal objetivo deste artigo é fornecer ao leitor uma breve introdução a respeito da criação de aplicações para Desktop através do JBuilder da Borland. Para que o leitor tire maior proveito do conteúdo do artigo é imprescindível que ele tenha noções básicas sobre Java. Na época em que este artigo foi escrito o JBuilder disponível estava em sua versão 9. O artigo traz uma visão geral da ferramenta e a criação de uma Interface. 2. Visão geral do JBuilder JBuilder é uma ferramenta RAD IDE da Borland Software Corporation para desenvolvimento de programas e aplicações Java, applets, servlets, entre outros. 4 Possui uma interface gráfica com uma série de componentes pré-definidos como botões, caixas de texto, conexões a Banco de Dados etc. Isso permite o rápido e fácil desenvolvimento de aplicações, uma vez que ao invés de se digitar os códigos referentes à criação de um componente, seu código é inserido automaticamente à aplicação, bastando ao desenvolvedor inserir o componente na interface. Além da sensível economia de tempo, no geral, o código torna-se menos propenso a erros. A versão 9 do JBuilder é disponibilizada em três edições: Personal, Developer e Enterprise. A edição Personal é voltada para o desenvolvimento de aplicações em geral. Em contrapartida Developer e Enterprise são voltadas para o desenvolvimento de aplicações mais sofisticadas, envolvendo J2EE (Java2 Enterprise Edition), EJB (Enterprise JavaBeans) e aplicações para dispositivos móveis. O JBuilder é compatível com os principais sistemas operacionais utilizados hoje, como Microsoft Windows, Linux, Unix e Macintosh. Assim como a ferramenta Borland Delphi, sua “prima“ mais próxima, o JBuilder trabalha com o conceito de projetos, isto é, gerencia diversos tipos de arquivos que fazem parte de uma mesma aplicação. Para cada novo projeto, o JBuilder cria uma nova pasta com arquivos necessários. A criação de projetos é abordada em detalhes no capítulo 3 deste artigo. 2.1. Ambiente de Desenvolvimento Esta seção apresenta uma visão geral dos recursos disponíveis no JBuilder 9. A principal janela do sistema chama-se AppBrowser, ela aparece no momento em que o software é executado. Observe todos os recursos oferecidos pela janela do AppBrowser apresentados na figura 2. Figura 2. Janela AppBrowser do JBuilder. 5 Project Toolbar Project Pane File Tab Main Menu Structure Pane Status Bars File View Tabs Main Toolbar Content Pane Message Pane A seguir é fornecida uma rápida explicação sobre cada um dos recursos disponíveis na janela do AppBrowser. • Main Menu – está localizado bem ao topo da janela do AppBrowser. Contém todos os menus e submenus responsáveis pelo controle da criação, abertura, gravação e fechamento dos projetos, bem como as inúmeros procedimentos e configurações que podem ser modificadas para ajustar o programa às necessidades do desenvolvedor; • Main ToolBar - permite fácil acesso aos itens da barra de Menu mais constantemente utilizados como, por exemplo, os itens “Novo”, “Abrir” e “Salvar” entre outros. Tem as mesmas funções do Main Menu atuando como atalhos para os procedimentos mais usuais; • Project ToolBar - como as demais barras de ferramentas, contém botões que permitem acesso rápido a determinadas funções relacionadas aos projetos e seus arquivos; • Project Pane - janela que se localiza imediatamente abaixo da barra de ferramentas de Projeto. É uma espécie de painel onde os arquivos que compõem o projeto ficam dispostos no formato de uma estrutura de árvore. 6 Permite ao desenvolvedor ter uma visão rápida e clara de todos os itens que compõem a aplicação num dado momento. • Content Pane - compreende toda a área direita do AppBrowser entre o Component Palette e o Message Pane. A janela Content Pane mostra o conteúdo dos arquivos do projeto que estão abertos, onde cada arquivo tem uma guia superior com o seu nome (chamados de File Tabs) que se alternam para a visualização dos diferentes arquivos disponíveis (HTML ou Java). Voltando a figura 2, Content Pane está apresentando o código da aplicação WelcomeApp.java. Na parte inferior de Content Pane existe diversas opções de visualização inseridas em File View Tabs. Essas guias de opção permitem visualizar diferentes conteúdos para o mesmo arquivo. No caso do arquivo WelcomeApp.java apresentado na figura 2, Source apresenta seu código fonte, Design apresenta a interface (os objetos usados na aplicação) e assim por diante. • Component Palette - constituída por um conjunto de guias divididas entre diferentes grupos de componentes. Os componentes são adicionados ao formulário para a construção da interface do usuário. A figura 3 apresenta a guia Swing de componentes. Figura 3. Paleta de componentes pré-definidos para as aplicações. • Inspector – possui duas guias: Propriedades e Eventos. Cada um dos objetos adicionados à aplicação contém propriedades e eventos. A janela do Inspector permite acessar e definir cada um dos conteúdos destas propriedades e eventos. A figura 4 ilustra a guia properties (propriedades) de um objeto de menu (jMenuBar1). Observe a guia de eventos na parte inferior da janela; 7 Figura 4. Guias de propriedades e Eventos dos objetos no Inspector. Propriedade Guia de Propriedades • Conteúdo da Propriedade Guia de Eventos Structure Pane – tem a função de manter a estrutura dos Frames1 e arquivos.java com seus objetos, processos e métodos dispostos na forma de uma árvore hierárquica, sendo cada um representado por um tipo de ícone específico junto ao seu nome. Alternando o arquivo aberto entre as guias Source e Design no Content Pane, a disposição da estrutura de árvore representada no arquivo também muda, podendo conter ora os objetos adicionados aos formulários, ora as declarações, processos e métodos utilizados. A figura 5 apresenta a janela Structure Pane com a interface do usuário (UI) que contém um formulário (this) que contém um painel (contentPane) que por sua vez contém três objetos: borderLayout1, jButton1 e jTextField1. Figura 5. Exemplo de uma estrutura da janela Structure Pane. 1 Um frame pode ser entendido como uma estrutura, ou um objeto, que permite manter outros objetos internos a ele. Em um frame podem ser adicionados diversos objetos. 8 • Message Pane – essa janela tem a função de apresentar ao desenvolvedor dois tipos diferentes de informação: dados da aplicação que está sendo executada e erros existentes durante a execução da aplicação; • Source Code Editor – essa janela mantém o código fonte da aplicação, ou seja, é o local onde os desenvolvedores digitam o código necessário para a aplicação funcionar. Mudanças no código fonte podem afetar diretamente a visualização dos objetos no formulário. 3. Criação de Projetos Esse capítulo apresenta um resumo da criação de uma pequena interface do usuário. Se o leitor tiver o JBuilder 9 instalado, poderá seguir os procedimentos indicados e, ao terminar a leitura deste capítulo, terá criado uma pequena aplicação. Para iniciar a execução do JBuilder 9.0, siga os procedimentos seguintes: 1. Clique no botão do Menu “Iniciar”; 2. Aponte para a opção “Programas”; 3. Selecione “Borland JBuilder 9 Enterprise” e clique no item seguinte de mesmo nome. Quando a janela do programa abrir, será aberto também um projeto default chamado Welcome. Como este é na verdade apenas um projeto de boas vindas não nos interessa utilizá-lo. Para criar um novo projeto acesse o Menu “File”, item “New Project”. Será aberta a janela “Project Wizard – Step 1 of 3” (Figura 6) que corresponde o primeiro de três passos para a criação de um novo projeto. Deverão ser definidas as seguintes propriedades do projeto: 9 • Project name - permite definir o nome que será dado ao Projeto. Coloque o nome do projeto como Projeto1. • Type - permite definir o tipo do Projeto. Haverá as opções jpx (é um arquivo de projeto no formato XML, usado principalmente em equipes de desenvolvimento para o controle de versões do projeto) e jpr (usada para aplicações em geral) e tpr (usado para aplicações compartilhadas - Borland Together ControlCenter projects). Escolha a extensão jpr. • Root path - permite definir o local e o caminho onde o projeto será gravado. Existe um objeto do tipo Combo com as opções ou ainda um botão para a escolha do caminho. Obs: No momento que o usuário salva seu projeto no caminho escolhido, o JBuilder cria automaticamente uma pasta com o nome dado ao seu projeto, onde ele ficará armazenado, por exemplo: se o usuário salvou seu projeto com o nome de Projeto1 em C:\MeusProjetos, na verdade o projeto ficará na pasta Projeto1 dentro da pasta MeusProjetos (C:\MeusProjetos\Projeto1). • Outras propriedades – existem diversas outras propriedades que podem ser definidas que no momento são irrelevantes. Aceite as outras propriedades com os valores default sugeridos. Figura 6. Janela para Criação de Projetos. Como já foi dito, para a criação de um projeto são necessárias três etapas, porém elas não são todas obrigatórias. Para simplificar o processo clique no botão “Finish”, 10 uma vez que as propriedades das telas seguintes podem ser mantidas como default. A seguir o novo projeto aparecerá no AppBrowser. Por enquanto existe apenas um projeto vazio. O próximo passo será inserir uma aplicação ao projeto. 3.1. Criação de Aplicações Da mesma forma como foi feita a criação do projeto, as aplicações podem ser criadas através do Menu “File”, item “New”. Ao escolher estas opções será apresentada a janela “Object Gallery” apresentada na Figura 7. Figura 7. Janela “Object Gallery” Selecione a guia “General” e dê duplo-clique sobre o ícone “Application”. Será aberta a seguir a janela “Application Wizard - Step 1 to 3” apresentada na figura 8. Nela será necessário definir: • Package – define o nome do pacote que será utilizado pela aplicação. Se não estiver definido como projeto1, então o fixe como projeto1. • Class – permite definir o nome da classe que será criada. Coloque esta opção como Application1. • Generate header comments – permite gerar automaticamente comentários de cabeçalhos. Não é obrigatório deixar esta opção marcada, mas se você desejar 11 inserir comentários como autor da aplicação, data, empresa etc, então clique sobre ela. Figura 8. Janela “Application Wizard – Step 1 to 3” A exemplo da criação do projeto, a criação da aplicação também envolve três etapas, porém as próximas etapas serão mantidas com seus valores default. Dessa forma, basta clicar no botão “Finish” e a criação da aplicação estará concluída. Com isso a aplicação será aberta dentro do Projeto1 no AppBrowser. 3.2. Criação da Aplicação Exemplo A aplicação apresentada nesta seção é bastante simples com o objetivo de apresentar ao leitor alguns dos aspectos essenciais para a criação de interfaces. No desenvolvimento da aplicação serão utilizados alguns dos componentes mais comuns usados em interfaces: etiquetas, caixas de texto e botões. Para construir a aplicação, siga os seguintes procedimentos: 1. Selecione no “Structure Pane”, a pasta UI e o ícone “this” que corresponde ao formulário que será usado na criação da interface; 12 2. Na Paleta de Componentes, selecione a guia “Swing Containers”. Escolha o componente jPanel (é o primeiro componente desta guia) e clique sobre o formulário onde o jPanel será inserido. 3. Selecione o objeto jPanel1 adicionado no formulário e altere sua propriedade layout para “GridLayout”. A propriedade layout permite fixar o tipo de layout a ser usado no painel. 4. Selecione o objeto gridLayout1 (um nível abaixo do jPanel1) no “Struture Pane”. No “Inspector”, fixe as propriedades “columns” como “2” e “rows” como “6”. As propriedades “columns” e “rows” do objeto gridLayout1 indicam, respectivamente, o número de colunas e o número de linhas que irão compor o painel. Dessa forma, o painel terá 2 linhas com 6 colunas, isto é, terá 12 células onde os objetos poderão ser inseridos. A inserção dos objetos segue uma ordem: da esquerda para a direita e de cima para baixo. 5. Altere a propriedade “constraints” do objeto jPanel1 para “Center”. A propriedade “constraints” define a região que o objeto, no caso jPanel1, irá ocupar. Como o default do gerenciador de layout para o formulário (this) é BorderLayout, o painel jPanel1 pode assumir as posições “North”, “South”, “West”, “East” ou “Center”. No caso, foi definido “Center” para que o painel apareça centralizado no formulário. 6. Usando a guia “Swing” do “Component Palette”, adicione ao jPanel1 os seguintes objetos: 1 jButton (botão), 6 jLabels (etiquetas) e 5 jTextFields (caixas de texto) de acordo com o layout apresentado pela Figura 9. Figura 9. Disposição dos objetos no formulário. 7. Selecione os objetos jLabel (um de cada vez) e altere a propriedade “text”, que corresponde ao texto que será apresentado no formulário, para: jLabel1 – “Nota da Pesquisa” 13 8. jLabel2 – “Nota da 1º Prova” jLabel3 – “Nota do Trabalho” jLabel4 – “Nota da 2º Prova” jLabel5 – “Média das Notas” jLabel6 – “Status Aluno”. Marque na propriedade “font” a opção “bold”. Deixe a propriedade “text” de todos os jTextFields sem nenhum valor. Fixe a propriedade “editable” do jTextField5 como “False”. Isso fará com que o conteúdo desta caixa não possa ser alterado pelo usuário, ele será somente leitura. 9. Fixe a propriedade “text” do jButton1 como “Calcular”. 10. Dê duplo-clique sobre o jButton1, e será aberta a janela “Content Pane” e criado o método referente ao evento clique do botão. O método criado será: void jButton1_actionPerformed(ActionEvent e) { } 11. No interior do método action_Performed digite o código seguinte: 1. try // início do controle de erros 2. { 3. float N1 = 0, N2 = 0, N3 = 0, N4 = 0, media = 0; //declara as variáveis 4. N1 = Float.parseFloat(jTextField1.getText()); //N1 recebe o valor jTextField1 5. N2 = Float.parseFloat(jTextField2.getText()); 6. N3 = Float.parseFloat(jTextField3.getText()); 7. N4 = Float.parseFloat(jTextField4.getText()); 8. media = (N1 + N2 + N3 + N4) / 4; //faz a média das 4 notas 9. jTextField5.setText(" " + media); //recebe o valor da variável media 10. if (media >= 0 && media <5) // se media for maior ou igual a 0 e menor que 5 11. { 12. jLabel6.setText("Reprovado"); //jLabel6 recebe o texto “Reprovado” 13. jLabel6.setForeground(Color.red); //recebe a cor vermelha com a cor do texto. 14. } 15. else if (media >= 5 && media < 7) //se media for maior ou igual a 5 e menor que 7 16. { 17. jLabel6.setText("Em Recuperação"); //recebe o texto “Em Recuperação” 18. jLabel6.setForeground(Color.yellow); //texto recebe a cor amarela 19. } 20. else if (media >= 7) //se media for maior ou igual a 7 21. { 22. jLabel6.setText("Aprovado"); //recebe o texto Aprovado 23. jLabel6.setForeground(Color.blue); jLabel6 //recebe a cor azul do cor do texto. 24. } 14 25. } 26. catch(NumberFormatException erro) //se houver erros de formato de números 27. { 28. jTextField5.setText("Erro de Conversão"); //emite uma mensagem de erro 29. } 30. } Obs. Os números das linhas não devem ser digitados, eles servem apenas para guiar o usuário durante o processo de digitação. As frases após os caracteres // são apenas comentários e também não necessitam ser digitadas. 3.3. Compilação e execução da Aplicação Depois de criada a aplicação basta realizar sua execução. Na realidade o processo ocorre em duas fases: 1) a compilação, para verificar se o programa contém erros de estrutura ou de sintaxe nas instruções e 2) a execução propriamente dita. Para realizar os dois procedimentos ao mesmo tempo basta através da barra Main ToolBar clicar sobre o botão Run Project ( ). Caso haja algum problema com a aplicação, os problemas existentes serão mostrados na janela de mensagens de erro. A aplicação em execução deve ficar semelhante à figura 10. Nela o usuário poderá digitar as notas nas caixas de texto de 1 a 4 e pressionar o botão calcular para que a média e o resultado sejam processados. Figura 10. Aplicação “Cálculo da Média” em execução. Referências Bibliográficas Borland JBuilder. 2003. Consulta realizada em 03/2004. (URL http://www.borland.com/jbuilder). 15 Deitel. Java: como programar. Bookman. 1ª Edição 2000 Fundão. “IDEs Java”. 2003. Consulta realizada em 04/2004. edição de Maio/2003. (URL http://www2.fundao.pro.br/articles.asp?cod=169). IBM. “Rational Rose XDE Developer”. 2004. Consulta realizada em 04/2004. (URL http://www-306.ibm.com/software/awdtools/developer/rosexde/). Landy, Michel e outros, 2002. Borland JBuilder Developer’s Guide. Lozano, Fernando. “Ambientes Integrados”. Revista do Linux edição 29, 2004 (URL http://www.revistadolinux.com.br/ed/029/assinantes/desenvolvimento.php3.) Morgan, M. Java 2 para programadores profissionais. Ciência Moderna. 1ª Edição 2000 Muchow, John W, 2002. Core J2ME Technology & MIDP. Palo Alto. Software Development Times, December 15, 2003. Sun. “Java TV API”. 2004. Consulta realizada em 04/2004. (URL http://java.sun.com/products/javatv/index.jsp), 16