Vous êtes sur la page 1sur 15

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 cientfica
realmente impressionante. Desde o seu lanamento em 1995, ela teve adeso
mais rpida que qualquer outra linguagem de programao 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 eletrnicos
que pudessem se comunicar facilmente uns com os outros. Como o mercado
desses dispositivos, para consumidores finais, no se desenvolvia to
rapidamente como a Sun havia previsto, o projeto Gree no obteve o sucesso
esperado e a linguagem Java quase sucumbiu ao desuso. No entanto, surgia
algo novo no mundo da informtica que mudaria o comportamento do planeta,
a Internet. Com a criao, em 1993, do primeiro web browser e das pginas
HTML estticas, a Sun vislumbrou a possibilidade de aplicar Java ao
desenvolvimento de pginas web dinmicas. Tal dinamismo foi possvel 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 programao de propsito geral
2

que juntamente com suas ferramentas para desenvolvimento e execuo de
software, considerada, atualmente, como uma plataforma de computao.


1. Java Web x Desktop

H muitos anos Java ganha espao no desenvolvimento de aplicaes
web. Essa inclinao para programao Internet no caracterstica particular
dos desenvolvedores Java, mas sim uma tendncia praticada pela comunidade
de desenvolvedores de software do mundo inteiro, inclusive com a migrao de
sistemas desktop para plataforma web. Tal escolha se justifica, em grande
parte, pela facilidade de distribuio dos sistemas web: muito simples
distribuir uma aplicao Internet, uma vez que ela tenha sido disponibilizada
em rede, por meio de um servidor web, basta acess-la atravs 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 reduo expressiva nos custos. Tal facilidade de
distribuio tornou-se tambm disponvel para sistemas desktop. Atualmente
possvel instalar apenas uma cpia do software desktop em um servidor de
aplicaes e torn-la disponvel atravs de um endereo 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 utilizao de Java para programao web,
sua aplicao no desenvolvimento desktop no conseguia ganhar fora, nos
primeiros anos aps o lanamento da linguagem. Desconsiderando a tendncia
de desenvolver tudo em tecnologia web, h dois principais motivos que fizeram
com que o uso de Java para programao desktop fosse atrasado:

1) Problemas de desempenho: Java reconhecidamente mais lenta que
linguagens de programao compiladas. A principal causa da reduo
no desempenho a natureza interpretativa da execuo de programas
Java pela JVM (Java Virtual Machine). Outro fator considervel que
Java no 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 so inerentes garantia de sua portabilidade entre diferentes
plataformas de hardware e SO. Porm, a reduo de desempenho foi
superada atravs do aperfeioamento de Java, nas verses
subsequentes; e, pelo advento de computadores mais rpidos que no
so mais afetados pelo atraso causado na interpretao dos bytecodes
do cdigo Java na JVM.

2) Improdutividade no desenho de telas para programas desktop: no
havia ferramentas para auxiliar os desenvolvedores na criao de telas
desktop. Isso tornava a programao bastante improdutiva. Esse
problema tambm foi resolvido com o advento de IDE (Integrated
Development Environment) que possibilitam ao desenvolvedor construir
a interface grfica de sistemas desktop sem a necessidade de escrever
cdigo. Ou seja, todo trabalho pesado feito pelo IDE. Atualmente dois
IDE se destacam: o Netbeans (NETBEANS, 2010) e o Eclipse
(ECLIPSE, 2010), nesse ltimo necessrio instalar plugins que
adicionam a funcionalidade de desenho de telas desktop.

A tendncia da programao web gerou um certo modismo que ganhou
mais e mais adeptos despreocupados em analisar as vantagens, desvantagens
e reais necessidades de utilizao de tecnologias web em detrimento de
desktop. Isso causou as migraes desenfreadas de aplicaes desktop para
web. Entretanto, h cerca de alguns anos a comunidade comeou a perceber
que aplicativos web podem sofrer muitas limitaes, por exemplo, reduo no
desempenho, usabilidade, segurana, etc. Outra questo desfavorvel est
relacionada necessidade de construo de GUI (Graphical User Interface)
cada vez mais complexas; tal tarefa pode ser extremamente trabalhosa e
improdutiva, alm de gerar cdigo difcil de ser mantido e aplicativos com
interfaces grficas de qualidade inferior. Nesse sentido, surge uma viso
racional que preza por aplicar determinada tecnologia em conformidade com as
reais necessidades. Assim, atenes comeam a se voltar para produo de
4

idias relacionadas programao desktop. Mas, como tudo na informtica
ocorre muito rpido, o tempo da moda web foi longo e o mundo Java carece de
avanos na programao desktop.


2. Persistncia em Bancos de Dados com Java

Existem muitas alternativas para persistncia de dados de programas
Java em bancos de dados relacionais e objeto-relacionais. Mas todas elas tm
como base a API JDBC (Java DataBase Connectivity).
Programar diretamente com JDBC possibilita desenvolver cdigo
perfeitamente ajustado s caractersticas do SGBD (Sistema de
Gerenciamento de Banco de Dados) no qual persistem os dados da aplicao.
Isso garante aumento expressivo no desempenho do sistema. Entretanto,
desenvolver dessa maneira significa escrever muitas linhas de cdigo,
responsveis apenas pela persistncia dos dados, as quais ficam misturadas
lgica do negcio. Essa estratgia pode se refletir em menor inteligibilidade do
cdigo e maior esforo para escrev-lo. Isso pode gerar vrios aspectos
indesejveis de engenharia de software como, por exemplo, menor
produtividade; maior tempo de desenvolvimento; maiores custos; dificuldades
de manutenabilidade, interoperabilidade, portabilidade e reutilizao.
A API JDBC ocupa o nvel fundamental de persistncia 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 cdigo dessa maneira pode resultar em sistemas perfeitamente
coerentes com o paradigma da programao OO e com os aspectos desejveis
de engenharia de software, j citados anteriormente. No entanto, o preo a ser
pago pode ser bastante caro. Sendo essa uma das formas de manipulao de
5

dados mais complexas, ela termina por inserir completa infra-estrutura de
persistncia aplicao. Algo indesejvel quando se est interessado em
desenvolver sistemas pequenos e de mdio porte. Para trabalhar com um
framework ORM pode ser necessrio lidar com regras especficas e, algumas
vezes, no padronizadas, por exemplo, linguagens especficas para consulta
de dados.
No contexto da persistncia de dados possvel observar uma lacuna,
na qual o desenvolvimento de pequenos e mdios 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 aplicao que est
sendo desenvolvida.


3. JDB (Java Desktop Basis)

Diante da carncia de idias voltadas para programao Java desktop e
da lacuna encontrada na persistncia desses sistemas em bancos de dados
relacionais e objeto-relacionais, torna-se importante produzir tecnologias que
ajudem a mitigar as faltas evidenciadas. Contudo, tais produes devem est
alinhadas s necessidades da mdia dos desenvolvedores de software:
desenvolver de forma produtiva com garantia de manutenabilidade; construir
aplicativos que sejam portveis e interoperveis, a final ningum deseja ficar
preso determinada tecnologia; integrar seus sistemas com componentes GUI
que possam manipular os dados no SGBD sem a necessidade de muitos
esforos de programao, pois de nada adianta possuir uma camada de
persistncia que esteja em conformidade com os bons aspectos de engenharia
de software, se h falta na integrao com componentes visuais; esforos
descomunais podem se concentrar nesse ltimo aspecto.
Perante as necessidades apresentadas ressalta-se a importncia do
Framework JDB como alternativa a ser considerada na persistncia de dados
de aplicaes Java desktop. O JDB foi concebido para atuar de forma genrica
e permitir a interao com SGBD relacionais e objeto-relacionais, exigindo
pouco esforo de programao. Esse Framework faz uso de JDBC, no entanto,
6

livra o desenvolvedor dos aspectos cansativos e repetitivos do uso daquela
API. O JDB tambm estende componentes GUI swing, que proporcionam
perfeita integrao do aplicativo com o SGBD, permitindo que o usurio
interaja, de forma natural, com os dados armazenados no banco de dados.
Tudo isso possvel com pouco esforo de programao e grande reduo na
quantidade de cdigo a ser escrita. Dessa maneira, JDB permite que o
desenvolvedor esteja livre para se concentrar na lgica de domnio de negcio
da aplicao. Com o Framework JDB no h necessidade de seguir regras
especficas, como aquelas impostas pelas pesadas infra-estruturas que se
comprometem a resolver grande variedade de problemas. JDB bastante leve
e permite portabilidade (aplicativos funcionaro em qualquer plataforma de SO
que tenham JVM instalada) e interoperabilidade (podero interagir com
qualquer SGBD relacional ou objeto-relacional que disponibilize driver JDBC).
JDB no depende de IDE, dessa maneira possvel 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 constitudo por classes e componentes JavaBeans
esses componentes so classificados em Essenciais e de Controle. Os
componentes Essenciais so invisveis, ou seja, trabalham em segundo plano
realizando funes bsicas para interao da aplicao com o SGBD. J os de
Controle so componentes visuais para a construo da interface grfica do
usurio. Esses ltimos so extenses dos componentes swing de Java. Para
saber mais sobre JavaBeans voc poder consultar o captulo adicional sobre
o assunto em (DEITEL e DEITEL, 2003).
No contexto do paradigma da programao OO e em engenharia de
software o termo componente de software definido como uma ou mais
classes colaborativas que disponibilizam funcionalidades para os
programadores atravs de interfaces. Os componentes do Framework JDB no
7

definem interfaces, eles so classes construdas conforme a definio de
componentes JavaBeans. Assim, sero representados como classes ou
objetos de classes.
O Framework JDB disponibilizado atravs 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 cdigo fonte do programa. A
Figura 1 representa o diagrama de objetos de uma aplicao de software
usando os componentes Essenciais do Framework JDB. No diagrama so
evidenciadas as dependncias atravs das linhas tracejadas, como pode ser
visto na linha partindo de Aplicao at o objeto do tipo JDBQuery, a qual indica
que Aplicao tem uma referncia para um JDBQuery. Tambm possvel
observar que os objetos do tipo JDBQuery, JDBUpdate, JDBUpdateTransaction e
JDBMetaData dependem do JDBConnection. Essas dependncias sero 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 descries de suas funcionalidades.



Figura 1 Diagrama de objetos dos componentes Essenciais do JDB e suas dependncias.


8

Componente JDB (Pacote) Descrio
JDBConnection
(lib.jdb.connection)
Realizar conexo com o banco de dados.
JDBQuery
(lib.jdb.jdbquery)
Realiza consultas ao banco de dados. Tambm
permite alteraes, inseres e excluses (operaes
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
transaes de bancos de dados.
JDBMetaData
(lib.jdb.jdbmetadata)
Obtm informaes do esquema do banco de dados.
JDBSQLRepository
(lib.jdb.jdbsqlrepository)
Permite associar um caminho de diretrio, no qual
sero armazenadas as declaraes SQL, em formato
texto. Isso evita ter que inserir o SQL no interior do
cdigo da Aplicao. O uso desse componente
opcional.
Tabela 1 Descrio dos componentes Essenciais do JDB.


A Figura 2 apresenta as dependncias entre os componentes de
Controle. possvel perceber que Aplicao tem referncias para todos os
componentes visuais. Tambm possvel verificar que todos os componentes
de Controle tm uma referncia para o componente do tipo JDBQuery. Essa
ltima necessria para que os componentes visuais possam interagir com os
dados no SGBD. A Tabela 2 exibe informaes sobre cada componente de
controle.
Os relacionamentos de dependncia entre os componentes JDB podem
ser configurados atravs de propriedades, na paleta de propriedades de cada
componente no IDE Netbeans ou no prprio cdigo da aplicao atravs de
mtodos set.


9


Figura 2 Diagrama de objetos dos componentes de Controle do JDB e suas dependncias.


Componente JDB (Pacote) Descrio
JDBButtonCancel
(lib.jdb.control.jdbbuttoncancel)
um JButton aperfeioado para permitir o
cancelamento de uma operao de insero
ou alterao.
JDBButtonDelete
(lib.jdb.control.jdbbuttondelete)
um JButton aperfeioado para permitir
excluso de dados.
JDBButtonFirst
(lib.jdb.control.jdbbuttonfirst)
um JButton aperfeioado 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 aperfeioado 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 aperfeioado para colocar o
JDBQuery no estado de insero.
JDBButtonNext
(lib.jdb.control.jdbbuttonnext)
um JButton aperfeioado para permitir
apontar para o prximo registro de um
conjunto de registros trazidos do banco de
10

dados por uma consulta.
JDBButtonPrevious
(lib.jdb.control.jdbbuttonprevious)
um JButton aperfeioado 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 aperfeioado para permitir
executar uma consulta no banco de dados,
previamente definida no JDBQuery.
JDBButtonSave
(lib.jdb.control.jdbbuttonsave)
um JButton aperfeioado para permitir
executar operaes de salvar inseres ou
alteraes de dados.
JDBPanelButton
(lib.jdb.control.jdbpanelbutton)
um painel contendo todos os
JDBButtons.
JDBLableMonitor
(lib.jdb.control.jdblablemonitor)
um JLabel aperfeioado 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 no estiver em um dos estados
anteriores).
JDBCheckBox
(lib.jdb.control.jdbcheckbox)
um JCheckBox aperfeioado para
interagir com dados boolean.
JDBComboBox
(lib.jdb.control.jdbcombobox)
um JComboBox aperfeioado para
interagir com campos determinados de
tabelas no banco de dados.
JDBListComboBox
(lib.jdb.control.jdblistcombobox)
um JComboBox aperfeioado para listar
dados de uma tabela do banco de dados.
JDBLookUpComboBox
(lib.jdb.control.jdblookupcombobox)
um JComboBox aperfeioado 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 clula do
JDBTable.
JDBTable
(lib.jdb.control.jdbtable)
um JTable aperfeioado para listar dados
de uma consulta ao banco de dados e
tambm permitir alteraes ou inseres de
novos registros.
JDBTextArea
(lib.jdb.control.jdbtextarea)
um JTextArea aperfeioado para
possibilitar a interao com campos do tipo
text.
JDBTextField
(lib.jdb.control.jdbtextfield)
um JTextField aperfeioado para
possibilitar a interao com campos de
tabelas.
JDBImage
(lib.jdb.control.jdbimage)
Permite exibir imagens armazenadas em
campos to tipo BLOB.
Tabela 2 Descrio dos componentes de Controle do JDB.





11

5. Aplicao do JDB sem Utilizao de IDE

Para demonstrar a aplicao 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
demonstrao do uso do JDB em conjunto com o IDE Netbeans o leitor poder
investigar os tutoriais disponveis em http://www.jdbframework.com.
A Listagem 1 mostra o script para criao do banco de dados. A
Listagem 2 apresenta o arquivo CadastroVeiculo.java que contm o cdigo
fonte do programa. No exemplo desse artigo o arquivo CadastroVeiculo.java
ser armazenado no seguinte diretrio
C:\cadastro_veiculo\
O interior desse diretrio tambm dever conter o driver JDBC de conexo com
o banco de dados MySQL, disponvel 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, disponvel 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 Veculos");
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("Veculo");
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 Cdigo fonte do CadastroVeiculo.java


Para gerar os bytecodes do cdigo fonte exibido na Listagem 2
necessrio 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 diretrio e arquivos do seu
programa conter um novo arquivo denominado CadastroVeiculo.class (veja a
Figura 4). Esse arquivo contm os bytecodes do programa Java.



Figura 4 rvore de diretrio e arquivos do software aps gerar bytecodes.


Aps gerar os bytecodes possvel rodar o software. Ento, ainda no
interpretador de comandos necessrio entrar com o comando exibido na
Figura 5.



Figura 5 Rodando o Software.



15

6. Consideraes Finais

importante que leitor esteja ciente que nenhuma tecnologia, mtodo ou
processo deve ser considerado como absoluto. Tudo tem sua aplicabilidade,
portanto, JDB no se impe como a melhor alternativa a resoluo dos
problemas da comunidade de software, mas sim como uma alternativa que se
alinha grande parcela das necessidades do desenvolvimento desktop,
levando em considerao que o grande peso do mercado de software se
concentra nas aplicaes pequenas e de mdio porte.


7. Referncias

DEITEL, H. M.; DEITEL, P. J. Java Como Programar. Traduo de Carlos Arthur
Lang Lisba. 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.