• Nenhum resultado encontrado

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

N/A
N/A
Protected

Academic year: 2021

Share "Java Desktop Basis. Brasil, Natal-RN, 29 de maio de 2011 Welbson Siqueira Costa."

Copied!
15
0
0

Texto

(1)

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.

(8)

Componente JDB (Pacote) Descrição

JDBConnection

(lib.jdb.connection) Realizar conexão com o banco de dados. JDBQuery

(lib.jdb.jdbquery)

Realiza consultas ao banco de dados. Também permite alterações, inserções e exclusões (operações CRUD).

JDBUpdate

(lib.jdb.jdbupdate)

Permite enviar qualquer bloco de comandos aceito pelo banco de dados e suportados pelo driver JDBC do banco de dados.

JDBUpdateTransaction (lib.jdb.

jdbupdatetransaction)

É um JDBUpdate preparado para trabalhar com transações de bancos de dados.

JDBMetaData

(lib.jdb.jdbmetadata) Obtém informações do esquema do banco de dados. JDBSQLRepository

(lib.jdb.jdbsqlrepository)

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) Descrição

JDBButtonCancel

(lib.jdb.control.jdbbuttoncancel)

É um JButton aperfeiçoado para permitir o cancelamento de uma operação de inserção ou alteração.

JDBButtonDelete

(lib.jdb.control.jdbbuttondelete)

É um JButton aperfeiçoado para permitir exclusão de dados.

JDBButtonFirst

(lib.jdb.control.jdbbuttonfirst)

É um JButton aperfeiçoado para permitir apontar para o primeiro registro de um conjunto de registros trazidos do banco de dados por uma consulta.

JDBButtonLast

(lib.jdb.control.jdbbuttonlast)

É um JButton aperfeiçoado para permitir apontar para o último registro de um conjunto de registros trazidos do banco de dados por uma consulta.

JDBButtonNew

(lib.jdb.control.jdbbuttonnew)

É um JButton aperfeiçoado para colocar o JDBQuery no estado de inserção.

JDBButtonNext

(lib.jdb.control.jdbbuttonnext)

É 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. JDBButtonPrevious

(lib.jdb.control.jdbbuttonprevious)

É um JButton aperfeiçoado para permitir apontar para o registro anterior de um conjunto de registros trazidos do banco de dados por uma consulta.

JDBButtonRefresh

(lib.jdb.control.jdbbuttonrefresh)

É um JButton aperfeiçoado para permitir executar uma consulta no banco de dados, previamente definida no JDBQuery. JDBButtonSave

(lib.jdb.control.jdbbuttonsave)

É um JButton aperfeiçoado para permitir executar operações de salvar inserções ou alterações de dados.

JDBPanelButton

(lib.jdb.control.jdbpanelbutton)

É um painel contendo todos os JDBButtons.

JDBLableMonitor

(lib.jdb.control.jdblablemonitor)

É um JLabel aperfeiçoado para exibir o estado do JDBQuery. O qual poderá ser um dos seguintes: editing (quando estiver alterando algum registro), inserting (quando estiver inserindo um registro), enabled (quando não estiver em um dos estados anteriores).

JDBCheckBox

(lib.jdb.control.jdbcheckbox)

É um JCheckBox aperfeiçoado para interagir com dados boolean. JDBComboBox

(lib.jdb.control.jdbcombobox)

É um JComboBox aperfeiçoado para interagir com campos determinados de tabelas no banco de dados.

JDBListComboBox

(lib.jdb.control.jdblistcombobox)

É um JComboBox aperfeiçoado para listar dados de uma tabela do banco de dados. JDBLookUpComboBox

(lib.jdb.control.jdblookupcombobox)

É um JComboBox aperfeiçoado para listar dados de uma tabela e permitir alterar ou inserir esses dados em uma outra tabela. Esse componente permite implementar relacionamentos entre tabelas.

JDBLookUpField

(lib.jdb.control.jdblookupfield)

Adiciona um campo de lookup a um JDBTable. Realiza funcionalidade semelhante ao JDBLookUpComboBox. No entanto, faz isso no interior de uma célula do JDBTable.

JDBTable

(lib.jdb.control.jdbtable)

É um JTable aperfeiçoado para listar dados de uma consulta ao banco de dados e também permitir alterações ou inserções de novos registros.

JDBTextArea

(lib.jdb.control.jdbtextarea)

É um JTextArea aperfeiçoado para possibilitar a interação com campos do tipo text.

JDBTextField

(lib.jdb.control.jdbtextfield)

É um JTextField aperfeiçoado para possibilitar a interação com campos de tabelas.

JDBImage

(lib.jdb.control.jdbimage)

Permite exibir imagens armazenadas em campos to tipo BLOB.

(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); 42

jDBQuery.setSQL("SELECT * FROM CadastroVeiculo ORDER BY 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.

(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.

(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.

Referências

Documentos relacionados

Posteriormente, em Junho de 1999, ingressei no grupo Efacec, onde fui responsável pela elaboração de projetos e propostas para a construção de Estações de Tratamento

Os doentes paliativos idosos que permanecem nas instituições privadas são encaminhados pelos hospitais em que estavam ou internados pelos próprios familiares

- Se o estagiário, ou alguém com contacto direto, tiver sintomas sugestivos de infeção respiratória (febre, tosse, expetoração e/ou falta de ar) NÃO DEVE frequentar

Desde logo, a nossa compreensão e interpretação da importância funcional e ritual das lamentações públicas das carpideiras e dos carpideiros egípcios é sublinhada pelo

Dessa maneira, os resultados desta tese são uma síntese que propõe o uso de índices não convencionais de conforto térmico, utilizando o Índice de Temperatura de Globo Negro e

Atualmente os currículos em ensino de ciências sinalizam que os conteúdos difundidos em sala de aula devem proporcionar ao educando o desenvolvimento de competências e habilidades

4 RESULTADOS E DISCUSSÃO 4.1 Caracterização da cobertura florestal e da biodiversidade vegetal no entorno dos cultivos de tomate na região de Apiaí-SP a Módulos

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição