Anda di halaman 1dari 42

Lidando com Software:

Ferramentas Gratuitas para todo o Ciclo de Vida


Este texto apresenta uma coleo de ferramentas a serem usadas por equipes de desenvolvimento de
software. Contemplam as atividades de anlise, gerncia de configurao, comunicao entre membros
de uma equipe e outras. Todas as ferramentas apresentadas esto disponveis para uso gratuito e, em
boa parte, tambm so open source.
Quando o tema codificao, a opo foi Java(tm) e, portanto, espere ferramentas para anlise
de cdigo escrito em Java(tm), em vez de C, C++ ou outra, por exemplo.
O texto deveria auxiliar na escolha de ferramentas para emprego em um projeto. Ou seja, se
voc tem alguma sugesto, ela ser bem-vinda e a comunidade alvo de leitores compreende gerentes de
projetos, analistas, projetistas e outros especalistas.
No se tem a pretenso de apresentar as melhores, nem mesmo ferramentas que foram
avaliadas. Tenha em mente que a definio de ferramentas a serem empregadas em um projeto no
uma tarefa trivial e que este texto no elimina o esforo correspondente.

http://creativecommons.org/
Fbio Nogueira de Lucena
Instituto de Informtica (UFG)
Contato: fabio@inf.ufg.br
Telefone: (62) 3521-1510

ndice
1

Introduo...................................................................................................................................................................................... 3
1.1. Software livre........................................................................................................................................................................ 4
1.2. Principais fontes de software livre........................................................................................................................................ 4
1.3. Sistema Operacional..............................................................................................................................................................5
1.4. Orientao a Objetos............................................................................................................................................................. 6
1.5. Programao.......................................................................................................................................................................... 6
1.6. Linguagem Java..................................................................................................................................................................... 6
1.7. Classificao das ferramentas................................................................................................................................................8

Ferramentas bsicas de programao.............................................................................................................................................8


2.1. Escrevendo cdigo (editores e IDEs).................................................................................................................................... 8
2.2. Compiladores.........................................................................................................................................................................9
2.3. Mquinas Virtuais Java (MVJs) e interpretadores.............................................................................................................. 10

Creative Commons (cc) Fbio Nogueira de Lucena

2.4. Bibliotecas Java............................................................................................................................................................10


2.5. Manipulando bytecode.................................................................................................................................................11
2.6. Algoritmos e estruturas de dados em Java................................................................................................................... 11
2.7. Anlise de cdigo.........................................................................................................................................................11
2.8. Anlise de desempenho, consumo de memria, ......................................................................................................... 12
2.9. Construo, automao e documentao..................................................................................................................... 12
2.10. Testes......................................................................................................................................................................... 13
3

Ferramentas geralmente empregadas....................................................................................................................................15


3.1. Configurao................................................................................................................................................................15
3.2. Logging........................................................................................................................................................................ 15
3.3. Ajuda (help)................................................................................................................................................................. 16
3.4. Interface grfica............................................................................................................................................................16
3.5. Implantao, instalao e execuo de aplicao........................................................................................................ 17

Ferramentas de propsitos especficos................................................................................................................................. 18


4.1. Descompilador............................................................................................................................................................. 18
4.2. Proteo........................................................................................................................................................................18
4.3. Execuo de expresses matemticas.......................................................................................................................... 18
4.4. Execuo de regras.......................................................................................................................................................19
4.5. Gerao de cdigo em tempo de execuo.................................................................................................................. 19
4.6. Desenhando grficos.................................................................................................................................................... 19
4.7. Busca, extrao, localizao ... (de texto em documentos)..........................................................................................19
4.8. Acesso remoto (remoting) e distribuio..................................................................................................................... 20
4.9. Worflow....................................................................................................................................................................... 21

Web.......................................................................................................................................................................................21
5.1. Servios web................................................................................................................................................................ 21
5.2. Navegadores.................................................................................................................................................................21
5.3. Clientes de email/news.................................................................................................................................................22
5.4. Clientes e servidores de FTP........................................................................................................................................22
5.5. Gerenciamento de aplicaes.......................................................................................................................................22
5.6. Servidor Web e continer Servlet/JSP......................................................................................................................... 22
5.7. Cliente HTTP............................................................................................................................................................... 23
5.8. Servidor TCP, testando e monitorando conexes TCP .............................................................................................. 23

Gerenciamento de dados.......................................................................................................................................................23
6.1. Modelagem...................................................................................................................................................................23
6.2. SGBD........................................................................................................................................................................... 24
6.3. Clientes SQL................................................................................................................................................................ 24
6.4. Relatrios..................................................................................................................................................................... 24
6.5. Camada de persistncia................................................................................................................................................ 25

Aplicaes corporativas........................................................................................................................................................25
7.1. Softwares para gesto...................................................................................................................................................25
7.2. Infra-estrutura de desenvolvimento............................................................................................................................. 26
7.3. Internacionalizao...................................................................................................................................................... 26
7.4. Barramentos de servios corporativos (ESB).............................................................................................................. 26
7.5. Camada de apresentao.............................................................................................................................................. 27
7.6. Gerncia de contedo...................................................................................................................................................27
7.7. Armazenando senhas....................................................................................................................................................28
2 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

7.8. Segurana..................................................................................................................................................................... 28
8

XML e servios Web............................................................................................................................................................28


8.1. Serializao.................................................................................................................................................................. 29
8.2. Editores........................................................................................................................................................................ 29
8.3. Processamento..............................................................................................................................................................29
8.4. Emprego de XML em negcios................................................................................................................................... 31

Ferramentas para equipes..................................................................................................................................................... 31


9.1. Processo de software....................................................................................................................................................31
9.2. Modelagem...................................................................................................................................................................32
9.3. Gerncia de requisitos..................................................................................................................................................33
9.4. Gerncia de projeto de software...................................................................................................................................33
9.5. Sistemas de gesto empresarial.................................................................................................................................... 34
9.6. Gerncia de configurao.............................................................................................................................................35
9.7. Acompanhamento de erros, issues, requisitos, ........................................................................................................... 35
9.8. Comunicao................................................................................................................................................................35
9.9. Documentao e sistemas de gerncia de documentos................................................................................................ 36

10

Miscelnea..........................................................................................................................................................................37

11

ndice remissivo................................................................................................................................................................. 38

Introduo

Desenvolvimento de software para a Web um tpico quente. H grande interesse da sociedade pelo
emprego de servios de computao atravs do uso da internet. Satisfazer este interesse exige, alm
das dificuldades que j existiam para o desenvolvimento de software tradicional, outras tpicas para a
construo de software distribudo. Felizmente h uma rica variedade de tecnologias disponveis.
Neste texto Java o ponto de referncia para as tecnologias apresentadas. Esta escolha no
fruto de um resultado obtido com exaustivas anlises e nem um comprometimento definitivo com
Java, nem mesmo a aprovao incondicional do que apresentado. Outras abordagens, tambm
teis, poderiam ser empregadas.
A nfase em Java complementada por outra dirigida para ambientes Linux. Isto no
significa que outros ambientes operacionais no sejam contemplados pelas ferramentas apresentadas.
De fato, boa parte delas possuem implementaes para os mais variados ambientes. Mac OS(tm) e
Windows(r) so alguns deles.
Independente da tecnologia empregada h hoje grande quantidade de ferramentas de suporte,
algumas de domnio pblico ou livres e outras ditas proprietrias. semelhana da opo por
Java e tecnologias associadas, h aqui preferncia por ferramentas no proprietrias sem que isso
represente uma negao da qualidade de produtos proprietrios. Naturalmente, em situaes
especficas, possvel encontrar produtos proprietrios mais adequados do que os de domnio pblico
disponveis e vice-versa.

3 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

Agora j possvel definir o que segue no restante do texto: apresentao de ferramentas


no proprietrias para o desenvolvimento de software para web. Isto deve ser interpretado como
uma fonte onde identificar software de domnio pblico, cujo uso e distribuio assegurado sem a
exigncia de pagamento, mesmo quando so empregadas para fins comercias, voltada para a
construo de software que ser utilizado por usurios atravs de um browser.
H uma considervel quantidade de opes para cada um dos itens identificados. No existe
nenhuma pretenso de apresentar uma lista exaustiva (mesmo que seja possvel) nem a melhor
lista. Cada ferramenta aqui apresentada dever ser avaliada antes de ser empregada para o fim
pretendido. Neste sentido, este texto apenas facilita a tarefa ao apresentar uma compilao de
ferramentas.

1.1. Software livre


Free Software Foundation (http://www.fsf.org), tambm conhecida simplesmente por FSF, talvez seja
a organizao mais conhecida no universo de software livre. A FSF juntamente com o portal
OpenSource (http://www.opensource.org) oferecem informaes indispensveis sobre este modelo de
produo de software. Dvidas surgiro acerca do significado e repercusso de uso de software livre.
O portal OpenBar (http://open-bar.org/) auxilia nestes casos.
Software Freedom (http://www.softwarefreedom.org/) oferece representao legal para a
proteo de software de cdigo livre.

1.2. Principais fontes de software livre


Neste texto so apresentados inmeros softwares voltados para a construo de software. H
excees. Alguns so produtos finais, prontos para o uso por no desenvolvedores.
Os softwares que podem ser construdos com as ferramentas aqui citadas no esto restritos a
um domnio especfico, por exemplo, gesto de empresas ou outro. H, contudo, inclinao para o
desenvolvimento para a web.
As ferramentas citadas, salvo engano, so exclusivamente gratuitas. Ou seja, o uso delas no
exige nenhum tipo pagamento desde que o resultado obtido tambm seja disponibilizado
gratuitamente. Algumas licenas permitem at mesmo a explorao comercial sem nenhum tipo de
pagamento. Isto ter que ser verificado, contudo, ferramenta por ferramenta, atravs da licena
correspondente.
Boa parte das ferramentas, alm de gratuitas, so acompanhadas do cdigo fonte
correspondente, ou seja, so open source, o que assegura a possibilidade de alterao que se fizer
necessria e a independncia tecnolgica em relao ao produto considerado.
Existem muitos tipos de licenas para estes produtos, conforme o pargrafo acima sugere. S
porque o autor abre mo de receber pela sua obra no significa que tudo pode ser feito com o que

4 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

oferecido. Tenha o cuidado de ler a licena disponvel para cada ferramenta que desejar fazer uso.
Abaixo seguem os principais portais pertinentes a software livre. Se est procurando por um
software livre, sugiro que faa busca nestes portais:

Sourceforge.net (http://sourceforge.net)

GNU (http://ww.gnu.org)

Apache Software Foundation (http://www.apache.org)

Open Software (www.opensource.org/)

ObjectWeb (http://www.objectweb.org/)

FreshMeat (http://freshmeat.net/)

Open Source Technology Group, ou OSTG (http://www.ostg.com/) e

Open Source Dir (http://ww.osdir.com)

As opes acima apresentam grande variedade de softwares. Outras inciativas so dirigidas


para softwares especficos. Por exemplo:

Tigris (http://www.tigris.org) visa fornecer um conjunto coerente de softwares livres para

apoiar atividades de engenharia de software.

CodeHaus (http://www.codehaus.org/) outra iniciativa que enfatiza cdigo livre com

nfase em Java, embora o foco no seja to bem definido como no caso anterior. Estas e outras
iniciativas hospedam projetos nos quais os softwares so construdos.

Java-Source (http://java-source.net/) apresenta uma compilao dos mais variados

softwares livres disponveis que oferecem servios a desenvolvedores em Java.


As ferramentas citadas no passaram por uma anlise criteriosa onde supostamente apenas
aquelas que apresentaram bons resultados foram selecionadas. Este simplesmente no o caso. Se
tem a pretenso de us-las, faa por sua prpria conta e risco, caso considere adequado.
Antes de prosseguirmos com o que de fato interessa, vrios pases como o Brasil, por
exemplo, tm demonstrado crescente ateno a software livre, conforme pode ser constado no Portal
do Software Livre do Brasil (http://www.softwarelivre.gov.br/).

1.3. Sistema Operacional


H debates calorosos sobre distribuies do Linux (http://www.linux.org), motivados pela
qualidade cada vez maior da interface grfica oferecida aos usurios, alm da facilidade tambm
crescente de instalao. Aps experimentar algumas delas, mas sem a pretenso de fazer uma anlise,
estou satisfeito com a Suse (http://www.suse.com) e Debian (http://www.debian.org).
OpenBSD (http://www.openbsd.org) reconhecido pela segurana que oferece, alm da
compatibilidade com binrios para Linux e outras plataformas. FreeBSD (http://www.freebsd.org/)
um sistema operacional tambm derivado do BSD.
Solaris(tm) por muito tempo foi um sistema proprietrio e est entre os sistemas operacionais
Unix mais respeitados, mas agora livre: OpenSolaris(tm) (http://www.opensolaris.org/os/).
5 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

H outras iniciativas livres. JNode (http://jnode.sourceforge.net) um sistema operacional feito em


Java. H algumas poucas linhas em Assembly, o emprstimo de um mecanismos de boot do Linux e o
resto todo em Java.
Knoppix (http://www.knoppix.net/) uma distribuio Linux conhecida pelo fato de ser
executado a partir de um CD-ROM, sem que esta distribuio tenha que ser instalada. De fato,
atualmente h vrias distribuies com este recurso.

1.4. Orientao a Objetos


Orientao a objetos, segundo definies clssicas, uma abordagem empregada para perceber e
tratar problemas como uma coleo de objetos, cada um deles uma combinao de dados e
comportamentos. Confronte com a abordagem estruturada (anlise e projeto estruturados de
sistemas). H abundante literatura sobre ambas. Identificar qual a melhor no faz sentido, pois cada
uma possui pontos fortes e fracos em relao a um contexto investigado. Por ser amplamente
comentada, o que diferente de ser empregada corretamente, tanto em ambientes acadmicos e
industriais, o leitor observar que a maioria das ferramentas fornecidas referem-se orientao a
objetos.
As fontes de informaes sobre a tecnologia de orientao a objetos extensa. Uma viso
(http://ww.ootips.org/) e questes freqentes (www.objectfaq.com/oofaq2/) podem ser teis.
H algumas propostas para os iniciantes. Dentre elas, talvez o BlueJ (http://www.bluej.org/)
seja a mais conhecida para aqueles que desejam conhecer a orientao a objetos e, em particular,
atravs de Java. Este aprendizado facilitado pelo livro de Bruce Eckel, Thinking in Java
(http://mindview.net/Books), que pode ser obtido gratuitamente.

1.5. Programao
O que chamado aqui de programao est associado s tarefas realizadas por quem converte
modelos de software em software capaz de ser executado. Implementao e codificao so outros
termos tambm empregados. No inclui um conjunto bem ntido de tarefas, pois abaixo seguem
ferramentas que podem ser classificadas como sendo de fases vizinhas da programao, por exemplo,
projeto detalhado e testes. No h dvidas, contudo, de que tais ferramentas so aquelas que de fato
so utilizadas na construo direta de software.

1.6. Linguagem Java


Especificao da linguagem Java
Modelos de software so imprescindveis em desenvolvimentos atuais, contudo, os benefcios destes
s podero ser usufrudos se convertidos em cdigo. Uma linguagem de programao que oferece

6 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

suporte ao emprego de orientao a objetos, alm de gozar de prestgio no meio acadmico e


industrial a linguagem JavaTM (http://java.sun.com/docs/books/jls/).
No confunda a sugesto JavaTM com um compromisso incondicional. Um software pode
exigir o emprego de vrias linguagens, cada uma delas explorada no que possui de melhor. Convm
ressaltar: o sucesso de um software depende sim do emprego adequado de uma linguagem de
programao, mas depende ainda mais dos resultados da concepo deste software (anlise e projeto).

Aprendendo a programar em Java


H muitos portais destinados ao tema. Voc os encontrar com facilidade. Talvez o mais conhecido
seja o The JavaTM Tutorial (http://java.sun.com/docs/books/tutorial/). Ainda incluo os portais abaixo
como auxiliares e excelentes fontes para consultas rpidas e de referncia. Para aquele que est
realizando os primeiros passos, talvez seja interessante fazer uso de ferramentas que simplifiquem o
contato inicial, em vez de fazer uso de ambientes sofisticados como Eclipse e outros, comentados em
outra parte deste documento. Para estes, sugiro DrJava (http://drjava.org/).
JavaPractices (http://www.javapractices.com/) oferece volumoso conjunto de exemplos,
devidamente explanados. JExamples (http://www.jexamples.com/) uma compilao de exemplos de
ferramentas open source bem conhecidas. Facilita, portanto, o aprendizado atravs de exemplos de
cdigo efetivamente empregado. Exemplos em Java e open-source (http://java-source.net) no faltam.
Uma extensa coleo de exemplos em Java, abrangendo parte significativa e amplamente
empregada da biblioteca Java pode ser encontrada no Almanac Java (http://javaalmanac.com).
Muitos gostam de participar de comunidades, dizem que se sentem estimulados e, se for em
portugus, ainda melhor. Para estes SouJava (https://soujava.dev.java.net/) uma opo.

Mantendo-se informado
Para se manter informado acerca do que de mais relevante ocorre no mundo Java voc dever
consultar JavaRSS (http://www.javarss.com) com freqncia.
Alguns portais so particularmente ties como Java-Channel (http://www.java-channel.org/),
jGuru (http://www.jguru.com), JavaPro (http://www.fawcette.com/javapro/), Java Technology
(http://www-106.ibm.com/developerworks/java/),

Java.Net

(http://www.java.net/),

FTPOnline

(http://www.ftponline.com) e OnJava (http://www.onjava.com/). Voc dever se tornar um usurio


contumaz daquele que mais te agrada.
A linguagem Java atrativa particularmente pelo seu rico conjunto de classes. A
documentao da biblioteca Java pode ser obtida gratuitamente (http://java.sun.com/). Procurar por
toda a biblioteca Java no uma tarefa simples, dado que atualmente mais de 2000 classes esto
disponveis. Adicionando-se a estas um conjunto praticamente infindvel de bibliotecas, temos um
universo onde difcil a localizao de itens relevantes. O portal Jdocs (http://www.jdocs.com) nos
oferece a oportunidade de procurar por classes, mtodos e outros elementos no universo de

7 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

bibliotecas Java. Neste sentido, Kickjava (http://kickjava.com/) uma alternativa.

Evoluo da linguagem Java


Java conta com uma comunidade ativa, conhecida por Java Community Process, ou JCP
(http://www.jcp.org), que responsvel por evolues desta plataforma. Esta comunidade aberta, o
que assegura um progresso slido e no dominado por interesses particulares.

Ferramentas para o desenvolvimento em Java


Este documento apresenta vrias ferramentas para o desenvolvimento de software
empregando Java, alm de outras ferramentas de propsitos gerais. Alguns portais, por outro lado,
esto concentrados especificamente em Java.
Javatools (http://www.javatools.org) voltado para a evoluo das ferramentas de apoio ao
emprego de Java. JavaToolbox (http://javatoolbox.com/) outro portal com propsitos similares.
Estas iniciativas oferecem queles que esto migrando para esta linguagem um atestado de sade
invejvel e a segurana de um futuro a perder de vista respaldado por toda uma comunidade.
H todo um conjunto de ferramentas open source construdas em Java ou para serem
usufrudas atravs de Java. Java Open Source Software (http://java-source.net/) um deles.

1.7. Classificao das ferramentas


Bom seria uma mera listagem das ferramentas aqui apresentadas e que isto no significasse nenhum
problema da perspectiva dos leitores. Na prtica, algum esquema de classificao tem que ser
empregado com o propsito de, pelo menos, facilitar a localizao. Dificilmente isto ser obtido neste
ou em outro texto e que agrade a todos os leitores. Se serve de consolo, tambm no estou satisfeito.

Ferramentas bsicas de programao

2.1. Escrevendo cdigo (editores e IDEs)


Editores
Embora existam muitos ambientes integrados de desenvolvimento, h quem prefira, por exemplo, o
controle e a rapidez oferecida por um simples editor acrescido de alguns servios tpicos. Bluefish
(http://bluefish.openoffice.nl/) e Scite (http://www.scintilla.org/) oferecem, por exemplo, recursos
para edio de arquivos XML, Java, C, C++ e um vasto conjunto de outras linguagens. Tambm
permitem a impresso destes arquivos com linhas numeradas, a sintaxe ressaltada com o emprego
de cores e a gerao de arquivos PDF, entre outras. No mundo GNU editor Emacs
(http://www.gnu.org/software/emacs/). Trata-se de uma opo com considervel conjunto de

8 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

recursos. Muitas vezes o Emacs empregado como ambiente de desenvolvimento por oferecer
mecanismos similares para vrias linguagens como C e Java, entre outras.

Ambientes integrados de desenvolvimento


Edio, compilao, depurao e outras atividades, quando integradas em um ambiente, tornam mais
simples o trabalho do desenvolvedor. O IDE (Integrated Development Environment) baseado no
Eclipse (www.eclipse.org/) oferece estes servios e permite, atravs da disponibilidade de amplo
conjunto de plug-ins (http://www.eclipse.org/community/plugins.html), contemplar outras atividades
tpicas do desenvolvimento de sistemas complexos.

Outro conjunto de plugins, muitos deles

gratuitos, podem ser encontrados em Eclipse Plugin Central (http://www.eclipseplugincentral.com/).


Um IDE concorrente fornecido pela Sun o NetBeans (http://www.netbeans.org).
Ainda h vrios ambientes, embora contando com um nmero menor de ferramentas que
aqueles comentados acima. jEdit (http://www.jedit.org/) apresenta caractersticas que no so
encontradas facilmente mesmo em ambientes proprietrios e considerados de qualidade. Redwood
(http://www.cs.unr.edu/dt/) oferece uma forma creativa de apresentao do cdigo.

2.2. Compiladores
Embora o Eclipse contemple as ferramentas necessrias para a codificao de programas em Java,
inclusive um compilador incremental, h outros servios no inclusos e tambm necessrios, como a
mquina virtual Java e bibliotecas, alm de documentao. Estes podem ser obtidos de um JDK (Java
Development Kit). O JDK (java.sun.com/j2se/) fornecido pela Sun a referncia principal.
O compilador Java fornecido pela IBM, famoso pela eficincia com que produz bytecodes
o Jikes (www-124.ibm.com/developerworks/opensource/jikes/). Ainda mais rpido, talvez o mais
clere deles, o que acompanha o que conhecido pelo Eclipse (http://www.eclipse.org). Entre as
ferramentas GNU tambm se encontra o compilador GCJ (gcc.gnu.org/java/) que, alm de produzir
bytecodes, tambm gera cdigo de mquina nativo, seja diretamente de cdigo em Java ou de
bytecodes.
Java2XML (https://java2xml.dev.java.net/) outro compilador, embora no to comum, que
recebe como entrada cdigo fonte em Java e produz, como sada, documentos XML correspondentes.
A converso tal que a volta, ou seja, a obteno do cdigo fonte a partir do documento XML
anteriormente, possvel sem nenhuma perda de informao.
Nos pargrafos anteriores foram apresentados compiladores com tarefas muito bem definidas.
Algumas aplicaes beneficiam-se de servios tpicos de compiladores. Por exemplo, processar um
arquivo de entrada pode exigir a disponibilidade de um analisador lxico e outro sinttico.
Reconhecedores, compiladores e tradutores contendo aes em Java podem ser construdos com o
apoio de ANTLR (http://www.antlr.org/). Esta framework oferece suporte para a construo de
rvores sintticas e percurso nestas rvores. H vrias gramticas disponveis para o emprego de
9 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

ANTLR, inclusive para a linguagem Java 5.0. Ou seja, ao menos em teoria fcil escrever cdigo
que recebe como entrada um arquivo em Java e produz como sada, por exemplo, a razo entre a
quantidade de linhas de comentrios e o nmero de sentenas.
Analisadores sintticos, por exemplo, podem ser produzidos para tratar um determinado
arquivo

de

entrada

pelo

custo

da

especificao

do

formato

deste

arquivo.

JavaCC

(https://javacc.dev.java.net/) uma das ferramentas mais conhecidas para o desenvolvimento de


analisadores sintticos em Java.

2.3. Mquinas Virtuais Java (MVJs) e interpretadores


Cdigo em bytecodes so produzidos para serem executados por mquinas Java. Dado que so poucas
as mquinas que compreendem bytecodes, mais provvel o emprego de uma mquina virtual para
executar bytecodes. O software que implementa uma mquina virtual conhecido por Mquina
Virtual Java (MVJ). H disponibilidade de MVJs para as mais vrias plataformas de hardware e
software, o que assegura a significativa portabilidade de cdigo desenvolvido em Java.
A MVJ fornecida pela Sun(tm) como parte do JDK (http://java.sun.com) talvez seja a mais
empregada. JRockit (http://dev2dev.bea.com/wljrockit/) uma referncia quando desempenho
considerado. Kaffe (http://www.kaffe.org), Jikes (http://jikesrvm.sourceforge.net/), SableVM
(http://sablevm.org/) so algumas do vasto conjunto de opes. Esta lista de MVJ pode ser estendida
com muitas outras e no significa uma reprovao daquelas no citadas.
Criar scripts em Java em um ambiente leve o propsito de BeanShell
(http://www.beanshell.org/). Pela facilidade com que sentenas podem ser executadas, este ambiente
pode servir at mesmo para o aprendizado ou experimentao de recursos oferecidos pela biblioteca
Java. Cdigo fonte em Java tambm pode ser diretamente executado pela ferramenta DynamicJava
(http://koala.ilog.fr/djava/).

2.4. Bibliotecas Java


Mquinas virtuais geralmente so acompanhadas de implementaes da biblioteca padro Java.
Outras bibliotecas apresentam caractersticas peculiares e servios particulares. Algumas delas so
comentadas nesta seo. H de se destacar, contudo, projetos de iniciativa ampla, abordandos vrios
objetivos que do origem a vrias bibliotecas. Talvez o principal deles seja o Jakarta Commons
(http://jakarta.apache.org/commons/). Neste projeto voc encontrar muitas bibliotecas que oferecem
servios variados e de grande utilidade.

Biblioteca padro
Javolution (http://javolution.org/) oferece implementao para sistemas embutidos e de
tempo real para vrias classes da biblioteca Java.

10 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

GNU Classpath (http://www.gnu.org/software/classpath/) uma implementao GPL das


principais bibliotecas de classe para Java.

Unidades de medida
Sistemas fazem uso de conjunto varivel de unidades de medida como o metro, o litro e muitas
outras. A JSR 275 (http://jcp.org/en/jsr/detail?id=275) especifica pacotes para a modelagem e uso de
unidades de medidas. Esta JSR substitui a JSR-108. Interessados em unidades, um amplo conjunto
delas, e as relaes entre elas podem consultar o portal SI (http://physics.nist.gov/cuu/Units/). Neste
sentido, contudo, a referncia mais respeitada sobre unidades de medidas e as frmulas envolvendo
elas o padro ISO 31-0. Infelizmente este padro no pblico.
JScience (http://jscience.org/) oferece uma implementao da JSR-108.

2.5. Criando e manipulando bytecode em tempo de execuo


ASM (http://asm.objectweb.org/) permite a gerao de classes dinamicamente, diretamente em
bytecodes. BCEL (http://jakarta.apache.org/bcel/) e Serp (http://serp.sourceforge.net/), juntamente
com Javassist (http://www.csg.is.titech.ac.jp/~chiba/javassist/) formam as opes mais conhecidas.

2.6. Algoritmos e estruturas de dados em Java


JDSL (http://www.jdsl.org) oferece extensa biblioteca contendo a implementao de vrios
algoritmos e estraturas de dados em Java. Algoritmos que trabalham sobre grafos esto disponveis
em JgraphT (http://jgrapht.sourceforge.net/).

2.7. Anlise de cdigo


JavaNCSS (http://www.kclee.de/clemens/java/javancss/) uma opo. Mtricas, dependncias entre
pacotes e vrias outras informaes teis para se assegurar a qualidade de software produzido podem
ser obtidas com Dependency Finder (http://depfind.sourceforge.net/).
Anlise de cdigo exige, principalmente quando a base de cdigo extensa, algum
mecanismo

para

consulta

eficiente

ao

cdigo,

como

oferecido

por

CodeCrawler

(http://codecrawler.sourceforge.net/). O restante desta seo, contudo, apresenta outras ferramentas


que fornecem informaes relevantes da perspectiva de qualidade de software.
Uma importante fonte de informao sobre a qualidade de cdigo pode ser obtida atravs da
aplicao de mtricas. Para a linguagem de programao Java e cdigo orientado a objetos, a
ferramenta Metrics (metrics.sourceforge.net/) oferece um rico conjunto de mtricas. Em particular,
esta ferramenta um plug-in para o Eclipse. Outra ferramenta disponvel JMetric
(http://www.it.swin.edu.au/projects/jmetric/products/jmetric/), 100% Java.
A agncia espacial americana a responsvel pelo desenvolvimento da ferramenta Java
11 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

PathFinder (http://javapathfinder.sourceforge.net/) que inclui uma MVJ devidamente modificada para


capturar erros em programas Java e, em particular, aqueles decorrentes de programao concorrente.
Ferramentas como FindBugs (http://findbugs.sourceforge.net) visam localizar possveis erros
assim como PMD (http://pmd.sourceforge.net).
Auxiliar uma equipe a seguir um padro de codificao alm de alertar o desenvolvedor de
prticas inadequadas uma tarefa que bem realizada e altamente configurvel pela ferramenta
Checkstyle (http://checkstyle.sourceforge.net/).
Inspees e revises de cdigo so prticas cuja literatura sugere apresentar bons resultados.
A existncia de ferramentas que possam auxiliar ou at mesmo automatizar esta tarefa, em
conseqncia, desejvel. Hammurapi (http://www.hammurapi.org) uma delas, alm de oferecer
vrias mtricas, inclusive atravs do emprego de grficos. QJ-Pro (http:qjpro.sf.net) oferece servios
similares.
A reviso de cdigo tambm uma excelente ferramenta para melhorar a qualidade de um
software. Codestriker (http://codestriker.sourceforge.net) uma ferramenta que auxilia a tarefa de
revisores.

2.8. Anlise de desempenho, consumo de memria, ...


Para se analisar o desempenho de uma aplicao em Java podem ser utilizados os recursos da
mquina virtual Java da Sun(tm) atravs da opo -Xprof ou ferramenta jconsole que tambm
acompanha o JDK. H, contudo, vrias outras ferramentas disponveis com propsitos similares.
Quando se deseja identificar quais as partes de uma aplicao que mais consomem CPU o
Eclipse Profiler Plug-in (http://eclipsecolorer.sourceforge.net/index_profiler.html) uma opo.
JRat (http://jrat.sourceforge.net/) e EJP (http://ejp.sourceforge.net/) so propostas similares a
Cougaar Profiler (http://cougaar.org/projects/profiler/).
JMemProf (http://oss.metaparadigm.com/jmemprof/) so algumas das opes enfatiza o
consumo de memria, assim como JMP (http://www.khelekore.org/jmp/), que permite acompanhar o
consumo de memria por objeto.

2.9. Construo, automao e documentao


A trade gerncia de verses, testes de unidade e automao so elementos relevantes para o que
conhecido por eXtreme Programming.
Destes elementos, a automao visa acompanhar continuamente os resultados das
atualizaes feitas por desenvolvedores. Ou seja, necessrio realizar de forma repetida, conforme a
freqncia desejada, um conjunto de passos que permita, ao resultado deles, obter uma viso do
progresso de uma equipe. Uma ferramenta que oferece este recurso o CruiseControl
(http://cruisecontrol.sf.net). Esta ferramenta bem simples, apenas dispara a execuo de tarefas em

12 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

instantes predefinidos.
O emprego do CruiseControl geralmente acompanhado do emprego de vrias outras
ferramentas que oferecem, por exemplo, a possibilidade da gerao de cdigo executvel
automaticamente atravs de uma descrio dos elementos de um software. Para desenvolvedores
Java, a ferramenta de construo nmero um

Ant (http://ant.apache.org). Antelope

(http://antelope.tigris.org) uma interface grfica para o Ant. A visualizao das dependncias em


um arquivo de entrada (build.xml) do Ant pode ser feita pelo Grand (http://www.ggtools.net/grand/).
Outra ferramenta cujo emprego crescente, talvez pelo rico conjunto de recursos que oferece
Maven (http://maven.apache.org). Usurios do Eclipse beneficiam-se dos plugins Mevenide
(http://mevenide.codehaus.org/) e Maven Workshop (http://www.binamics.com/mavenworkshop/).
Ivy (http://www.jayasoft.fr/org/modules/ivy/) um gerenciador de dependncias. Ivy permite
gerenciar

dependncias

entre

componentes

que,

quando

no

disponveis,

so

obtidos

automaticamente.
Javadoc (http://java.sun.com/j2se/javadoc/) comumente empregada para a documentao de
cdigo em Java. Doxigen (http://www.stack.nl/~dimitri/doxygen/) um sistema de documentao que
permite a gerao de arquivos em formato como Latex, RTF e outros, a partir de documentao
fornecida em cdigo fonte em vrias linguagens de programao, inclusive Java.

2.10. Testes
Depurao de cdigo (debugging) perdeu espao para a produo de casos de testes. Isto no
deve significar a inexistncia de ferramentas de excelente qualidade para a depurao de cdigo nem
que esta uma prtica a ser banida.
Desenvolvimento baseado em testes (Test-Driven Development), tambm conhecido pela
sigla em ingls TDD, defende o emprego de testes freqentes, o que s pode ser viabilizado com o
emprego de ferramentas adequadas. De fato, TDD sugere que testes sejam criados antes do cdigo
que estes visam testar. TestDriven (http://www.testdriven.com) fornece detalhes.

Depurao
Praticamente todo ambiente integrado de desenvolvimento acompanhado de um depurador
e, portanto, apresentada um outro tipo de ferramenta que pode ser empregada com esta finalidade.
JOI (http://www.programmers-friend.org/JOI/) permite investigar o estado de um objeto Java em
determinado ponto da execuo de um programa.

Testes
A famosa ferramenta para testes de unidade conhecida por JUnit (http://www.junit.org)
tambm possui portal com extensa documentao sobre o assunto, bem como a ferramenta
correspondente.

13 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

Java tambm conta com JMock (http://www.jmock.org), til para a criao de objetos ocos
com o propsito de facilitar a realizao de testes quando componentes no disponveis ou que no se
tem o interesse de serem usados no processo de teste, podem ser simulados por outros, desenvolvidos
exclusivamente com esta finalidade com o apoio desta ferramenta. Programadores ainda se
beneficiam de MockObject (http://www.mockobjects.com) e EasyMock (http://www.easymock.org/).
TestGen4j (http://www.spikesource.com/projects/testgen4j/) uma ferramenta que visa a
gerao automtica de casos de teste em Java.
Testes de unidade tambm precisam ser produzidos com qualidade. Particularmente em
projetos maiores necessrio identificar quanto do cdigo que est sendo desenvolvido testado
pelos testes de unidade, o que conhecido por cobertura. H vrias ferramentas que fornecem estas
informaes, seja em arquivos txt, XML e at pginas com agradvel aparncia. Entre elas: Cobertura
(http://cobertura.sourceforge.net), NoUnit (http://nounit.sf.net), Quilt (http://quilt.sf.net) e EMMA
(http://emma.sf.net). Existem opes como InsectJ (http://insectj.sf.net).
medida que um software cresce, aumenta tambm o conjunto de cenrios de teste e, com
estes, a dificuldade de gerenci-los. Testlink (http://testlink.sf.net) visa gerenciar via web casos de
teste.
Embora no seja exatamente uma ferramenta para cobertura de testes de unidade, Jester
(http://jester.sourceforge.net) encontra cdigo que no coberto por casos de testes. Merece destaque
porque cdigo considerado pelos casos de teste, ou seja, cdigo que as ferramentas de cobertura
fornecidas acima consideram como testados podem ter sido apenas executados e no realmente
testados.
Outras ferramentas correlatas podem ser teis. JUnitPerf (http://www.clarkware.com), por
exemplo, permite obter informaes sobre desempenho dos testes de unidade.

Testes de aceitao
Enquanto as ferramentas acima esto direcionadas para equipes de desenvolvimento, outras
como Jamelon (http://jameleon.sourceforge.net/) podem ser empregadas para a documentao,
manuteno e execuo de testes de aceitao. Fitnesse (http://www.fitnesse.org) uma alternativa
que oferece um portal web (wiki) passvel de ser editado por usurios finais que fazem isto com a
finalidade de acrescentar casos de teste e, automaticamente, verificar os resultados oferecidos pela
aplicao.

Testes para tecnologias especficas


HttpUnit (http://httpunit.sourceforge.net/) emula partes relevantes do comportamento de um
browser e, dessa forma, cria a possibilidade de realizao de testes sem interveno humana. Testar
aplicaes web que fazem uso de HTTP pode exigir o emprego de ferramenta similar WebInject
(http://www.webinject.org/). Os testes, nesta ferramenta, so escritos em XML. Cada arquivo XML

14 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

ento executado e a aplicao correspondente, ao fornecer as respostas, validada conforme o


contedo em XML. Jwebunit (http://jwebunit.sourceforge.net) uma outra opo. Cactus
(http://jakarta.apache.org/cactus/) uma alternativa geralmente sugerida por desenvolvedores para
testes de cdigo de aplicaes web (lado do servidor).
JMeter (http://jakarta.apache.org/jmeter/) pode ser empregada com propsitos similares,
embora seja particularmente indicada para testes de carga.
Para assegurar que um documento XML apresenta uma determinada estrutura pode ser
empregado o XMLUnit (http://xmlunit.sourceforge.net).
Aplicaes web trocam requisies via HTTP entre os seus componentes. Antater
(http://aft.sf.net) visa auxiliar a execuo de testes deste tipo de aplicao atravs do emprego de Ant
(13).
SocketTest (http://sockettest.sourceforge.net/) oferece recursos para testes de conexes
socketes.
H tambm ferramentas como JFCUnit (http://jfcunit.sourceforge.net/) voltada para o
desenvolvimento de casos de teste para interfaces grficas baseadas no Swing (16).

Ferramentas geralmente empregadas

3.1. Configurao
Aplicaes oferecem, em geral, um conjunto de servios que podem ser configurados conforme o
hardware utilizado, o SGBD empregado ou at mesmo as preferncias pessoais dos usurios. JConfig
(http://www.jconfig.org) uma ferramenta que pode ser empregada com este propsito.
H crescente emprego do que conhecido por IoC (Inversion of Control) ou ainda
Dependency Injection para a configurao de aplicaes Java. Ao se empregar este padro de projeto,
um objeto no mais precisa gerenciar as dependncias que possui de outros objetos. Em vez disso, as
dependncias so configuradas e fornecidas ao objeto dependente por um elemento externo, o
continer.
PicoConteiner (http://www.picocontainer.org/) e Spring (http://www.springframework.org)
esto entre os contineres mais comentados para esta tarefa.
Alternativas: Excalibur (http://excalibur.apache.org/), Gravity (https://gravity.dev.java.net/) e
Jice (http://jicengine.sourceforge.net/), por exemplo.

3.2. Logging
Quanto mais sofisticado um software, maiores so as necessidades de se acompanhar a
correspondente execuo. Esta tarefa geralmente acompanhada pelo emprego do que conhecido

15 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

por logging, que pode ser definido como o processo de armazenamento de informaes sobre eventos
relevantes. Em Java h vrias opes para logging. Uma delas oficial, ou seja, oferecida atravs
do pacote java.util.logging.
Provavelmente a mais empregada e considerada por muitos a melhor pelo conjunto de
facilitadas que oferece Log4j (http://logging.apache.org/log4j). Para esta existem ferramentas
sofisticadas como ChainSaw (http://logging.apache.org/log4j/docs/chainsaw.html), que permite
visualizar registros de logging produzidos pelo Log4j.
jLo (http://jlo.jzonic.org/) e Simple Log (https://simple-log.dev.java.net/) so opes. Cada
uma delas oferece, em geral, benefcio no contido em outras, tornando o conjunto nico. Em
conseqncia,

surgiram

vrias

iniciativas

para

produzir

uma

interface

nica.

SLF4J

(http://www.slf4j.org/) talvez seja a mais conhecida. O objetivo empregar o padro de projeto


Faade para encapsular o acesso a vrias ferramentas que oferecem servios de logging.

3.3. Ajuda (help)


A produo de material de apoio a usurios de sistemas de informao no uma tarefa
simples. JavaHelp (http://java.sun.com/products/javahelp/) um sistema com o propsito de divulgar
informaes de ajuda independente de plataforma. Documentao via web uma das opes de
JavaHelp. Uma alternativa relativamente recente DocBook (http://www.docbook.org/), cujo
contedo fornecido em XML e do qual podem ser gerados os formatos HTML, RTF e outros.

3.4. Interface grfica


Toolkits e bibliotecas de componentes
Duas bibliotecas destacam-se na construo de interfaces: Swing (http://java.sun.com/products/jfc/) e
SWT. SWT parte do ambiente Eclipse (http://www.eclipse.org). JFC/Swing conta com a
comunidade JavaDesktop (http://community.java.net/javadesktop/), atravs da qual ferramentas,
tcnicas, novidades e outros servios teis so fornecidos aos interessados, alm de farta literatura.
H tambm bibliotecas que visam tornar o look and feel de interfaces grficas desenvolvidas
em Java mais atraente. Jgoodies (https://jgoodies.dev.java.net/) uma delas.
Alguns recursos no fazem parte do Swing, como por exemplo um componente para seleo
de datas. Felizmente h opes. NachoCalendar (http://nachocalendar.sourceforge.net/), Jcalendar
(http://toedter.com/en/jcalendar/) e MSeries (http://web.ukonline.co.uk/mseries/) so exemplos.

Construtores de interfaces
Aplicaes em Java podem possuir interfaces grficas sofisticadas, cujo desenvolvimento
considerado, em geral, oneroso. Para amenizar este problema existem ferramentas conhecidas por
construtores de interfaces (ou interface builders). Comumente estas ferramentas permitem que o
16 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

usurio atravs de recursos como arrastar-e-soltar realize boa parte do projeto de interao, cujo
cdigo correspondente automaticamente gerado. Menus, barras de ferramentas e caixas de dilogo
geralmente podem ser desenvolvidas sem a necessidade de se escrever cdigo quando estas
ferramentas so empregadas.
ThinLet (http://thinlet.sourceforge.net)

e WiSer (https://wiser.dev.java.net/) so opes.

XAMJ (http://html.xamjwg.org/) uma aplicao de XML usada para descrever interfaces grficas
para Java e executada em browser prprio. Se isto no uma restrio, ento a opo fornecida pelo
Mozilla, o XUL (http://www.mozilla.org/projects/xul/) deve ser considerada para a criao de
interfaces ricas.
Vrias outras ferramentas oferecem servios para a construo de interfaces grficas usando
o Swing: NetBeans (http://www.netbeans.org), Vep Eclipse Plugin (http://www.eclipse.org/vep/) e
XMLGUI (http://xmlgui.tigris.org/). JNDC (https://jdnc.dev.java.net/) visa reduzir o esforo e a
habilidade necessrios para a construo de interfaces grficas ricas em elementos de interao.
Tambm h abordagens como XUI (http://xui.sourceforge.net/) que combina Java e XML para tornar
o desenvolvimento de interfaces grficas mais eficiente. Propsito similar tambm oferecido por
Hierarchy (http://chrriis.brainlex.com/projects/uihierarchy/) e Gui4j (http://www.gui4j.org/) so
opes.
Aqueles interessados em fazer uso de interfaces usando o Swing atravs de um continer web
podem fazer uso de SwingWeb (http://swingweb.sourceforge.net/).
OpenLaszlo (http://www.openlaszlo.org/) oferece recursos grficos de aplicaes desktop,
similares quelas discutidas acima atravs de um browser convencional.
FormLayoutMaker (http://formlayoutmaker.sourceforge.net/) para aqueles que desejam
criar interfaces grficas em Java e ainda no encontraram uma forma elegante de organizar o leiaute
de formulrios. Abeille (https://abeille.dev.java.net/) uma alternativa para organizao de
formulrios.

Visualizao
A visualizao

de grafos contemplada

por respeitadas

ferramentas

como Graphviz

(http://www.graphviz.org/) e JGraph (http://www.jgraph.com/).

3.5. Implantao, instalao e execuo de aplicao


IzPack (http://www.izforge.com/izpack/) um instalador de aplicaes para a plataforma
Java. O usurio do IzPack deve possuir uma mquina virtual Java devidamente instalada. H ainda
NSIS (http://nsis.sourceforge.net) para Windows e EPM (http://www.easysw.com/epm) para Linux.
Commons Launcher (http://jakarta.apache.org/commons/launcher/) no exatamente uma
ferramenta para instalao, mas para disparar a execuo de uma aplicao Java devidamente

17 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

preparada para tratar as diferenas de ambientes onde a aplicao Java ser executada. Commons
Launcher torna desnecessrio o uso de extensos e complexos scripts que algumas vezes so
necessrios para iniciar a execuo de uma classe Java.
Launch4j (http://launch4j.sourceforge.net/) permite que um arquivo .jar seja executado em
ambiente Linux ou Windows como se fosse uma aplicao nativa de um destes sistemas.
One-JAR (http://one-jar.sourceforge.net/) oferece servios para implantao de uma
aplicao Java atravs de um nico arquivo JAR.
JWizard (http://flib.sourceforge.net/JWizard/doc/) tambm pode ser empregado para gerar
instaladores.

Ferramentas de propsitos especficos

4.1. Descompilador
H vrias ferramentas para obter cdigo fonte em Java a partir de cdigo em bytecodes.
JODE (http://jode.sourceforge.net/) e JreversePRO (http://jrevpro.sourceforge.net/) so algumas
delas. Jad (http://kpdus.tripod.com/jad.html), HomeBrew (http://www.pdr.cx/projects/hbd/), Mocha
(http://www.brouhaha.com/~eric/software/mocha/) e CavaJ (http://www.bysoft.se/sureshot/cavaj/)
so opes.
Observe que ferramentas para proteo de cdigo em Java, veja seo seguinte, visam reduzir
a qualidade do processo de descompilao.

4.2. Proteo
Resultados satisfatrios da engenharia reversa, obteno de cdigo fonte a partirde cdigo em
bytecodes, preocupam alguns. ProGuard (http://proguard.sourceforge.net) um obfuscador, o que
torna praticamente ininteligvel para seres humanos o resultado do emprego de ferramentas como
decompiladores, comentados acima. A empresa yWorks oferece o yGuard (http://www.yworks.com/).

4.3. Execuo de expresses matemticas


A avaliao de expresses matemticas um requisito comum em vrios sistemas. Muitos
deles fazem uso de expresses escritas em cdigo e, quando as expresses devem ser alteradas,
cdigo deve ser alterado, recompilado e assim por diante, dificultanto a manuteno. Aplicaes
mais dinmicas, contudo, precisam da flexibilidade oferecida quando a expresso s conhecida em
tempo de execuo, como as planilhas de clculo podem comprovar.
JEP (https://sourceforge.net/projects/jep/) um analisador e avaliador de expresses
matemticas escrito em Java. Java Expression Library ou JEL (http://galaxy.fzu.cz/JEL/) uma
18 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

alternativa para expresses de uma nica linha. BeanShell (http://www.beanshell.org/) tambm


possui um interpretador que pode ser utilizado com a mesma finalidade.

4.4. Execuo de regras


Drools (http://drools.org/) uma implementao totalmente compatvel com a mquina de
regras JSR-94. JSRs podem ser consultados no portal da comunidade Java ou JCP
(http://www.jcp.org/). O desenvolvimento de aplicaes baseadas em regras ou aplicaes de regras
de negcio conta com informaes disponveis pela comunidade Javarules.org (http://javarules.org).

4.5. Gerao de cdigo em tempo de execuo


Em alguns casos necessrio acrescentar servios a classes e interfaces em tempo de
execuo. CGLIB (http://cglib.sourceforge.net/) uma das ferramentas mais empregadas para Java.

4.6. Desenhando grficos


Aplicaes em Java que manipulam dados podem fazer uso dos mais variados tipos de
grficos (pizza, histograma, srie e outros). JFreeChart (http://www.jfree.org/jfreechart/) uma
biblioteca para a gerao de grficos com variado e rico conjunto de opes.

4.7. Busca, extrao, localizao ... (de texto em documentos)


Lucene (http://jakarta.apache.org/lucene/) uma ferramenta para busca em texto, escrita em
Java. Empregando este recurso aplicaes podem realizar consultas empregando expresses lgicas e
obter como resultado arquivos que satisfazem os critrios de busca indicados. DocSearcher
(http://docsearcher.sourceforge.net) faz uso de Lucene para oferecer o servio de busca de texto em
documentos em vrios formatos (.doc, .pdf e outros). Com o propsito de especificamente localizar
h ferramentas como XTF (http://xtf.sourceforge.net/), que contempla formatos como XML, PDF e
Word.
CompassFramework (http://compass.sourceforge.net/) faz uso de Lucene (fornecida acima)
para permitir a localizao de informaes em dados de aplicaes que fazem uso de Hibernate e
Spring, por exemplo.
Letras, dgitos e outros caracteres so manipulados por um computador atravs de um nmero
atribudo para cada um deles. Um conjunto destas atribuies conhecido por code page ou charset
encoding. Quando uma aplicao precisa manipular arquivos, por exemplo, obtidos da Internet, pode
ser necessrio identificar o code page empregado na construo do arquivo para que o processamento
dele possa ser realizado de forma correta. A ferramenta cpdetector (http://cpdetector.sf.net) pode ser
utilizada para esta finalidade.

19 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

Multivalent (http://multivalent.sourceforge.net/) permite extrair texto de arquivos em vrios


formatos (PDF, HTML e outros), alm de realizar vrias operaes de manipulao de arquivos
nestes formatos. Jpedal (http://www.jpedal.org) e PDFBox (http://www.pdfbox.org/) tambm permite
extrair

textos

de

arquivos

PDF,

unir

tais

arquivos,

realizar

busca

outras.

PJ

(http://www.etymon.com/epub.html) permite manipular de vrias formas arquivos no formato PDF.


Vrias bibliotecas (http://schmidt.devlib.org/java/document-libraries.html) para manipulao
de arquivos em vrios formatos, no apenas PDF, inclua a .doc e .ppt encontram-se disponveis.

4.8. Acesso remoto (remoting) e distribuio


Conforme Martin Fowler em Patterns of Enterprise Application Architecture, AddisonWesley, 2003, a primeira lei da computao distribuda : no distribua seus objetos. Esta uma
clara orientao para evitar o emprego de objetos distribudos, exceto quando forem realmente
necessrios. Quando servios oferecidos por uma aplicao, contudo, precisam ser usufrudos atravs
de um cliente remoto, torna-se necessrio para estes clientes ou para clientes em outros processos, a
disponibilidade de uma forma de conexo com os servios oferecidos. Observe que isto no significa
que a aplicao que oferece os servios distribuda, mas apenas o acesso a estes feito
remotamente.
H vrias propostas para este tipo de conexo. Um protocolo leve de acesso remoto baseado
em HTTP oferecido pela companhia Caucho (http://www.caucho.com). Um deles o Hessian
(http://www.caucho.com/hessian/), mais leve que o j leve Burlap (http://www.caucho.com/burlap/).
Ambos so alternativas para chamadas remotas de mtodo onde objetos encontram-se distribudos.
Este servio oferecido atravs de RMI (http://java.sun.com/products/jdk/rmi/). Esta e outras
abordagens como CORBA so consideradas heavyweight.
NailGun (http://www.martiansoftware.com/nailgun/) uma opo que oferece cliente (escrito
em linguagem C), protocolo e servidor onde cdigo em Java executado. O cliente assume que a
interao com o servidor realizada exclusivamente atravs da entrada e sada padros.
Pginas em HTML contendo JavaScript tambm pode fazer uso de objetos remotos atravs
de DWR (http://www.getahead.ltd.uk/dwr/), que emprega um conjunto de tecnologias conhecido por
AJAX.(http://en.wikipedia.org/wiki/Ajax_(programming)). O emprego de AJAX tambm ocorre em
Echo2 (http://www.nextapp.com/products/echo2/) e AjaxTags (http://ajaxtags.sourceforge.net/).
Ainda h outras opes como AjaxAnywhere (http://ajaxanywhere.sourceforge.net/). Para facilitar o
emprego de AJAX tem Taconite (http://taconite.sourceforge.net/).
XINS (http://xins.sourceforge.net/) apresentada como alternativa para SOAP, WSDL e
UDDI. Detalhes destas tecnologias em W3C (http://www.w3.org/).
Ao contrrio de abordagens como aquelas acima, que visam oferecer uma possibilidade de
acesso remoto, Crispy (http://crispy.sourceforge.net/) oferece uma interface nica atravs da qual
vrias das possibilidades de conexo podem ser exploradas sem que isto altere o cdigo que requisita
20 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

os servios remotos.
Mantaray (http://sourceforge.net/projects/mantaray/) um sistema para troca de mensagens
sem a presena de um servidor. JGroups (http://www.jgroups.org/) comunicao multicast confivel.

4.9. Worflow
The State of Workflow de Tom Baeyens, publicado pela TheServerSide.COM em
http://www.theserverside.com/articles/article.tss?l=Workflow, oferece uma abrangente viso do que
se conhece por workflow. A gerncia de processos de negcio, business process management, um
requisito relevante de aplicaes modernas. To relevante que h vrias iniciativas com o propsito
de facilitar o desenvolvimento de gerenciadores destes processos de forma simplificada. A JSR-207
(http://www.jcp.org/en/jsr/detail?id=207) uma delas, que tem como propsito facilitar a
programao de processos de negcios em Java. H muitos workflow engines de domnio pblico que
devem ser investigados. Por exemplo, OpenWFE (http://www.openwfe.org), entre outros.
jBPM (http://jbpm.org/) um sistema de gerncia de workflows.
Flow4J (http://flow4jeclipse.sf.net) uma ferramenta empregada para modelar processos e,
dos modelos produzidos, automaticamente gerar cdigo fonte em Java correspondente.

Web

5.1. Servios web


Axis (http://ws.apache.org/axis) uma implementao de SOAP (Simple Object Access
Protocol). Para a inspeo de servios e invocao de servios Soapui (http://www.soapui.org/)
oferece uma interface grfica atravs da qual a invocao de um web service torna-se uma tarefa
simples.
Desenvolvedores J2EE que fazem uso do Eclipse encontram vrias ferramentas de apoio no
projeto WTP (http://eclipse.org/webtools/). Lomboz (http://lomboz.objectweb.org/) uma alternativa.

5.2. Navegadores
A infra-estrutura oferecida pelo que conhecido por web torna-se acessvel aos seres humanos
atravs de navegadores, tambm conhecidos por browsers. Da perspectiva de aplicaes web a
identificao dos navegadores para os quais suporte ser oferecido relevante. Isto porque nem todos
oferecem os mesmos recursos, nem o mesmo desempenho nem a mesma segurana, o que torna a
compatibilidade uma questo a ser observada.
Firefox (http://www.mozilla.org/products/firefox/) tem se destacado recentemente.
Disponvel para as principais plataformas e mais seguro. No momento em que escrevo este texto j
21 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

foram baixadas mais de 45 milhes de cpias do Firefox. NetScape


(http://channels.netscape.com/ns/browsers/), Konqueror (http://www.konqueror.org) e Slim Browser
(http://www.flashpeak.com/sbrowser/) so opes.
Embora a maioria dos usurios espere por grficos, h navegadores exclusivamento em texto.
Lynx (http://lynx.isc.org) um dos mais conhecidos.

5.3. Clientes de email/news


Thunderbird (http://www.mozilla.org/projects/thunderbird/) possui distribuio para os principais
sistemas operacionais, inclusive uma verso para o Windows. Possui fama de seguro e vrios
recursos desejados por usurios. Columba (http://columba.sourceforge.net/) uma opo recente,
escrita totalmente em Java.
RSSOwl (http://rssowl.org/) um leitor RSS totalmente escrito em Java e baseado no SWT.
H muitos comentrios favorveis qualidade da interface oferecida.

5.4. Clientes e servidores de FTP


Um servio de uso comum e eficiente para troca de arquivos atravs do protocolo FTP. Existem
vrios clientes que fazem uso deste protocolo. QuickDownloader (http://www.quickdownloader.com)
uma opo escrita 100% em Java. Filezilla (http://filezilla.sourceforge.net/) uma opo muito
empregada por usurios dos sistemas operacionais da Microsoft(tm).
Quanto a servidores, o Vsftpd (http://vsftpd.beasts.org/) diz-se ser seguro.

5.5. Gerenciamento de aplicaes


Aplicaes web, em particular, oferecem seus servios atravs de um conjunto considervel de
ferramentas que trabalham em conjunto. Nestes casos, gerenciar os vrios componentes da aplicao
uma atividade que no pode ser desprezada. JMX (http://java.sun.com/jmx/) uma tecnologia que
inclui ferramentas para a construo de aplicaes web, solues modulares e monitoramente de
dispositivos e aplicaes, entre outros.
A Sun(tm) oferece uma implementao de referncia JMX RI (http://java.sun.com/jmx/).
XMOJO (http://www.xmojo.org), MX4J (http://mx4j.sourceforge.net/) e JBoss MX
(http://www.jboss.org) so opes.
Para acompanhar visualmente a execuo de aplicaes que so gerenciadas via JMX pode
ser empregada a ferramenta MC4J (http://mc4j.sourceforge.net/), que oferece um sofisticado painel
de controle.

22 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

5.6. Servidor Web e continer Servlet/JSP


Uma aplicao web exige a existncia de um servidor Web. Apache (http://httpd.apache.org/) o
servidor mais empregado atualmente. O sucesso do servidor Apache deixa pouco espao para outros.
Contudo, h casos especiais. Por exemplo, NanoHTTPD (http://elonen.iki.fi/code/nanohttpd/), como
o prprio nome indica, trata-se de um servidor realmente pequeno, contido em um nico arquivo
Java. No universo dos pequenos tambm podem ser citados TJWS (http://tjws.sourceforge.net/),
Ravenous (http://ravenous.solidosystems.com/) e Jetty (http://jetty.mortbay.org), todos escritos 100%
em Java. Jetty um continer Servlet/JSP, mas o Tomcat (http://jakarta.apache.org/tomcat/) a
implementao de referncia oficial das tecnologias Servlet e JavaServer Pages.
Servidores web so excelentes para a apresentao de pginas estticas, que so insuficientes
para as exigncias dos sistemas de informao usufrudos pela web. Estender as funcionalidades de
um servidor web o objetivo de Servlets (http://java.sun.com/products/servlet). A tecnologia Servlet
empregada, em geral, em conjunto com JavaServer Pages ou JSP (http://java.sun.com/products/jsp).
De forma simplificada, pode-se dizer que Servlet est mais direcionado para o controle de
uma aplicao como verificao de autorizao para realizar determinada tarefa, enquanto JSP
fundamentalmente oferece mecanismos para a criao de pginas dinmicas sem exigir habilidades
de programao. Ou seja, JSP permite isolar projetistas de pginas (web designers) das
complexidades de programao. As especificaes mais recentes de Servlet e JSP podem ser obtidas
a partir dos portais supracitados. Sysdeo (http://www.sysdeo.com/eclipse/tomcatPlugin.html) um
plug-in para o ambiente Eclipse a partir do qual o emprego do Tomcat facilitado.

5.7. Cliente HTTP


Para simular o emprego de um browser, tarefa muitas vezes exigida durante o desenvolvimento de
uma aplicao web pode se empregar HttpClient (http://jakarta.apache.org/commons/httpclient/).

5.8. Servidor TCP, testando e monitorando conexes TCP


O desenvolvimento de algumas aplicaes exige a disponibilidade de conexes TCP para mltiplos
clientes, que requisitam servios concorrentemente. QuickServer (http://www.quickserver.org/)
uma

biblioteca

Java

que

permite

agiliza

criao

de

tais

aplicaes.

SocketTest

(http://sockettest.sourceforge.net/) pode ser til para testes. Para monitorar conexes TCP existe o
projeto Apache TCPMon (https://tcpmon.dev.java.net/). Esta ferramenta permite observar o trfego
entre cliente e servidor.

23 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

Gerenciamento de dados

6.1. Modelagem
DBDesigner4 (http://www.fabforce.net/dbdesigner4/) uma ferramenta para projeto visual de bases
de dados. A ferramenta inclui o projeto, modelagem, criao e manuteno.

6.2. SGBD
Felizmente no faltam opes de sistemas gerenciadores de bancos de dados de domnio
pblico e open source. HSQLDB (http://hsqldb.sourceforge.net/) 100% Java, assim como Derby
(http://db.apache.org/) e Berkeley DB (http://www.sleepycat.com/). No so os nicos com tais
caractersticas. McKoi (http://mckoi.com/database/) e One$DB (http://www.daffodildb.com/) so
opes.
Fora do universo de SGBDs desenvolvidos em Java, MySQL (http://www.mysql.com) e
PostgreSQL (http://www.postgresql.org) so opes muito conhecidas. H ainda o FireBird
(http://firebird.sourceforge.net/).
As opes acima incluem apenas SGBDs relacionais. db4o (http://www.db4o.com/) uma
opo orientada a objetos.

6.3. Clientes SQL


H vrias opes de clientes que acessam bases de dados via SQL. O HSQLDB
(http://hsqldb.sourceforge.net) acompanhado de um cliente para esta e vrios outros SGBDs.
Convm ressaltar que cada SGBD oferece, em geral, seu prprio cliente. Fazer uso de um nico, por
outro lado, desonera o conhecimento de vrias ferramentas.
O IDE Eclipse oferece vrios plug-ins para os interessados em interagir com bases SQL.
JFaceDBC (https://sqlexplorer.dev.java.net/) e Quantum (http://quantum.sourceforge.net) so dois
deles. PKLite SQL Client (http://pklite.sourceforge.net/) uma opo.. Tambm h o iSQL-Viewer
(http://isql.sourceforge.net/) de sofisticada interface.
SQuirrel SQL (http://squirrel-sql.sourceforge.net/) outra ferramenta. Em geral, permitem a
execuo de sentenas SQL e interao com a base de dados atravs de uma interface amigvel. Alm
destes servios e com facilidades para definir e documentar bases de dados tem-se a ferramenta Druid
(http://druid.sourceforge.net/).

6.4. Relatrios
ObjectVisualizer (http://objectvisualizer.com/) facilita a construo de consultas, relatrios e a

24 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

gerao de grficos. Em conjunto com OpenReports (http://oreports.com/) usurios podem


dinamicamente gerar relatrios atravs de um browser. H vrias alternativas para a gerao de
relatrios. DataVision (http://datavision.sourceforge.net/) uma ferramenta que possui os mesmos
propsitos

do conhecido

Crystal

Reports.

JERT

(http://jert.sourceforge.net/), JfreeReport

(http://www.jfree.org/jfreereport/) e iText (http://www.lowagie.com/iText/) so algumas das opes.


JasperReports (http://jasperreports.sourceforge.net/) talvez seja uma das mais conhecidas e
possui um visualizador de relatrios JasperViewer (http://jasperassistant.com/jasperviewer.html) e
construtores de relatrios como o iReport (http://ireport.sourceforge.net/), que permite a elaborao
do design de relatrios.
Eclipse/BIRT (http://www.eclipse.org/birt) permite a definio de leiaute, acesso a base de
dados e scripts tudo integrado ao ambiente Eclipse.

6.5. Camada de persistncia


Sistemas de informao atuais quase sempre so rotulados como orientados a objetos e, ao mesmo
tempo, empregam um SGBD relacional para a persistncia de informaes. Qualquer sistema que
faa uso real destes dois modelos ter que construir uma camada de persistncia, responsvel por
ser o intermedirio entre estes dois modelos, em ambos os sentidos. Ou seja, obtm objetos e os
armazena na forma de registros sobre tabelas e, no sentido oposto, recupera informaes disponveis
em tabelas e as converte para os objetos de interesse. H ferramentas que auxiliam nesta onerosa
tarefa.
JDO ou Java Data Objects (http://java.sun.com/products/jdo/) uma API que pode ser
empregada com esta finalida. TJDO (http://tjdo.sourceforge.net/) e JPO (http://jpox.sourceforge.net/)
so implementaes de JDO.
ObjectRelationalBridge (http://db.apache.org/ojb/) outra opo que, embora implemente
JDO, tambm compatvel com ODMB 3.0.
Crescente em popularidade pelos recursos, qualidade e desempenho oferecidos encontra-se
Hibernate (http://www.hibernate.org/). Usurios do Hibernate que tambm fazem uso do Eclipse tm
um auxlio extra, o Hibernate Synchronizer (http://www.binamics.com/hibernatesync/), que agiliza a
execuo de algumas tarefas.
Apesar destes benefcios, tambm existem outras ferramentas voltadas para o mapeamento de
objetos em tabelas. Cayenne (http://objectstyle.org/cayenne/) uma delas.

25 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

Aplicaes corporativas

7.1. Softwares para gesto


Existe software livre disponvel para os mais variados setores de atuao. Por exemplo,
OpenUSS (http://openuss.sourceforge.net) um software livre voltado para faculdades e
universidades.
Alguns softwares oferecem extenso suporte a atividades de gesto empresarial. Naturalmente,
apenas alguns casos podem imediatamente se beneficiar destes produtos como disponveis. Em todos
os demais so necessrias personalizaes. Contudo, de custo bem inferior ao desenvolvimento
completo que teria que ser realizado sem a existncia destas ferramentas. Algumas ferramentas ERP
(Enterprise Resource Planning) incluem:

Open for Business (http://www.ofbiz.org/)

Compiere (http://www.compiere.org)

TinyERP (http://tinyerp.org/)

OpenCRX (http://opencrx.sourceforge.net).

7.2. Infra-estrutura de desenvolvimento


Sistemas para a web exigem a disponibilidade de vrios servios como troca de mensagens,
segurana, transao e outros. A plataforma J2EE (http://java.sun.com/j2ee) um conjunto de
especificaes que fornecem tais servios.
Uma das implementaes mais respeitadas de J2EE o JBoss (http://www.jboss.org). O uso
dos servios oferecidos pelo Jboss podem ser realizado atravs do plug-in JBOSS-IDE para o Eclipse
(http://www.jboss.org/developers/projects/jboss/jbosside). JOnAS (http://jonas.objectweb.org/)
outra implementao de cdigo fonte livre e, em particular, uma implementao certificada como
compatvel com J2EE. Recentemente, Geronimo (http://geronimo.apache.org/) tem recebido
considervel ateno.
A organizao de aplicaes corporativas para a web exige considervel atividade de projeto.
Uma das abordagens geralmente empregadas encontra-se o padro MVC. A implementao deste
padro facilitada pela existncia de frameworks. Struts (http://jakarta.apache.org/struts/) um deles.
Servidores de aplicao J2EE so considerados por muitos ferramentas pesadas. Ao
contrrio destes

servidores, vrios frameworks considerados leves tm surgido. Spring

(http://www.springframework.org/) um deles. Liferay (http://www.liferay.com/) e exoPlatform


(http://www.exoplatform.com) so algumas das alternativas.

26 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

7.3. Internacionalizao
Aplicaes em Java que oferecem suporte para internacionalizao, tambm conhcida pela
sigla em Ingls i18n, pelo fato de existirem 18 letras entre a letra inicial i e a final n do termo nesta
lngua, geralmente empregam arquivos de propriedades. Attesoro (http://ostermiller.org/attesoro/)
uma ferramenta que auxilia a traduo destes arquivos de propriedades. Em muitos casos a traduo
envolve vrios formatos alm de arquivos de propriedades. Nestes casos, o projeto Open Language
Tools (https://open-language-tools.dev.java.net/) fornece vrias ferramentas.

7.4. Barramentos de servios corporativos (ESB)


Recentemente vrios servios tm sido oferecidos por ferramentas sobre a designao de
Enterprise Service Bus (ESB): ServiceMix (http://servicemix.org/), Mule (http://mule.codehaus.org/),
Lingo (http://lingo.codehaus.org) e Celtix (http://celtix.objectweb.org/) so algumas delas. O objetivo
principal facilitar a integrao de componentes de negcio.

7.5. Camada de apresentao


Cdigo responsvel por interpretar aes dos usurios e transform-las em requisies aos servios
oferecidos por um sistema e, no sentido inverso, converter os resultados produzidos pelo sistema em
um formato que seja de fcil consumo por seremos humanos, est logicamente reunido na camada de
apresentao. MVC (Model View Controller) a ferramenta mais empregada para organizar o cdigo
da camada de apresentao. Ao empregar MVC, o cdigo deve ser organizado em trs papis
distintos: modelo (model), viso (view) e controlador (controller). De forma simplificada, modelo
encapsula a camada de negcio, na qual a lgica de uma aplicao, pertinente ao domnio em questo
executada. A viso responsvel por converter dados em representaes visuais (ou outra forma)
para uso humano, por exemplo, um valor de temperatura pode ser convertido em um termmetro com
o devido indicador do valor corrente. O controlador reage s aes dos usurio. este quem
interpreta aes dos usurios como tarefas cuja execuo exigida. H variantes do modelo MVC e
fontes em abundncia onde detalhes podem ser obtidos. Voc pode iniciar por OOTIPS
(http://ootips.org/mvc-pattern.html).
So vrias as implementaes disponveis de MVC. A opo por uma em detrimento das
demais deve ser baseada no cenrio que se tem em questo. quele que no dispe de tempo para
investigao merecida, sugiro o Spring MVC (http://www.springframework.org). Se voc deseja pelo
menos uma opo para o Spring MVC, cujos benefcios no so aqui citados, ento inicie pelo
WebWork (http://www.opensymphony.com/webwork). Tambm h o amplamento conhecido Struts
(http://jakarta.apache.org/struts). Uma alternativa que promete conquistar espao conhecida por
JavaServer(tm) Faces (JSF). Uma implementao MyFaces (http://myfaces.apache.org/).

27 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

As sugestes acima trabalham com as tecnologias Servelt (23) e JSP (23). Para aplicaes
web de tamanhos considerveis, a conformidade com padres de apresentao pode se tornar um
pesadelo. SiteMesh (http://www.opensymphony.com/sitemesh) visa amenizar este problema.
H uma considervel quantidade de tecnologias associadas camada de apresentao.
Portlets, descrita atravs da JSR-168 (http://jcp.org/en/jsr/detail?id=168) uma delas. JetSpeed2
(http://portals.apache.org/jetspeed-2/) uma implementao de portles.

7.6. Gerncia de contedo


Recursos computacionais atualmente disponveis fomentaram a disponibilidade de servios
importantes como a gerncia de conhecimento de uma empresa atravs da sua intranet, por exemplo.
H vrias opes para gerncia de contedo. Talvez a mais conhecida e empregada seja o Zope
(http://www.zope.org). Contudo, h opes: InfoGlue (http://www.infoglue.org) e Magnolia
(http://www.magnolia.info/), que implementa a JSR-170. Alternativas que no aderem, por enquanto
JSR-170 incluem OpenCms (http://www.opencms.org) e Apache Lenya (http://lenya.apache.org/).
Recentemente tem crescido a comunidade de usurios Mambo (http://www.mamboserver.com/).

7.7. Armazenando senhas


Sistemas atuais exigem considervel quantidade de senhas empregadas por um nico indivduo. H
senhas para servidores, contas de e-mail, SGBDs e vrios outros servios. Felizmente h algumas
aplicaes disponveis. Secure Data Manager ou SDM (http://sdm.sourceforge.net) permite gerenciar
suas senhas organizadas em uma hierarquia.

7.8. Segurana
Acegi (http://acegisecurity.sourceforge.net/) uma proposta para segurana de aplicaes
muito comentada. H outras propostas: Seraph (http://opensource.atlassian.com/seraph/) e JOSSO
(http://www.josso.org/) so duas delas.
Squid (http://www.squid-cache.org/) um web proxy amplamente empregado. JOSSO
(http://www.josso.org/) uma soluo de autenticao de usurio centralizada e independente de
plataforma

desenvolvida

em

Java,

para

ambiente

tpico

da

Internet.

SSL-Explorer

(http://sourceforge.net/projects/sslexplorer/) uma soluo VPN SSL de cdigo aberto.


No suficiente prover mecanismos de segurana apenas para aplicaes. Tambm
importante cuidar do ambiente onde aplicaes so executadas. Portas so mecanismos empregados
para comunicao entre computadores que, em geral, quanto menos delas existirem abertas, menores
so as vulnerabilidades da mquina em questo. Nmap (http://www.insecure.org/nmap/), Nessus
(http://www.nessus.org/) e Ethereal (http://www.ethereal.com/) so algumas ferramentas que podem
ser empregadas neste sentido para detectar vulnerabilidas. H toda uma coletnia de ferramentas
28 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

disponvels no THC (http://www.thc.org) para especialistas em segurana. H um vasto conjunto de


ferramentas para usurios Linux. Felizmente, iniciativas como WinPCap (http://www.winpcap.org)
oferece ferramentas semelhantes para usurios Windows.
OpenSSH (http://www.openssh.com/) uma implementao do famoso SSH. Esta e outras
ferramentas

tambm

esto

disponveis

no

Windows(r)

atravs

de

SSHWindows

(http://sshwindows.sourceforge.net/).
BouncyCastle (http://www.bouncycastle.org/) uma biblioteca para criptografia em Java.
Oferece vrios servios como JCE, JCA e outros.

XML e servios Web


XML (http://www.w3.org/XML/) ou eXtensible Markup Language o padro de fato para

marcao de dados.

8.1. Serializao
JiBX (http://jibx.sourceforge.net/) uma das mais eficientes ferramentas para converso de
objetos em documentos XML e vice-versa. O primeiro lugar disputado com Javolution
(http://www.javolution.org/). Esta ltima ainda oferece vrios outros servios. XStream
(http://xstream.codehaus.org/) uma opo.
Tambm possvel fazer a converso de um objeto para outro, provavelmente quando se
deseja transferir informaes em um objeto cujo estado obtido de outros. Dozer
(http://dozer.sourceforge.net/) uma ferramenta que auxilia esta tarefa.

8.2. Editores
Butterfly XML (http://butterflyxml.org/) um editor com um conjunto rico de recursos para
aqueles que precisam criar documentos XML. KxmlEditor (http://kxmleditor.sourceforge.net/) possui
funcionalidades similares, embora especficas para o ambiente KDE.

8.3. Processamento
H ferramentas de propsito geral como Nux (http://dsd.lbl.gov/nux/), com recursos para
validao, serializao e outros. Muitas, contudo, dedicam-se a um conjunto menor de servios.
JAXP (http://java.sun.com/xml/) a API Java para o processamento de XML. JAXP permite
aplicaes Java analisar (parsing) e transformar documentos XML usando uma API que
independente de qualquer processador de informaes em XML.
Quando analisados, documentos XML so representados em um estrutura hierrquia em

29 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

forma de rvore. Para construir estas rvores em memria o W3C recomenda o emprego do modelo
DOM

(Document

Object

Model).

Analisadores

baseados

no

modelo

DOM

(http://www.w3.org/DOM/) oferecem uma API (Application Programming Interface) que permite


que dados do documento XML possam ser manipulados como ns em uma rvore DOM, o que no
exige um processamento seqencial do arquivo texto correspondente ao documento XML.
XSL, acrnimo de eXtensible Stylesheet Language (http://www.w3.org/TR/xsl/), permite a
descrio de regras para formatar documentos XML, por exemplo, com o propsito de transformar
um documento XML em um formato "agradvel" aos olhos humanos quando processado por
browsers como XHTML (sucessor de HTML para descrever contedo para a web). Para que esta
transformao seja possvel necessrio a disponibilidade de um processador XSLT, ou seja, XSL
Transformations (http://www.w3.org/TR/xslt). XSLT pode ser empregada de forma independente de
XSL, embora tenha sido projetada para ser utilizada como parte de XSL.
O principal foco de padres para os servios web so os protocolos de comunicao e
descrio de servios web. Tanto clientes quanto servidores fazem uso de mensagens XML para
estabelecer uma comunicao entre pontos remotos. XML-RPC e SOAP so duas propostas para
mensagens XML que podem ser empregadas. Para que um servio web seja usufrudo pelo menos
duas entidades devem existir: o cliente e o servio web disponibilizado ao primeiro. O servio web
requisitado pelo cliente atravs de um mensagem XML, ou seja, uma mensagem SOAP ou invocao
XML-RPC.

Esta

mensagem

XML

enviada,

em

geral,

via

protocolo

HTTP

(http://www.w3.org/Protocols/).
Conforme especificao do W3C, SOAP (Simple Object Access Protocol) um protocolo
leve para troca de informaes em um ambiente descentralizado e distribudo. Apache Axis
(http://xml.apache.org/axis/) uma implementao de SOAP (http://www.w3.org/TR/SOAP).
Servios web devem ser descritos de tal forma que clientes possam requisitar os servios
correspondentes. Para realizar descrio existe um vocabulrio XML prprio, denominado de WSDL,
acrnimo de Web Services Description Language (http://www.w3.org/TR/wsdl). A validao de
documentos

WSDL

pode

ser

feita

via

Eclipse,

atravs

do

plug-in

WSVT

(http://www.eclipse.org/wsvt/). Os servios disponibilizados por uma aplicao so, em geral,


acompanhados de um documento WSDL, que descreve a funcionalidade oferecida pela aplicao, os
endereos dos servios e como clientes podem trocar mensagens com estes servios. O endereo de
um servio um URL (http://www.w3.org/Addressing/URL/), ou Uniform Resource Locator. Um
URL pode ser visto como uma extenso de um sistema de arquivos, onde um arquivo pode estar em
um dado diretrio localizado em um ponto qualquer de uma rede.
Para que servios web se tornem uma realidade, deve existir algum mecanismo que permita a
clientes encontrar e conhecer servios web disponibilizados. UDDI, acrnimo de Universal
Description, Discovery and Integration (http://www.uddi.org/), uma proposta para publicar
informaes sobre servios web. Clientes podem consultar registros UDDI para localizar informaes

30 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

acerca dos servios disponibilizados. UDDI uma espcie de "pginas amarelas" das listas
telefnicas, onde fornecedores apresentam seus servios e produtos para clientes interessados.
SOAP, UDDI e WSDL so tecnologias centrais empregadas em interaes com servios web.
Em conjunto, o emprego delas permite o a comunicao entre aplicaes independente das
linguagens em que estas foram desenvolvidas, sistemas operacionais e plataformas de hardware.
JAX-RPX uma API simples para criar e interagir com servios web. Esta API, baseada no
protocolo RPC (Remote Procedure Call), oculta detalhes das comunicaes SOAP e descries
WSDL correspondentes. Quem desenvolve servios web empregando JAX-RPC no precisa saber em
que linguagem de programao os clientes so escritos. No sentido inverso, clientes de servios web
que fazem uso de JAX-RPC no precisam de detalhes da implementao do servio web
correspondente.
Em interaes B2B (business-to-business) ou B2C (business-to-consumer) h a necessidade
de se conhecer os servios disponveis e outras informaes relevantes. Todas elas so
disponibilizadas atravs de registros XML. Atualmente h dois tipos de registros XML bem
conhecidos: UDDI e ebXML. JAXR uma API que padroniza uma abordagem de acesso a registros,
seja do tipo UDDI ou ebXML, para aplicaes Java.
Todas as tecnologias comentadas acima so, em geral, empregadas por uma equipe.

8.4. Emprego de XML em negcios


UBL (http://docs.oasis-open.org/ubl/cd-UBL-1.0/) ou Universal Business Language uma
proposta de formato XML para documentos tpicos de negcios como ordens de compra, cotaes e
outros. A adoo de UBL generalizada pode significar, por exemplo, a reduo do esforo de
desenvolvimento para integrar vrios formatos definidos por cada empresa envolvida em uma
transao. hyperModel (http://www.xmlmodeling.com/) uma ferramenta que permite, como um
plugin para o Eclipse, editar especificaes em UML que representam esquemas XML como aqueles
propostos pelo UBL. Neste processo, esta ferramenta oculta do usurio toda a necessidade de
conhecer detalhes de esquemas XML, por exemplo.

Ferramentas para equipes

9.1. Processo de software


Code and fix foi o processo de software mais empregado no incio da computao. Esta
abordagem reflete mais a ausncia de formalidade do que o resultado da definio de como
administrar o desenvolvimento de software. A idia simples, um mnimo de informaes
suficiente para iniciar a criao de cdigo, cuja execuo seria exposta aos clientes, que revelariam os

31 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

problemas a serem corrigidos pelos desenvolvedores. Estas atividades se repetiam indefinidamente,


at o fim da operao do software.
Muitas outras propostas ressaltaram os vrios inconvenientes de code and fix e se
posicionaram como alternativas mais adequadas. Alguns processos apresentam nfase na construo
de modelos ao longo da execuo de um significativo conjunto de atividades como o Unified Process.
Com os mesmos propsitos e defendendo a idia de um desenvolvimento com mais rapidez e menos
burocracia se apresentam mtodos que se autodenominam de geis, onde a definio de modelos deve
ser mnima e a cooperao entre os membros de uma equipe um aspecto valorizado.
Apesar do interesse e investimento atuais na melhoria de processos, no razovel depositar
os atuais infortnios exclusivamente falta de disciplina de equipes de desenvolvimento. No se tem
aqui a pretenso velada de subvalorizar a importncia que processos desempenham no
desenvolvimento de software, mas de identificar os elementos destes que produzem resultados
efetivos. MacCormack et al, em Trade-offs between Productivity nad Quality in Selecting Software
Development Practices, IEEE Software, sept/oct 2003, pgs. 78-85, realizam anlise do emprego de
vrios processos e fornecem uma orientao: (a) construo de prottipos logo no incio do
desenvolvimento; (b) revises de projeto e (c) testes de regresso e integrao para cada
incremento. Ainda mostram que duas abordagens podem significar mais da metade da variao em
produtividade de uma equipe de desenvolvimento:

Construo de prottipos logo no incio do desenvolvimento e

Geraes dirias de cdigo executvel.


Embora as evidncias fornecidas por este trabalho no sejam suficientes para definir um

processo de software, estes so os elementos principais a serem observados ao longo do


desenvolvimento do estudo de caso trabalhado neste curso.

9.2. Modelagem
UML
Antes que cdigo seja construdo necessrio, particularmente para sistemas complexos, uma
modelagem prvia. O objetivo analisar o sistema, validar os requisitos com os usurios e especular
possibilidades de organizao da arquitetura do software e do projeto antes que o cdigo
correspondente seja produzido. Ou seja, isto s possvel atravs da confeco de modelos.
A linguagem de modelagem unificada, ou UML (www.uml.org/), o esperanto de
engenheiros de software, o padro de fato empregado tanto pela academia quanto pela indstria para
registrar modelos de software.

32 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

Ferramentas para criao de modelos em UML


A edio de modelos na UML exige o emprego de ferramentas apropriadas, que oferecem
mais do que editorao de um grfico. JUDE (http://jude.esm.jp/) a minha ferramenta preferida.
ArgoUML (argouml.tigris.org) muito conhecida e d origem a produtos proprietrios. FUJABA
(http://www.fujaba.de) e UMLet (http://qse.ifs.tuwien.ac.at/~auer/umlet/) so 100% Java assim como
a ArgoUML. Dia (www.lysator.liu.se/~alla/dia/) permite a edio de vrios tipos de diagramas, alm
daqueles da UML. Umbrello UML Modeller (http://uml.sourceforge.net/) uma opo conhecida por
usurios Linux.
Em alguns cenrios relevante obter a modelagem a partir de cdigo Java disponvel. ESSModel (http://essmodel.sourceforge.net/) gera diagramas de classe (UML) para cdigo em Java e at
mesmo para bytecodes (.class). Boa parte das ferramentas que permitem a edio de diagramas UML
tambm oferece o recurso de engenharia reversa para cdigo escrito em Java, por exemplo, a partir do
qual os diagramas correspondentes so automaticamente obtidos.

Modelagem de domnio
Enquanto as ferramentas que permitem a criao de modelos UML podem se empregadas para a
criao de modelos de domnio, ou modelos de negcio, h ferramentas que dirigidas especialmente
para esta atividade. Proteg (http://protege.stanford.edu/) uma delas.

9.3. Gerncia de requisitos


H muitas ferramentas para modelagem usando UML, conforme outra seo deste texto. Um
dos diagramas da UML o diagrama de casos de uso, que tem pouca utilidade se no acompanhado
das descries correspondentes. De fato, casos de uso so essencialmente textos e no de diagramas.
Tambm existem ferramentas gratuitas e open source para registro de requisitos. Entre elas,
UCDD (http://www.itbrain.com.mx/ucdd/) e Xmlbasedsrs (http://xmlbasedsrs.tigris.org). SRS Plugin
(http://eclipsesrs.sourceforge.net) um Eclipse plugin que faz uso da ferramenta Xmlbasedsrs.
Rambutan (http://rambutan.sourceforge.net/) uma ferramenta que pode ser empregada para a edio
de especificaes de requisitos de software.

9.4. Gerncia de projeto de software


Quase sempre o tempo para a concluso de um projeto exguo e o ambiente de
desenvolvimento convive com presses. Alocar de forma efetiva os recursos disponveis
imprescindvel.

Ganttproject (http://ganttproject.sourceforge.net/) uma dentre muitas outras.

Project Planning and Tracking System ou PPTS (http://ses-ppts.sourceforge.net)

OpenPSA (http://www.openpsa.org/)

33 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

ProjectBench (http://projectbench.sourceforge.net/)

XPlanner (http://www.xplanner.org)

uma ferramenta para gerncia de projeto

(planejamento e acompanhamento).

Hipergate (http://www.hipergate.org) e

DotProject (http://www.dotproject.net) so opes.

Algumas ferramentas oferecem servios para relacionamento com clientes (CRM):

CRM (http://crm-ctt.sf.net)

SugarCRM (http://www.sugarcrm.com/).

Reunies, lista de bugs em aberto e tarefas, entre outros recursos, so oferecidos por

TUTOS (http://www.tutos.org/).

TeamWork (http://www.twproject.com) outra dentre um considervel conjunto de

opes.

NetOffice (http://netoffice.sf.net) tambm oferece servios para gerncia de projetos.

Double

Choco

Latte

(http://dcl.sourceforge.net/)

parte

do

GNU Enterprise

(http://www.gnuenterprise.org).

Achievo (http://www.achievo.org/)

Project/Open (http://www.project-open.org/).

Projectory (http://projectory.sourceforge.net/)

Webcollab (http://webcollab.sourceforge.net/)

Gforge (http://gforge.org/) uma ferramenta que auxilia a execuo de vrias tarefas ao

longo do ciclo de vida de um sistema. Comunicao entre membros da equipe, controle de verso
e outras tarefas tpicas.
Se existem atividades a serem organizadas ao longo do tempo ento h um indicador do
esforo que ser necessrio no empreendimento em questo. Para estimar:

Construx Estimate (http://www.construx.com) uma soluo gratuita conhecida.

Conjunto

de

ferramentas

para

estimativa

(http://www.engin.umd.umich.edu/CIS/tinytools/).
Alguns sistemas oferecem servios de contato com clientes que podem ser empregados com a
finalidade de acompanhamento de erros, por exemplo.

9.5. Sistemas de gesto empresarial


Principais frameworks
Alguns softwares oferecem extenso suporte a atividades de gesto empresarial. Naturalmente,
apenas alguns casos podem imediatamente se beneficiar destes produtos como disponveis. Em todos

34 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

os demais so necessrias personalizaes. Contudo, de custo bem inferior ao desenvolvimento


completo que teria que ser realizado sem a existncia destas ferramentas. Algumas ferramentas ERP
(Enterprise Resource Planning) incluem:

OfBiz ou Open for Business (http://www.ofbiz.org/)

Compiere (http://www.compiere.org)

TinyERP (http://tinyerp.org/)

OpenCRX (http://opencrx.sourceforge.net).

Cdigo de barras
A gerao de cdigos de barra facilitada pela existncia de vrias ferramentas. Em geral, oferecem
como servio bsico uma entrada correspondente a um cdigo e o respectivo padro e produzem,
como sada, a imagem correspondente. Barcode4J (http://barcode4j.krysalis.org/) oferece grande
flexibilidade de padres e vrios formatos em que os cdigos podem ser gerados. JBarcodeBean
(http://jbarcodebean.sourceforge.net/) fornece suporte a cerca de dez formatos de cdigos de barra.
Barbecue (http://barbecue.sourceforge.net) outra opo escrita em Java, assim como as anteriores.

9.6. Gerncia de configurao


Gerncia de configurao de software um dos principais processos de suporte realizados ao
da vida de um software. Este processo auxiliado por vrias ferramentas que auxiliam desde tarefas
mais sofisticadas como o controle de mudana at aquelas mais simples como gerncia ou controle
de verses.
Subversion (http://subversion.tigris.org) apontada como o sucessor da conhecida e
amplamente empregada CVS (veja pargrafo seguinte). Ambas oferecem um ambiente para controle
de verses. Clientes grficos para o Subversion so vrios e podem ser encontrados no prprio portal
do Subversion, que acompanhado de um cliente baseado em linha de comandos. Entre os clientes
grficos destaca-se o Rapidsvn (http://rapidsvn.tigris.org) disponvel para vrias plataformas e o
Subclipse (http://subclipse.tigris.org) que um plugin para o Eclipse (9). Cdigo em Java tambm
um tipo de cliente de um repositrio gerenciado pelo Subversion. Isto possvel atravs da biblioteca
como JavaSVN (http://tmate.org/svn/).
CVS (http://www.cvshome.org/), ou Concurrent Versions System, uma ferramenta
amplamente empregada para o controle de verso de software. Para ambiente Windows a
implementao correspondente conhecida por CVSNT (http://www.cvsnt.org/). O cliente jCVS
(http://www.jcvs.org/) um cliente com interface grfica.

9.7. Acompanhamento de erros, issues, requisitos, ...


Para acompanhamento de erros a ferramenta provavelmente mais empregada em todo o

35 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

planeta o Bugzilla (http://www.bugzilla.org/). Vrios projetos open-source consagrados fazem uso


do Bugzilla.
Scarab (http://scarab.tigris.org/), ITracker (http://sourceforge.net/projects/itracker) e GNATS
(http://www.gnu.org/software/gnats/) so opes de instalao bem mais simples que aquela do
Bugzilla. Trac (http://projects.edgewall.com/trac/) uma alternativa que tambm oferece interface
para servios oferecidos pelo Subversion.
Convm ressaltar que vrias das ferramentas da seo Gerncia de Projetos tambm podem
ser empregadas de forma similar quelas citadas no pargrafo anterior e vice-versa. Em conseqncia,
fique atento, sistemas de acompanhamento de requisies de usurios, relatos de erros e outras, esto
apoiados por conjunto considervel de ferramentas e no apenas aquelas acima.

9.8. Comunicao
Membros de equipes de desenvolvimento precisam de constante interao. Quando so
numericamente pequenas e compartilham um mesmo espao fsico, a comunicao facilitada. Caso
contrrio, ser necessrio fazer uso de artifcios que viabilizem a comunicao.
Yahoo! (http://messenger.yahoo.com) e Messenger (http://messenger.msn.com.br) so duas
conhecidas opes para trocas de mensagens instantneas. Para usufruir desta oportunidade de
comunicao necessrio o emprego de clientes, disponveis nas mais variadas plataformas. Para o
MSN Messenger tem-se o AMSN Messenger (http://amsn.sourceforge.net/), disponvel para inmeras
distribuies do Linux, Mac OS e inclusive o Windows(r). As opes so muitas e, em geral, a
escolha estabelecida conforme preferncias pessoais. Gaim (http://gaim.sourceforge.net/) um
cliente que atende vrios protocolos e est disponvel para vrias plataformas.
A comunicao via texto e/ou imagens pode ser estendida com recursos de voz. Neste caso,
uma ferramenta comumente empregada o Skype (http://www.skype.com/).
Trabalho cooperativo tambm conta com vrias opes. Em geral, quase todas elas incluem
troca de mensagens instantneas, troca de arquivos, envio de e-mails e outras tarefas, inclusive de
forma segura. Lucane (http://www.lucane.org/EN) uma destas ferramentas.

9.9. Documentao e sistemas de gerncia de documentos


Quanto mais crtico um desenvolvimento, mais formal este dever ser, o que pode ser detectado pelo
conjunto bem definido de artefatos a serem produzidos. Contudo, mesmo sistemas relativamente
simples precisam de um mnimo de documentao onde, por exemplo, requisitos e uma viso geral
do sistema so estabelecidos. Embora seja comum a documentao de sistemas de modelos
registrados em UML, texto em linguagem natural tambm desempenha um papel fundamental.
OpenOffice (http://www.openoffice.org.br/) compreende um conjunto de ferramentas de para
edio de textos, apresentao, planilha de clculo e outras. Quando so necessrias figuras mais

36 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

sofisticadas, pode-se empregar GIMP (http://www.gimp.org/). Vrias notaes podem ser


empregadas na construo de diagramas com Dia (http://www.lysator.liu.se/~alla/dia/).
crescente o emprego de DocBook (http://www.docbook.org/oasis/intro.html) para
editorao de contedo de computao, inclusive documentao de cdigo, o que pode ser til ao seu
projeto.
Documentos e/ou voz so instrumentos importantes, mas as interaes que empregam estes
meios perdem facilmente no tempo e no espao o contedo trocado. H opes para persistir o que
flui entre membros de uma equipe. MoinMoinWiki (http://moinmoin.wikiwikiweb.de/) uma das
mais simples de serem utilizadas. Convm ressaltar que estas ferramentas oferecem a opo de
acrescentar documentos, criao de links e registro dos mais variados tipos de informao que, de
outra forma, poderiam ser perdidos.
Aps produzidos, documentos precisam ser gerenciados, principalmente se o nmero deles
significativo. Ferramentas como DocMGR (http://docmgr.sourceforge.net/) e OpenDocMan
(http://www.opendocman.com) auxiliam na gerncia de documentos. Document Manager
(http://sourceforge.net/projects/docman/).

10

Miscelnea
ESTE TEXTO ENCONTRA-SE EM CONSTRUO. NEM MESMO UMA LIBERAO

PBLICA FOI PRODUZIDA, EM CONSEQNCIA, VRIOS AJUSTES DEVERO SER


REALIZADOS. SUGESTES SO BEM-VINDAS: fabio@inf.ufg.br.
Dublin Core Metadata Initiative (http://dublincore.org/) visa facilitar o acesso a informao.
JVoiceXML (http://jvoicexml.sourceforge.net/) uma implementao de VoiceXML 2.0
(http://www.w3.org/TR/voicexml20/), uma aplicao de XML projetada para o desenvolvimento de
dilogos de udio, sintetizao de voz e reconhecimento de voz, entre outros recursos.
JavaService (http://javaservice.objectweb.org/) um programa executvel que permite a
execuo de qualquer classe em Java como um servio do sistema operacional Windows NTTM.
James acrnimo de Java Apache Mail Enterprise Server (http://james.apache.org/), que
contm um servidor SMTP, POP3 e NNTP escrito 100% em Java. A visualizao do fluxo de
mensagens pode ser obtida atravs de HermesJMS (http://www.hermesjms.com/).
Java Message Service ou simplesmente JMS (http://java.sun.com/products/jms/) o servio
Java que permite a troca de mensagens entre softwares. ActiveMQ (http://activemq.codehaus.org/)
uma implementao de JMS. Jencks (http://jencks.org/) um continer JCA leve que fornece um

37 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

message driven classe.


Em alguns casos importante no apenas poder obter dados de um servidor mas tambm
envi-los. O upload de um arquivo atravs de pgina HTML com o apoio de um Servlet comentado
em

Servlets.com

(http://www.servlets.com/cos/)

OOP-Research

(http://www.oop-

reserch.com/mime_example_1.html).
Clientes implementados exclusivamente com o apoio de HTML podem no despertar o
interesse dos usurios, acostumados com as interfaces tradicionais coloridas e ricas na interao.
Javascript uma opo que permiter enriquecer a experincia do usurio sem grande
comprometimento da portabilidade. Comandos para abrir uma caixa de dilogo, por exemplo, to
simples quanto <html><form><input type=file></form></html>. Para salvar podese empregar a sentena . Estes e muitos outros recursos podem ser dominados com tutorais.
Javascript Tutorial um deles (http://wp.netscape.com/eng/mozilla/3.0/handbook/javascript/).
O servio de validao de marcao (http://validator.w3.org) pode ser empregado gratuitamente para
validar a conformidade de pginas HTML e XHTML com as recomendaes do consrcio W3C
(http://www.w3.org). O processamento de contedo no formato HTML a partir de aplicaes em Java pode ser
feito

por

ferramentas

como

HTMLParser

(http://htmlparser.sourceforge.net/)

Jericho

(http://jerichohtml.sourceforge.net/).
Servetec

(http://www.servertec.com/)

oferece

considervel

conjunto

de

ferramentas

para

desenvolvedores Java, desde servidores de aplicao, software servidor para upload de arquivos, recursos para
acesso a servios nativos como portas de I/O, variveis de ambiente e outros.
Ferramentas para manipulao de arquivos no formato CSV (http://ostermiller.org/utils/CSV.html).
Uma alternativa Opencsv (http://opencsv.sourceforge.net/).
Cacic (http://www.governoeletronico.gov.br/cacic/sisp2/) um configurador e coletor automtico de
informaes computacional.

11

ndice remissivo

Almanac Java 7

AJAX 20
AjaxAnywhere 20
AjaxTags 20
DWR 20
Echo2 20
Taconite 20
AjaxAnywhere 20
AjaxTags 20

anlise de cdigo
Checkstyle 12
Dependency Finder 11
PMD 12
Ant 13
Apache 23
API 30
ASM 11

38 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

CruiseControl 12

Barbecue 35

CSV
CSV 38

Barcode4J 35

Opencsv 38

BCEL 11
BeanShell 10

CVS 35

BouncyCastle 29

Bugzilla 36

DataVision 25

builds freqentes

Dependency Finder 11

CruiseControl 12

Dependency Injection 15

Mevenide 13

documentao

bytecode

Doxigen 13

ASM 11

Javadoc 13

BCEL 11

Jdocs 7

Javassist 11

Kickjava 8

Serp 11

DOM 30
Doxigen 13

Celtix 27
ChainSaw 16
Checkstyle 12
CMS

Dozer 29
DWR 20
DynamicJava 10

InfoGlue 28

Echo2 20

Magnolia 28

Eclipse 9

Zope 28

Eclipse plug-ins

cobertura de testes

Lomboz 21

EMMA 14

Mevenide 13

NoUnit 14

Eclipse Profiler 12

Quilt 14

EMMA 14

cdigo de barras

ERP

Barbecue 35

Compiere 35

Barcode4J 35

OfBiz 35

JBarcodeBean 35

OpenCRX 35

Compiere 35
compilador

TinyERP 35
ESB

Java2XML 9

Celtix 27

compiladores

Lingo 27

JDK 9

Mule 27

configurao

ServiceMix 27

Dependency Injection 15

ESS-Model 33

Excalibur 15

Excalibur 15

Gravity 15

Exemplos

Inversion of Control 15

Almanac Java 7

JConfig 15

JavaPractices 7

Jice 15
Spring 15
CRM 34

F
FindBugs 12
Fitnesse 14

39 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

FTPOnline 7

Java-Channel 7

Java.Net 7

gerncia
CRM 34
Geronimo 26
grafos

Java2XML 9
Javadoc 13
JavaPro 7
JavaScript 20
DWR 20

Graphviz 17
JGraph 17
Graphviz 17
Gravity 15

Javassist 11
JAXP 29
JBarcodeBean 35
JBoss 26

H
Hibernate 25
Hibernate
ObjectVisualizer 24
HTML
HTMLParser 38
Jericho 38
HTMLParser 38
HTTP 30

JBoss MX 22
JConfig 15
JCP 8
JDK 9
Jericho 38
JERT 25
Jetty 23
JfreeReport 25
JGraph 17
jGuru 7

i18n
Attesoro 27

Jice 15
JMX

IDE 9

JBoss MX 22

InfoGlue 28

JMX (especificao) 22

interpretadores

JMX RI 22

BeanShell 10

MC4J 22

DynamicJava 10

MX4J 22

inverso de controle
PicoConteiner 15

XMOJO 22
JMX (especificao) 22

Inversion of Control 15

JMX RI 22

iReport 25

JOnAS 26

iText 25

JSP

IzPack 17

Jetty 23

JUnit 13

Jamelon 14

JasperReports 25

Kickjava 8

JasperViewer 25

Java 7
Java EE
Geronimo 26
JBoss 26
JOnAS 26
Java Open Source Software 8
Java Technology 7

Lingo 27
linguagem de programao
JavaTM 7
JavaTM 7
Log4j 16
logging
ChainSaw 16

40 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

Log4j 16

requisitos

Rambutan 33
SRS Plugin 33

Magnolia 28

UCDD 33

Mapeamento

Xmlbasedsrs 33

Dozer 29
Maven 13
Mevenide 13

S
Scarab 36

MC4J 22

SDM 28

Mevenide 13

Segurana

modelos 32

BouncyCastle 29

Mule 27

SDM 28

MX4J 22

Senha

SDM 28

NanoHTTPD 23

Serializao
Dozer 29

NoUnit 14

Serp 11

O
ObjectVisualizer 24
OfBiz 35
OnJava 7
OpenCRX 35
OpenReports 25

ServiceMix 27
Servlet
Jetty 23
SOAP 30
Spring 15
SRS Plugin 33
Subversion 35, 36

persistncia

Subversion

Hibernate 25
PicoConteiner 15
PMD 12
ProGuard 18
proteo

Trac 36

T
Taconite 20
testes
Fitnesse 14

ProGuard 18

Jamelon 14

TinyERP 35

Quilt 14

TJWS 23

Tomcat 23

Rambutan 33

Trac 36

Ravenous 23

tracking
CRM 34

relatrios

Trac 36

DataVision 25
iReport 25

iText 25

UCDD 33

JasperReports 25

UDDI 30

JasperViewer 25

URL 30

JERT 25

JfreeReport 25
ObjectVisualizer 24
OpenReports 25

Web
Jetty 23

41 de 42

Creative Commons (cc) Fbio Nogueira de Lucena

web server

MoinMoinWiki 37

Apache 23

WSDL 30

NanoHTTPD 23

Ravenous 23
TJWS 23
Tomcat 23
web tier
Tomcat 23
wiki
Fitnesse 14

XHTML 30
XML-RPC 30
Xmlbasedsrs 33
XMOJO 22
XPlanner 34

Z
Zope 28

42 de 42