Professional Documents
Culture Documents
Vdeos
2 2 vdeo-aulas sobre o padro Template Method.
Gostou das vdeo aulas? O portal www.devmedia.com.br possui mais de 2 mil vdeo aulas e dezenas de cursos online sobre desenvolvimento de software!
Agora voc pode comprar as vdeo aulas que preferir e fazer sua prpria combinao de vdeos! Saiba mais em www.devmedia.com.br/creditos
A Java Magazine tem que ser feita ao seu gosto. Para isso, precisamos saber o que voc, leitor, acha da revista!
D
sobre e
D seu voto sobre esta edio, artigo por artigo, atravs do link:
www.devmedia.com.br/javamagazine/feedback
s
ta
edio
Para votar, voc vai precisar do cdigo de banca desta edio, que : javafx2
Carta ao Leitor
Ano IX Edio 105 2012 ISSN 1676-8361
Edio
D
Editor
Eduardo Spnola (eduspinola@gmail.com) esde a sua primeira verso, o JavaFX, at ento, no chegou a se firmar como uma das
preferncias dos desenvolvedores Java. Apesar de ter recebido bons investimentos
Produo durante o perodo de seu lanamento, por diversas caractersticas e decises de projeto,
Jornalista Responsvel Kaline Dolabella - JP24185 a nova plataforma Java acabou no agradando como se esperava. Um dos motivos para isso se
Distribuio chamava JavaFX Script. Esta nova linguagem, no entanto, no acabou, mas agora, para criar
aplicaes RIA com JavaFX, podemos utilizar nossos slidos conhecimentos de anos de experincia
FC Comercial e Distribuidora S.A
com a tradicional e forte API Java. Assim, no temos mais a barreira inicial, facilitando sua adoo
Rua Teodoro da Silva, 907, Graja - RJ
e ajudando a alavancar mais uma importante e promissora plataforma Java.
CEP 20563-900, (21) 3879-7766 - (21) 2577-6362
Dessa forma, Por dentro do JavaFX 2 apresentar esta renovada tecnologia, voltada
Atendimento ao leitor implementao de aplicaes cliente ricas para a Internet em mltiplas plataformas. Para isso, uma
A DevMedia possui uma Central de Atendimento on-line, onde voc pode introduo tecnologia, seu histrico e principais recursos sero apresentados, junto a exemplos
tirar suas dvidas sobre servios, enviar crticas e sugestes e falar com um de prticos onde sero demonstradas algumas das suas funcionalidades.
nossos atendentes. Atravs da nossa central tambm possvel alterar dados
Mudanas nas certificaes Java retrata as mudanas em relao s certificaes Java da Oracle.
cadastrais, consultar o status de assinaturas e conferir a data de envio de suas
revistas. Acesse www.devmedia.com.br/central, ou se preferir entre em As novas siglas, alteraes em contedos aplicados, cursos obrigatrios, de preparao, realizados
contato conosco atravs do telefone 21 3382-5038. antes de algumas certificaes, e as categorias das certificaes envolvendo as plataformas Java SE,
Java EE e Java ME tambm sero abordadas.
Edies anteriores Mudando um pouco de assunto, o desenvolvedor Java EE pode se sentir confuso diante da
Adquira as edies anteriores da revista Java Magazine ou de qualquer outra
verso 6 desta plataforma porque algumas tecnologias parecem se sobrepor notadamente EJB
publicao do Grupo DevMedia de forma prtica e segura, em
e CDI. Sendo EJB uma tecnologia tradicionalmente complicada e improdutiva, o programador se
www.devmedia.com.br/anteriores.
pergunta se possvel substituir EJB por CDI, e como faz-lo. EJB 3.1 versus CDI explorar as
Publicidade duas possibilidades: trocar EJB por CDI ou usar CDI com EJB. Veremos que ambas so viveis, e
publicidade@devmedia.com.br 21 3382-5038 que a segunda opo pode ser vantajosa.
Anncios Anunciando nas publicaes e nos sites do Grupo DevMedia, voc Em Mantenha suas verses em dia vamos aprender como criar um processo de versionamento
divulga sua marca ou produto para mais de 100 mil desenvolvedores de todo o e como extrair o melhor das ferramentas SVN, Maven e Nexus para automatizar o lanamento
Brasil, em mais de 200 cidades. Solicite nossos Media Kits, com detalhes sobre de novas verses com segurana e estabilidade. A adoo de um processo de versionamento
preos e formatos de anncios.
automatizado ajuda a elevar o nvel de maturidade e organizao da empresa, garantindo um
Reprints Editoriais Se foi publicado na Java Magazine um artigo que controle rgido sobre as modificaes realizadas pela equipe de desenvolvimento.
possa alavancar as suas vendas, multiplique essa oportunidade! Solicite a
No artigo Alta disponibilidade com GlassFish, mostraremos como configurar um cluster com
reimpresso da matria junto com a capa da edio em que saiu, e distribua
esse reprint personalizado entre seus clientes. balanceamento de carga no GlassFish para alcanar alta disponibilidade. Em seguida, veremos como
Encarte de CDs Faa como nossos maiores anunciantes. Encarte um CD efetuar tuning no desenvolvimento de sistemas e nas configuraes do servidor para conseguirmos
com uma amostra de seus produtos na Java Magazine e atinja um pblico ganho de performance.
segmentado e formador de opinio. O artigo Paradigmas da Mobilidade visa proporcionar uma leitura objetiva sobre os paradigmas
nativo, hbrido e web, adotados na codificao de solues mveis. Atravs de uma anlise de
Java, o logotipo da xcara de caf Java e todas as marcas e logotipos baseados
aspectos como consistncia e desempenho de plataformas e tecnologias j estabelecidas, bem como
em/ ou referentes a Java so marcas comerciais ou marcas registradas da Sun
Microsystems, Inc. nos Estados Unidos e em outros pases. de outras mais recentes e muito bem cotadas no cenrio de mobilidade, alm de aspectos como a
disponibilidade de capitais financeiro e humano, convidamos o leitor para uma reflexo sobre a
aplicabilidade de cada uma destas propostas.
Fale com o Editor!
Diante do crescimento das Metodologias geis, em especial, do framework Scrum, diversos
muito importante para a equipe saber o artigo na revista ou no site Java Magazine, desafios surgem para as atividades de testes nestes ambientes. Pensando nisso, no artigo Testes no
que voc est achando da revista: que tipo entre em contato com o editor, informando
Scrum, os autores levantaram estes desafios e propuseram uma adaptao do processo de testes
de artigo voc gostaria de ler, que artigo voc o ttulo e mini-resumo do tema que voc
mais gostou e qual artigo voc menos gostou. gostaria de publicar: fundamental s atividades do Scrum.
Fique a vontade para entrar em contato com Aproveitem ao mximo esta edio, e boa leitura!
os editores e dar a sua sugesto! Eduardo Spnola - Editor da Revista
Se voc estiver interessado em publicar um eduspinola@gmail.com
Mudanas nas
certificaes Java
Cursos obrigatrios, nomenclaturas e contedos
aplicados sofreram modificaes nas certificaes
Java geridas pela Oracle
S Resumo DevMan
er um profissional certificado Java ter um dife-
rencial na carreira, pois a certificao confirma a
aptido para a tecnologia. Devido sua real impor- De que se trata o artigo:
tncia, a certificao um assunto muito discutido entre O artigo apresenta as mudanas em relao s certificaes Java da
desenvolvedores, pois depende de quem faz e para que Oracle. As novas siglas, mudanas em contedos aplicados, cursos obri-
objetivo a obtm. A abordagem aqui apresentada busca gatrios, de preparao, realizados antes de algumas certificaes, e as
responder as principais dvidas de um programador, categorias das certificaes envolvendo as plataformas Java SE, Java EE
em relao a uma certificao Java. e Java ME tambm sero abordadas.
importante ter cincia que os exames de cer-
tificao, para os fabricantes que os mantm, so Em que situao o tema til:
documentos que formalizam a competncia de pro- Para desenvolvedores que desejam informar-se sobre as mudanas nas
fissionais para atuarem no mercado, com destreza e certificaes Java e conhecer os assuntos e objetivos de cada exame, bem
conhecimento, para o produto, tecnologia ou meto- como as habilidades fundamentais que so necessrias em cada prova.
dologia ao qual o certificado se aplica. Esta situao
pode ser comprovada quando se verifica, dentre os Mudanas nas certificaes Java:
pr-requisitos das vagas ofertadas, a necessidade de A tecnologia Java oferece, por meio da Oracle, uma srie de certificaes
certificaes e no mais apenas a experincia profis- de diversas categorias e perfis. Com a aquisio da Sun, algumas modifi-
sional comprovada. caes ocorreram em relao a estas certificaes. Um exemplo a troca
A certificao pode ser vista, de maneira anloga, como de nomenclatura, que agora constituda com a marca da Oracle. Alm
um atestado de competncia, um diferencial na carreira dessas mudanas, outras so exemplificadas no artigo, que contextualiza,
profissional, mas apenas obter a certificao, sem experi- em sua introduo, a importncia de ser um profissional certificado. As
ncia, no o suficiente. A certificao pode tambm ser certificaes Java abrangem trs reas: Java SE, Java EE e Java ME, e dentro
vista como um meio para o profissional testar e adquirir dessas reas so aplicadas quatro categorias de provas: Associate, Pro-
conhecimento, pois o processo de tornar-se certificado, fessional, Master e Expert. Nessas categorias existem vrias certificaes
alm de desafiar a profundidade e a amplitude de suas embutidas, as quais sero abordadas ao longo do artigo.
habilidades tcnicas, uma maneira de ganhar em ter-
mos de aprendizado e crescimento como profissional
de TI. Pode-se assumir que no s a obteno de uma
certificao, mas tambm a preparao para obt-la, De acordo com Kathy Sierra (uma das desenvolvedoras do
um ponto importante e positivo, pois uma maneira exame), passar no exame provar trs itens importantes para
organizada para se conhecer melhor o Java. o empregador atual ou futuro: que voc sabe das coisas; que sabe
Deste modo, importante que o profissional que como estudar e se preparar para um teste desafiador; e acima de tudo que
julga a certificao como algo no to relevante tenha conhece a tecnologia e est de acordo com os objetivos cobrados para tal
cincia de que existem empresas (de todos os portes) exame. Se um empregador tiver que optar entre um candidato que passou
que se preocupam em ter em sua equipe profissionais no exame e outro que no tenha passado, ele saber que o programador
certificados. certificado no demorar no aprendizado.
programao Java, sendo capaz de criar um aplicativo em Java baseados na web e aplicaes corporativas. A plataforma Java EE
que seja executado em servidores e sistemas desktop. inclui muitos componentes do Java SE e incide em um conjunto de
A categoria OCP composta pelas seguintes certificaes: Oracle protocolos, servidores e APIs que fornecem a funcionalidade para
Certified Professional (OCP), Java SE 5 Programmer (exame 1Z0- desenvolver aplicativos multicamadas com base na web. Confira
853), anteriormente conhecida como Sun Certified Java Program- na Figura 3 as certificaes disponveis para Java EE.
mer (SCJP SE 5); Oracle Certified Professional (OCP), Java SE 6
Programmer (exame 1Z0-851), conhecida anteriormente como
Sun Certified Java Programmer (SCJP SE 6); e Oracle Certified
Professional, Java SE 7 Programmer II (exame 1Z1-804).
A prova Oracle Certified Professional, Java SE 7 Programmer II,
est em fase beta. Os tpicos do exame dessa certificao ainda no
foram apresentados, pois parte de seu contedo foi para a OCJA 7.
O caminho para atingir a OCJP 7 descrito na Figura 2.
Java ME
Na plataforma Java ME, o objetivo certificar profissionais que
desenvolvem aplicaes utilizando Java Platform, Micro Edition,
destinada a dispositivos mveis, PDAs, aparelhos celulares, dentre
outros. Veja na Figura 4 a certificao disponvel para Java ME.
Cursos preparatrios
Uma novidade que no existia na metodologia utilizada pela Sun
a realizao de cursos obrigatrios antes de fazer uma prova
Para o candidato que deseja realizar qualquer uma dessas duas Everton Coimbra de Arajo
certificaes, necessrio fazer pelo menos um dos cursos Oracle everton@utfpr.edu.br
listados abaixo: Desde 1987 atua na rea de treinamento e desenvolvimento. mestre
Linguagem Java (Java Programming Language, Java SE 6); em Cincia da Computao, e professor efetivo da UTFPR, Campus Me-
Fundamentos de Java (Fundamentals of the Java Programming dianeira. Tem se dedicado s disciplinas relacionadas ao desenvolvimento de
Language, Java SE 6); aplicaes web e na persistncia de objetos, focando seus estudos e pesquisas
na plataforma Java e .NET. autor da Visual Books, com oito livros j publicados.
Desenvolvimento de aplicaes (Developing Applications with
the Java SE 6 Platform);
Anlise orientada a objetos e Design usando UML (Object-
Oriented Analysis and Design Using UML); Scheila Giongo
Tuning de performance em Java SE (Java SE Performance Tuning). giongo.scheila@gmail.com
Graduada em Tecnologia em Anlise e Desenvolvimento de Sistemas pela
Os cursos preparatrios so realizados de maneira presencial ou Universidade do Oeste de Santa Catarina (UNOESC - Campus Xanxer).
Possui especializao em projeto e desenvolvimento de sistemas baseados
on-line nos centros de treinamento oficiais da Oracle.
em objetos para ambiente internet, na Universidade Tecnolgica Federal do
Paran (UTFPR - Campus Medianeira). Trabalha como desenvolvedora web na Viasoft, empresa
Concluso especializada na produo de softwares de gesto empresarial.
Este artigo apresentou as mudanas e novidades referentes s
certificaes Java, que envolvem: mudanas nas nomenclaturas,
novos contedos abordados, novas provas e os cursos obrigatrios,
de preparao, realizados antes de algumas certificaes. http://www.profissionaisti.com.br/2010/04/a-importancia-das-
Alm disso, foram apresentadas as categorias que abrangem as certificacoes-para-o-profissional-de-ti/
plataformas Java SE, Java EE e Java ME, e as habilidades exigidas A importncia das certificaes para o profissional de TI.
aos profissionais, decorrentes de cada rea. http://www.devmedia.com.br/websys.2/webreader.asp?cat=6&revista=
A importncia de ser um profissional certificado traz somente javamagazine_72#a-1888
vantagens no mercado de trabalho, ficando a cargo do profissional Certificaes Java.
que tiver interesse em testar seus conhecimentos e/ou conquistar
http://infoblogs.com.br/view.action?contentId=250152&Anunciadas-
um diferencial em sua carreira, decidir qual a melhor certificao
certificacoes-Java-7-Beta.html
para seus objetivos.
Certificaes Java 7 Beta.
http://www.devsexperts.com/2011/10/04/certificacoes-java-7-beta/
D seu feedback sobre esta edio! Novidades sobre a certificaes Java 7 Beta.
Feedback
eu
https://blogs.oracle.com/certification/?page=8
s
seu gosto. Para isso, precisamos saber Algumas coisas para considerar sobre certificao - Harold Green.
sobre e
ta
edio
http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_
D seu voto sobre este artigo, atravs do link: id=457&get_params=pillar_id:6
www.devmedia.com.br/javamagazine/feedback Certificaes e caminhos para certificao.
E Resumo DevMan
nterprise JavaBeans (EJBs) sempre foram com-
ponentes supervalorizados pelas especificaes
Java EE. Entretanto, sua adoo foi menor do De que se trata o artigo:
que o esperado de uma tecnologia oficial to central. A Duas novas especificaes de Java EE: EJB 3.1 e CDI. Estas tecnologias
principal razo a imensa complexidade de desenvol- possuem, por vezes, funcionalidades que se sobrepem, e parece possvel
vimento. EJBs exigiam a criao de vrias interfaces, substituir EJBs por CDI. realmente possvel? Como? vantajoso? Veremos
frequentemente redundantes; o empacotamento de respostas para estas perguntas neste artigo.
componentes em intricadas estruturas de pacotes; o uso
de servidores de aplicaes complexos e pesados etc. Em que situao o tema til:
Todas estas desvantagens elevavam muito o custo inicial Tanto CDI quanto EJB 3.1 so especificaes oficiais Java EE, de modo
de se usar EJBs, de modo que sua adoo se manteve que muito positivo conhec-las. Alm disto, e ao contrrio de vrias
mais ou menos restrita a grandes organizaes. Como especificaes, so tecnologias muito simples, prticas, teis e podero-
alternativa complexidade, surgiram frameworks leves, sas. Assim, conveniente que o desenvolvedor as conhea para saber
como Spring, que proviam vrias das vantagens de EJBs quando positivo utiliz-las, como integr-las ou mesmo como substituir
com muito menos recursos e complicaes. uma por outra.
As especificaes da plataforma corporativa de Java,
porm, evoluram para tornar EJBs mais palatveis. EJB 3.1 versus CDI:
A API Java EE 6 foi o mais recente e significativo passo O desenvolvedor Java EE pode se sentir confuso diante da verso 6 da
nesta direo, com a especificao EJB 3.1. Esta verso plataforma porque algumas tecnologias parecem se sobrepor notada-
dispensa muito da complexidade tradicionalmente as- mente EJB e CDI. Sendo EJB uma tecnologia tradicionalmente complicada
sociada arquitetura, provendo inclusive um pequeno e improdutiva, o programador se pergunta se possvel substituir EJB por
mas significativo subconjunto da especificao maior, CDI, e como faz-lo. Este artigo explorar as duas possibilidades: trocar
chamado EJB Lite. EJB por CDI ou usar CDI com EJB. Veremos que ambas so viveis, e que
Por outro lado, Java EE 6 tambm prov um novo mo- a segunda opo pode ser vantajosa.
delo de gerenciamento de objetos chamado de Contexts
and Dependency Injection (CDI). Esta especificao
(redigida na JSR 299) acrescenta a Java EE um sistema de o uso de EJBs quando se precisa dos servios que eles provm..
injeo de dependncias e o conceito de escopos, alm de Entretanto, muitos se perguntam: por que usar EJBs quando estes
vrias funcionalidades como eventos, interceptadores, mesmos servios podem ser usados atravs de CDI, s que de
entre outros. Muito de CDI foi inspirado em alternativas forma muito mais simples? Alis, pode CDI realmente fornecer
EJB, como Spring, Guice e Seam. Muitas funcionalida- todas as funcionalidades providas por EJBs? o que veremos
des que eram formalmente suportadas apenas por EJBs neste artigo.
podem, agora, ser utilizadas atravs de CDI. Ademais,
CDI mais simples que EJBs inclusive a verso 3.1 e, Uma breve histria dos EJBs
semanticamente, mais poderoso e flexvel. O conceito de EJB surgiu no final dos anos 90 e incio da dcada
A sobreposio de funcionalidades das duas tecnolo- passada. O propsito principal da arquitetura era prover um
gias levantou suspeitas e gerou boatos sobre o futuro de meio padronizado de se desenvolver a lgica de negcio de uma
Java EE e, especialmente, dos EJBs. Por exemplo, vrios aplicao, em oposio lgica da interface com o usurio. Com
desenvolvedores j cogitam substituir completamente EJBs, teoricamente seria possvel executar toda a lgica de uma
EJBs por CDI. bem verdade que a JSR 299 especifica aplicao em um ou mais servidores, utilizando qualquer tipo de
como EJBs devem ser relacionados com a nova arquite- interface. Assim, a lgica da aplicao validao, processamento
tura de injeo de dependncias, e a documentao de de dados, persistncia etc. rodaria no servidor, e interfaces dos
Weld (a implementao de referncia de CDI) recomenda mais variados tipos applets, programas em Swing, aplicaes
dispensando a implementao de interfaces como SessionBean e arquivos WAR. E tanto os ejb-jars quanto os arquivos WAR, assim
EJBHome. Por sua vez, as interfaces locais tornaram-se desneces- como quaisquer arquivos JAR necessrios, deviam ser agrupados
srias para invocar um mtodo de um EJB localmente no era em um arquivo EAR, que tinha seu prprio descritor, chamado
mais necessrio criar uma interface separada. application.xml. A Figura 3 apresenta um diagrama que representa
As anotaes no foram adotadas apenas para configurar EJBs, a estrutura de um hipottico arquivo EAR.
mas tambm para permitir a injeo de recursos. At EJB 2.x, a ma-
neira padro de se obter a referncia a um EJB era atravs da classe
InitialContext, que recuperava instncias de recursos atravs de
lookup. Um EJB na camada de servio, por exemplo, que fosse
utilizar um EJB da camada de persistncia seria implementado de
maneira semelhante Listagem 1. Em EJB 3.0, porm, possvel
injetar uma instncia de um EJB utilizando-se a anotao, como
visto na Listagem 2. Os dois exemplos de cdigo mostram como
a nova abordagem bem mais prtica, clara e sucinta.
O que CDI oferece melhor alternativa para aplicaes que tenham uma arquitetura
Os desenvolvedores Java EE experientes no puderam deixar de semelhante apresentada na Figura 2, na qual toda a lgica
notar a duplicao de algumas funcionalidades de EJB em CDI. executada em um nico servidor. Mesmo a comunicao entre
Por exemplo, a injeo de dependncias via @EJB agora pode ser servios distribudos possvel de ser feita, hoje em dia, atravs
feita com a anotao @Inject, que, no obstante, muito mais po- de web services, seja com SOAP ou REST.
derosa: alm de permitir injetar EJBs entre si, tambm capaz de Neste contexto, um desenvolvedor pode se perguntar: h ainda
executar a injeo de dependncias nos POJOs conhecidos como alguma vantagem em utilizar EJBs? possvel abandon-los
beans gerenciados. Em outras palavras, @Inject no s atende a completamente em favor de CDI?
todas as necessidades atendidas por @EJB, como tambm permite
utilizar injeo de dependncias em objetos que no sejam EJBs. Assim, O que CDI no oferece
se um programador almejava criar EJBs para poder executar inje- A resposta para esta questo mais complexa do que pode
o de dependncias de acordo com os padres, j no o precisa parecer primeira vista.
fazer em Java EE 6. Apesar de todo o seu poder, CDI no prov vrias funcionalida-
des dos EJBs, inclusive algumas muito teis no desenvolvimento
- Beans gerenciados (managed beans) so todos os beans criados e gerenciados por de aplicaes web no distribudas. Por exemplo, CDI no fornece
CDI. Podem ser tanto EJBs quanto POJOs que satisfaam umas poucas condies controle de transaes automaticamente; EJBs, por outro lado,
(ser classe concreta, possuir construtor padro, etc.). podem fazer gerenciamento de transaes de maneira declarativa
e quase transparente.
Outro ponto em que CDI reimplementa funcionalidades de EJB Algumas funcionalidades de EJB teis para grandes aplicaes
de maneira superior o gerenciamento de ciclo de vida de beans. corporativas tambm no tm contrapartidas imediatas em CDI.
Enquanto beans de sesso podem ser apenas stateless (criado e o caso dos timers, que permitem agendar a execuo de mtodos de
destrudo a cada acesso), stateful (criado e destrudo quando o beans para momentos especficos. Outra funcionalidade relevante
desenvolvedor determina) ou, em EJB 3.1, singletons, um bean ge- so os mtodos assncronos. Estes mtodos, quando invocados, no
renciado pode ter praticamente qualquer ciclo de vida. Para nos bloqueiam a thread; ao invs disto, so executados paralelamente e
restringirmos apenas aos j providos por CDI, um bean gerenciado seus resultados podem ser recuperados posteriormente.
pode estar em um dos seguintes escopos: Provavelmente, porm, a maior deficincia de CDI, quando
Escopo de requisio: quando instanciado e destrudo a cada comparado com EJBs, seja a falta de facilidades para programa-
requisio; o distribuda. No possvel invocar beans gerenciados em
Escopo de sesso: quando associado a uma sesso e destrudo servidores diferentes de maneira transparente, por exemplo.
junto com ela; Outros recursos, como monitorao de beans via JMX, tambm
Escopo de aplicao: quando sobrevive por todo o perodo de esto ausentes, dificultando a depurao e monitoramento de
execuo da aplicao; ou aplicaes. CDI tampouco suporta pooling de instncias e beans
Escopo de conversao: geralmente associado a uma aba de gerenciados no so encontrveis via JNDI nem invocveis
navegador, e passvel de ser destrudo pelo programador. via JMS.
Muitas destas funcionalidades podem ser providas por exten-
Esta uma maneira muito mais flexvel, intuitiva e prtica de ses de CDI ou outras bibliotecas. Por exemplo, o projeto Apache
gerenciar o ciclo de vida de instncias e, novamente, independem MyFaces CODI, que um conjunto de extenses para CDI, prov
de EJB. Por outro lado, possvel colocar EJBs em qualquer um uma anotao @Transactional que declarativamente envolve beans
destes escopos. ou mtodos em transaes. Timers podem ser substitudos pelo
Ademais, assim como EJBs, possvel escrever interceptadores agendador Quartz; o projeto teria mais uma dependncia, mas
para os beans gerenciados de CDI. Os interceptadores de CDI so Quartz em si bem poderoso, at mais que os timers. Mtodos
consideravelmente mais simples e flexveis que os interceptado- assncronos, por sua vez, podem ser implementados com threads.
res de EJB. Caso os interceptadores no sejam exatamente o que Por fim, h extenses para tornar beans CDI mais fceis de acessar
o desenvolvedor deseja, CDI permite a criao de decoradores, remotamente boa parte delas oriundas do claudicante projeto
que, dependendo da situao, podem ser bem mais adequados. Seam 3 como RESTEasy CDI e Seam JMS. Futuramente, ainda
Como usual, interceptadores e decoradores de CDI podem ser mais mdulos estaro disponveis.
aplicados a EJBs tambm. Entretanto, razovel se perguntar se realmente compensa
Os criadores de CDI enfatizam bastante, tanto na JSR quanto utilizar estas extenses em boa parte dos casos. Muitas, talvez a
nas documentaes de referncia, que a nova tecnologia no maioria, destas extenses ainda est em amadurecimento ou tm
veio para substituir EJBs. Entretanto, CDI bastante semelhante futuro indefinido, como as providas por Seam 3. Alm disto, CDI
a frameworks como Spring, Seam e Guice, que se consolidaram integra muito bem com EJB, de modo que possvel delegar aos
como alternativas prticas a EJB. Oras, estes frameworks e, por EJBs o que CDI no pode fazer. Como EJB 3.1 muito simples de
extenso, CDI so frequentemente considerados como uma utilizar e EJB lite relativamente fcil de ser implantado at em
@Stateless
public class PessoaDAO
O modelo Entity-Control-Boundary
No nosso exemplo, utilizamos EJBs para gerenciamento de
transaes, mas poderamos converter nosso bean em um EJB
para criar mtodos assncronos, torn-lo acessvel via JMS, acres-
centar um timer etc. O mais frequente, porm, em aplicaes web
de complexidade mdia, utilizar EJBs por serem transacionais,
mas de acordo com o modelo Entity-Control-Boundary (ECB), uma
variante do modelo MVC. Figura 6. Representao esquemtica de uma aplicao ECB.
Neste modelo, a aplicao possui trs camadas antes do view:
camada de entidades (que contm elementos persistentes ou - A grande vantagem do modelo ECB a separao entre a lgica de negcio e a
objetos no gerenciados), camada de fronteira (cujos componen- lgica de apresentao. Esta separao importante porque o cdigo da interface
tes so acessados por cdigo cliente) e camada de controle (que de uma aplicao tende a mudar muito, ao contrrio da lgica de negcio, que
intermedeia fronteira e entidade). A lgica de apresentao est mais estvel.
isolada no view, que utiliza a camada de fronteira. Por sua vez,
a lgica de negcio implementada nas camadas de entidade, Se nosso exemplo for convertido ao modelo ECB, a classe Pessoa
controle e fronteira. Se uma aplicao MVC pode ser representada pertenceria camada de entidade, e PessoaDAO pertenceria camada
de controle. Haveria, porm, uma nova classe, chamada, digamos, Java EE para injeo de dependncias e gerenciamento de contexto.
PessoaFacade, que seria a camada de fronteira. Nesta arquitetura, o CDI inspira-se em muitos frameworks bem-sucedidos de terceiros,
EJB no seria mais PessoaDAO, mas sim PessoaFacade. Isto faz sentido que j resolvem inmeros dos problemas que Java EE atacava h um
porque se, digamos, executarmos um mtodo que faa duas opera- bom tempo. Os programadores Java para web no puderam deixar
es de persistncia, e a segunda operao falhar, provavelmente de se perguntar, ento: possvel substituir EJBs por CDI?
ser necessrio que ambas as operaes sejam canceladas, pois a Em boa parte dos cenrios, possvel sim abandonar EJBs, pois
primeira operao s faria sentido junto com a segunda. A classe muitos dos seus recursos j so fornecidos por CDI. verdade que
PessoaFacade apresentada na Listagem 4. h funcionalidades de Enterprise JavaBeans que no so supridas
por CDI (ao menos no ainda), tais como gerenciamento de tran-
- Outra vantagem de usar EJBs na camada de fronteira que isto permite que os saes; entretanto, so frequentemente fceis de implementar e
servios sejam providos remotamente, sejam distribudos etc. Considerando que um rico ecossistema de extenses para CDI est florescendo. Se
o custo de criar EJBs em Java EE 6 baixo, pode ser uma boa estratgia. voc deseja gerenciamento declarativo de transaes, por exemplo,
basta usar projetos como MyFaces CODI.
O papel de CDI neste cenrio fazer o que melhor faz: servir de Por outro lado, o desenvolvedor pode ter muito a ganhar se der uma
cola entre os componentes da aplicao. Os componentes internos chance a EJB 3.1. De fato, o desenvolvimento de EJBs na nova verso
do software no precisaro ser mais EJBs e sero injetados via to simples quanto a criao de beans gerenciados por CDI, e EJB tem
CDI, que vantajoso at mesmo para fazer injeo de dependn- a vantagem de j estar disponvel em servidores de aplicao. Muitos
cias em EJBs, como pode ser visto na Listagem 4. CDI tambm dos problemas que demandariam extenses de CDI so resolvveis
ficaria responsvel por processar eventos, executar intercepta- e, o mais importante, facilmente resolvveis com EJB 3.1.
dores e decoradores, gerenciar ciclo de vida, entre outros. Caso Resumindo, o desenvolvedor Java EE tem duas escolhas: utilizar
um componente interno da aplicao venha a necessitar de uma CDI com extenses ou utilizar EJB 3.1 com CDI ambas as solues
funcionalidade de EJBs, adapt-lo pode ser to simples quanto so viveis. recomendvel, porm, que o programador avalie se
acrescentar a anotao @Stateless. EJB uma soluo para seu problema. No final das contas, esta
a melhor notcia: EJB pode ser a soluo, agora, e no mais um
problema por si s.
Listagem 4. Classe de facade, que cumpre o papel de fronteira na arquitetura ECB
de nosso projeto.
Adam Victor Nazareth Brandizzi
@Stateless brandizzi@gmail.com
public class PessoaFacade { desenvolvedor em vrias linguagens. Programa em Java h
@Inject private PessoaDAO pessoaDAO;
quatro anos, trabalhando majoritariamente com Struts 2 e com a
public Pessoa criar(String nome, String usuario, String senha, int idade) { ferramenta de portais Liferay. licenciado em Computao pela Univer-
return pessoaDAO.criar(nome, usuario, senha, idade); sidade de Braslia e atualmente trabalha para SEA Tecnologia.
}
de to simples, quando comparados com verses anteriores. seu gosto. Para isso, precisamos saber
sobre e
Entretanto, o carter obscuro e trabalhoso dos EJBs antigos era to o que voc, leitor, acha da revista!
s
ta
edio
traumatizante que os desenvolvedores Java EE ainda buscam ma-
D seu voto sobre este artigo, atravs do link:
neiras de evitar ter de lidar com EJBs, mesmo na nova verso. Isto se
tornou ainda mais desejvel com a introduo de CDI, a especificao www.devmedia.com.br/javamagazine/feedback
D Resumo DevMan
esde a popularizao da Internet, vemos uma
tendncia crescer de maneira constante: a con-
vergncia de aplicativos, anteriormente isola- De que se trata o artigo:
dos em um computador desconectado, para a Web. O artigo apresenta a tecnologia JavaFX 2.0, voltada ao desenvolvimen-
Dentro da janela de um navegador, no so somente sites to de aplicaes cliente ricas para a Internet em mltiplas plataformas.
que prendem a ateno do usurio agora, aplicativos, Para isso, uma introduo tecnologia, seu histrico e principais recur-
jogos e contedo multimdia saltam literalmente da sos so apresentados, junto a exemplos prticos onde so demonstradas
Internet para o computador do usurio. algumas das suas funcionalidades.
Essa tendncia de criao de aplicaes Web cada vez
mais parecidas (e at mesmo equivalentes ou superiores) Em que situao o tema til:
com outros programas tradicionalmente no dependen- A criao de aplicaes cliente ricas hoje um segmento em ascen-
tes da Internet e que so costumeiramente chamados so na rea de desenvolvimento de software. Os programadores Java
de aplicativos desktop culminou com o aparecimento contam agora com o JavaFX 2.0 como uma nova opo, poderosa e
de uma nova categoria de aplicativos, a dos aplicativos flexvel, nesta rea.
ricos para a Internet (Rich Internet Applications, ou sim-
plesmente RIA). Por dentro do JavaFX 2:
A ideia por trs deste tipo de aplicativo justamente A tecnologia JavaFX, recentemente atualizada para a verso 2.0,
dar ao usurio os mesmos recursos e a mesma sen- possibilita a criao de aplicaes cliente ricas para a Internet utili-
sao de utilizao que ele possui com um aplicativo zando um novo conjunto de controles e recursos grficos, aliados
desktop tradicional, desfrutando das bvias vanta- s vantagens da linguagem Java que j so familiares aos desenvol-
gens da conexo rede. Um aplicativo deste tipo, por vedores. No so somente aplicaes grficas e jogos que podem
ser executado na maioria dos casos dentro de um tirar proveito da tecnologia. Qualquer tipo de software cliente pode
navegador, torna-se acessvel em qualquer local onde ser desenvolvido utilizando seus recursos e evidentes vantagens na
o usurio tenha acesso a um browser e uma conexo elaborao de uma rica interface.
Internet.
Uma outra caracterstica marcante da aplicao rica
para a Internet que esta geralmente faz uso intenso A plataforma Adobe Flash uma velha conhecida dos desenvol-
de animaes e grficos em alta qualidade tanto que, vedores Web; com ela, os mais variados tipos de aplicativos so de-
atualmente, alguns dos exemplos mais populares de senvolvidos atualmente, de jogos e softwares multimdia a aplicativos
aplicativos nesta categoria so jogos e programas com tradicionais, por meio do uso do AIR (Adobe Integrated Runtime).
uso abundante de recursos de multimdia. A aposta da Microsoft em RIA, o Silverlight, foi lanado em
Este conceito das Rich Internet Applications, apesar de Abril de 2007 e um competidor direto do Adobe Flash. Em seu
ser desconhecido por muitos, no novo. Programas benefcio, est a possibilidade de criao de aplicativos usando as
deste tipo tm sido desenvolvidos h anos, por meio linguagens do framework .NET e o Visual Studio como ferramenta
de plug-ins para navegadores (como o Adobe Flash), de desenvolvimento.
virtualizao e uso intenso de JavaScript e Ajax. O Java ocupa a segunda posio nesta estatstica, com o diferen-
Atualmente, as trs plataformas mais utilizadas para cial de ser j veterana neste quesito afinal de contas, applets
desenvolvimento de aplicaes ricas para a Internet so Java so usados h anos para desenvolvimento de aplicaes ricas
(por taxa de presena no mercado http://www.statowl. para a Internet.
com/custom_ria_market_penetration.php): Mas alm dos applets, uma nova alternativa para desenvol-
Adobe Flash (95.60 %); vimento de aplicaes ricas em Java foi apresentada em Maio
Java (75.81 %); e de 2007 pela ento Sun (hoje, como sabemos, incorporada pela
Microsoft Silverlight (67.32 %). Oracle): o JavaFX.
Quanto s ferramentas de desenvolvimento, o NetBeans, na javafx.scene.media: Media, para representar um arquivo; MediaPlayer,
verso 7.1.2 (a mais atual no momento da elaborao deste artigo), para reproduzi-los; e MediaView, para exibir a mdia como um n
possui suporte completo criao de projetos JavaFX 2, bem como no grfico de cena.
depurao dos mesmos. Como se trata de uma arquitetura multiplataforma, tambm
Para criao das interfaces grficas, a Oracle disponibiliza o so disponibilizados layouts para um correto e flexvel agru-
JavaFX Scene Builder. Com ele, o desenvolvedor pode montar pamento dos controles visuais dentro do grfico de cena. Estas
sua interface graficamente, arrastando os controles pela tela, e classes, do tipo container, esto disponveis no pacote javafx.
o cdigo apropriado em FXML ser gerado automaticamente. scene.layout.
Seguindo o preceito que uma plataforma de aplicaes ricas deve
Arquitetura do JavaFX utilizar bastante os recursos grficos, no faltam ao JavaFX classes
O JavaFX possui uma arquitetura interna dividida em camadas, para transformao 2D e 3D, assim como diversos efeitos visuais.
onde, como base principal, est a mquina virtual Java (Figura 3). Com as classes do pacote javafx.scene.transform, possvel realizar
No centro da arquitetura esto os componentes responsveis pela a translao e rotao de um n no grfico de cena, nos eixos x,
renderizao grfica (Prism), o toolkit de janelas (Glass) e os me- y e z. J no pacote javafx.scene.effects, encontram-se classes para a
canismos de suporte multimdia e interface Web. Na parte mais aplicao de diversos efeitos grficos em um n, como sombra e
externa, encontram-se as APIs pblicas do JavaFX e o grfico de reflexo, por exemplo.
cena (Scene Graph). Um outro elemento importante da arquitetura do JavaFX 2 a
O grfico de cena uma estrutura hierrquica composta por linguagem de marcao FXML. Baseada em XML, ela utilizada
ns (nodes) os elementos da interface do usurio. Para cada para definio da interface de uma aplicativo JavaFX. Criar uma
um destes elementos so definidas propriedades e eventos, assim interface JavaFX usando FXML, e no diretamente pelo cdigo
como se faz no tradicional toolkit Swing. Complementando o Java (o que tambm perfeitamente possvel), traz a vantagem
grfico de cena, na mesma camada, est a API pblica do JavaFX, da separao entre a lgica da aplicao e a definio da sua
constituda de classes para animaes, mdia e interao com os aparncia. Dentro do padro de desenvolvimento em camadas
controles visuais, entre outras. MVC (Model-View-Controller), pode-se dizer que a interface em
FXML se encaixa como a viso (View) da aplicao.
Um arquivo com a definio FXML de uma tela pode ser criado
diretamente em cdigo XML, por meio de um editor de texto sim-
ples, ou com o uso do JavaFX Scene Builder. Com este ltimo, o
usurio cria a tela arrastando e posicionando os controles visuais,
e o cdigo FXML gerado automaticamente.
No existe nada melhor para conhecer uma nova plataforma de
desenvolvimento do que por as mos na massa. Visando propor-
cionar um melhor entendimento do JavaFX, de sua arquitetura e
Figura 3. Diagrama da arquitetura do JavaFX 2 (adaptado da documentao da Oracle) funcionalidades, sero demonstrados a seguir exemplos prticos
que abrangem os conceitos fundamentais na elaborao de um
O sistema grfico do JavaFX est indicado pelos elementos de aplicativo baseado nesta tecnologia.
cor azul-escuro no diagrama da Figura 3. O Prism um elemento
fundamental nesta estrutura, sendo responsvel pela renderizao
grfica, utilizando para isto DirectX em sistemas Windows, Open-
GL em Mac e Linux, e Java2D quando a acelerao por hardware
no est disponvel.
O Toolkit Quantum o responsvel por unir o Prism, o toolkit
de janelas Glass, o mecanismo de mdia e o mecanismo de Web, Tutorial
para ento disponibiliz-los camada da API pblica e do grfico
de cena. Os controles visuais do JavaFX, parte do toolkit de janelas
Glass, so inseridos como ns no grfico de cena. A aparncia Instalando e testando o JavaFX 2
destes controles pode ser definida por meio de folhas de estilo Para desenvolver aplicativos em JavaFX, inicialmente, era ne-
CSS, o que facilita a padronizao e configurao da interface do cessrio obter o SDK apropriado como um download parte.
aplicativo. Porm, as verses mais recentes do JDK 7 para sistemas opera-
Com relao mdia, existe suporte nativo para arquivos de cionais Windows e Mac OS X j trazem o JavaFX SDK integrado.
udio em formato MP3 e WAV, bem como para vdeos no for- Para sistemas Linux, est disponvel uma verso beta, denomi-
mato FLV. A reproduo de arquivos de mdia extremamente nada JavaFX Developer Preview (o endereo para download est
simples, bastando para isso usar as classes existentes no pacote disponvel na seo Links, no final do artigo).
Figura 4. Tela inicial da instalao do JDK 7u4, que inclui o JavaFX 2.1 (em destaque)
Aps o encerramento da instalao padro do JDK 7u4, ser Figura 6. Definio do nome do novo projeto
apresentada a tela de instalao do JavaFX 2.1. Assim como no
caso do JDK, basta prosseguir clicando em Next (Figura 5). Ao Como pode ser visto na aba Projetos do NetBeans, a estrutura
finalizar a instalao, o sistema j estar pronto para executar e inicial de um projeto JavaFX bastante simples contm apenas
compilar aplicativos JavaFX. Para a criao dos exemplos, ser a biblioteca principal da plataforma e o arquivo com o cdigo da
utilizado o NetBeans verso 7.1.2, que tem suporte completo para Application.
a criao de aplicativos JavaFX 2.1. Todo projeto JavaFX criado pelo NetBeans contm um modelo
O primeiro exemplo consiste em uma verso JavaFX do tra- bsico de cdigo que j est pronto para ser executado e pode ser-
dicional Al, mundo, com o objetivo de testar se a instalao vir perfeitamente para testar a plataforma. Deste modo, pressione
da plataforma foi realizada corretamente. Assim, no NetBeans, a tecla F6 ou clique no boto Executar projeto principal do NetBeans
clique no menu Arquivo | Novo projeto.... Na janela que ser exibi- para execut-lo (lembre-se que, caso tenha mudado seu projeto
da, selecione a categoria JavaFX, esquerda, Aplicativo JavaFX, principal, clique com o boto direito do mouse sobre o projeto
direita, e clique em Prximo (Figura 5). AloMundoFX e selecione Definir como projeto principal). Em poucos
segundos uma janela com a aplicao JavaFX ser aberta, e ao
clicar no boto Say Hello world, esta mensagem ser exibida
no console, logo abaixo (Figura 7).
Vamos incrementar um pouco mais esta aplicao. Ao invs de
exibirmos a mensagem Hello World! no console, vamos mostrar
Al mundo! dentro da janela, usando um controle Label do pa-
cote javafx.scene.control. Para deixar o aplicativo com mais cara de
JavaFX, vamos aplicar um efeito DropShadow (Sombra), existente
no pacote javafx.scene.effect, neste Label.
Antes de passarmos ao cdigo-fonte, necessrio entender um
conceito importante em um aplicativo JavaFX a relao entre as
classes Scene e Stage, usadas na definio da tela.
Como foi abordado no tpico relativo arquitetura do JavaFX,
os elementos visuais do aplicativo so construdos em um gr-
fico de cena (Scene Graph). Este termo um velho conhecido
dos pesquisadores de programao grfica e realidade virtual,
Figura 5. Criando um novo projeto JavaFX
e usado para determinar a estrutura das tradues para a palavra stage , li- Assim sendo, modifique o cdigo-fonte
hierrquica de elementos visuais em uma teralmente, palco. O Stage , deste modo, o da sua classe AloMundoFX de modo que ele
imagem ou tela. palco onde a(s) cena(s) acontecem. Dentro fique como o apresentado na Listagem 1
No JavaFX, um grfico de cena usado dele, colocada a Scene, e dentro da Scene, so (note que os comentrios foram re-
para definio de uma tela do aplicativo, inseridos os demais controles, como rtulos movidos para reduzir o tamanho da
por meio do uso da classe Scene. Um objeto e botes. O Stage funciona, sob o ponto de listagem).
desta classe , portanto, um grfico para vista de uma aplicao desktop tradicional, Neste primeiro projeto, importante ter
uma cena (ou tela) dentro programa. como sua janela principal. um entendimento especfico sobre cada
J a classe Stage f u nc iona como o Com os conceitos de Stage e Scene defini- uma das linhas do cdigo:
container de uma Scene. De fato, uma dos, podemos passar para a codificao. Linhas 3 a 14: so realizados os imports
para as classes utilizadas no programa;
Linha 16: a classe AloMundoFX herda a
Application, de javafx.application. Esta a classe
base de uma aplicao JavaFX o seu
ponto de entrada;
Linhas 18 a 20: o mtodo main() invoca o
mtodo launch(), passando os argumentos
recebidos. de launch(), herdado de Application,
a tarefa de iniciar a aplicao;
Linha 23: no mtodo start(), reescrito
da superclasse Application, que deve ser
colocado o cdigo inicial da aplicao.
Este mtodo, invocado automaticamente
na sequncia de inicializao do aplica-
tivo, recebe o Stage principal da aplicao
como parmetro, onde a cena dever ser
construda;
Linha 24: o mtodo setTitle() define o
texto da barra de ttulo do Stage (janela)
principal;
Figura 7. Execuo da aplicao AloMundoFX
Na linha 10, declarado o elemento AnchorPane, que mais um tipo 01 package alomundofxml;
de layout disponvel nas interfaces do JavaFX. Com ele, os contro- 02 import java.net.URL;
03 import java.util.ResourceBundle;
les podem ser posicionados livremente, em relao a sua margem 04 import javafx.event.ActionEvent;
esquerda (eixo X) e superior (eixo Y). Definimos que este nosso 05 import javafx.fxml.FXML;
AnchorPane ter altura (prefHeight) e largura (prefWidth) de 320 pontos. 06 import javafx.fxml.Initializable;
07 import javafx.scene.control.Label;
A ltima configurao do AnchorPane, fx:controller=alomundofxml. 08 import javafx.scene.control.TextField;
Sample, importantssima. Ela define o nome da classe que vai 09
atuar como controladora desta interface FXML. Dentro da classe 10 public class Sample implements Initializable {
11
Sample, colocamos os manipuladores de eventos de mouse e te- 12 @FXML
clados acionados na tela. No caso deste exemplo, ela vai conter o 13 private TextField text;
14
evento associado ao clique do boto.
15 @FXML
Na linha 11 aberto o elemento <children>. Dentro dele so coloca- 16 private Label label;
dos os ns filhos do layout. Na maioria dos casos, um controle do 17
18 @FXML
tipo layout definido como o n raiz da cena. Os demais controles
19 private void handleButtonAction(ActionEvent event) {
ficam ento hierarquicamente subordinados a ele. 20 label.setText(text.getText());
Adicionamos na linha 12 um elemento TextField, que a nossa 21 }
22
velha conhecida caixa de entrada de texto. Dentro da sua mar- 23 @Override
cao, so definidas as seguintes propriedades: 24 public void initialize(URL url, ResourceBundle rb) {
id=text: Informa o id que identifica este elemento dentro do 25 // TODO
26 }
arquivo FXML; 27 }
l ayoutX=60 e layoutY=60:
Informa a distncia em pontos, respectivamente, da margem es-
querda (X) e da margem superior (Y) do layout pai at este Assim como nos outros casos, reaproveitaremos bastante do
elemento; cdigo gerado pelo NetBeans. As excees ficam por conta de:
prefWidth=200: Define a largura do controle, em pontos; L inhas 16 e 17: declaramos uma varivel chamada label, do tipo
fx:id=text: Define uma varivel para acesso a este elemento pelo Label, e acima dela inclumos a annotation @FXML. Deste modo, esta
cdigo. varivel ser vinculada ao respectivo elemento label no arquivo
FXML;
No caso do boto, na linha 13, definimos um novo rtulo de texto Linhas 19 a 22: aqui est a definio do mtodo handleButton
para ele por meio do atributo text. Em onAction=#handleButtonAction, Action(), referenciado no FXML. Dentro dele, usamos a referncia
ao label para mudar o seu texto para o con- Java, e outra onde um arquivo FXML etc.) e seu respectivo valor, e um grfico de
tedo do objeto text (a caixa de entrada de utilizado para esta finalidade. pizza (ou torta, como preferem alguns)
texto), tambm referenciado no FXML. Como voc pode perceber, as vantagens gerado, indicando a parcela de cada uma
do FXML so bvias: menor quantidade de destas categorias dentro dos gastos como
E somente isso que precisamos. Ao exe- cdigo (e consequente menos chances de um todo. A tela deste projeto ser elabora-
cutar o projeto, digitar um texto na caixa erros) e clara separao de camadas. da com o JavaFX Scene Builder.
e clicar no boto, a verso artstica da Porm, a criao dos arquivos FXML Para isso, abra o NetBeans e crie um
mensagem ser mostrada, como apresen- diretamente no cdigo XML tambm no novo projeto JavaFX, escolhendo Aplica-
tado na Figura 12. das mais atraentes. O cdigo FXML possui tivo FXML do JavaFX. Em seguida, defina
uma sintaxe rgida que deve ser obedecida, o nome do projeto como Despesas, e
Criando uma aplicao com o JavaFX e por ele no conseguimos ter uma noo remova estes dois arquivos criados auto-
Scene Builder precisa da aparncia final da tela, at a maticamente: Sample.fxml e Sample.java,
Os dois primeiros exemplos foram execuo do projeto. pois vamos criar a tela e seu controlador
simples e rpidos, mas serviram para po- Para nos auxiliar no processo de criao individualmente.
dermos entender as diferenas entre uma das telas, a Oracle disponibiliza o JavaFX O arquivo FXML com a especificao da
aplicao bsica, onde os controles so Scene Builder. Com ele, construmos as tela pode ser criado diretamente no Net-
instanciados e configurados pelo cdigo telas de modo grfico, arrastando e sol- Beans, e ser depois modificado no Scene
tando componentes, e o cdigo FXML Builder. Assim, clique sobre o nome do pa-
gerado automaticamente. cote despesas e, no menu, selecione Arquivo
O JavaFX Scene Builder pode ser obtido | Novo arquivo.... Na tela que ser aberta,
diretamente no site do JavaFX (veja o en- selecione a categoria JavaFX esquerda, e
dereo na seo Links). No momento da marque direita o tipo de arquivo, Modelo
elaborao deste artigo, o Scene Builder FXML. Depois clique em Prximo.
ainda estava em verso Developer Preview Especifique por fim o nome da classe
ou seja, beta mas j bastante estvel, como TelaDespesas e clique em Finalizar.
pronto para ser usado (Figura 13). Voc vai perceber que, alm do arquivo
Com o Scene Builder instalado, podemos FXML (TelaDespesas.fxml), a classe contro-
passar a um novo exemplo que utilizar ladora Java (TelaDespesas.java) tambm foi
esta ferramenta. gerada. Como nosso prximo passo abrir
O nosso prximo projeto ser um geren- o FXML no Scene Builder e modificar o seu
ciador de despesas pessoais. Nele, o usu- contedo, feche a aba relativa a este arqui-
rio inclui uma categoria de despesa (do vo (caso esteja aberta) no NetBeans.
Figura 12. Tela do aplicativo AloMundoFX em execuo tipo Alimentao, Combustvel, Educao,
Montando a tela no Scene Builder
Para customizar a cena do aplicativo
de despesas, precisamos abrir o Scene
Builder e carregar o arquivo FXML criado
no NetBeans. Na tela principal do Scene
Builder, clique no menu File | Open. Na tela
que ser apresentada, localize o arquivo
TelaDespesas.fxml, dentro da pasta src do
seu projeto, e clique em Abrir. Feito isso,
ser mostrada a tela padro criada pelo
NetBeans, como exibido na Figura 14.
Como ser elaborada uma nova tela,
necessrio remover o boto j existente
(Click Me!). Para exclu-lo, basta clicar
com o mouse sobre o mesmo e pressionar
a tecla Delete.
A interface do Scene Builder muito
semelhante de outras ferramentas de
construo de interface: esquerda, na
Figura 13. Tela do JavaFX Scene Builder parte superior, temos a palheta de con-
-
Para selecionar uma coluna individualmente e definir suas pro- Parent root = FXMLLoader.load(getClass().getResource(Sample.fxml));
priedades, clique na coluna usando o painel Hierarchy, no canto
esquerdo inferior do Scene Builder. E modifique para:
Table Column Esquerda
-
Parent root = FXMLLoader.load(getClass().getResource(TelaDespesas.fxml));
Properties|fx:id: colCategoria
Properties|Text: Categoria Criando o modelo
Layout|Pref Width: 150.0 Dentro do padro MVC (Modelo-Viso-Controle), o arquivo
Table Column: Direita FXML representa a viso, ou seja, a interface com o usurio. O
P roperties|fx:id: colValor modelo define os dados utilizados pela aplicao e as regras de
P roperties|Text: Valor negcio associadas a estes. O papel do controle, ou controlador,
L ayout|Pref Width: 90.0 por sua vez, fazer a conexo entre a viso e o modelo.
PieChart Neste momento necessrio definir o modelo para o aplicativo
- Properties|fx:id: chartDespesas de despesas, que representa os dados que sero exibidos pela vi-
- Properties|Title: Despesas Domsticas so. O modelo neste caso ser simples, contendo apenas uma String
- Properties|Legend visible: desmarcado com o nome categoria e um campo double para seu respectivo valor.
Para criar a classe modelo, clique sobre o pacote despesas, acesse o
Durante a definio dos fx:id dos controles, uma mensagem pode menu Arquivo | Novo arquivo..., selecione esquerda a categoria
ser exibida pelo Scene Builder, indicando que um campo injetvel Java, direita escolha Classe Java e clique em Prximo.
(uma varivel que referncia os controles) no existe na classe Na tela seguinte, informe o Nome da Classe como Despesa e
controladora. Isso ser feito nas prximas etapas. clique em Finalizar. Por fim, implemente o cdigo da classe como
O aspecto final da tela dever ficar como o da Figura 16. o da Listagem 5.
01 package despesas;
02 import javafx.beans.property.SimpleDoubleProperty;
03 import javafx.beans.property.SimpleStringProperty;
04
05 public class Despesa {
06 private final SimpleStringProperty categoria = new SimpleStringProperty();
07 private final SimpleDoubleProperty valor = new SimpleDoubleProperty(0);
08
09 public Despesa() {
10 this(, 0);
11 }
12
13 public Despesa(String cat, double val) {
14 categoria.set(cat);
15 valor.set(val);
16 }
17
18 public String getCategoria() {
19 return categoria.get();
20 }
21
22 public void setCategoria(String cat) {
Figura 16. Layout final da tela principal do aplicativo 23 categoria.set(cat);
24 }
25
O layout da tela est pronto. Neste momento j possvel salvar
26 public double getValor() {
o layout e encerrar o Scene Builder. Para que este layout possa ser 27 return valor.get();
utilizado pelo aplicativo, deve ser feita uma pequena alterao na 28 }
classe de aplicao do projeto (Despesas.java), referente ao carre- 29
gamento do FXML como n raiz da cena. 30 public void setValor(Double val) {
31 valor.set(val);
Voltando ao NetBeans, abra o arquivo da aplicao (Despesas.
32 }
java) e altere a indicao do arquivo FXML base do programa. 33 }
Isto , localize a linha:
01 package despesas; 27
02 import java.net.URL; 28 @FXML
03 import java.util.ResourceBundle; 29 private TableColumn colCategoria;
04 import javafx.collections.FXCollections; 30
05 import javafx.collections.ObservableList; 31 @FXML
06 import javafx.event.ActionEvent; 32 private TableColumn colValor;
07 import javafx.fxml.FXML; 33
08 import javafx.fxml.Initializable; 34 @FXML
09 import javafx.scene.chart.PieChart; 35 private PieChart chartDespesas;
10 import javafx.scene.control.TableColumn; 36
11 import javafx.scene.control.TableView; 37 @FXML
12 import javafx.scene.control.TextField; 38 private void handleButtonAction(ActionEvent event) {
13 import javafx.scene.control.cell.PropertyValueFactory; 39 Despesa despesa = new Despesa(txtCategoria.getText(), Double.
14 parseDouble(txtValor.getText()));
15 public class TelaDespesas implements Initializable { 40 listaDeDespesas.add(new PieChart.Data(despesa.getCategoria(),
16 despesa.getValor()));
17 private ObservableList<PieChart.Data> listaDeDespesas = 41 tabDespesas.getItems().add(despesa);
FXCollections.observableArrayList(); 42 }
18 43
19 @FXML 44 @Override
20 private TextField txtCategoria; 45 public void initialize(URL url, ResourceBundle rb) {
21 46 colCategoria.setCellValueFactory(new PropertyValueFactory(categoria));
22 @FXML 47 colValor.setCellValueFactory(new PropertyValueFactory(valor));
23 private TextField txtValor; 48 chartDespesas.setData(listaDeDespesas);
24 49 }
25 @FXML 50 }
26 private TableView tabDespesas;
Como pode ser notado pela listagem, definimos duas proprie- que todos os elementos da tela, contidos no arquivo FXML, tiverem
dades nesta classe: a categoria e o valor de uma despesa. Quem est sido carregados. Portanto, este mtodo pode ser usado para fazer a
familiarizado com a arquitetura de componentes JavaBeans, se conexo da viso ao modelo: a linha 47 vincula o valor das clulas
beneficiar do fato que o JavaFX utiliza o mesmo conceito de da coluna de categorias propriedade categoria do modelo; em segui-
propriedades para vincular estas com os controles visuais, como da, o mesmo feito para a coluna do valor e a respectiva propriedade
os dados apresentados por um Table View. em Despesa; finalmente, configuramos a fonte de dados do grfico
Na prxima seo implementaremos o cdigo do controlador para a lista de despesas, declarada na linha 18.
Despesas.java. A funo do controlador fazer a ligao entre os Quando o usurio clicar no boto, o mtodo handleButtonAction(),
dados e a viso. definido nas linhas 39 a 42 ser disparado. Na linha 40, criamos
um novo objeto Despesa, passando ao seu construtor os valores
Definindo o controlador Despesas.java informados nas caixas de texto. Posteriormente, na linha 41,
Como comentado anteriormente, a funo do controlador re- adicionamos os dados da despesa lista de valores que sero usa-
alizar a ligao dos dados existentes no modelo com a interface dos na gerao do grfico; e na linha 42, adicionamos o objeto
apresentada na viso. No JavaFX, o controlador implementado tabela, para que os valores includos possam ser mostrados nas
como uma classe que contm as referncias aos controles na suas linhas.
interface e as implementaes dos mtodos associados aos even- O resultado final do aplicativo pode ser observado na Figura 17.
tos. Deste modo, abra o controlador TelaDespesas.java e adapte-o Aps digitar o nome da categoria e um respectivo valor, o cli-
de acordo com a Listagem 6. que no boto adiciona estes tabela e ao grfico. A atualizao
A primeira mudana importante est na incluso da linha 18. do grfico acontece na hora, e utiliza efeitos de animao na sua
Nela, declarado um objeto do tipo ObservableList<PieChart.Data>. modificao.
Trata-se de uma coleo de objetos PieChart.Data, que sero usados
para a gerao automtica do grfico de pizza/torta. Concluses
Nas linhas 20 a 36, esto as declaraes das referncias aos A plataforma JavaFX 2 trouxe significativas melhorias em relao
controles existentes na interface (TelaDespesas.fxml) que sero primeira verso. Dentre elas, podemos destacar um conjunto
acessados por este controlador. Os nomes so os mesmos indicados nativo de APIs Java, substituindo o uso do JavaFX Script. Dessa
pelo atributo fx:id, existente na descrio XML dos controles. forma, a familiarizao de um programador Java com a tecnologia
O mtodo initialize(), contido nas linhas 46 a 50, invocado assim torna-se ainda mais rpida e produtiva.
http://www.javafx.com
Site oficial JavaFX.
http://www.oracle.com/technetwork/java/javafx/downloads/index.html
Download do JavaFX.
http://www.oracle.com/technetwork/java/javafx/tools/index.html
Download do JavaFX Scene Builder Developer Preview.
http://docs.oracle.com/javafx/2/api/index.html
API do JavaFX 2.
http://docs.oracle.com/javafx/
Documentao completa do JavaFX.
Figura 17. Resultado da execuo do aplicativo Despesas
http://www.oracle.com/technetwork/java/javase/downloads/index.html
Download do JDK 7.
O uso de arquivos de definio de interface FXML, junto de
classes controladoras, condiciona o desenvolvedor a implementar http://www.oracle.com/technetwork/java/javafx/downloads/ssLINK/1429449
sua aplicao JavaFX dividida em camadas, trazendo diversos Download do JavaFX 2 Developer Preview para Linux
benefcios de projeto, manuteno e legibilidade do software.
As possibilidades de aplicaes que podem ser desenvolvidas
com JavaFX so imensas, indo de jogos e multimdia aplicativos D seu feedback sobre esta edio! Feedback
eu
comerciais e empresariais srios, sendo que todos podem se
s
A Java Magazine tem que ser feita ao
D
seu gosto. Para isso, precisamos saber
sobre e
beneficiar da qualidade grfica da plataforma.
Ricamente documentada e agora parte oficial do JDK Java, o o que voc, leitor, acha da revista!
s
ta
edio
JavaFX 2 vai se confirmando como, nas prprias palavras da D seu voto sobre este artigo, atravs do link:
Oracle, a nova plataforma de interface grfica da linguagem, e
www.devmedia.com.br/javamagazine/feedback
deve ser conhecida por todo desenvolvedor Java.
Mantenha suas
verses em dia
Automatizando o versionamento de projetos com
SVN, Maven e Nexus
E Resumo DevMan
m que verso seu projeto de software se encontra
atualmente? Se voc no conseguir responder a esta
pergunta, cuidado! A falta de uma poltica de ver- De que se trata o artigo:
sionamento adequada pode levar a um cenrio perigoso, Neste artigo vamos aprender como criar um processo de versionamento
abrindo espao para instabilidade e desorganizao. Por e como extrair o melhor das ferramentas SVN, Maven e Nexus para auto-
conta disso, de extrema importncia incluir etapas de pla- matizar o lanamento de novas verses com segurana e estabilidade.
nejamento de releases e versionamento dentro do processo
de desenvolvimento de software da sua empresa. Em que situao o tema til:
Um projeto de software normalmente composto, A adoo de um processo de versionamento automatizado ajuda a
alm de seu prprio cdigo, por diversas dependncias, elevar o nvel de maturidade e organizao da empresa, garantindo um
tanto externas quanto internas. importante observar controle rgido sobre as modificaes realizadas pela equipe de desenvol-
que da mesma forma que damos importncia para as vimento. Dessa forma, possvel evitar o lanamento de verses instveis
verses das dependncias externas como do Hibernate e aumentar a qualidade do produto entregue ao cliente.
ou do Spring, tambm devemos nos preocupar com
as verses das dependncias internas, criadas por ns Mantenha suas verses em dia :
mesmos, dentro do ambiente corporativo. O objetivo deste artigo mostrar como criar um processo de versiona-
A cada novo lanamento dos nossos projetos de sof- mento simples e automatizado com base nas ferramentas open source
tware, bugs so corrigidos, novas funcionalidades so mais utilizadas pelo mercado: SVN, Maven e Nexus.
criadas e APIs pblicas so modificadas, muitas vezes
quebrando a compatibilidade com outros projetos. Por
esse motivo fundamental manter uma documenta- um grande desperdcio olhar para o nmero de verso de um
o consistente, capaz de identificar essas alteraes, software e no conseguir interpretar seu real significado. Ao estu-
atribuindo-as a uma determinada verso. dar e entender seu processo de formao possvel compreender
Neste artigo, vamos abordar como criar e manter importantes informaes semnticas, escondidas atrs de um con-
verses de forma automatizada utilizando a ferramenta junto de nmeros, que normalmente passariam despercebidas.
Apache Maven 3, e ainda utilizar o servidor de artefa- Um exemplo didtico que ilustra bem esse fato a ocorrncia
tos Nexus, da Sonatype, para armazenar, gerenciar e de uma atualizao da verso 3.7.2 para a verso 3.7.3 de um de-
compartilhar artefatos de softwares gerados entre as terminado software. Nesse cenrio, o esquema de versionamento
equipes de desenvolvimento. adotado possui trs nmeros (X.Y.Z) e cada um deles possui seu
significado prprio. Se apenas o ltimo nmero variar, a inten-
Definindo uma estratgia de versionamento para o o comunicar que a atualizao contm apenas correes de
seu projeto defeitos e no mximo alteraes na estrutura interna do cdigo,
Versionamento de software o processo que tem como no agregando novas funcionalidades ao produto final ou mesmo
resultado final a atribuio de um identificador nico, modificaes em sua API pblica que possam causar incompatibi-
capaz representar e comunicar o estado do software em lidade. Veremos mais a frente detalhes sobre esse tipo de esquema
um determinado momento. de versionamento.
Uma analogia interessante para entender o funcionamento problemas causados pela introduo de novas funcionalidades,
da estrutura interna do SVN a do crescimento de uma rvo- facilitando o lanamento de verses contendo correes de defeitos
re. Tudo sempre comea com o nascimento de um tronco, ou e atualizaes importantes.
trunk, que aos poucos vai crescendo at comear a dar origem Os branches do bastante liberdade aos desenvolvedores, pro-
aos primeiros galhos, mais conhecidos como branches. Com o porcionando a possibilidade de realizar grandes modificaes
tempo, mesmo os galhos tambm podem crescer, dando ori- no software sem ter medo de causar instabilidades na verso de
gem a outros galhos, branches a partir de um branch. Mas, se produo, no entanto, importante ter cautela e moderao em
o tronco ficar doente, naturalmente todos os galhos podem ser relao a sua utilizao. Com o tempo, comum que eles fiquem
afetados e tambm correm o risco de morrer, se nada for feito desatualizados em relao ao trunk, causando conflitos e muitas
para impedir que a doena se alastre. No entanto, se apenas um dores de cabea no momento da integrao. Essa operao co-
dos galhos adoecer, este pode ser facilmente cortado, mantendo nhecida como merge (Figura 2).
tanto o tronco quanto os outros galhos saudveis e seguros.
Tambm podem acontecer casos em que um galho, que no foi
cuidado adequadamente, cresa tanto e fique to pesado que o
tronco acabe no conseguindo suport-lo, correndo o risco de
quebrar. Por isso sempre importante controlar o crescimen-
to dos galhos, podando adequadamente e no deixando que
cresam demasiadamente.
Ento, chega aquele momento em que voc acha que a sua r- Figura 2. Realizando operaes de merge com o trunk
vore est bonita e saudvel e quer registrar aquele momento para
sempre. Nesse caso, recomendado tirar uma foto, mais conhecida A tag como uma fotografia feita a partir de um branch ou
como tag, e guard-la com carinho. mesmo do prprio trunk. Basicamente uma cpia, mantida
Esta foi uma analogia para entender de forma didtica e des- inalterada e associada ao identificador de verso. A partir
contrada o funcionamento e principalmente os problemas exis- dela, uma verso candidata a ir para produo pode ser homo-
tentes no dia-a-dia de trabalho com a estrutura do Subversion. logada antes de ter contato com o cliente final. Evite colocar
A seguir, vamos entender em detalhes tcnicos os conceitos de em produo qualquer pacote gerado diretamente a partir do
trunk, branch e tag. trunk ou mesmo de um branch. Estes, por estarem sujeitos a
O trunk o lugar onde deve ser armazenado o cdigo estvel modificaes, podem comprometer a estabilidade da release.
do projeto. Ele conhecido como linha base, e a partir dele que Ao utilizar servidores de integrao contnua para gerar os
tero origem outras linhas de desenvolvimento do projeto (veja pacotes que vo para homologao e produo, prefira ger-los
a Figura 1). Essas linhas so conhecidas como branches e servem a partir da tag.
para que o desenvolvimento de novas funcionalidades ocorra de A deciso de utilizar branches semprepolmica e existem
forma organizada e sem deixar que a linha base se torne instvel. diferentes pontos de vista na indstria de desenvolvimento
Por conta disso, as modificaes no trunk devem acontecer moti- de software em relao a isso. O prprio Extreme Program-
vadas por correes de defeitos ou outras aes que contribuam ming, metodologia gil proposta por Kent Beck, sugere uma
para aumentar a sua estabilidade. prtica conhecida como Single Code Base, onde todo o cdigo
mantido em uma nica linha de desenvolvimento. No res-
tam dvidas de que a estratgia de desenvolver todo o cdigo
diretamente no trunk, evitando a criao de branches, mais
simples e pode economizar algumas horas em operaes de
merge no futuro.
Entretanto, este pode ser um caminho perigoso e instvel caso
a equipe de desenvolvimento no tenha bastante maturidade e
deixe de seguir outras prticas consideradas primrias no Ex-
treme Programming, como Test-First Programming, 10-Minute
Build, Continuous Integration, entre outras.
Independentemente da utilizao ou no de branches, o uso
de tags obrigatrio para realizar o versionamento do projeto,
Figura 1. Criao de branches a partir do trunk e este pode ser feito a partir do trunk. Assim, escolha a estrat-
gia que mais combinar com o seu modelo de desenvolvimento
Geralmente, criamos um branch a partir da base de cdigo atual e introduza o uso de branches se estiver sofrendo com a
existente no trunk, dando origem a uma nova linha de desen- instabilidade do trunk. Caso contrrio, mantenha o processo
volvimento. Dessa forma, possvel isolar o trunk de possveis da maneira que est.
As informaes contidas neste arquivo so compartilhadas por todos .classpath, ou os especficos do seu ambiente de desenvolvimento.
os projetos que utilizem o Maven, centralizando a configurao e Lembrando que uma boa prtica nunca comitar estes tipos de ar-
evitando a repetio de dados em todos os arquivos pom.xml. Confira quivos, pois eles devem sempre ser gerados em cada ambiente.
o trecho de cdigo que deve ser adicionado e customizado conforme Aps garantir que todo o cdigo est sincronizado corretamente,
o nome de usurio e senha definidos no Nexus na Listagem 3; o release plugin analisa o pom.xml em busca de dependncias que
contenham a palavra SNAPSHOT. Se forem encontradas, o proces-
so abortado. Isso acontece por um motivo simples, uma verso
Listagem 3. Detalhes da tag <server> que deve ser adicionada ao arquivo settin- SNAPSHOT considerada transitria, ou seja, representa o cdigo
gs.xml do Maven.
escrito apenas na mquina de um determinado desenvolvedor. Com
<servers> o objetivo de garantir segurana e estabilidade, o correto gerar
<server> releases que tenham dependncias apenas para bibliotecas que j
<id>releases</id>
foram lanadas, ou seja, no sejam SNAPSHOT ou transitrias.
<username>rodrigo</username>
<password>1234</password> Se mesmo assim seu projeto tiver esse tipo de dependncia,
</server> possvel informar ao plugin para ignorar o risco e seguir em
<server>
<id>snapshots</id>
frente com o processo de preparao da release. Para tanto, basta
<username>rodrigo</username> utilizar a opo DignoreSnapshots=true juntamente com o restante
<password>1234</password> do comando para preparar a release.
</server>
</servers>
Outra informao importante que deve ser informada por par-
metro so as credenciais, username e password, para acesso ao re-
positrio. Dessa forma, ser necessrio utilizar Dusername=usuario
4. Configuraes do Release Plugin: O Release Plugin, assim e Dpassword=senha.
como qualquer outro plugin do Maven, deve ser configurado
dentro da tag <plugins>, localizada dentro da tag <build> no pom.xml Pronto, agora basta executar o comando abaixo para preparar
do projeto. Confira o trecho de cdigo que deve ser adicionado a release:
na Listagem 4.
mvn release:prepare Dusername=usurio Dpassword=senha
Listagem 4. Detalhes da configurao do plugin de release, que deve ser adicio-
nada ao arquivo pom.xml do projeto.
Em seguida ser necessrio informar ou apenas confirmar trs
<build> informaes importantes, conforme pode ser visto na Figura 3:
<plugins> 1. Qual a verso que se deseja lanar? A sugesto que seja
<plugin>
<groupId>org.apache.maven.plugins</groupId> escolhida a mesma definida na tag <version> do pom.xml, sem a
<artifactId>maven-release-plugin</artifactId> palavra SNAPSHOT. No entanto, caso tenham sido implementadas
<version>2.2.2</version>
funcionalidades importantes e que no estavam previstas, siga o
</plugin>
</plugins> esquema de versionamento utilizado pela sua empresa e defina
</build> o nmero de verso mais adequado;
2. Qual o nome da tag que dever ser criada no SCM? Neste
momento, caso a empresa adote a utilizao de apelidos para as
Preparando a Release releases, estes podem ser utilizados principalmente para facilitar a
O comando mvn release:prepare utilizado para iniciar a pre- identificao das verses dentro do repositrio de cdigo fonte;
parao da release, e como todos os outros comandos, deve ser 3. Para qual verso o projeto dever ser atualizado? Nem sempre
executado no diretrio raiz do projeto que por sua vez deve conter atualizado da verso 7.2 para a 7.3. Muitas vezes os planos para
o arquivo pom.xml configurado corretamente. a prxima release incluem importantes funcionalidades que jus-
O primeiro passo na preparao da release ter certeza de que tificam ir para a verso 8.0.
no existem alteraes locais ainda no comitadas. Caso existam,
ser necessrio sincronizar o cdigo fonte e deix-lo atualizado em Se tudo der certo, e isso verificado executando rigorosamente
relao ao que existe no repositrio. O release plugin possuium todos os testes do projeto, o plugin vai criar a tag no SCM conforme
mecanismo de proteo que no permite a criao de releases o nome definido no item 2, contendo o nmero de verso aceito
quando o cdigo no est sincronizado, por este ser considerado no item 1 e ainda ir atualizar e comitar o arquivo pom.xml com a
transitrio, ou seja, existindo apenas na maquina que originar o verso planejada no item 3. Este processo pode ser visto na Figura 4.
lanamento da release. Dessa forma, aps a preparao da release, quando todos os desen-
Um detalhe importante e que pode fazer a diferena a utiliza- volvedores do time sincronizarem suas cpias de trabalho, tero
o do comando svn ignore. Este ignora diretrios gerados, como uma verso atualizada do pom.xml j contendo a nova verso em
o caso do target, e tambm arquivos do Eclipse, como os .project e que devem trabalhar. Todo esse processo ser muito mais proveitoso
Lanando a Release
O lanamento da release a parte mais sim-
ples de todo o processo, uma vez que a parte
mais trabalhosa j foi finalizada durante a
preparao da release. Ele executado por
Figura 3. Confirmaes sobre a verso a ser lanada, nome da tag no SCM e prxima verso de desenvolvimento
meio do comando mvn release:perform, chama-
do aps a preparao da release. Feito isso,
as seguintes aes sero realizadas:
1. feito o checkout do contedo da tag
criada durante a etapa de preparao da
release;
2. A partir da tag, feito o processo de
deploy, enviando a verso recm-criada
para o Nexus.
compartilhar e disponibilizar artefatos proporcionar aos desenvolvedores uma a um processo de testes e homologao
de software dentro de uma organizao, forma estvel e segura para compartilhar formalizado. Dessa forma, o plugin de
facilitando a interao entre os membros estes tipos de dependncias dentro da release do Maven impede o lanamento
da equipe de desenvolvimento. Mantido equipe de desenvolvimento. de qualquer projeto caso ele tenha em
pela Sonatype, atualmente existem duas Um repositrio armazena fundamental- sua lista de dependncias uma biblioteca
verses, sendo uma open-source, que mente dois tipos de artefatos: Releases e cuja verso seja snapshot. Se ainda assim
pode ser utilizada, customizada e distri- Snapshots. A principal diferena entre eles o responsvel pelo lanamento da release
buda gratuitamente sob a licena Eclipse est relacionada com a sua estabilidade. quiser assumir o risco de ter uma biblio-
Public License (EPL) Version 1.0, e outra Releases so estticas e versionadas, ou teca snapshot, poder utilizar o parmetro
comercial, mais completa, denominada seja, uma vez lanadas no mudam mais. DignoreSnapshots=true no comando de pre-
Professional. Portanto, possvel utiliz-las de maneira parao da release.
estvel dentro dos projetos, sem incorrer Outra importante facilidade de geren-
O que um gerenciador de repositrios? no risco de ter problemas futuros por conta ciadores de repositrios como o Nexus
Um gerenciador de repositrios atua de possveis alteraes realizadas. ter repositrios internos atuando como
como um ponto central dentro da organi- J os Snapshots, palavra cujo signifi- proxies para repositrios de artefatos
zao, disponibilizando uma srie de repo- cado remete a fotografia instantnea, remotos, na internet. Deste modo, basta
sitrios para realizar o armazenamento de estilo Polaroid, refletem o estado atual que apenas um desenvolvedor tenha
diferentes tipos de artefatos de software, do cdigo existente apenas na mquina utilizado uma determinada dependncia
como releases e snapshots. Estes artefatos de um determinado desenvolvedor. Por para que ela seja armazenada no cache
so colocados nos repositrios por meio do motivos bvios, verses snapshot so do repositrio. Sem a utilizao desse
comando mvn deploy, pertencente ao ciclo consideradas transitrias e normalmente tipo de recurso, sempre que qualquer
de vida do Maven. Deste modo possvel instveis por no terem sido submetidas desenvolvedor precisar de uma determi-
nada dependncia que no exista em seu
repositrio local, ser necessrio baix-la
da internet.
Instalando o Nexus
Assim como em outros servidores basea-
dos na tecnologia Java, para instalar e uti-
lizar o Nexus necessrio ter instalado o
Java Runtime Environment (JRE) verso 5
ou superior. Tambm necessrio ter dis-
ponvel um servidor de aplicao, como o
Tomcat ou Jetty, para rodar a distribuio
do Nexus Open-Source.
Para obter a distribuio gratuita do
Figura 6. Release sendo desfeita pelo processo de rollback
Nexus, acesse o site da Sonatype em
http://www.sonatype.org/nexus/go e realize
o download, atualmente na verso 2.0.3,
diretamente pelo site.
Feito isso, recomendado renomear a
distribuio de nexus-2.0.3.war para nexus.
war com o objetivo de reduzir a verbosida-
de e facilitar o acesso. Em seguida, basta
copiar o arquivo para a pasta de deploy do
servidor de aplicao. No caso do Apache
Tomcat, ela fica localizada na pasta web
apps, dentro do diretrio de instalao do
servidor.
Se tudo der certo, ser possvel acessar
a tela inicial do Nexus por meio da URL
http://localhost:8080/nexus, conforme mos-
trado na Figura 7.
Figura 7. Tela inicial do Nexus
causadas por implementaes pertencen- A Java Magazine tem que ser feita ao
D
tes a novas verses. Tambm aprende- software e tambm instrutor das Academias Java e
o que voc, leitor, acha da revista!
mos a configurar o plugin de release do Agile da Globalcode, onde j acumula cerca de 1.000
s
ta
edio
Maven para automatizar completamente D seu voto sobre este artigo, atravs do link: horas em sala de aula. Para mais informaes, visite
o processo de preparao e lanamento www.rodrigobranas.com.br
www.devmedia.com.br/javamagazine/feedback
da release, compreendendo uma srie de
etapas que, se forem feitas manualmente,
alm de consumir tempo, acabam sendo
Alta disponibilidade
com GlassFish
Cluster de servidores, balanceamento
de carga e tuning
O Resumo DevMan
s servidores de aplicao surgiram na dcada
de 1990 para dar suporte aos desenvolvedores
atravs de um ambiente para execuo de siste- De que se trata o artigo:
mas web, abstraindo do programador a complexidade da Nesse artigo mostraremos como configurar um cluster com balancea-
infraestrutura de comunicao e de acesso aos sistemas mento de carga no GlassFish para alcanar alta disponibilidade. Em segui-
publicados. Esse tipo de software fornece vrios recursos da, veremos como efetuar tuning no desenvolvimento de aplicaes e nas
essenciais em um cenrio de deployment, como barreiras configuraes do servidor para conseguirmos ganho de performance.
de segurana, garantia de disponibilidade, tratamento
global de excees, gravao do log de aplicaes, pool de Em que situao o tema til:
conexes com bancos de dados e servios de diretrio, O modelo de alta disponibilidade de aplicaes Java web baseado em
sesses javamail, entre outros. Atualmente, existem v- cluster e balanceamento de carga se torna extremamente importante
rias solues de servidores de aplicao, sendo algumas quando h necessidade de se reduzir a possibilidade de falha em sistemas
pagas e outras gratuitas. e de aumentar o poder de processamento das requisies. Aplicaes que
Nesse contexto, o GlassFish surgiu de forma tmida exigem alta disponibilidade, como sistemas bancrios ou sites de comr-
em 2006 atravs do Projeto GlassFish, ainda pelas mos cio eletrnico, devem usar uma arquitetura como esta, acompanhada de
da Sun Microsystems. Hoje considerado por muitos um monitoramento real-time dos ns da soluo.
especialistas a melhor soluo gratuita da categoria,
possuindo recursos diferenciados e uma comunidade Alta disponibilidade com GlassFish:
ativa por meio do frum java.net. Com o forte crescimento na utilizao das aplicaes web, a alta dispo-
Para servir contedo web, o servidor de aplicaes da nibilidade de sistemas se tornou uma necessidade em muitos ambientes
Oracle emprega uma derivao do Apache Tomcat, e a computacionais da atualidade. Nesse cenrio, o GlassFish 3 inclusive na
fim de obter maior performance e escalabilidade, faz uso sua distribuio open source fornece uma soluo robusta utilizando
do componente Grizzly, uma biblioteca baseada no Java uma arquitetura baseada em cluster combinada com o Apache HTTP
New I/O (NIO) que exerce um papel fundamental na Server no papel de balanceador de carga.
arquitetura do GlassFish, j que permite o crescimento Para aumentar ainda mais a confiabilidade da soluo, possvel ga-
no nmero de requisies atravs de mltiplas threads. nhar em performance efetuando tuning na programao, no servidor
De forma isolada, porm, o Grizzly no capaz de de aplicao, na JVM, no hardware e at mesmo no sistema operacional.
atender a um grande volume de acessos, normalmente Veremos que pequenos ajustes podem significar uma melhoria signifi-
encontrado em sistemas crticos. Neste caso, preciso cativa, permitindo um crescimento maior na escalabilidade. sobre tudo
montar um ambiente que apresente uma grande capa- isso que analisaremos nesse artigo.
cidade de throughput, aliado a solues de redundncia
e balanceamento de carga, oferecendo transparncia de
acesso ao usurio final. que se rode o mesmo programa de forma paralela em mltiplas
O GlassFish possui suporte criao de cluster e inte- mquinas, oferecendo melhor experincia atravs da redundncia
grao com balanceadores de carga para a montagem proporcionada por essa configurao. O balanceador de carga, por
de ambientes crticos. O cluster, nesse cenrio, permite sua vez, o n central da soluo que recebe toda requisio de
Figura 2. Instalao do GlassFish com cluster que utiliza duas mquinas e quatro instncias Nosso prximo passo ser criar a outra instncia. Assim, na
(Fonte: http://glassfish.java.net/public/clustering31.html) mquina remota (appserver2), rode o comando:
Ser solicitado o nome de usurio. Entre com admin. Na senha asadmin create-local-instance --host appserver1 --cluster cluster1 --passwordfile=credencial.
anterior, deixe em branco. Em seguida digite a nova senha dese- txt --systemproperties HTTP_LISTENER_PORT=18080 inst_remota
jada nos dois passos seguintes e confirme.
Para no ficarmos informando sempre a senha e o usurio importante ressaltar que no precisamos iniciar o domain1
administrativo do DAS em todas as operaes com o utilitrio na mquina appserver2, ou seja, no necessrio que o processo
asadmin, e termos a possibilidade de colocar um script de inicia- de administrao do domnio esteja sendo executado, apenas as
lizao do GlassFish no carregamento do sistema operacional, instncias. Isso porque a funo de gerente caber mquina
vamos criar um arquivo chamado credencial.txt dentro da pasta appserver1.
/<dir_glassfish_v3.1.2>/bin nas duas mquinas do cluster contendo Como j temos as instncias criadas, podemos iniciar o cluster
a senha informada no passo anterior. O arquivo deve ficar com atravs do seguinte comando, executado a partir do diretrio
a seguinte linha: /<dir_glassfish_v3.1.2>/bin da mquina com o DAS:
do cluster, melhorando a disponibilidade. seguintes endereos no nosso navegador: P ermitir escalabilidade horizontal atra-
Entretanto falta um passo importante: a http://appserver1:18080/clusterjsp e http:// vs de mltiplos hosts fsicos ou lgicos,
instalao do balanceador de carga, uma appserver2:18080/clusterjsp. deixando o endereo do sistema com uma
etapa que realizaremos posteriormente. A Figura 3 ilustra como est montado o nica URL;
nosso ambiente e de que forma os clientes Possibilitar adicionarmos mquinas e/ou
Testando o Cluster devem direcionar as requisies ao siste- instncias ao balanceador sem pararmos o
Para efetuarmos nossos testes, iremos ma clusterjsp. servio;
baixar uma aplicao simples disponibi- Se tudo der certo, aparecer uma pgina Permitir isolar o usurio de falhas no host
lizada pelos prprios desenvolvedores do com vrias informaes sobre o n e a ins- em quedas do servidor;
GlassFish que fornece informaes sobre tncia, porm temos um problema: o usu- Aumentar a segurana ao esconder a rede
o ambiente em que ela est publicada. O rio nunca saber para qual das duas URLs interna do usurio.
endereo para download do arquivo http:// direcionar sua requisio. Se a instncia
developers.sun.com/appserver/reference/te- inst_local, do appserver1 ficar indisponvel, - Escalabilidade horizontal: a escalabilidade
chart/load-balancing/clusterjsp.zip e devemos o endereo http://appserver2:18080/clusterjsp um conceito que demonstra a capacidade de
salv-lo em qualquer pasta do servidor em correspondente instncia inst_remota do um sistema, rede ou processo de manipular uma
que se encontra o DAS (appserver1). appserver2 dever ser acessado. A situao poro crescente de trabalho de forma uniforme.
Em seguida, descompacte o arquivo bai- inversa tambm acontece, forando a mo- No caso da escalabilidade horizontal esse
xado em algum diretrio. Na raiz da pasta dificao da URL no navegador. Fica claro aumento conseguido colocando mais ns ao
de destino da extrao, h uma aplicao que precisamos deixar isso transparente sistema, como adicionar um novo computador a
chamada clusterjsp no formato EAR (En- para o usurio. A soluo configurar um um cluster.
terprise Archive). Efetue o deploy no cluster, balanceamento de carga que receber a
executando o seguinte comando: requisio e escolher qual das duas ins- O GlassFish d suporte aos servidores
tncias realizar o processamento. web Oracle HTTP Server, Microsoft IIS,
asadmin deploy --target cluster1 --passwordfile=credencial.txt Apache HTTP Server e Oracle iPlanet
<diretorio_de_destino_estrao>/clusterjsp.ear Instalando o Balanceamento de Carga Web Server para realizar o balanceamen-
O balanceador de carga funcionar como to de carga, mas a soluo da Apache
Aguarde a publicao da aplicao nas o n central da nossa soluo, ou seja, Software Foundation a mais comum.
duas instncias do cluster. Como definimos receber as requisies dos clientes e as Na nossa configurao, vamos utilizar
que ambas respondero na porta 18080 distribuir entre os ns do cluster. Alm a verso 2.2, juntamente com o plugin
para requisies HTTP no momento em desse papel-chave para o funcionamento mod_jk, que far uso do protocolo AJP.
que as criamos, podemos testar o fun- do ambiente, proporcionar uma srie de Dessa forma deixaremos o web server
cionamento do cluster entrando com os vantagens. Entre elas, podemos citar: funcionando como front-end do nosso
cluster, ou seja, responsvel por distribuir
a carga entre os ns, com apenas alguns
passos.
Em relao instalao do Apache
HTTP Server, no existe nada de especial.
Basta que seja realizado o procedimento
padro na mquina em que se encontra
o DAS, j que appserver1 ser tambm
responsvel pelo balanceamento. O
download do servidor web pode ser feito no
endereo http://httpd.apache.org/download.
cgi. As instrues para instalao podem
ser encontradas em http://httpd.apache.org/
docs/2.2/install.html.
Listagem 3. Linhas do arquivo workers.properties. Listagem 4. Comandos para reiniciar o domnio e o cluster.
No use SingleThreadModel em servlets: Assim como sin- Analise a vantagem do recurso keep alive: Essa funo se refere
cronizar trechos de cdigo de forma desnecessria, implementar possibilidade de se usar a mesma conexo TCP para mltiplas
SingleThreadModel afeta diretamente a escalabilidade; requisies/respostas. Por conta disso, o tempo de resposta HTTP
Use o mtodo init() em servlets para realizar inicializao est normalmente ligado a como esse recurso foi configurado;
pesada: O mtodo init() chamado logo aps o servidor criar Mantenha os resultados do servlet em cache quando possvel:
a instncia do servlet, portanto a melhor maneira de realizar Podemos efetuar cache no servidor ou no cliente e esse procedi-
tarefas pesadas. Dessa forma evitamos respostas demoradas para mento reduzir o processamento no servidor evitando novas
as requisies dos usurios; consultas ao banco de dados, j que haver uma cpia em memria
Evite o uso de System.out.println(): Muitas vezes empregado nos ou na mquina do cliente da informao a ser retornada;
testes locais, no h sentido de se utilizar esse tipo de artifcio em Prefira arquivos WAR ao invs de EAR: Se no houver motivos
ambiente de produo; para utilizar EAR, prefira arquivos WAR, pois possuem melhor
Crie sesses com moderao e use o mtodo invalidate() quando desempenho;
no forem mais necessrias: As sesses afetam diretamente a Desabilite o security manager: Se h certeza que nenhum
escalabilidade das aplicaes. Uma dica que nem sempre co- cdigo malicioso rodar no servidor e no usada autenticao
nhecida o uso da diretiva <% page session=false %> nas pginas nativa do Java na aplicao, desabilite o security manager. Entre-
JSP. Ela previne que o servidor de aplicao crie sesses quando tanto, caso o sistema leia ou escreva em arquivos, abra sockets,
elas no forem necessrias; modifique propriedades do sistema ou a prioridade de processos,
Mantenha o tamanho da sesso pequeno (se possvel, abaixo evite desabilit-lo.
de 7kb): Alm de ter impacto na escalabilidade, o tamanho da
sesso influencia no tempo de resposta. importante, por exem- Servidor de Aplicao
plo, evitar manter objetos grandes (como colees) na sesso. Os servidores de aplicao possuem vrias funes que so
Em geral eles foram a serializao adicionando um overhead interessantes para uso quando estamos desenvolvendo, mas em
computacional; ambiente de produo as configuraes precisam ser revistas.
Configure o tempo correto para expirar a sesso: necessrio Esta seo est dividida em:
verificar se o tempo para expirar a sesso no est muito grande, Deploy no servidor de aplicao;
porm valores muito baixos tambm podem ter impacto negati- Log;
vo na utilizao do sistema. Esse parmetro depender do tipo P ool de conexes;
de aplicao e do tempo que o cliente normalmente permanece J VM.
realizando operaes no sistema;
Evite Managed Beans com escopo de sesso nas aplicaes Deploy no Servidor de Aplicao
JSF: Usar mais de um Managed Bean de sesso um indcio de O processo de deploy de uma aplicao sempre muito dis-
que seu cdigo tem problemas. Caso precise, use frameworks pendioso para o servidor, mas existem dicas que diminuem o
como o MyFaces Tomahawk com cuidado para salvar o estado processamento com essa tarefa, como as listadas a seguir:
dos objetos; Desabilite o auto-deployment: Desse modo o servidor de
Cuidado com a paginao de registros em JSF: O ideal uti- aplicao no ter que ficar monitorando o diretrio de deploy
lizar paginao por demanda para evitar demora nas respostas automtico para verificar se h novas verses dos sistemas,
ao cliente. Assim poucos objetos so armazenados na memria melhorando a performance. Para desabilitar esse recurso no
a cada pgina navegada, alm de representar menos custo para GlassFish, clique em Domain, no menu esquerdo, depois em
o banco de dados, j que a consulta ter um limite de registros a Applications Configuration, desmarque a opo Auto Deploy e
retornar. clique em Save;
Use a pr-compilao de pginas JSP: A compilao de pginas
- SingleThreadModel: termo que especifica que apenas um processo ser JSP um recurso dispendioso. Pr-compilar esses arquivos uma
executado em determinado trecho de cdigo. Em um servlet isto conseguido ao boa sada para evitar esse consumo de processamento no momento
implementar a interface SingleThreadModel, o que ir assegurar que no existiro incorreto. Para ativar esse recurso no GlassFish, clique em Domain,
duas threads executando o mtodo service() de forma concorrente. no menu esquerdo, depois em Applications Configuration, marque
a opo Precompile e clique em Save;
Deployment Desabilite a republicao dinmica de aplicaes: Se esse
H sempre configuraes e prticas de deployment que ajudam a recurso estiver ativo, o servidor verificar periodicamente por
otimizar os recursos da mquina. Vejamos algumas delas: alteraes nas aplicaes publicadas e automaticamente recarre-
Cuidado com mltiplos diretrios no CLASSPATH: Quanto gar a aplicao com as alteraes. Fica claro o gasto com proces-
maior o nmero de diretrios, pior o tempo de carregamento de uma samento nessa operao. Para desabilit-lo no GlassFish, clique em
classe (class loading). Evite o uso excessivo de diretrios no CLASS- Domain, no menu esquerdo, depois em Applications Configuration,
PATH e ponha as classes relacionadas aplicao em arquivos jar; desmarque a opo Reload e clique em Save.
Pablo Bruno de Moura Nbrega D seu feedback sobre esta edio! Feedback
eu
http://pablonobrega.wordpress.com
s
Analista de Sistemas Java, certificado OCJP e OCWCD, formado em seu gosto. Para isso, precisamos saber
sobre e
Cincias da Computao pela Universidade de Fortaleza UNIFOR, o que voc, leitor, acha da revista!
s
ta
edio
trabalha na Universidade Estadual do Cear UECE, est cursando
D seu voto sobre este artigo, atravs do link:
Mestrado em Computao Aplicada na mesma instituio e desenvolve
sistemas h cerca de 7 anos. www.devmedia.com.br/javamagazine/feedback
Paradigmas da
Mobilidade
Um estudo sobre as abordagens web,
nativa e hbrida
I Resumo DevMan
mpressiona o ritmo em que avana a adoo de
solues mveis no mundo. Assim como ocorreu
com a web anos atrs, observa-se agora um cres- De que se trata o artigo:
cimento vertiginoso do interesse pela mobilizao Este artigo visa proporcionar uma leitura objetiva sobre os paradigmas
de atividades realizadas dentro das empresas. Para nativo, hbrido e web, aplicados no desenvolvimento de solues mveis.
atender a esta demanda, existem atualmente trs Atravs de uma anlise de aspectos como consistncia e desempenho
abordagens principais, e nosso objetivo ao longo deste de plataformas e tecnologias j estabelecidas, bem como de outras mais
artigo ser, inicialmente, compreend-las em suas recentes e muito bem cotadas no cenrio de mobilidade, alm de aspectos
essncias, para ento passarmos a uma discusso a como a disponibilidade de capitais financeiro e humano, convidamos o
respeito de vantagens, desvantagens, foras e fraque- leitor para uma reflexo sobre a aplicabilidade de cada proposta neste
zas de cada uma e, por fim, filosofarmos acerca de que um mercado altamente dinmico e complexo e que vem atraindo
algumas questes fundamentais que devem nortear um pblico cada vez mais diversificado.
a deciso de empresas e desenvolvedores no plane-
jamento, na capacitao, no setup e na conduo de Em que situao o tema til:
seus projetos. Mobilidade um conceito cada dia mais popular e presente no coti-
A Tabela 1 antecipa, ainda discretamente, os atores que diano das pessoas e das empresas, encontrando-se em franca expanso
compem a temtica ao longo do texto: os paradigmas em todos os mbitos. portanto, imprescindvel para o profissional
nativo, hbrido e web. de Tecnologia da Informao, independente de sua rea de atuao,
Este tem sido um dos mais quentes tpicos de que tome contato com as caractersticas que cerceiam este universo.
discusso em painis, grupos de e-mail e fruns de Focando exclusivamente em aplicativos mveis, este tema nos leva a
desenvolvimento mvel nos dias de hoje, e alguns uma importante reflexo sobre os pontos mais sensveis sobre mobili-
dos principais aspectos que fomentam a polmica dade nos dias de hoje. Quando, como e onde adotar cada abordagem
deste tema so: custo final, curva de aprendizado, existente? Afinal de contas, existe melhor ou pior ou tudo uma questo
reutilizao, desempenho e experincia de usurio. de ponto de vista?
So aspectos que no encerram toda a questo, mas
sem dvidas protagonizam o enredo. No que tange Paradigmas da Mobilidade:
plataforma Android, existe ainda outro aspecto Existem, atualmente, trs paradigmas principais que norteiam o de-
de peso que a fragmentao, que traz desafios que senvolvimento de solues mveis: web, nativo e hbrido. Escolher o
variam para mais ou para menos de acordo com a melhor sempre um exerccio que exige ateno aos mnimos detalhes,
abordagem escolhida, projeto a projeto. principalmente queles que muitas vezes esto escondidos e/ou na ponta
Todos esses pontos tornam, nos dias de hoje, o mapea- final do ecossistema. Faremos, neste artigo, um passeio pelas caracters-
mento dos requisitos de um projeto mvel um processo ticas fundamentais de cada estratgia, apresentando ao longo do texto
especialmente amplo e delicado. Os pontos de reflexo um estudo baseado em projetos reais, fechando com um parecer sobre
trazidos mais adiante devero contribuir para que o a realidade atual em que nos encontramos, bem como a realidade que
leitor desenvolvedor, gerente de projeto ou mesmo entendemos ser a que perdurar pelos prximos anos.
entusiasta consiga tomar a deciso final a respeito da
Figura 2. Exibio da pgina em um iPad 2 Figura 3. Exibio da pgina em um simulador BlackBerry (Curve 8520)
RIM utiliza-se de um motor denominado Mango (presente nas de qualquer desenvolvedor principalmente desenvolvedores
verses de 4.5 a 5 do BlackBerry OS). Esta diferena pode no ser web e qualquer empresa focada neste mercado. A seo Links
sensvel ao usurio final para aplicativos simples, mas podem traz dois bons pontos de partida para entender do que se trata
variar significativamente quando os aplicativos ganham uma esta prtica.
complexidade e uma estrutura maiores.
Web apps so compostas por requisitos normalmente mais evi- Native apps
dentes. Como elas tm caractersticas essencialmente web, uma Aplicativos nativos, como o nome j sugere, so solues
abordagem que se distancia das outras duas pelo fato de no de- projetadas e desenvolvidas especificamente para uma dada
pender de um aplicativo compilado e instalvel nos dispositivos, plataforma operacional. Por este motivo, possvel acessar
e o acesso a este tipo de soluo basicamente via Internet, em qualquer recurso oferecido pelo dispositivo, ampliando o
modo totalmente online. Projetos seguindo esta opo envolvem universo de possibilidades de integrao com as inmeras
requisitos tcnicos que, em linhas gerais, no interseccionam com funcionalidades que ele disponibiliza ao usurio, como cme-
aqueles exigidos em projetos nativos. ra, bluetooth, NFC, persistncia, geolocalizao, acelermetro,
Algumas das principais caractersticas que tornam conveniente giroscpio, barmetro, dentre tantos outros.
o desenho de um projeto nos moldes de uma web app so: Este cenrio, como o leitor provavelmente j deve ter imagi-
A natureza do processamento essencialmente online; nado, aquele em que se pode experimentar o melhor desem-
Admite-se simplificao e homogeneidade de UX/UI; penho, a melhor experincia de usurio e a melhor qualidade
H baixa interao com recursos nativos do dispositivo; final, tanto do ponto de vista artstico quanto operacional.
H um modelo simples de cacheamento e persistncia de dados. O desenvolvimento de aplicativos nativos exige, portanto,
equipes experimentadas nas diversas plataformas, dentre
Quando se fala em mobile web apps, o desenho da soluo j , as quais destacamos, abaixo, as mais populares nos dias de
naturalmente, orientado a dispositivos mveis. Entretanto, outra hoje:
prtica que tem ganhado evidncia no mercado e em painis e A ndroid: Java SE customizado para contextos mveis, com
debates tcnicos, aquela denominada Web Responsive Design, uma arquitetura bastante particular e extremamente leve e
que aborda fundamentalmente os princpios e os procedimentos elegante;
recomendados de/para adaptao de aplicaes web existentes BlackBerry: Java ME customizado com componentes espe-
a ambientes operacionais mveis. Uma vez que a febre de mo- cificamente desenhados para a plataforma da RIM;
bilidade vem invadindo a passos largos o universo de solues iOS: Objective-C, linguagem com sintaxe especfica e que se
informatizadas, este tambm um tpico que deve estar na cabea assemelha, em muitos pontos, ao C, trazendo, entretanto, uma
A abordagem que proporciona mais ferramentas e melhores - Mobile thinking: um conceito cuja relevncia vem crescendo nos canais
recursos para prover ao usurio a melhor experincia de uso que tratam de tecnologias e paradigmas mveis, e que nos convida a uma
possvel , indubitavelmente, a nativa. No existe, no contexto discusso profunda a respeito de como desafios, oportunidades, modelos
atual de desenvolvimento mvel e sob o ponto de vista da ex- mentais e tecnologias podem e/ou devem ser explorados para sermos capazes
perincia do usurio, justificativa plausvel para a substituio de identificar os atributos que finalmente tornaro a experincia de usurios,
da abordagem nativa por tecnologias hbridas, e os principais atravs de smartphones, tablets ou outros dispositivos do gnero, algo nico
argumentos que reforam esta posio se baseiam no fato de que e especial. Mobile thinking e ser, portanto, a virtude que faz e continuar
solues hbridas: fazendo de empresas e desenvolvedores autnomos especialmente destacados
Incluem uma camada especfica da plataforma adotada, que no mercado de mobilidade.
afeta diretamente no desempenho final da soluo;
Reduzem a possibilidade de reuso e componentizao e redu- Os pontos listados acima fazem sentido apenas na comparao
zem a legibilidade em projetos grandes, com grande quantidade entre as abordagens nativa e hbrida, no sendo aplicveis para
e complexidade de regras de negcio; web apps. Conforme j destacado anteriormente neste artigo,
C ontrolam a gerao do cdigo nativo usado para acessar os web apps tem caractersticas mais facilmente identificveis e
recursos do(s) dispositivo(s) processo normalmente pouco afastam-se, por este motivo, da grande polmica protagonizada
otimizado, gerando cdigo final contestvel por qualquer pro- pelas duas outras abordagens.
fissional experiente na(s) plataforma(s)-alvo selecionada(s); Quando o que se espera um web site, para ser acessado em
Defendem a existncia de um suporte cross-platform ainda um contexto puramente online a partir de navegadores de
bastante questionvel; dispositivos mveis, o emprego de tecnologias como HTML5,
D emandam conhecimento slido no desenvolvimento de solu- JavaScript e CSS, em seu formato puro ou ainda atravs de
es mobile web e, principalmente, conforto em relao ao mobile frameworks como jQuery Mobile, totalmente aconselhvel.
thinking. Dominar HTML5, CSS e JavaScript imprescindvel, A deciso por web apps pode ser tomada baseada em algumas
mas no tudo (conhea o conceito de mobile thinking atravs caractersticas mais facilmente reconhecveis, dentre as quais
da seo Links); merecem destaque:
Operaes essencialmente online; Esta categoria de indivduos, por sua vez, alm de muito bem
Transaes com modelos bsicos de persistncia local; informada e cada vez mais exigente, tem total liberdade para
Baixa demanda por integrao com recursos dos dispositivos. comentar, publicar e avaliar tudo e todos, via canais como
Google Play, Apple Store, BlackBerry App World, dentre outros.
Voltando polmica iniciada alguns pargrafos atrs, algo Todos absolutamente acessveis a toda a comunidade que deles
bastante comum nos dias de hoje, quando na adoo de pla- toma usufruto.
taformas hbridas como o PhoneGap (mas no apenas), o Esses feedbacks podem configurar a salvao ou o fracasso
uso excessivo de plug-ins para integrao com os recursos do fruto de projetos longos e penosos, cabendo aos desenvol-
nativos dos dispositivos como Bluetooth, Cmera, Bancos vedores e s empresas, uma vez tendo-o publicado, o papel de
de dados, dentre tantos outros. Alm disso, obstculos como meros expectadores.
a inevitvel fragmentao da plataforma Android ou ainda a O nvel de satisfao das empresas com os servios prestados
necessidade de suportar um ainda considervel mercado de no desenvolvimento de seus aplicativos tende a ser, por esse
dispositivos BlackBerry executando verses mais antigas de motivo acima exposto, varivel, podendo oscilar de acordo com
seu sistema operacional (BlackBerry OS 5, para sermos mais as estatsticas coletadas nesses canais.
especficos) demandam considervel esforo principalmente De forma prtica, o que um dia um belo aplicativo e uma
no tocante construo da UI, e as vantagens de reaproveita- parceria de sucesso entre a contratante e seus contratados,
mento e compatibilidade preconizadas por plataformas que corre o risco de, abruptamente, servir-se de outra roupagem,
seguem a linha hbrida perdem seu crdito e sua validade. mediante feedback negativo colhido a partir de usurios que,
Em muitos casos, fazendo-se uma anlise fria e objetiva do insatisfeitos com a experincia que tiveram com o mesmo, re-
projeto, no raro concluir que a natureza portvel de pro- cheiam as app stores de marketing extremamente nocivo para
jetos hbridos no so suficientemente convincentes, pois o a marca e para a empresa responsvel.
esforo para adaptao para vrias plataformas bem maior Sendo assim, extremamente importante que empresas e
do que se desejaria. desenvolvedores autnomos contextualizem plenamente a
problemtica, expondo todas as variveis existentes e conscien-
Investimento tizando seus clientes acerca de riscos, vantagens e desvantagens
Naturalmente, um projeto de software cujo desenho atenda de cada abordagem frente o domnio do problema apresentado.
individualmente a cada plataforma-alvo exigir investimentos Deste trabalho consultivo depender, invariavelmente, a sa-
um pouco maiores. No entanto, a evangelizao do pblico- de continuada das relaes profissionais entre contratantes e
alvo em pr-vendas, fruns, congressos e outros eventos de contratados.
maior ou menor dimenso de suma importncia, pois nem Temos tambm a questo da evoluo dos projetos ao longo
sempre o menor custo acabar se traduzindo em um bom resul- do tempo. Sempre que possvel, o desenho da arquitetura de
tado a mdio e longo prazo. Em mobilidade, particularmente, uma soluo passa pela previso, mesmo que superficial, da
este um dos principais mitos que tm sido construdos em evoluo do produto ou servio a partir de seu lanamento. O
cima de alegaes ainda precipitadas e muito pouco medidas, trabalho conjunto entre todas as partes envolvidas contribuir
no que tange a alguns paradigmas e algumas tecnologias. para um pensamento mais estruturado sobre o comportamento
Pelo lado do empresrio que deseja mobilizar algumas dos aplicativos ao longo prazo, e principalmente a respeito
de suas operaes ou fornecer a seus clientes solues que das perspectivas da prpria empresa que contratou o desen-
facilitem, de algum modo, o acesso aos servios a eles pres- volvimento dos mesmos. sempre melhor trabalhar com uma
tados, igualmente importante atentar para o fato de que o orientao preventiva, e a nossa obrigao enquanto desenvol-
investimento em uma soluo desenhada de acordo com cada vedores , ao menos, apresentar este modelo a nossos clientes
filosofia das plataformas selecionadas render, no de forma ou queles ainda em fase de prospeco.
imediata, mas a mdio e longo prazos, uma melhor resposta Mobilidade um conceito ainda pouco explorado em todas
a mudanas corretivas, adaptativas e/ou evolutivas. as empresas nacionais e parte das empresas internacionais,
Alm disso, o tratamento individualizado a cada platafor- principalmente aquelas que atuam em modelos mais rgidos
ma-alvo resultar em feedbacks bastante positivos de seus e tradicionais. H inmeros paradigmas a serem quebrados,
respectivos usurios, pela prpria experincia diferenciada e muitos modelos mentais imprprios para os dias de hoje
que cada produto promove. O resultado um estmulo natural a serem vencidos. Portanto, para aqueles que se propem a
ao uso, contribuindo diretamente para o reforo da marca atuar na vanguarda tecnolgica, apresentado o imenso, mas
por trs do aplicativo. apaixonante desafio da evangelizao e orientao tcnica e
No raramente, escopos e mesmo a arquitetura de proje- tambm filosfica frente a todo esse processo de transformao
tos tm sido definidos a partir de objetivos intermedirios, que vemos acontecer em ritmo to acelerado.
ignorando-se o verdadeiro foco de qualquer soluo mvel: O prprio conceito de custo , ainda, extremamente confuso
seu real pblico consumidor. e imprprio, tpico de momentos como esse de grande impacto
um conjunto bsico e comum de APIs do Java, modificando-se como String/NSString precisa ser considerado. Em experi-
geralmente a sintaxe, mas preservando-se a semntica. Algo- ncias que realizamos em um projeto real, o procedimento
ritmos de validao, verificao e processamento de dados so de traduo manual de uma camada de domnio escrita
facilmente portveis de uma soluo para outra, e os nmeros originalmente em Objective-C para Java Android, com um
coletados neste contexto giram em torno da casa dos 60% de total de 35 classes, demorou nada mais que vinte minutos
reaproveitamento entre as duas plataformas; (com uma traduo 100% manual). Entretanto, existem j
N o tocante interface com o usurio, embora no sejam h muito tempo poderosas ferramentas de modelagem de
reaproveitveis de uma verso para outra, mecanismos como dados como Rational Rose, Borland Together e astah (veja
o tratamento de excees, manipulao de eventos e constru- a seo Links), que podemos utilizar sempre que o projeto
o programtica de telas, bem como a prpria arquitetura considerar, em seu desenho, mltiplas plataformas desde o
dos widgets e containers grficos que seguem um padro princpio. Boa parte dessas ferramentas permite, inclusive,
conhecido da literatura como quasi-MVC seguem basica- a gerao automtica do cdigofonte.
mente a mesma filosofia de alguns frameworks j antigos O processo de converso de cdigo entre linguagens fica
no Java SE, como o Swing/AWT, utilizando-se de interfaces sempre mais simples quando seu radical o paradigma
e padres de projeto muito similares entre si. Dados coleta- orientado a objetos, no caso de todas essas tecnologias que
dos ao longo de um estudo realizado nos ltimos meses em esto sendo mencionadas ao longo do artigo dominado.
projetos reais resultaram em um ndice de reaproveitamento Todas as plataformas mveis modernas, bem como boa parte
de cdigo-fonte prximo dos 40%; das mais antigas como Windows Mobile, baseiam suas lin-
Outro aspecto que merece destaque o consumo de servios guagens de programao nos princpios e nas tcnicas deste
tanto no modelo RESTful quanto via protocolo SOAP. A plata- paradigma de desenvolvimento. imprescindvel que toda
forma Android suporta nativamente o consumo de mensagens equipe de desenvolvimento de software, nos dias de hoje,
JSON e esta biblioteca facilmente portvel para BlackBerry da tenha slida base neste paradigma. Sempre que isto for ver-
verso 5 em diante. O mesmo cdigo de consumo de mensagens dade, tanto o desenvolvimento quanto a traduo de cdigo,
JSON pode ser, portanto, utilizado em ambas as solues, com independente da natureza da plataforma, ser facilitada.
praticamente 100% de reaproveitamento. Quanto ao consumo O consumo de servios web, o acesso a elementos perten-
de mensagens SOAP, existem bibliotecas para as duas plata- centes ao domnio da aplicao, o acesso a bancos de dados
formas, dentre as quais pode-se evidenciar a kSOAP (veja a remotos ou locais, tudo isso fica bem mais simples de enten-
seo Links). Novamente, praticamente 100% do cdigo pode der, manipular e alterar quando os princpios da orientao
ser aproveitado de um projeto para outro. a objetos esto bem sedimentados entre os membros dos
times responsveis pela construo do software.
- Quasi-MVC: O modelo quasi-MVC se baseia na mesclagem das camadas Quando se h uma etapa de documentao anterior ao
de controle (C) e apresentao (V) em um nico componente, mantendo desenvolvimento do projeto, todo o desenho de uma soluo
individualizado apenas o componente de modelo, este responsvel pela ainda mais natural, e o desenvolvimento pode ocorrer
manipulao dos dados. Em algumas bibliotecas como Swing/AWT naturalmente em paralelo.
possvel vermos isso nitidamente em elementos como javax.swing.JTable,
que mescla controle e apresentao e depende de elementos que seguem o Desempenho
protocolo javax.swing.TableModel para recuperar e atualizar os dados que A renderizao de contedo em plataformas como Pho-
devem ser exibidos e/ou salvos. neGap (vide Links) tornam a experincia do usurio ine-
vitavelmente prejudicada. Aqueles mais experimentados
Quando mudamos para a plataforma iOS, no desenvolvi- nas plataformas (os conhecidos hard users) conseguem,
mento da verso iPhone/iPad do aplicativo, temos tambm a com relativa facilidade, notar esta diferena e, assim, colo-
possibilidade de reaproveitar, seno o cdigo propriamente cam em xeque uma soluo desenvolvida com tecnologias
dito, boa parte da lgica. Embora a terminologia mude, os hbridas. Algumas de suas fraquezas um exemplo tpico
conceitos permanecem e, desde que se tenha uma equipe a velocidade de rolagem de listas e componentes em ge-
experimentada nesta plataforma, o ritmo de leitura, in- ral podem ser observadas em contextos de uso bastante
terpretao e traduo de cdigo Java para Objective-C (e rotineiros, o que pode ser um complicador na avaliao final
vice-versa) muito rpido. do produto. Nesses casos, nem o mais experiente time de
A camada de domnio de dados, por exemplo, pode ser desenvolvedores pode atuar, pois algumas limitaes so
lida e interpretada com extrema rapidez, desde que bem legadas, caractersticas da prpria plataforma ou do prprio
desenvolvida. O processo de traduo de cdigo escrito em framework escolhido.
Objective-C para Java ou no sentido contrrio muito peque- Titanium talvez seja a plataforma mais estvel para competir
no, e a converso de tipos muito direta. Os tipos primitivos com a abordagem nativa. Baseada inteiramente em JavaScript,
basicamente se preservam, e apenas o nome de estruturas tendo todo o cdigo desenvolvido posteriormente traduzido
seu gosto. Para isso, precisamos saber Lista dos principais navegadores web para dispositivos mveis.
sobre e
ta
edio
http://www.fastcompany.com/most-innovative-companies/2012/full-list
D seu voto sobre este artigo, atravs do link: 50 empresas mais inovadoras do mundo.
www.devmedia.com.br/javamagazine/feedback
Testes no Scrum
Processo de Teste de Software adaptado ao Scrum
A Resumo DevMan
s atividades de testes de software assumem
papis essenciais dentro do processo de de-
senvolvimento de software que adota mtodos De que se trata o artigo:
geis, pois apoiam a comunicao entre desenvolvedores Diante do crescimento das Metodologias geis, em especial o
e clientes, a entrega frequente dos incrementos de sof- framework Scrum, diversos desafios surgem para as atividades de testes
tware e proveem mudanas mais seguras com um bom nestes ambientes. Por isso, neste artigo foram levantados estes desafios
conjunto de testes para o sistema. No entanto, segundo e proposta a adaptao do processo de testes fundamental s atividades
Carter (2011), existe a necessidade de uma reestruturao do Scrum.
do processo de testes fundamental, pois alguns pontos
ineficientes dessa abordagem clssica tm se tornado Em que situao o tema til:
aparentes nas atividades de testes em ambientes geis, Diversas empresas que adotam mtodos geis tm tido dificuldades na
dentre eles: aplicao e no gerenciamento das atividades de testes, principalmente
Atividades de testes so realizadas apenas aps a em projetos de mdio e grande porte. A abordagem estruturada dos
codificao; testes geis, proposta neste trabalho, ajuda os times geis a minimizarem
A traso entre a escrita do software e o feedback da equipe essas dificuldades.
de testes para a equipe de desenvolvimento;
C omunicao dificultada entre as diferentes equipes Testes no Scrum:
envolvidas no projeto; Este trabalho identifica alguns problemas relacionados adaptao do
R esistncia a mudanas de requisitos; processo de testes e o papel do analista de testes em funo da crescente
E levado esforo para manter os vrios artefatos de adoo das prticas geis pela indstria. Adicionalmente apresentado
testes atualizados. um processo de testes geis em sintonia com o framework de gerencia-
mento de projetos Scrum, adequando as atividades do processo de testes
Neste artigo, ser proposta uma adaptao do processo fundamental s necessidades e conceitos deste framework.
de testes fundamental para um processo de testes geis
apoiada nas atividades do Scrum, com o intuito de mi-
nimizar tanto os problemas identificados acima, como
os demais: readaptao dos profissionais de testes s
mudanas culturais originadas pelos princpios e valores
do paradigma gil e a adequao das atividades de testes
ao framework de gerenciamento de projetos Scrum.
Teste fundamental
O processo de testes fundamental (ISO, 2009) possui
etapas bem definidas e sequenciais, por exemplo: Ge-
renciamento e Planejamento, Projeto, Implementao,
Execuo e Anlise. Possui tambm as caractersticas
de produzir alguns artefatos formais, ter uma equipe
independente da equipe de desenvolvimento e envolver
vrios perfis de profissionais, como: Gerente, Lder,
Projetista, Analista, Automatizador e Testador.
A norma ISO/IEC 29119 prope um processo de testes
que apresentado na Figura 1. Ele dividido em duas
fases paralelas. A primeira fase a de gerenciamento,
que envolve o planejamento, monitoramento, controle e Figura 1. Processo de testes da norma ISO/IEC 29119 adaptado de ISO (2009)
Scrum
O Scrum (Figura 2) um framework de
gerenciamento gil de projetos, fundamen-
tado na teoria de controle de processos Figura 2. Framework Scrum (Schwaber, 2011a)
empricos, que emprega uma abordagem
iterativa e incremental para otimizar a ambientes geis. A seguir, abordamos backlogs em tarefas que cabem em post-its
previsibilidade e controlar riscos (Schwa- algumas delas: (pequenos pedaos de papis) so algumas
ber, 2011a). Consiste em trs papis funda- Adaptao do profissional de testes: das grandes vantagens implantadas pelas
mentais (Scrum Master, Product Owner e Os profissionais de testes podero sentir metodologias geis, todavia, elas tm
o Time), a produo de alguns artefatos e dificuldades em adaptar-se ao novo, po- trazido certas dificuldades aos testes. Por
eventos com durao fixa. rm, com treinamento adequado, esses exemplo: manter a rastreabilidade entre
O primeiro evento a fase de preparao, profissionais compreendero as melhorias product backlogs e testes; elaborar testes
onde ocorre o planejamento de toda a que essas novas prticas podem trazer. Ou- atravs de informaes reduzidas, o que
verso do produto que ser desenvolvido. tro desafio que surge com essa transio pode ocasionar testes ineficientes; e en-
No segundo evento, ocorre a reunio de a mudana de mentalidade do candidato a tendimento incompleto do que realmente
planejamento da sprint, que o momento testador gil. No cabe apenas ao profissio- o cliente espera do sistema, dificultando
no qual ser definido e planejado o tra- nal de testes ser o policial da qualidade, assim criar os testes de aceitao;
balho da sprint subsequente. Por sua vez, esta uma funo de todo time gil; Resistncia ao TDD: Segundo Astels
na sprint (que possui perodo de trs a Dificuldades do processo de testes (2003), o TDD um estilo de desenvolvi-
quatro semanas) que acontece o trabalho fundamental: Algumas das caractersticas mento que traz melhorias significativas
de produo do incremento do produto. O do processo de testes fundamental trazem ao projeto, pois o cdigo baseado nos
quarto evento a reunio diria, que um certa dificuldade na aplicao dos testes em testes de unidade e de componentes, sendo
encontro (de quinze minutos) com todos os ambientes geis. Por exemplo: gesto centra- o desenvolvedor o responsvel pela cria-
integrantes do time. O que foi produzido lizada, orientado a artefatos, difcil comuni- o e execuo destes testes. No entanto,
durante a sprint apresentado ao cliente cao entre as diversas equipes envolvidas culturalmente os desenvolvedores tm
na reunio de reviso. Por fim, na reunio no projeto e a realizao das atividades de resistncia adoo da prtica TDD, pois
de retrospectiva o momento no qual o testes somente aps a codificao; eles precisam produzir cdigos extras e,
time decide o que pode ser melhorado para D ificuldade de estimar as atividades com isso, acreditam que ser perda de
as sprints futuras. de testes: Dentre as atividades de planeja- tempo. Contudo, desenvolvedores mais
mento, a estimativa a que mais dificulda- experientes entendem que a mdio e longo
Dificuldades nos Testes em Ambientes des traz, pois alm do tempo reservado na prazo ter-se- um ganho na produtividade
geis sprint para testes nem sempre ser o ideal, e na qualidade do produto;
Alguns autores como Crispin e Gregory os backlogs possuem poucos detalhes para Falta de Estratgia de Teste gil: A falta
(2009) e Shaye (2008), relatam dificuldades a criao dos testes; de um processo de testes adaptado para o
na transio dos testes fundamentais para D ocumentao reduzida: A quanti- desenvolvimento gil um dos obstculos
os testes geis, vindas da necessidade de dade reduzida de artefatos, a escrita dos encontrados pelos times geis em criar a
adequar-se s prticas intrnsecas dos requisitos em backlogs e a diviso desses estratgia para a realizao dos testes. Isto
pode provocar a criao de uma estratgia de testes deficiente, ou testes. O projetista o responsvel por projetar a arquitetura
mesmo, a no criao desse artefato. dos testes e criar o artefato sprint test, trabalhando em conjunto
com o arquiteto de software. tambm de sua responsabilidade
Essas dificuldades motivaram a pesquisa de uma soluo que as orientar o que dever ser automatizado. Finalmente, o analista
minimizassem e elevasse a contribuio dos testes na qualidade de testes quem ir configurar o ambiente, criar os scripts para
dos produtos oriundos dos ambientes geis. A proposta resultante automao, executar os testes e, quando estiver realizando testes
apresentada a seguir. exploratrios, criar o artefato sprint test.
Esse processo de testes geis tem como premissa a flexibilidade
Processo de Teste Adaptado para o Scrum para tornar-se adaptvel as necessidades de cada projeto. Com
Para Turk, France e Rumpe (2000), a agilidade de um processo isso, haver projetos em que o profissional de testes poder
determinada pelo grau em que uma equipe de projeto pode dinamica- assumir mais de um papel, de acordo com o tipo de projeto,
mente adaptar o processo com base nas mudanas no ambiente e nas complexidade, tamanho e experincia do time.
experincias coletivas dos membros da equipe de produo. Por
isso, o processo de testes geis proposto neste artigo deve ser Fase de Preparao
flexvel o bastante para se adequar s necessidades especficas de Esta fase ocorre antes do incio das sprints. Nela levantado
cada projeto e melhorar, continuamente, a rapidez no fluxo de suas junto ao cliente o product backlog e so planejadas as atividades da
atividades para obter a sintonia com os ambientes geis. verso do produto que ser desenvolvida pelo time Scrum. Nesta
O processo da Figura 3 uma adaptao de todas as fases, arte- fase, o time de testes auxilia na definio do product backlog e
fatos e papis do processo de testes fundamental ao framework planeja as atividades de testes, conforme a Figura 4.
Scrum. Na fase de preparao foram definidas as atividade que iro
acontecer antes das sprints. Para as fases das sprints, foram mape- Definio do product backlog
adas todas as atividades do Scrum para as atividades de teste. Por Nesta etapa, o cliente, junto com o product owner e o time
fim, so exibidos os artefatos e os papis especficos dos testes. Scrum, criam o product backlog (artefato proposto pelo Scrum),
especificando todas as funcionalidades, caractersticas e tecnolo-
gias que sero necessrias ao sistema, definindo suas prioridades
associadas ao maior valor de negcio.
Definir com o time Scrum o conceito de pronto Estas contm e consistem na reunio de Escolha do sprint backlog
A interao entre os integrantes do time planejamento da sprint, o trabalho de Na fase de planejamento da sprint
Scrum deve ser a mais concisa possvel. codificao e testes, a reunio diria, (Figura 6), os itens do product backlog
Por isso, o conceito do que est pronto a reviso da sprint e a retrospectiva da priorizados pelo product owner sero
deve ser bem definido. Segundo Ferreira sprint. divididos em pequenas tarefas pelo time
et al. (2010), um determinado item pode Scrum para serem desenvolvidos e testa-
estar pronto dependendo do conceito Sprints dos durante a sprint. Essas tarefas devem
de concluso/trmino estabelecido pela A sprint o "corao" do Scrum. Ela con- ser decompostas para que possam ser re-
equipe. O item pronto pode ser: codifi- siste em perodos de tempo bem definidos alizadas em menos de um dia. Essa lista
cao concluda, codificao + teste con- de um ms ou menos, durante o qual um de tarefas compe um artefato definido
cludos, codificao + teste + integrao incremento do produto fica pronto, utili- pelo framework Scrum com o nome de
concludas, teste concludo, codificao + zvel, e potencialmente entregvel. sprint backlog. O time se auto-organiza
teste + integrao + regresso concludos para se responsabilizar pelo trabalho
etc. Por isso, necessrio que a equipe de- Planejamento da Sprint contido no sprint backlog, tanto durante
fina quando um item vai estar realmente Para Schwaber (2011b, p.12), a reunio de a reunio de planejamento da sprint,
pronto. Para cada item, a definio de planejamento das sprints o momento quanto no prprio momento de execuo
pronto pode ser diferente, vai depender pelo qual a iterao planejada. Ela con- da sprint (Schwaber, 2011b).
do que cada um se prope. siste de duas partes: a primeira parte o A equipe de testes tambm deve ficar
Terminada a fase de Preparao (ob- momento no qual decidido o que ser fei- atenta e tentar conter o mpeto dos desen-
serve a Figura 3), todos os artefatos de to na sprint e a segunda parte o momento volvedores, no intuito dos mesmos no
testes, provenientes da release, estaro no qual o time entende como desenvolver escolherem muitas funcionalidades para
com sua verso inicial concluda e o essa funcionalidade em um incremento do a sprint e acabar espremendo o tempo
time Scrum estar pronto para iniciar os produto durante a sprint.. destinado aos testes. Por isso necessrio
ciclos iterativos de trabalho, as sprints. que a equipe de testes participe de todas
as estimativas.
Mtricas Origem
Cobertura de Cdigo Williams et al. 2004 e Nagappan et al. 2004
Porcentagem de Assertivas de Testes de Unidade Passando e Falhando Vicente, 2010
Quantidade de Testes de Aceitao por Funcionalidade Nagappan et al. 2004
Porcentagem de Assertivas de Testes de Aceitao Passando e Falhando Vicente, 2010
Tempo de Execuo de Testes Vicente, 2010
Quantidade de Defeitos Encontrados Williams et al. 2004
e docente do Mestrado Profissional em engenharia de software. Com 14 anos na rea de seu gosto. Para isso, precisamos saber
sobre e
desenvolvimento de software, foi coordenador da garantia da qualidade de software e o que voc, leitor, acha da revista!
s
ta
edio
do SEPG (Software Engineering Process Group) onde adquiriu experincia na definio e
D seu voto sobre este artigo, atravs do link:
implantao de processos de gerenciamento de projetos de TI aderentes ao CMMI e em
avaliaes SCAMPI, com participao em avaliaes Classe A CMMI nveis 2 e 3. www.devmedia.com.br/javamagazine/feedback