Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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
7.8. Segurana..................................................................................................................................................................... 28
8
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
4 de 42
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)
ObjectWeb (http://www.objectweb.org/)
FreshMeat (http://freshmeat.net/)
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.
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.
6 de 42
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
7 de 42
8 de 42
recursos. Muitas vezes o Emacs empregado como ambiente de desenvolvimento por oferecer
mecanismos similares para vrias linguagens como C e Java, entre outras.
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
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
Biblioteca padro
Javolution (http://javolution.org/) oferece implementao para sistemas embutidos e de
tempo real para vrias classes da biblioteca Java.
10 de 42
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.
para
consulta
eficiente
ao
cdigo,
como
oferecido
por
CodeCrawler
12 de 42
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
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
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.
14 de 42
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
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
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
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)
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
17 de 42
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.
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/).
19 de 42
textos
de
arquivos
PDF,
unir
tais
arquivos,
realizar
busca
outras.
PJ
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.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
22 de 42
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
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.4. Relatrios
ObjectVisualizer (http://objectvisualizer.com/) facilita a construo de consultas, relatrios e a
24 de 42
do conhecido
Crystal
Reports.
JERT
(http://jert.sourceforge.net/), JfreeReport
25 de 42
Aplicaes corporativas
Compiere (http://www.compiere.org)
TinyERP (http://tinyerp.org/)
OpenCRX (http://opencrx.sourceforge.net).
26 de 42
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.
27 de 42
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.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
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.
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
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
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
30 de 42
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.
31 de 42
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
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.
OpenPSA (http://www.openpsa.org/)
33 de 42
ProjectBench (http://projectbench.sourceforge.net/)
XPlanner (http://www.xplanner.org)
(planejamento e acompanhamento).
Hipergate (http://www.hipergate.org) e
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/).
opes.
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/)
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:
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.
34 de 42
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.
35 de 42
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.
36 de 42
10
Miscelnea
ESTE TEXTO ENCONTRA-SE EM CONSTRUO. NEM MESMO UMA LIBERAO
37 de 42
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
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
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
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
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