Java Desktop Basis. Brasil, Natal-RN, 29 de maio de 2011 Welbson Siqueira Costa. www.jdbframework.com



Documentos relacionados
Classes de Entidades Persistentes JDB

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas

Desenvolvendo Websites com PHP

Introdução à Linguagem Java

LINGUAGEM DE BANCO DE DADOS

Curso de Aprendizado Industrial Desenvolvedor WEB

HIBERNATE EM APLICAÇÃO JAVA WEB

Orientação a Objetos

JDBC Java Database Connectivity

GERADOR DE CÓDIGO JSP BASEADO EM PROJETO DE SGBD. Acadêmico: Maicon Klug Orientadora: Joyce Martins

CURSO DE PROGRAMAÇÃO EM JAVA

Prevayler. Perola. André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki

Desenvolvimento Web TCC Turma A-1

Manipulação de Banco de Dados com Java 1. Objetivos

Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

UFG - Instituto de Informática

Universidade da Beira Interior

Um pouco do Java. Prof. Eduardo

Figura 1 - Arquitetura multi-camadas do SIE

Entendendo como funciona o NAT

Programação de Computadores II TCC Turma A-1

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro Maio/ 2015

Persistência de Classes em Tabelas de Banco de Dados

Como se tornar um desenvolvedor de plug-ins para AutoCAD e Revit

Lógica de Programação

Engenharia de Software III

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

Roteiro. Arquitetura. Tipos de Arquitetura. Questionário. Centralizado Descentralizado Hibrido

PRODUTO 1 (CONSTRUÇÃO DE PORTAL WEB)

Programação para Internet Orientada a Objetos com PHP & MySQL Instalando e configurando um ambiente de ferramentas PHP e MySQL. Prof. MSc.

DESENVOLVIMENTO DE SOFTWARE DE VOTAÇÃO WEB UTILIZANDO TECNOLOGIA TOUCHSCREEN

Desenvolvendo Websites com PHP


CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web;

Satélite. Manual de instalação e configuração. CENPECT Informática cenpect@cenpect.com.br

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

Android e Bancos de Dados

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate

Análise e Projeto Orientados por Objetos

Persistência de dados com JPA. Hélder Antero Amaral Nunes

2 Diagrama de Caso de Uso

WebApps em Java com uso de Frameworks

Sistemas Distribuídos

Programação de Computadores - I. Profª Beatriz Profº Israel

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Banco de Dados de Músicas. Andre Lima Rocha Campos Osório Pereira Carvalho

Um Driver NDIS Para Interceptação de Datagramas IP

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 2. Cursos de Computação

INTRODUÇÃO E CONFIGURAÇÃO DO PRIMEFACES MOBILE EM APLICAÇÕES JSF

Orientação a Objetos com Java

FIREWALL. Prof. Fabio de Jesus Souza. Professor Fabio Souza

SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE. Aluno: Roberto Reinert Orientador: Everaldo A. Grahl

Capítulo 1. Introdução ao Java. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

Eduardo Bezerra. Editora Campus/Elsevier

Aplicativo web para definição do modelo lógico no projeto de banco de dados relacional

JDB Java Desktop Basis

ANEXO 11. Framework é um conjunto de classes que colaboram para realizar uma responsabilidade para um domínio de um subsistema da aplicação.

Disciplina: Programas de Edição de Textos Professora: Érica Barcelos

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP

Feature-Driven Development

Histórico de Revisão Data Versão Descrição Autor

Fundamentos de Java. Prof. Marcelo Cohen. 1. Histórico

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador>

ESTUDO DE CASO WINDOWS VISTA

Tecnologia Java. Daniel Destro do Carmo Softech Network Informática

Sistema Gerenciador de Conteúdo OpenCms: um caso de sucesso no CEFET-MG

JPA: Persistência padronizada em Java

Introdução a Java. Hélder Nunes

O que é o Virto ERP? Onde sua empresa quer chegar? Apresentação. Modelo de funcionamento

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

3 SCS: Sistema de Componentes de Software

Noções de. Microsoft SQL Server. Microsoft SQL Server

Programação com acesso a BD. Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br

Java & OpenJDK. Thiago S. Gonzaga. Sun Campus Ambassador thiago.gonzaga@sun.com

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais

Principais Comandos SQL Usados no MySql

Introdução a Banco de Dados

Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

Aplicação Prática de Lua para Web

Etc & Tal. Volume 2 - Número 1 - Abril 2009 SBC HORIZONTES 44

Interface Gráficas Parte I. Bruno Crestani Calegaro

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource Rev: 02

Documento de Arquitetura

Web Services. Autor: Rômulo Rosa Furtado

Projeto Disciplinar de Infra-Estrutura de Software SISPA FACULDADE SENAC

Prof. Esp. Adriano Carvalho

Introdução. à Linguagem JAVA. Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação. Laboratório de Visão Computacional

DESENVOLVIMENTO DE UM APLICATIVO DO TIPO SECRETÁRIO VIRTUAL PARA A PLATAFORMA ANDROID

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

DESENVOLVIMENTO DE SOFTWARE. Introdução ao Visual Studio VB.Net. Programação Estruturada. Prof. Celso Candido ADS / REDES / ENGENHARIA

Integração de sistemas utilizando Web Services do tipo REST

4 Estrutura do Sistema Operacional Kernel

Ferramenta de apoio a gerência de configuração de software. Aluno: Rodrigo Furlaneto Orientador: Everaldo Artur Grahl

SISTEMAS DISTRIBUÍDOS

Lógica de Programação

Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS)

Histórico da Revisão. Versão Descrição Autor. 1.0 Versão Inicial

Manual de implantação

Transcrição:

Java Desktop Basis Brasil, Natal-RN, 29 de maio de 2011 Welbson Siqueira Costa www.jdbframework.com A velocidade com que Java foi adotada pela comunidade científica é realmente impressionante. Desde o seu lançamento em 1995, ela teve adesão mais rápida que qualquer outra linguagem de programação já inventada. Java foi desenvolvida pela empresa Sun Microsystems, a qual foi adquirida pela Oracle (ORACLE, 2010) no ano de 2009, em um grande processo de compra. Java foi criada como parte integrante de um projeto idealizado pela Sun (projeto Gree), que consistia no desenvolvimento de dispositivos eletrônicos que pudessem se comunicar facilmente uns com os outros. Como o mercado desses dispositivos, para consumidores finais, não se desenvolvia tão rapidamente como a Sun havia previsto, o projeto Gree não obteve o sucesso esperado e a linguagem Java quase sucumbiu ao desuso. No entanto, surgia algo novo no mundo da informática que mudaria o comportamento do planeta, a Internet. Com a criação, em 1993, do primeiro web browser e das páginas HTML estáticas, a Sun vislumbrou a possibilidade de aplicar Java ao desenvolvimento de páginas web dinâmicas. Tal dinamismo foi possível com os applets (DEITEL e DEITEL, 2003). Inicialmente sendo aplicada à web e tendo como grande diferencial a possibilidade de se escrever programas de computador que podem funcionar em qualquer plataforma de hardware ou SO (sistema operacional), Java se desenvolveu e tornou-se uma linguagem de programação de propósito geral

2 que juntamente com suas ferramentas para desenvolvimento e execução de software, é considerada, atualmente, como uma plataforma de computação. 1. Java Web x Desktop Há muitos anos Java ganha espaço no desenvolvimento de aplicações web. Essa inclinação para programação Internet não é característica particular dos desenvolvedores Java, mas sim uma tendência praticada pela comunidade de desenvolvedores de software do mundo inteiro, inclusive com a migração de sistemas desktop para plataforma web. Tal escolha se justifica, em grande parte, pela facilidade de distribuição dos sistemas web: é muito simples distribuir uma aplicação Internet, uma vez que ela tenha sido disponibilizada em rede, por meio de um servidor web, basta acessá-la através de um browser. Dessa maneira, mesmo grandes empresas que possuem filiais geograficamente distantes umas das outras, podem implantar e distribuir seus sistemas de computador com redução expressiva nos custos. Tal facilidade de distribuição tornou-se também disponível para sistemas desktop. Atualmente é possível instalar apenas uma cópia do software desktop em um servidor de aplicações e torná-la disponível através de um endereço que aponta para o programa no servidor. O Java Web Start (ORACLE, 2011) é um exemplo de tecnologia gratuita que implementa essa facilidade. Diferentemente da crescente utilização de Java para programação web, sua aplicação no desenvolvimento desktop não conseguia ganhar força, nos primeiros anos após o lançamento da linguagem. Desconsiderando a tendência de desenvolver tudo em tecnologia web, há dois principais motivos que fizeram com que o uso de Java para programação desktop fosse atrasado: 1) Problemas de desempenho: Java é reconhecidamente mais lenta que linguagens de programação compiladas. A principal causa da redução no desempenho é a natureza interpretativa da execução de programas Java pela JVM (Java Virtual Machine). Outro fator considerável é que Java não utilizar API (Application Programming Interface) fornecidas

3 pelos SO, ou seja, essa linguagem implementa muito do que poderia ser aproveitado. No entanto, esses dois principais fatores que à torna mais lenta são inerentes à garantia de sua portabilidade entre diferentes plataformas de hardware e SO. Porém, a redução de desempenho foi superada através do aperfeiçoamento de Java, nas versões subsequentes; e, pelo advento de computadores mais rápidos que não são mais afetados pelo atraso causado na interpretação dos bytecodes do código Java na JVM. 2) Improdutividade no desenho de telas para programas desktop: não havia ferramentas para auxiliar os desenvolvedores na criação de telas desktop. Isso tornava a programação bastante improdutiva. Esse problema também foi resolvido com o advento de IDE (Integrated Development Environment) que possibilitam ao desenvolvedor construir a interface gráfica de sistemas desktop sem a necessidade de escrever código. Ou seja, todo trabalho pesado é feito pelo IDE. Atualmente dois IDE se destacam: o Netbeans (NETBEANS, 2010) e o Eclipse (ECLIPSE, 2010), nesse último é necessário instalar plugins que adicionam a funcionalidade de desenho de telas desktop. A tendência da programação web gerou um certo modismo que ganhou mais e mais adeptos despreocupados em analisar as vantagens, desvantagens e reais necessidades de utilização de tecnologias web em detrimento de desktop. Isso causou as migrações desenfreadas de aplicações desktop para web. Entretanto, há cerca de alguns anos a comunidade começou a perceber que aplicativos web podem sofrer muitas limitações, por exemplo, redução no desempenho, usabilidade, segurança, etc. Outra questão desfavorável está relacionada à necessidade de construção de GUI (Graphical User Interface) cada vez mais complexas; tal tarefa pode ser extremamente trabalhosa e improdutiva, além de gerar código difícil de ser mantido e aplicativos com interfaces gráficas de qualidade inferior. Nesse sentido, surge uma visão racional que preza por aplicar determinada tecnologia em conformidade com as reais necessidades. Assim, atenções começam a se voltar para produção de

4 idéias relacionadas à programação desktop. Mas, como tudo na informática ocorre muito rápido, o tempo da moda web foi longo e o mundo Java carece de avanços na programação desktop. 2. Persistência em Bancos de Dados com Java Existem muitas alternativas para persistência de dados de programas Java em bancos de dados relacionais e objeto-relacionais. Mas todas elas têm como base a API JDBC (Java DataBase Connectivity). Programar diretamente com JDBC possibilita desenvolver código perfeitamente ajustado às características do SGBD (Sistema de Gerenciamento de Banco de Dados) no qual persistem os dados da aplicação. Isso garante aumento expressivo no desempenho do sistema. Entretanto, desenvolver dessa maneira significa escrever muitas linhas de código, responsáveis apenas pela persistência dos dados, as quais ficam misturadas à lógica do negócio. Essa estratégia pode se refletir em menor inteligibilidade do código e maior esforço para escrevê-lo. Isso pode gerar vários aspectos indesejáveis de engenharia de software como, por exemplo, menor produtividade; maior tempo de desenvolvimento; maiores custos; dificuldades de manutenabilidade, interoperabilidade, portabilidade e reutilização. A API JDBC ocupa o nível fundamental de persistência Java em bancos de dados relacionais e objeto-relacionais. Alternativa mais elegante seria utilizar um framework ORM (Object Relctional Mapping). Frameworks ORM realizam, de forma transparente, o mapeamento entre modelos de classes de uma linguagem OO (Orientada a Objeto) para o modelo tabular dos bancos de dados relacionais e objeto-relacionais (HIBERNATE, 2010). Dessa maneira, o desenvolvedor programa em uma linguagem OO e manipula dados em tabelas como se estivesse manipulando dados armazenados em um banco de dados OO. Escrever código dessa maneira pode resultar em sistemas perfeitamente coerentes com o paradigma da programação OO e com os aspectos desejáveis de engenharia de software, já citados anteriormente. No entanto, o preço a ser pago pode ser bastante caro. Sendo essa uma das formas de manipulação de

5 dados mais complexas, ela termina por inserir completa infra-estrutura de persistência à aplicação. Algo indesejável quando se está interessado em desenvolver sistemas pequenos e de médio porte. Para trabalhar com um framework ORM pode ser necessário lidar com regras específicas e, algumas vezes, não padronizadas, por exemplo, linguagens específicas para consulta de dados. No contexto da persistência de dados é possível observar uma lacuna, na qual o desenvolvimento de pequenos e médios aplicativos encontra-se, de certo modo prejudicado, já que deverá lidar diretamente com a API JDBC ou empregar infra-estruturas, em alguns casos, maiores que a aplicação que está sendo desenvolvida. 3. JDB (Java Desktop Basis) Diante da carência de idéias voltadas para programação Java desktop e da lacuna encontrada na persistência desses sistemas em bancos de dados relacionais e objeto-relacionais, torna-se importante produzir tecnologias que ajudem a mitigar as faltas evidenciadas. Contudo, tais produções devem está alinhadas às necessidades da média dos desenvolvedores de software: desenvolver de forma produtiva com garantia de manutenabilidade; construir aplicativos que sejam portáveis e interoperáveis, a final ninguém deseja ficar preso à determinada tecnologia; integrar seus sistemas com componentes GUI que possam manipular os dados no SGBD sem a necessidade de muitos esforços de programação, pois de nada adianta possuir uma camada de persistência que esteja em conformidade com os bons aspectos de engenharia de software, se há falta na integração com componentes visuais; esforços descomunais podem se concentrar nesse último aspecto. Perante as necessidades apresentadas ressalta-se a importância do Framework JDB como alternativa a ser considerada na persistência de dados de aplicações Java desktop. O JDB foi concebido para atuar de forma genérica e permitir a interação com SGBD relacionais e objeto-relacionais, exigindo pouco esforço de programação. Esse Framework faz uso de JDBC, no entanto,

6 livra o desenvolvedor dos aspectos cansativos e repetitivos do uso daquela API. O JDB também estende componentes GUI swing, que proporcionam perfeita integração do aplicativo com o SGBD, permitindo que o usuário interaja, de forma natural, com os dados armazenados no banco de dados. Tudo isso é possível com pouco esforço de programação e grande redução na quantidade de código a ser escrita. Dessa maneira, JDB permite que o desenvolvedor esteja livre para se concentrar na lógica de domínio de negócio da aplicação. Com o Framework JDB não há necessidade de seguir regras específicas, como aquelas impostas pelas pesadas infra-estruturas que se comprometem a resolver grande variedade de problemas. JDB é bastante leve e permite portabilidade (aplicativos funcionarão em qualquer plataforma de SO que tenham JVM instalada) e interoperabilidade (poderão interagir com qualquer SGBD relacional ou objeto-relacional que disponibilize driver JDBC). JDB não depende de IDE, dessa maneira é possível desenvolver software usando apenas o Framework JDB, um editor de texto e o JDK (Java SE Development Kit). Entretanto, JDB permite aproveitar as vantagens do IDE Netbeans para um desenvolvimento ainda mais produtivo. 4. Estrutura do JDB O Framework JDB é constituído por classes e componentes JavaBeans esses componentes são classificados em Essenciais e de Controle. Os componentes Essenciais são invisíveis, ou seja, trabalham em segundo plano realizando funções básicas para interação da aplicação com o SGBD. Já os de Controle são componentes visuais para a construção da interface gráfica do usuário. Esses últimos são extensões dos componentes swing de Java. Para saber mais sobre JavaBeans você poderá consultar o capítulo adicional sobre o assunto em (DEITEL e DEITEL, 2003). No contexto do paradigma da programação OO e em engenharia de software o termo componente de software é definido como uma ou mais classes colaborativas que disponibilizam funcionalidades para os programadores através de interfaces. Os componentes do Framework JDB não

7 definem interfaces, eles são classes construídas conforme a definição de componentes JavaBeans. Assim, serão representados como classes ou objetos de classes. O Framework JDB é disponibilizado através do arquivo JDB.jar, o qual pode ser encontrado no site www.jdbframework.com. Para usar o JDB o desenvolvedor deverá incluí-lo no classpath do Java e importar as classes dos componentes que deseja usar, no interior do código fonte do programa. A Figura 1 representa o diagrama de objetos de uma aplicação de software usando os componentes Essenciais do Framework JDB. No diagrama são evidenciadas as dependências através das linhas tracejadas, como pode ser visto na linha partindo de Aplicação até o objeto do tipo JDBQuery, a qual indica que Aplicação tem uma referência para um JDBQuery. Também é possível observar que os objetos do tipo JDBQuery, JDBUpdate, JDBUpdateTransaction e JDBMetaData dependem do JDBConnection. Essas dependências serão melhor explicadas no livro sobre JDB que será publicado em breve. A Tabela 1 completa a Figura 1 apresentando os tipos dos componentes, seus pacotes e breves descrições de suas funcionalidades. Figura 1 Diagrama de objetos dos componentes Essenciais do JDB e suas dependências.

8 Componente JDB (Pacote) JDBConnection (lib.jdb.connection) JDBQuery (lib.jdb.jdbquery) JDBUpdate (lib.jdb.jdbupdate) JDBUpdateTransaction (lib.jdb. jdbupdatetransaction) JDBMetaData (lib.jdb.jdbmetadata) JDBSQLRepository (lib.jdb.jdbsqlrepository) Descrição Realizar conexão com o banco de dados. Realiza consultas ao banco de dados. Também permite alterações, inserções e exclusões (operações CRUD). Permite enviar qualquer bloco de comandos aceito pelo banco de dados e suportados pelo driver JDBC do banco de dados. É um JDBUpdate preparado para trabalhar com transações de bancos de dados. Obtém informações do esquema do banco de dados. Permite associar um caminho de diretório, no qual serão armazenadas as declarações SQL, em formato texto. Isso evita ter que inserir o SQL no interior do código da Aplicação. O uso desse componente é opcional. Tabela 1 Descrição dos componentes Essenciais do JDB. A Figura 2 apresenta as dependências entre os componentes de Controle. É possível perceber que Aplicação tem referências para todos os componentes visuais. Também é possível verificar que todos os componentes de Controle têm uma referência para o componente do tipo JDBQuery. Essa última é necessária para que os componentes visuais possam interagir com os dados no SGBD. A Tabela 2 exibe informações sobre cada componente de controle. Os relacionamentos de dependência entre os componentes JDB podem ser configurados através de propriedades, na paleta de propriedades de cada componente no IDE Netbeans ou no próprio código da aplicação através de métodos set.

9 Figura 2 Diagrama de objetos dos componentes de Controle do JDB e suas dependências. Componente JDB (Pacote) JDBButtonCancel (lib.jdb.control.jdbbuttoncancel) JDBButtonDelete (lib.jdb.control.jdbbuttondelete) JDBButtonFirst (lib.jdb.control.jdbbuttonfirst) JDBButtonLast (lib.jdb.control.jdbbuttonlast) JDBButtonNew (lib.jdb.control.jdbbuttonnew) JDBButtonNext (lib.jdb.control.jdbbuttonnext) Descrição É um JButton aperfeiçoado para permitir o cancelamento de uma operação de inserção ou alteração. É um JButton aperfeiçoado para permitir exclusão de dados. É um JButton aperfeiçoado para permitir apontar para o primeiro registro de um conjunto de registros trazidos do banco de dados por uma consulta. É um JButton aperfeiçoado para permitir apontar para o último registro de um conjunto de registros trazidos do banco de dados por uma consulta. É um JButton aperfeiçoado para colocar o JDBQuery no estado de inserção. É um JButton aperfeiçoado para permitir apontar para o próximo registro de um conjunto de registros trazidos do banco de

10 dados por uma consulta. É um JButton aperfeiçoado para permitir JDBButtonPrevious apontar para o registro anterior de um (lib.jdb.control.jdbbuttonprevious) conjunto de registros trazidos do banco de dados por uma consulta. É um JButton aperfeiçoado para permitir JDBButtonRefresh executar uma consulta no banco de dados, (lib.jdb.control.jdbbuttonrefresh) previamente definida no JDBQuery. É um JButton aperfeiçoado para permitir JDBButtonSave executar operações de salvar inserções ou (lib.jdb.control.jdbbuttonsave) alterações de dados. JDBPanelButton É um painel contendo todos os (lib.jdb.control.jdbpanelbutton) JDBButtons. É um JLabel aperfeiçoado para exibir o estado do JDBQuery. O qual poderá ser um dos seguintes: editing (quando estiver JDBLableMonitor alterando algum registro), inserting (quando (lib.jdb.control.jdblablemonitor) estiver inserindo um registro), enabled (quando não estiver em um dos estados anteriores). JDBCheckBox É um JCheckBox aperfeiçoado para (lib.jdb.control.jdbcheckbox) interagir com dados boolean. É um JComboBox aperfeiçoado para JDBComboBox interagir com campos determinados de (lib.jdb.control.jdbcombobox) tabelas no banco de dados. JDBListComboBox É um JComboBox aperfeiçoado para listar (lib.jdb.control.jdblistcombobox) dados de uma tabela do banco de dados. É um JComboBox aperfeiçoado para listar dados de uma tabela e permitir alterar ou JDBLookUpComboBox inserir esses dados em uma outra tabela. (lib.jdb.control.jdblookupcombobox) Esse componente permite implementar relacionamentos entre tabelas. Adiciona um campo de lookup a um JDBTable. Realiza funcionalidade JDBLookUpField semelhante ao JDBLookUpComboBox. No (lib.jdb.control.jdblookupfield) entanto, faz isso no interior de uma célula do JDBTable. É um JTable aperfeiçoado para listar dados JDBTable de uma consulta ao banco de dados e (lib.jdb.control.jdbtable) também permitir alterações ou inserções de novos registros. É um JTextArea aperfeiçoado para JDBTextArea possibilitar a interação com campos do tipo (lib.jdb.control.jdbtextarea) text. É um JTextField aperfeiçoado para JDBTextField possibilitar a interação com campos de (lib.jdb.control.jdbtextfield) tabelas. JDBImage Permite exibir imagens armazenadas em (lib.jdb.control.jdbimage) campos to tipo BLOB. Tabela 2 Descrição dos componentes de Controle do JDB.

11 5. Aplicação do JDB sem Utilização de IDE Para demonstrar a aplicação do JDB, sem o uso de IDE, será criado um simples programa para manipular dados da tabela CadastroVeiculo do banco de dados DBCadastroVeiculo no SGBD MySQL (MYSQL, 2010). Para demonstração do uso do JDB em conjunto com o IDE Netbeans o leitor poderá investigar os tutoriais disponíveis em http://www.jdbframework.com. A Listagem 1 mostra o script para criação do banco de dados. A Listagem 2 apresenta o arquivo CadastroVeiculo.java que contém o código fonte do programa. No exemplo desse artigo o arquivo CadastroVeiculo.java será armazenado no seguinte diretório C:\cadastro_veiculo\ O interior desse diretório também deverá conter o driver JDBC de conexão com o banco de dados MySQL, disponível no arquivo mysql-connector-java-5.1.6- bin.jar (caso deseje o leitor poderá baixar um driver JDBC MySQL mais atual) e o Framework JDB, disponível no arquivo JDB.jar (veja a Figura 4). 1 CREATE DATABASE DBCadastroVeiculo; 2 3 CREATE TABLE DBCadastroVeiculo.CadastroVeiculo ( 4 id int(11) NOT NULL AUTO_INCREMENT, 5 veiculo varchar(40) NOT NULL, 6 ano int(11) NOT NULL, 7 valor double NOT NULL, 8 PRIMARY KEY (id) 9 ); Listagem 1 Script para gerar o banco de dados DBCadastroVeiculo. 1 import java.awt.container; 2 import java.awt.dimension; 3 import java.awt.flowlayout; 4 import javax.swing.jframe; 5 import javax.swing.jlabel; 6 import javax.swing.jscrollpane; 7 import lib.jdb.connection.jdbconnection; 8 import lib.jdb.control.jdbpanelbutton.jdbpanelbutton; 9 import lib.jdb.control.jdbtable.jdbtable; 10 import lib.jdb.control.jdbtextfield.jdbtextfield;

12 11 import lib.jdb.jdbquery.jdbquery; 12 13 public class CadastroVeiculo extends JFrame 14 { 15 private JDBPanelButton jdbpanelbutton; 16 private JLabel jlabelveiculo; 17 private JDBTextField jdbtextfieldveiculo; 18 private JLabel jlabelano; 19 private JDBTextField jdbtextfieldano; 20 private JLabel jlabelvalor; 21 private JDBTextField jdbtextfieldvalor; 22 private JScrollPane jscrollpane; 23 private JDBTable jdbtable; 24 private JDBConnection jdbconnection; 25 private JDBQuery jdbquery; 26 27 28 public CadastroVeiculo() 29 { 30 super("cadastro de Veículos"); 31 32 // Configura componentes JDB 33 jdbconnection = new JDBConnection(); 34 jdbconnection.setusingfileconfig(false); 35 jdbconnection.setdriver("com.mysql.jdbc.driver"); 36 jdbconnection.seturl("jdbc:mysql://127.0.0.1/dbcadastroveiculo"); 37 jdbconnection.setusername("root"); 38 jdbconnection.setpassword("rootjdb"); 39 jdbconnection.connectdb(); 40 jdbquery = new JDBQuery(); 41 jdbquery.setjdbconnection(jdbconnection); jdbquery.setsql("select * FROM CadastroVeiculo ORDER BY 42 Veiculo"); 43 44 45 // Configura GUI 46 Container container = getcontentpane(); 47 container.setlayout( new FlowLayout() ); 48 49 jdbpanelbutton = new JDBPanelButton(); 50 jdbpanelbutton.setjdbquery(jdbquery); 51 container.add( jdbpanelbutton ); 52 53 // Configura o campo Veiculo 54 jlabelveiculo = new JLabel("Veículo"); 55 jdbtextfieldveiculo = new JDBTextField(15); 56 jdbtextfieldveiculo.setfieldname("veiculo"); 57 jdbtextfieldveiculo.setjdbquery(jdbquery); 58 container.add( jlabelveiculo ); 59 container.add( jdbtextfieldveiculo ); 60 61 // Configura o campo Ano 62 jlabelano = new JLabel("Ano"); 63 jdbtextfieldano = new JDBTextField(15); 64 jdbtextfieldano.setfieldname("ano"); 65 jdbtextfieldano.setjdbquery(jdbquery); 66 container.add( jlabelano );

13 67 container.add( jdbtextfieldano ); 68 69 // Configura o campo Valor 70 jlabelvalor = new JLabel("Valor"); 71 jdbtextfieldvalor = new JDBTextField(15); 72 jdbtextfieldvalor.setfieldname("valor"); 73 jdbtextfieldvalor.setjdbquery(jdbquery); 74 container.add( jlabelvalor ); 75 container.add( jdbtextfieldvalor ); 76 77 // Configura Tabela 78 jdbtable = new JDBTable(5,4); 79 jdbtable.setjdbquery(jdbquery); 80 jscrollpane = new JScrollPane(jDBTable); 81 jscrollpane.setpreferredsize( new Dimension(620, 250) ); 82 container.add(jscrollpane); 83 84 // Executa a consulta 85 jdbquery.execquery(); 86 } 87 88 public static void main( String args[] ) 89 { 90 CadastroVeiculo cadastroveiculo = new CadastroVeiculo(); 91 cadastroveiculo.setsize(650, 400); 92 cadastroveiculo.setdefaultcloseoperation(jframe.exit_on_close); 93 cadastroveiculo.setvisible(true); 94 cadastroveiculo.setresizable(false); 95 } 96 } Listagem 2 Código fonte do CadastroVeiculo.java Para gerar os bytecodes do código fonte exibido na Listagem 2 é necessário acessar o interpretador de comandos do SO (nesse exemplo será usado o Windows 7) e entrar com o comando apresentado na Figura 3. Figura 3 Gerando os bytecodes do software.

14 Ao executar o comando a estrutura de diretório e arquivos do seu programa conterá um novo arquivo denominado CadastroVeiculo.class (veja a Figura 4). Esse arquivo contém os bytecodes do programa Java. Figura 4 Árvore de diretório e arquivos do software após gerar bytecodes. Após gerar os bytecodes é possível rodar o software. Então, ainda no interpretador de comandos é necessário entrar com o comando exibido na Figura 5. Figura 5 Rodando o Software.

15 6. Considerações Finais É importante que leitor esteja ciente que nenhuma tecnologia, método ou processo deve ser considerado como absoluto. Tudo tem sua aplicabilidade, portanto, JDB não se impõe como a melhor alternativa a resolução dos problemas da comunidade de software, mas sim como uma alternativa que se alinha à grande parcela das necessidades do desenvolvimento desktop, levando em consideração que o grande peso do mercado de software se concentra nas aplicações pequenas e de médio porte. 7. Referências DEITEL, H. M.; DEITEL, P. J. Java Como Programar. Tradução de Carlos Arthur Lang Lisbôa. 4. ed. Porto Alegre: Bookman, 2003. 1386 p. ECLIPSE. IDE Eclipse. Eclipse.org, 2010. Disponivel em: <http://eclipse.org>. Acesso em: 18 out. 2010. HIBERNATE. Framework Hibernate. Hibernate.org, 2010. Disponivel em: <http://www.hibernate.org>. Acesso em: 5 out. 2010. MYSQL. MySQL database. MySQL Downloads, 2010. Disponivel em: <www.mysql.com/downloads/>. Acesso em: 10 dez. 2010. NETBEANS. IDE Netbeans. Netbeans.org, 2010. Disponivel em: <http://netbeans.org/>. Acesso em: 18 out. 2010. ORACLE. Oracle Technology Network. Java SE Downloads, 2010. Disponivel em: <http://www.oracle.com/technetwork/java/javase/downloads/index.html>. Acesso em: 19 dez. 2010. ORACLE. Java Web Start. Java Web Start Lesson, 2011. Disponivel em: <http://download.oracle.com/javase/tutorial/deployment/webstart/index.html>. Acesso em: 30 jun. 2011.