segunda-feira, 19 de maio de 2008

Tagged under: , , , ,

I Salvador Java Day

Logo que acabou o I Simpósio Java do Sertão já ficamos pensando qual seria o próximo evento. Nem bem voltei do JavaOne e ele já bateu na porta do JavaBahia. O pessoal da InfoqJr, empresa júnior da FIB, está altamente mobilizado e em poucos dias conseguimos organizar a programação e os detalhes logísticos/operacionais do I Salvador Java Day, que será no dia 07 de junho na FIB (manhã/mini-cursos) e Casa do Comércio (tarde/palestras gratuitas).

Serão 3 mini-cursos pela manhã, englobando 3 plataformas: JavaSE - Aplicações Java Desktop usando o NetBeans 6.1, JavaME - Programação Java para Dispositivos Móveis e Java EE - Desenvolvimento de RIAs com Google Web Toolkit. As vagas são limitadas, portanto fique ligado para garantir a sua. A única desvantagem é que não dá para assistir aos 3 ao mesmo tempo...

À tarde teremos 2 palestras do nosso convidado especial Alexandre Gomes, vindo de Brasília. No início da tarde ele falará sobre Como integrar aplicativos Java com Bluetooth e, para fechar o evento, nos traz o intrigante título Os segredos da Computação Invisível no mundo Java. Palestrante experiente e requisitado, Alexandre promete fazer umas demos com uns "brinquedinhos" legais que ele trouxe do JavaOne, provavelmente empolgado com algumas coisas que viu nas General Sessions (veja meus posts do 1o e 4o dias). Imperdível.

No recheio temos Igor Takenami falando sobre interfaces gráficas de usuários em Apresentando... Java! GUI para todos os sabores. Na sequencia, um espaço para apresentar dois projetos baianos de sucesso: Alessandro Dourado apresenta NB Project - Gerenciando projetos de software com a plataforma NetBeans, um dos vencedores do NetBeans Innovators Grants, e Augusto Ferrarini fala sobre Teradesk Mobile for Android, finalista do Android Developer Chalenge. Os concursos internacionais estão servindo para mostrar o que é que a Bahia tem, então vamos divulgar e estimular que outros sigam o mesmo exemplo.

Programação, inscrições e mais detalhes em http://wiki.java.net/bin/view/JUGs/SalvadorJavaDay.

E se você ainda não esteve presente em nenhum evento realizado pelo JavaBahia, pode ter uma idéia vendo fotos em javabahia.fotopages.com. Esperamos você lá!

segunda-feira, 12 de maio de 2008

Tagged under: , ,

JavaOne 2008 - 4o Dia

A General Session do último dia do JavaOne 2008, comandada por James Gosling, mostrou uma quantidade incrível de coisas legais sendo feitas com Java. Indo desde o ótimo suporte ao JavaScript que está disponível no NetBeans 6.1 (com code completion, debugging e warnings quando algum metodo não funciona bem em determinado browser), da VisualVM, aplicação muito últil para monitoração e profiling, passando por jogos usando o JMonkey Engine e Project Darkstar, até aplicações críticas na organização européia de pesquisa nuclear (CERN) e um carro de verdade (o Tommy Jr), que não precisa de ninguém dirigindo (nem de controle remoto!), chegando até outros planetas, usando Java na missão Marte com o JMars, projeto open source. Como no primeiro dia, mais uma vez o Sentilla foi mostrado, com várias bolas gigantes sendo jogadas para a platéia, enquanto um gráfico na tela exibia a trajetória de cada uma.


Tem Java até em Marte!

Na minha visão, o mais fantástico foi a demonstração da Pulse Smartpen, uma caneta/gravador/computador que faz de tudo: enquanto grava voz e escaneia o que está sendo escrito em som 3D (ele não grava só o que se fala, mas também o que se ouve, pois cada fone de ouvido tem também um microfone), depois permitindo ouvir cada tópico com apenas um clique. O que você acha então de desenhar as teclas de um piano em um papel e tocá-lo com a caneta, escolhendo o ritmo e instrumento? Bom, tem também um tradução automática do que você escreve e uma aplicação que via wireless busca o nome de uma JSR. Bem melhor do que imaginar como isso tudo funciona, veja você mesmo. A parte da Smartpen começa mais ou menos aos 56 minutos, mas sugiro assistir tudo, pois é imperdível. Ao final da General, uma foto dos brasileiros com John Gage, que aliás foi homenageado e ganhou um troféu e um quadro de seus colegas de Sun, no início da sessão. Gage é uma unanimidade e uma simpatia!


John Gage e o time do Brasil

Nos intervalos, dois momentos ímpares com Aaron Houston, coordenador do Programa dos Grupos de usuários Java, na Sun. No primeiro, eu e Magno (RioJug) ganhamos de presente dois Sun SPOT Java Development Kit. Agora, em nossos estados, podemos ajudar a desenvolver software em Java para dispositivos embarcados usando a Sun Small Programable Object Technology (SPOT). Lembre-se: O presente foi para o JavaBahia, então me procure se você tem interesse de conhecer o dispositivo e/ou desenvolver algo usando a tecnologia (mais sobre o assunto em www.sunspotworld.com). No início da tarde foi Aaron que recebeu um presente: Uma camisa da seleção brasileira autografada por todos nós.


Que presentão, hein?!

Ainda assiti a sessões sobre ferramentas open source para Java EE (TS-7479), focando basicamente no JBoss Tools e funcionalidades para SOA (aliás, tinha uma área no pavilhão exclusiva para solucões SOA, livres e proprietárias). Outra bem interessante foi a comparação entre Groovy e JRuby (TS-6050), linguagens de scripting que rodam na JVM. Aprendi duas coisas: 1) A combinação desse tipo de linguagem com Java pode ser útil em muitas situações (inclusive para elaboraçào de scripts de testes), implicando em aumento de produtividade. 2) É preciso estudar mais, pois elas (pricipalmente o Ruby) são bem diferentes do Java que estamos acostumados. Ainda perdi uma sessão com o criador do Spring, Rod Johnson, mas soube que foi muito boa!

Aliás, conversando com Bruno Ghisi (Java Champion, criador do projeto Marge e entusiasta de Java ME), em seu primeiro JavaOne, ouvi uma consideração perfeita: É melhor escolher as palestras considerando mais quem são os palestrantes (os Rock Stars são considerados os melhores pelo público) do que pelo tema, afinal todas as apresentações podem ser acessadas depois mesmo. Imediatamente concordei com ele: onde mais a gente vai poder estar ao vivo com a pessoa que criou o projeto/ferramenta/livro que você mais gosta?!? São oportunidades raras e tem várias personalidades ilustres em um JavaOne.

Em posts curtos certamente esqueci de citar temas, fatos e pessoas importantes. Tenho em mãos uma quantidade enorme de material (o JavaOne Today, por exemplo, jornal diário que é distribuído no evento) que me dará insumos para continuar postando durante algum tempo (mas sem o compromisso diário :-D). As fichas do JavaOne não caem todas de uma vez...

Bom, quero finalizar agradecendo a todos os que leram este blog, às várias pessoas com quem conversei durante o JavaOne, ao Serpro, ao JavaBahia, ao SertãoJUG e à família (que, a propósito, está aumentando em breve!), principal razão da minha existência. Me esforcei ao máximo paro representá-los à altura e chego ao Brasil com a sensação de dever cumprido! A Bahia está no mapa mundial do Java.


Valeu Daniel! Quem sabe próximo ano, novamente por aqui...

sexta-feira, 9 de maio de 2008

Tagged under: , ,

JavaOne 2008 - 3o Dia

O terceiro dia foi iniciado por uma General Session da Intel, que não tive condições de assitir. Ainda bem que fica tudo gravado e disponível, então os interessados podem conferir o que rolou em http://java.sun.com/javaone/sf/sessions/general.


Rogério Santana e Bruno Souza

Para mim o evento começou mesmo na sessão Free and Open-Source Software (FOSS): Use and Production by the Brazilian Government. Rogério Santana, do Ministério do Planejamento, Rogério Santana, dividiu com Bruno Souza uma apresentação sobre produção e uso do software livre no governo brasileiro, citando o portal do Software Público, o sistema de votação eletrônico, experiências de tele-centros, uso de SL na educação, enfim, um grande overview do panorama brasileiro, considerado referência mundial na questão do uso de SL. O IRPF Java, mais uma vez foi citado. Algumas perguntas interessantes. Após a palestra, conversei com o Spencer Gib, um desenvolvedor Java norte-americado muito simpático, da Igreja de Jesus Cristo dos Santos dos Últimos Dias. Há 12 anos ele morou no Brasil e estava aproveitando para desenferrujar o português. Coisas do JavaOne!


Eu e Spencer Gib

Bom, o pavilhão só fica aberto até a 5a-feira, por isso reservei a minha tarde para circular bastante, ver melhor as novidades, conhecer mais pessoas e, não posso negar, pegar uns brindes para levar para o Brasil e sortear/distribuir nos eventos do Java Bahia. Dois destaques:
- ZK - Ajax without JavaScript Framework, que permite criar aplicações RIA com muito pouca codificação e alta produtividade. Estive com autor do livro de mesmo título, Henri Chen, que fez uma breve apresentação da farramenta, que inclusive foi finalista de prêmios no Source Forge, sendo bem votada pela comunidade. Fiquei bastante curioso em saber mais. Se você já conhece, ou resolver estudar um pouco mais, gostaria muito de ver comentários aqui no blog. Web site www.zkoss.org. Experimente o Live Demo e veja que tem até um tutorial em português.
- O stand da AMD, que oferecia oxigêncio puro com vários aromas. Fiz uma montagem abaixo, para dar uma idéia da coisa. Que viagem...


Oxigênio aromatizado

Pra finalizar o dia, show do Smash Mouth no Yerba Buena Garden, depois fomos a mais duas festas "0800" (brasileiro tem um faro pra essas coisas...). Teve gente cantando, tocando violão, piano. Muita diversão!


Queria ver se no Brasil eu ia conseguir ficar tão perto.

No JavaOne, a visão e as experiências de cada um são muito particulares. Na página principal do evento tem diversas informações e links para fotos, vídeos e a central de blogs. Se você desejar ver outras perspectivas vou deixar aqui algumas sugestões de blog:
- Blog de Givanildo Nascimento, líder do SEJug e grande parceiro de viagem.
- Boletins do DFJUG, por Daniel deOliveira, a quem sou muito grato pela força que tem me dado, pois tenho aprendido muito. Em seu primeiro boletim do JavaOne foi muito gentil em citar meu blog e o de Givanildo.
- Blog de Rubem Badaró, lider do PT.JUG, o Grupo Português de Utilizadores de Java, com quem tive o prazer de conversar e dar boas rizadas.
- Blog de Antonio Gonçalves, que fala um português excelente (também, com esse nome!) e lidera o Paris JUG.


PT.JUG, ParisJUG, JavaBahia e SouJava representados. Que intercâmbio, não!?

quinta-feira, 8 de maio de 2008

Tagged under: , , ,

JavaOne 2008 - 2o dia

O segundo dia do JavaOne começou com uma General Session comandada pelo Vice-presidente Senior da Oracle, que assisti via web cast enquanto blogava. O tema principal foi mostrar sua plataforma de aplicações empresariais, como foco nas integração de diferentes meios de comunicação como instanting messaging e dispositivos móveis. Em seguida, as sessions sobre Swing Application Framework (TS 6605) e BeansBinding (TS 6657), JSRs importantes para o desenvolvimento Java para desktop, com um excelente suporte no NetBeans, o que facilita muito a vida do desenvolvedor.

Durante a tarde vale destacar o inspirado (e inspirador) Simon Phipps, falando o sobre os futuros desafios do open source e da tecnologia Java na TS 7064. Usando muitas fotografias, Simon contou um pouco da história da Sun no envolvimento com as comunidades de software livre. Não escapando de falar sobre licenciamento, ele ressaltou que a escolha da uma determinada licença não é apenas uma questão de direitos/deveres, mas está intimamente ligada a "que tipo de comunidade quero pertencer?". Isso justifica a decisão colocar o OpenJDK sobre a GPL, aproximando Java da filosofia da Free Software Foundation. Não é à toa que varias distribuições Linux estão incluindo o OpenJDK. Para a Sun, open source está relacionado a participação. Em sua fala, o Brasil foi citado algumas vezes com um dos países mais fortes quanto a isso. Phipps mostrou foto do nosso Ministro da Cultura, de um tele-centro no interior do país e do FISL. A Sun acredita fortemente num modelo de negócios baseado em serviços agregados, pois não crê mais na receita oriunda de venda de licença de software. Que sirva de exemplo!

Logo após, assisti a uma sessão "intimista" com James Gosling no Community Corner. Falando para cerca de 30 pessoas, Gosling contou estar satisfeito com a evolução da tecnologia, que aprecia a tendência crescente de rodar Java em vários tipos de dipositivos e que acha natural a existência de outras linguagens (como Groovy ou JavaFX) rodando sobre a JVM (ele mesmo certa vez estava meio entediado e criou um compilador Fortran para Java, "just for fun!"). Da platéia, várias perguntas. A mais curiosa para mim foi: "se voce fosse aprender uma nova linguagem hoje, qual seria?". Ele respondeu na "lata": "Essa foi facil. Scala, com certeza!". Como apenas ouvi falar, acho que vou precisar pesquisar um pouquinho para saber do que se trata e entender porque tanto interesse.


Session do James Gosling no ComunnityCorner

Num intervalo, estive com Peter Korn, arquiteto de acessibilidade da Sun. Korn fez uma breve demonstração de recursos maravilhosos que estão disponiveis no OpenSolaris para pessoas com algum tipo de deficiência. Uma delas (a idéia é colocar o video no YouTube) mostrou um software que permite a pessoa "digitar" palavras apenas com o movimento da cabeça numa velocidade incrível! So vendo para entender! Ele também falou sobre o Orca, um leitor de tela open source para o Gnome. Na página de acessibilidade da Sun tem mais detalhes. Foi um bom contato inicial para fazermos alguns testes com a próxima versão do programa do Imposto de Renda Pessoa Física.


Eu, Eduardo Lima, Peter Korn e Bruno Souza

Minha última palestra do dia foi o Java Champions BOF. Alguns dos campeões de Java estavam na mesa e fizeram questionamentos e provocações a Sun. Na platéia, da mesma forma. A Sun afirma fazer questão de ouvir feedback de pessoas tão influentes. Uma das críticas curiosas foi relacionada ao JavaFX, que está sendo muito falado nessa edição do JavaOne. Alguns champions estão preocupados com uma possível mudança de foco da Sun, que contra-argumenta: "Java é a base disso tudo, portanto continuamos firmes na evolução dessa tecnologia. Não podemos ignorar, no entanto, a existencia das outras linguagens de scripting". Conheça mais sobre os Java Champions no site java-champions.dev.java.net.

À noite estive num jantar com o time do NetBeans, algums outros executivos da Sun e poucos convidados. Além de uma boa comida italiana, tive uma conversa rica e produtiva com engenheiros da Boeing. Depois disso, a Sun Developer Network Party, uma festa com muito rock e brasileiros bem animados (Brasil e Holanda meio que disputam a categoria "Animação", então parece que estamos na vantagem), contagiando os demais. Na festa pude agracer pessoalmente a Rich Sands (Community Marketing Manager for Java SE) pelas citações ao IRPF (no FISL eu demonstrei o programa para ele), aproveitando para reinvidicar a internacionalização do JavaWebStart e JavaHelp para o português do Brasil.


Eu e Rich Sands

Bom, foi um dia especial, muito mais de conversas e networking do que de palestras. Aliás, todas as palestras do evento estarão (algumas já estão) disponíveis on-line, portanto você poderá ver tudo o lhe interessar. Até amanhã!


quarta-feira, 7 de maio de 2008

Tagged under: ,

JavaOne 2008 - 1o Dia: Java+You

Java+You: 13a edição, 15.000 participantes, 75 horas de evento. Depois do musical de abertura, James Gosling, que dispensa apresentações, e John Gage, Chefe de pesquisa e Vice-presidente do Escritório de Ciências da Sun, abrem o evento com esses impressionantes números e o tradicional "Don't be shy! (be like brazilians!)", estimulando a troca de informações e experiências. Logo cedo já tinha fila para entrar na esperada General Session (que você pode rever aqui), onde são mostradas as principais novidades. É o termômetro de como será todo o evento.


Início da General Session, após o musical

Primeiro foi mostrado o Sentilla (um dos vencedores do Duke's Award Choice), que roda Java com wireless num dipositivo muito pequeno, usado no JavaOne para medir a entrada e saída de pessoas nas salas do evento. Segundo Gosling (veja esse vídeo), a chamada pervasive computing torna as pessoas mais criativas e as coisas aos nosso redor mais "inteligentes". Foram exibidos gráficos interessantes que podem servir, por exemplo, para quantas pessoas estão saindo no meio de uma palestra. Um valor alto pode indicar insatisfação com o palestrante ou o tema.

Em seguida, Rich Green, Vice-presidente Executivo da Sun, fala de consumers drive innovation, ressaltando que as empresas estão definitivamente mudando seu foco para aplicações direcionadas ao consumidor, e menos na tecnologia em si. Logo após, a demo de uma Rich Internet Aplication de excelente qualidade gráfica. O Connected Life, feito em JavaFX com um plugin pro NetBeans, mixa informações do Twitter, Flickr e Facebook. O mesmo código roda, sem alteração alguma, no browser, no desktop (você pode arrastar da página e soltar na área de trabalho) e num celular. Legal também foi ver o AmazonKindle, livro eletrônico com wireless rodando Java. Mais dados: No mundo, 85% dos celulares, 91% dos PCs e 100% dos blu-ray discs rodam Java. Quer mais? O NetBeans a cada ano aumenta em 44% seus usuários ativos, O MySQL tem em média 65000 downloads/dia, existem dezenas de Linguagens de Scripting suportadas por Java e o kernel da versão 3.0 do Glassfish (que virá bastante modularizado) terá 98KB e starta em menos de 1 segundo. A plataforma Java está na base disso tudo, o que significa portabilidade. No final, uma surpresa, o rock star Neil Young esteve presente para falar sobre o archive project que tem por objetivo registrar sua carreira completa em um disco blu-ray com design bem interativo, tudo usando Java (saiba mais). Pena que ele não chegou a dar uma palhinha...


Neil Young no JavaOne

A partir daí começaram as Technical Sessions. Logo na primeira que vi, falando sobre as novidades do Java SE 6 udpate 10, tive a surpresa da citação ao IRPF Java como um caso de sucesso do uso de Java no Desktop (é claro que fui conversar com os apresentadores depois disso!). O JSE6u10 possibilitará um download mais rápido do JRE (pois agora existe um kernel básico com cerca de 4,5 MB), um serviço Java QuickStart (que vai pré-carregar a JVM em memória, deixando mais rápido o tempo de startup da JRE, melhorias de performance gráfica no Windows, o novo look-and-fell Nimbus, reformulação no mecanismo de Applets (sim, elas vão ressuscitar!) e JavaWebStart dentre outros. Vale a pena conferir o que vem por aí. Também vi a More Effective Java, com Joshua Bloch, autor do livro de mesmo nome, que falou sobre uso de Generics, Enumerations e Lazy Instatiation. Uma palestra bem técnica para quem que fazer bom uso dos recursos da linguagem.


Eu e Mr. John Gage

À tarde, ocorreu a Sun Technical General Session, comandada por Robert Brewing, que abordou com mais detalhes o Glassfish, destacando sua modularidade, facilidades de hot deploy, nova API JAX-RS para Restful WebServices, suporta a linguagens de scripting e componentes de terceiros. Mais exemplos aplicações JavaFX foram exibidos, uma delas com uma designer e um programador trabalhando juntos (alterando na hora interface e comportamento do programa), me fazendo perceber que muito investimento nessa plataforma vem por aí. Quanto ao JavaSE, o Danny Coward, Líder da Plataforma Java SE, falou sobre as novidades do Java 7 (veja a apresentação dele no jazoom). Num gráfico de estatisticas de download da JRE ele mostrou um pico em março, segundo ele por duas principais razões: a disponibilização do Java 6 update 5 e a disponibilização da aplicação gratuita para declaração de Imposto de Renda do governo brasileiro (confira o vídeo, no trecho entre os minutos 43 e 45). Pela segunda vez no dia, nesta para um público bem maior, reconhecimento da Sun à importância do que estamos fazendo no Brasil. Assim que terminou, fui apresentado a John Gage e Rich Green, quando tivemos alguns minutos de conversa sobre o IRPF e seus impressionantes 17,5 milhões de usuários da versão Java em 2008.

Bom, também circulei pelo pavilhão, estive no CommunityCorner interagindo com outros jugleaders, fui na recepção para os press analysts (onde consegui a foto com Simon Phipps, um dos mentores do open source na Sun), participei de um jantar exclusivo de executivos da Sun com o pessoal da imprensa, e conversei com gente de diversos lugares: Canadá, China, Italia, Franca, Venezuela, Chile, Estados Unidos, Filipinas, Holanda, Noruega. O JavaOne é realmente uma esperiência inesquecível. E isso foi só um breve resumo do primeiro dia! Quer ver mais algumas fotos? Clique aqui.


Givanildo, Simon e Eu. Brasil representado na recepção do press analyst.

terça-feira, 6 de maio de 2008

Tagged under: ,

CommunityOne, done!

Olá pessoal! O CommunityOne foi realmente muito bom. O mais difícil aqui é saber o que assitir ou com quem conversar, pois é tanta coisa ao mesmo tempo que a decisão é complicada. Farei aqui um resumo muito breve do que presenciei, pois ainda tenho um 3o turno pela frente, que é o jantar com os líderes mundiais de grupos de usuários Java.



Na General Session, duas coisas ficaram claras para mim. Na abertura, Ian Murdock confirma que a Sun está completamente convencida que o modelo de código aberto é o único caminho, o que significa que as empresas precisam estar em constante interação com as comunidades. Um painel com gente do MySQL, Linux, Apache, Red Hat, dentre outros, só fez reforçar a questão. A segunda é que o CommunityOne tinha o objetivo principal de promover o OpenSolaris. De versão e logo novas (confira no site), o sistema operacional livre da Sun estava em todo lugar. Na abertura do evento um bom tempo foi investido em mostras as novidades, como o Live CD e a tolerância a falha com RAID. Rich Green comandou literamente a quebra na marreta de um HD, e ainda destruiram outro com uma furadeira, sõ para mostrar que o s.o. continua funcionando perfeitamente. Momento interessante...

Nas sessões da tarde me chamaram a atenção as distribuições Linux que estão passando a incluir o OpenJDK nas suas instalações, com Ubuntu (que na 8.04 já distribui a JVM), Suse e Fedora (em 13 de maio, com o IcedTea, vem o Fedora 9). Será que agora finalmente esse "Apartheid" que existe entre as comunidades Java e os "puristas" de software livre vai acabar?!? Sobre isso, veja o post de James Gosling em seu blog.

Bom, é claro que não podia faltar o NetBeans, IDE que vem tendo altos investimentos da Sun e, consequentemente, melhorias significativas em pouco tempo. Dentro do CommunityOne ocorreu também o NetBeans Day, com várias apresentações durante o dia (muitas já disponíveis). Fiquei com vontade de saber mais sobre o dotFX, apresentado numa sessão conduzida por James Gosling, que roda aplicações Java e JavaFX a partir do browser usando a notação fx://. Veja exemplos do que pode ser feito com a tecnologia.


Eu, James Gosling e Givanildo, numa foto que já valeu o evento!

Mas para mim o ponto alto mesmo foi a sessão Java User Groups: Think Globally, Act Locally, que contou com a participação, na mesa e na platéia, de vários líderes de grupos de usuários Java espalhados pelo mundo. A sessão mostrou a estrutura de apoio que existe para os JUGs, como o java.net e o community.dev.java.net. Todos os jugleaders se apresentaram. Do Brasil, SouJava, DFJUG, RioJug e JavaBahia (o que nos deixa muito orgulhosos!). No final do dia, aliás, houve um encontro em um Irish Pub, onde dentre outros pude conhecer o Aaron Houston, coordenador do programa dos JUGs na Sun. No decorrer da semana espero que os contatos entre os líderes sejam proveitosos para todos, fortalecendo as comunidades, que são a razão da nossa existência.


Aaron Houston, coordenador dos JUGs na Sun

A nova logo do JavaBahia (cortesia do SertãoJUG), que ainda nem havia apresentado a vocês, está presente na camisa e fez sucesso. Tive boas conversas com muita gente interessante, do Brasil e de outros países, o que mostra que o JavaOne promete muito. Até o próximo post!

domingo, 4 de maio de 2008

Tagged under:

Twittering in San Francisco...

Já ouviu falar do Twitter? É uma espécie de microblogging, com mensagens de até 140 caracteres, que pode usar SMS, instanting messaging, web e outros. Resolvi aderir ao movimento e sempre que estiver on-line vou postar alguma coisa (em inglês). O endereço é twitter.com/serge_rehem. Aqui no blog do JavaBahia tentarei fazer um resumo do que for mais interessante, em pelo menos 1 post diário.

Cheguei ontem após mais de 24 horas no ar e uma conexão perdida em Miami. Era para estar em SF às 10:40, mas só cheguei às 18h. Hoje, já com energias recuperadas, pude dar umas volta e fazer umas compras. Devo ir no Moscone Center fazer logo meu registro, pois amanhã já começa o CommunityOne 2008 e não quero perder nada. Até!

sábado, 3 de maio de 2008

Tagged under: ,

Desenvolvendo uma aplicação web de forma fácil e prática – 6ª parte - final

Você, leitor, que acompanhou nossa “receita de bolo” para fazer uma aplicação web, deve ter percebido como é fácil e prático assim fazê-lo usando o JSF, o Hibernate e a IDE Netbeans 6. Neste post final, comentarei o que fizemos e deixamos de fazer aqui para que seu conhecimento não fique limitado apenas ao que mostrei no tutorial. É sempre importante aprendermos com exemplos e depois buscarmos o conhecimento do motivo de ter sido feito daquele jeito, e não de outro.

No primeiro post, vimos as linhas gerais da arquitetura da aplicação e o escopo de nosso exemplo. Nossa arquitetura divide-se em dois componentes principais: a camada de aplicação e a camada de interface web. Numa comparação com o tradicional modelo MVC (Model-View-Controller), nossa camada de aplicação abriga as camadas Model e Controller; a camada web abriga a camada View e a Controller.

Você pode se perguntar agora por que a camada Controller está nas duas camadas de nosso exemplo, e eu explico. No modelo MVC, Controller é a parte onde fica os objetos que desviam o fluxo de execução de uma tarefa para o local adequado. O managed bean Page que interage com o JSP faz isso, assim como o Facade do lado da camada Aplicação. Entendeu, agora? Para aprender mais sobre o modelo MVC, sugiro este artigo do site Macoratti.net e este da empresa Fragmental.

Com nossa arquitetura, será bastante fácil você, no futuro, criar uma interface desktop ou para dispositivos móveis, já que a camada de Aplicação não precisará ser refeita. Somente será necessário criar a camada Desktop, ou uma camada Celular.

No segundo post, nós criamos o banco de dados (relacional), configuramos as bibliotecas necessárias para nosso projeto, e extraímos as classes-entidade a partir do banco de dados, fazendo uma espécie de “engenharia reversa”. Também configuramos a unidade de persistência para que a aplicação possa estabelecer as conexões com o banco de dados e usar o Hibernate como provedor de persistência.

Do jeito que deixamos o arquivo persistence.xml, o Hibernate está conectando-se ao banco de dados da maneira mais “burra” que existe. Foi deixado assim propositadamente para não dificultar o aprendizado no tutorial. Isso só deve ser feito em tempo de desenvolvimento. Nossa unidade de persistência não está usando os recursos de cache e nem pool de conexões do provedor Hibernate. Para melhorarmos a performance, necessária para um ambiente de produção, é necessária uma intervenção manual no arquivo XML.

O Hibernate tem vários tipos de cache. O mais usado é o EHCache e, para configurá-lo, basta modificar a seguinte linha do arquivo persistence.xml:
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"></property>
para
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.EhCacheProvider"></property>

O Hibernate também tem várias opções de pool de conexões. A maneira mais simples de usarmos um pool é fazermos a configuração padrão da especificação JPA, ou seja, usarmos o pool do próprio servidor web (no caso, o Tomcat). Primeiro, abra o arquivo context.xml, que fica dentro do projeto JavaBahiaWeb e mude-o para ficar assim:

<context path="/javabahia">
<resource name="jdbc/JavaBahiaDB" auth="Container" type="javax.sql.DataSource" maxactive="10" maxidle="1" maxwait="10000" username="root" password="" driverclassname="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/javabahia">
</resource></context>


Depois, volte no arquivo persistence.xml, e insira a seguinte linha, logo abaixo da tag provider:
<non-jta-data-source>java:comp:env/jdbc/JavaBahiaDB</non-jta-data-source>

Na parte onde configuramos as propriedades (properties), substitua as linhas que possuem o nome da propriedade iniciando com 'hibernate.connection' pela linha abaixo(é importante substituir, e não acrescentar, com riscos de dar erro depois):
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"></property>

Agora, sua conexão com o banco de dados já poderá ser feita da melhor forma.

No terceiro post, criamos as classes de persistência dos objetos-entidade – chamados DAO – e a classe de acesso à nossa camada de Aplicação – a classe façade.

O façade é um padrão de projeto (design pattern) utilizado para simplificar o uso de um conjunto maior de código, encapsulando-o e isolando-o. O nosso JavaBahiaFacade.java é o único ponto de chamada de operações para a camada de Aplicação. A camada de Web somente usa essa classe para realizar as tarefas que foram requisitadas pelos usuários.

O DAO (Data Access Object) é um padrão JEE para estabelecer um “tradutor” entre o mundo orientado a objeto e o mundo relacional (da maioria dos bancos de dados). Isolando essa transformação em uma classe responsável por isto, ganhamos a flexibilidade de podermos mudar, a qualquer momento, a forma como persistimos os nossos objetos. Alguns autores chamam esse padrão de Data Mapper.

No quarto post, começamos a construir a camada Web, responsável por fazer a interface com o usuário da aplicação. Fizemos uso da API Visual Web do Netbeans (conhecido como projeto WoodStock); essa API traz componentes JSF que facilitam a vida do desenvolvedor web. Nesse post, construímos a tela de acesso à aplicação e vimos como usar os managed beans para controlar o fluxo do sistema.

No quinto post, fizemos a tela de manutenção do cadastro de uma das entidades de nosso contexto, usando o conceito CRUD. O CRUD (Create-Retrieve-Update-Delete) é um conceito que traduz as quatro operações básicas de um armazenamento de informação. Na maioria das entidades de um sistema, temos as operações de criação (create), recuperação (retrieve), atualização (update), e exclusão (delete).

Vimos nesse post, também, o uso do objeto provedor de dados (data provider). Esse objeto é importante para mantermos a ilusão de que a tabela acessa diretamente o banco de dados, sem que a divisão das camadas de nosso sistema seja quebrada. O componente Data Table, do projeto WoodStock, já traz prontas as funcionalidades de paginação e ordenação e, para isso, precisa desse objeto provedor de dados.

Algumas coisas foram esquecidas nesse exemplo, como a validação, por exemplo, para que não fosse prejudicado o entendimento do que foi abordado. Fica minha promessa de abordar esse tópico futuramente.

Eu espero que você tenha gostado deste tutorial e possa aumentar os seus conhecimentos buscando novas fontes de referência para os conceitos aqui apresentados. Estou disponibilizando o código final completo dos projetos JavaBahiaApp e JavaBahiaWeb. Originalmente estava usando o serviço 4Shared mas mudei após os arquivos terem sidos apagados.

Tenha um bom estudo e, desde já, agradeço pela sua atenção.