quinta-feira, 28 de janeiro de 2010

Spring Brasil User Group nasceu saudável em 2010

O Spring Brasil User Group nasceu forte e saudável junto com o ano novo e, com menos de um mês de vida, já conta com mais de 100 membros. Venha participar também desta comunidade! Se ainda não é um membro, clique aqui!.

Este grupo é uma rede social dedicada a fortalecer e fomentar a comunidade de usuários e desenvolvedores das tecnologias relacionadas ao Spring Framework.

Fórum, Blog, Notícias e Chat <=> Comunidade

O Spring Brasil User Group, carinhosamente apelidado de SBUG, está baseado na infraestrutura do site de redes sociais chamado Ning e, por isso, disponibiliza os mecanismos de fórum, blog, publicação de fotos e vídeos, divulgação de eventos e troca de mensagens entre os integrantes do grupo. Portanto, esta rede social permitirá a todos os participantes enviar dúvidas ou abrir discussões através do fórum, escrever notícias ou mini-tutoriais sobre Spring no blog e acompanhar as novidades e possíveis reuniões virtuais ou presenciais do grupo.

De maneira tímida alguns membros começaram a escrever no fórum e no blog do SBUG. Alguns outros membros escreveram comentários nas postagens. Mas as ferramentas da comunidade estão abertas para qualquer um contribuir. Se desejar, coloque lá as suas dúvidas sobre o framework, compartilhe a sua experiência em forma de tutoriais ou responda as dúvidas.

Casual Class #10 - Spring Platform

Através de um grande apoio e incentivo da Globalcode realizaremos uma reunião presencial do SBUG em formato de Casual Class no auditório da Globalcode em São Paulo. Neste Casual Class abordaremos a plataforma da SpringSource e não somente o produto mais famoso Spring Framework. Este evento será muito especial, reunindo diversos profissionais com experiência prática. Contaremos com a participação de membros do Spring Brasil User Group e instrutores da Globalcode que farão uma apresentação do framework, o lançamento oficial do grupo, uma apresentação sobre a integração do Spring com o cenário de Cloud Computing, uma apresentação da ferramenta de produtividade Spring Roo e as ferramentas de produtividade como SpringSource Tool Suite, tc Server e dm Server. As inscrições estão abertas através do site www.casualclass.com.br.

Marque na sua agenda: 26 fevereiro 2010 de 19:00 a 22:30 no auditório da Globalcode em São Paulo. Exporte agendamento para Outlook ou iCal (.ics).

Spring 2.5 e Cloud Foundry

Recentemente disponibilizei para download, através do SBUG, uma aplicação web simples e completa usando Spring Framework, JSF, Richfaces e JPA. Os detalhes técnicos desta aplicação foram apresentados num artigo no periódico Java Magazine com o titulo Criando uma aplicação web com Spring. Outros detalhes sobre esta aplicação e link para download podem ser encontrados clicando aqui. Esta aplicação será evoluída para aplicar os novos recursos do Spring Framework 3.0 e será apresentada no Casual Class agendado. Em breve, o código fonte desta nova versão estará disponível para download.

Por enquanto (até 05/fev), a aplicação web de exemplo baseado no Spring Framework 2.5 estará disponível para acesso online na plataforma de computação em nuvem da SpringSource e, chamada de SpringSource Cloud Foundry, acessível através de um endereço disponibilizado pela Amazon Web Services (Elastic Cloud Computer): Exemplo Globalcode Casual Class Spring 2.5.

Para outros detalhes leia o post no SBUG: Aplicação web com Spring 2.5 no Cloud Foundry.

JAVA + PIZZA + CERVEJA + VOCÊ = CASUAL CLASS

Venha fazer networking, trocar conhecimento, conhecer outros membros do grupo além de se divertir bastante no Casual Class!


Aguardamos a sua presença no Spring Brasil User Group! Venha participar, contribuir, fortalecer e fomentar a comunidade de usuários do Spring Framework no Brasil.

By Spock
http://blog.spock.com.br/
http://twitter.spock.com.br/
http://springbrasil.ning.com/

quarta-feira, 27 de janeiro de 2010

Sun, Oracle, JavaOne e mais algumas páginas desta longa história...

Desde abril de 2009 estamos acompanhando todo o processo de aquisição da Sun pela Oracle, que aconteceu muito perto da crise, e no ambiente de negativismo da crise. Parte da comunidade, principalmente os mais velhos tinham um relacionamento de admiração à Sun e e aos engenheiros da Sun. E tantas carreiras e mesmo famílias sendo sustentadas pelo capital gerado ao redor da tecnologia Java. É natural sentir um pouco de medo do impacto deste negócio milionário:

O que a Oracle vai fazer com o Java? Vai continuar OpenSource ? Vão mudar a política de distribuição da JVM ? E o JCP está seguro ? Haverá impacto negativo para o Java ? E para as outras ferramentas e tecnologias da Sun ? Com esta enorme mudança de poder dentro da comunidade Java como as outras empresas irão reagir ?

Foi realizado hoje um WebCast gratuito "Sun Oracle Strategy", com quatro horas de duração, bastante marketing, muitos adjetivos, resolvi resumir os fatos mais importantes para a nossa comunidade nos com uma seleção de tweets das pessoas que estavam ouvindo a conferência como eu, por isto, fiz uma seleção de tweets em ordem cronológica que fazer a cobertura do Web Cast de hoje.

Antes do inicio do WebCast:
@jasondlee: Shaved. Showered. Wearing my Sun shirt. I'm ready for whatever today brings. Please make it good news!
Primiras notícias:
@edburns:  Keep the Sun brands: Java, Solaris, Sparc.
Apresentação de Charles Philps, presidente da Oracle:
@fribeiro1: People like Philips bother me very freaking much they can talk for hours and say nothing.
@edburns:  here comes the open standards. Listen for JCP?
@arungupta: Charles Phillips: "Committed to investing in the Java community, we have a vested interest to see Java is successful"
@fribeiro1: Now it is when they bring customers who say there are terribly excited just so to get renewal discounts. 
@edburns: exposure to the defense industry. The first customer on stage is from atomic weapons
@edburns: Nice to see a slide that says: "We're Hiring".
@fribeiro1: Of course they are hiring, they must have lost a lot of engineers along the way. @edburns:  Charles Phillips gives a not-so-subtle shout out to the Obama jobs program.
@fribeiro1: Vai ter JavaOne no Brasil
@yarasenger And OracleWorld is in setember... RT @mr__m: Now it makes sense: JavaSE7 deadline'd been moved to Sep2010; JavaOne has been moved to Sep2010
@binkyscave @yarasenger JavaOne will happen the same time as Oracle One but will be in three hotels and not in the Moscone Center
@edburns: I'm very glad they are keeping the JavaOne brand. It would have been silly to scuttle that brand.
...tempo depois:
@fribeiro1: Loosing my faith that they will answer any of the questions developers have.
@renatobellia @joshbloch: Been listening to Oracle/Sun strategy webcast for the past two hours. I still haven't a clue as to the future of Java.

Mais notícias: 

@fribeiro1: Good thing they will merge HotSpot and JRockit.
@fribeiro1: GlassFish remains Java EE RI and for tactical applications, Weblogic remains strategic Enterprise Application Server
@fribeiro1: Glassfish survived, but only as the RI, Oracle will continue to push WebLogic.
@edermagalhaes:  "javafx to rich internet application"
@jasondlee OpenOffice gets continued support and development. Excellent news!
@rafanunes  Unifying JSE and JME! WOW!!
@arungupta: NetBeans continues as light-weight IDE for Java developers, focus on Java EE 6, ME, and Scripting #oraclesun
@fribeiro1: NetBeans survived as a "lightweight" IDE, whatever it means to Oracle.
@fribeiro1: Oh, I got it, "strategic" means "actual portfolio".
@fribeiro1: All open source SOA from Sun needs to be forked now.
Piadinha:
@rafanunes: Uma coisa é certa, agora vai todo mundo trabalhar sério, de terno e gravata.....hehehe
@binkyscave: @yarasenger I am refusing to wear a suit. Have at least six in my closet. They come out for funerals and weddings. Ok, maybe it's the former
@fribeiro1: MySQL and OpenOffice survived, god knows how.
Mais notícias:

@jasondlee Nice! The SunRay also gets some loving. Those little machines are FANTASTIC!
@fribeiro1:Oracle just increased my confidence that open source is the best model for our industry.
@jasondlee: VirtualBox will be part of the Oracle VM family.
Larry's presentation in the end:
@fribeiro1: Nothing really to say about Larry's words.
Ainda tem muita gente twittando, então, quem quiser saber mais busque #sunoracle.

Nem tudo foi definido neste WebCast de hoje, por isto separei outros vários links e fatos interessantes que foram publicados recentemente: 

  • Notícia da aprovação da União Europeia: 
    • A união europeia ainda não havia aprovado a aquisição por causa do possível monopólio em relação a banco de dados da Oracle na aquisição da Sun, que era dona do MySQL. 
    • Se a compra fosse vetada haveria pelo menos duas possibilidades: Vender o MySQL para outra empresa, ou cancelar a aquisição da Sun, o que poderia ser um problema enorme segundo a especulação da comunidade.
    • Página atualizada com principais links e documentos e a notícia da aprovação pela União Europeia: http://www.oracle.com/us/sun/index.htm
  • Blog do James Gosling: 
    • O James Gosling sempre gostou de ilustrações com o Duke, e com a finalização do projeto de aquisição não poderia ser diferente, ele se expressou com uma imagem, que sugere a morte da Sun. O que não deixa de ser uma realidade. Mas, vale reforçar, não é a morte do Java.
    • http://blogs.sun.com/jag/date/20100121
  • JavaOne 2010 :
    • Esta publicação foi surpreendente, quando fui no SunTechDays ouvi uma pessoa falar que haveria JavaOne, e logo depois outras pessoas negaram, e o principal argumento era, não foi aberto o processo de submissão, portanto não haverá JavaOne. Felizmente, parece que haverá JavaOne, em junho no Moscone Center. 
    • Como mostra o agendamento do Moscone Center em São Francisco : http://www.moscone.com/site/do/event/view?nav.type=0&nav.filter=1005&nav.base=0911&id=440
  • Carta que dizem ter sido enviada por Jonathan Swartz para todos os funcionários:
    • Muitas pessoas têm criticado muito o Jonathan Swarts e questionado a sua competência dentro da Sun, eu particularmente não me sinto capaz de julgá-lo, mas acredito que ele fez pelo menos uma coisa importante: transformou o Java em OpenSource.
    • Eu gostei muito do discurso que ele fez no JavaOne sobre a coragem de um líder, a coragem de realizar um novo projeto, investir em uma ideia que pode dar certo... ou pode dar errado. 
    • Confesso que também gostei da carta, que dizem ter sido enviada por ele para os funcionários: http://digitaldaily.allthingsd.com/20100121/sun-ceo-go-oracle-internal-memo/
  • Últimas palavras do Scott McNealy no seu blog
    Conforme já publiquei no post "Muitas vagas, otimismo e sensação de reaquecimento da economia", eu estou otimista com  a plataforma Java e Java EE 6 que chega madura e finalizada marcando uma história de sucesso da Sun, e valorizando ainda mais a história da Oracle.
    Muitas destas notícias chegaram até mim pelo Twitter (Twitter: porque? como? quem?) :
    Fernando Ribeiro, Arun Gupta, Jason Lee e Ed Burns.


    Seguindo a mesma linha dos "disclamers" no inicio do WebCast: Tudo o que está escrito aqui é apenas uma coleção de dados da internet, e não me responsabilizo pela informação, tem alguma coisa errada ? Me fala que eu corrigo. Foi apenas uma forma de tentar persistir esta informação que está jorrando no twitter, que por sua vez é "volátil".

    Desejo sucesso e comprometimento aos que ficam na Oracle, bem como para aqueles que não querem ficar.
    []s
    Yara
    http://twitter.com/yarasenger
    http://twitter.com/globalcode
    http://twitter.com/globalcode/globalcode-team

    A terceira camisa: os exemplos estão virando fashion


    Um olhar diferente sobre 3 formas de expressar o comportamento esperado de um sistema:
    requisitos, testes e exemplos. Temperadas por uma metáfora esportiva.


    Neste feriado, li uma matéria na revista Veja sobre as terceiras camisas dos clubes de futebol, que chamou minha atenção.
    Os clubes de futebol sempre tiveram uma camisa oficial. Sempre houve também a camisa reserva, tradicionalmente usada quando o time não tem mando de campo e o padrão da camisa é parecido com o do rival. Mas, de um tempo para cá, a estrela é uma terceira camisa alternativa, utilizada para comemorar algum fato relevante: o centenário do clube, a obtenção de um título, a contratação de um craque ou, no fim das contas, para alavancar as vendas dos itens oficiais do clube. Camisas corinthianas listradas com roxo, torcedores da Lusa com uma cruz metaleira, cruzeirenses em degradé: campeões de vendas nas lojas esportivas.
    Assim, algo ao qual que a maioria não dava muita importância (a existência de uma terceira camisa) virou um item fashion. De repente, descobriu-se que servia para alavancar a imagem e as finanças do clube, e passou a ser algo pensado, e se começou a descobrir o que funciona e o que não funciona: como deve ser o design, em que ocasiões o time deveria usar, quando lançar a nova camisa.
    Afinal, eu não sou tão interessado assim em futebol ou em marketing esportivo, e o assunto deste blog deveria ser desenvolvimento de software. Acontece que tenho o vício de procurar metáforas para poder usar em sala de aula, e percebi uma analogia com a evolução na forma em que especificamos funcionalidade em sistemas de informação. Requisitos, testes e exemplos são formas diferentes de descrever o comportamento dos sistemas, e podemos associá-los a cada modelo de camisa.
    Requisitos
    Os requisitos são a camisa oficial. A partir do trabalho de Ivar Jacobson, como formalizar esses requisitos mereceu muita discussão: falava-se em desenvolvimento baseado em casos de uso. A notação de diagramas de casos de uso, desde o início, fez parte das notações de modelagem da UML. Quando foi proposto o processo unificado, diagramas e documentos de caso de uso passaram a fazer parte do conjunto de artefatos sugeridos (ou melhor, prescritos). Discussões intermináveis sobre minúcias dessas notações passaram a fazer parte de quem se interessava por metodologia.
    Assim como os esquimôs têm muitos nomes para a neve, por conta da importância que esta tem para eles, passaram a ser utilizados muitos nomes para as atividades referentes a requisitos: levantamento, análise, elicitação, gerenciamento, especificação. Foram elaborados corpos de conhecimento e provas de certificação. Foram escritos livros inteiros e criados cargos específicos para lidar com requisitos: primeiro, o analista de requisitos e, depois, o analista de negócios. Cursos sobre a disciplina de requisitos são ministrados regularmente.
    No caso dos esquimôs, podemos imaginar motivos pelos quais seria importante identificar diferentes tipos de neve. Numa viagem de trenô pela tundra, identificar sutis diferenças pode ajudar a evitar uma avalanche ou o mergulho nas águas geladas do Ártico: é questão de vida ou morte.
    A sofisticação no tratamento dos requisitos poderia ser motivada pela percepção de perigos equivalentes ? Há três décadas, Barry Boehm alertava para o fato de que, no modelo vigente à época, errar nos requisitos tinha um impacto proporcionalmente muito maior, em termos de custo, nas etapas posteriores do ciclo de vida no software.
    A mensagem passou a ser: não erre, seja muito cuidadoso com os requisitos, porque depois as consequencias serão desastrosas. Muitos interpretaram isso como perseguir um santo graal de requisitos completos, formalizados, detalhados e assinados com sangue no início do projeto. Hoje, sabemos que a cura foi pior que a doença, mas isso é assunto para outro post.
    Testes
    A camisa reserva é representada pelos testes, já que estes também são uma alternativa para a descrição do comportamento. Até pouco tempo atrás, não se dava importância real ao teste de software. Por quê ? Na verdade, já fiz antes essa pergunta: testar seria uma arte perdida ? As pessoas sabiam que o funcionamento de um sistema precisaria ser verificado de maneira adequada, mas as pressões de curto prazo sempre faziam com que o esforço de testes fosse empurrado com a barriga.
    Na primeira década do século XXI, alguns fatores conspiraram para que o interesse em teste de software aumentasse. Um deles é a crescente penetração dos sistemas de informação no dia a dia das pessoas: os sistemas se tornam ao mesmo tempo mais críticos e mais complexos. O resultado das empresas depende cada vez mais do software que suporta suas operações, e o impacto direto dos defeitos no software passa a ser cobrado pelos seus usuários e percebido pelos tomadores de decisão.
    Outro fator relevante foram as metodologias ágeis de desenvolvimento, que acordaram muitos profissionais de TI para a necessidade de testes, e passaram a utilizar testes automatizados como uma forma de especificação do comportamento dos sistemas. Note-se que esta visão invade a praia dos requisitos, e que contraria uma premissa tradicional da disciplina de testes: distinção entre requisitos e testes. Na visão tradicional, os artefatos de requisitos são uma das fontes para criar artefatos de teste, e se discute como derivar estes a partir daqueles.
    Nesse processo, novas técnicas e ferramentas foram desenvolvidas, novas práticas e formas de gestão do esforço de testes surgiram. O papel dos profissionais de teste está sofrendo mudanças radicais e modelos estão sendo propostos para entender a disciplina de testes neste novo contexto.
    Assim como na disciplina de requisitos, existe todo um ecossistema em torno de testes: associações profissionais, cursos, programas de certificação, modelos, empresas dedicadas exclusivamente a testes e cargos específicos. Testes têm um status emergente na sociedade.
    Exemplos
    A terceira camisa são os exemplos. De fato, são o patinho feio, a forma menos estudada de descrever o comportamento de um sistema. No entanto, são a forma intuitiva de captura regras de negócio junto a um especialista de domínio: as pessoas conseguem raciocinar melhor a partir de exemplos concretos. Os modelos abstratos, desde um ponto de vista cognitivo, são inferidos a partir de conjuntos suficientemente abrangentes de casos concretos. Agora, começa a haver um interesse em formular melhor práticas relacionadas a exemplos.
    No entanto, muitas das propostas em metodologia de sistemas foram focadas em abstração. Apenas para citar um caso, uma das premissas dos documentos de casos de uso era a de serem uma especificação do comportamento do sistema, do ponto de vista do usuário: em muitas organizações, no entanto, eles foram sequestrados pelos técnicos e transformados em especificações formais em uma linguagem para iniciados, procurando abranger todos os caminhos alternativos, validações de domínio, exceções, regras de negócio e passos atrelados a uma certa implementação. Códigos como RN077, UC045 e A12 estão espalhados em um texto com dezenas (ou até centenas) de páginas.
    Será que, nesse caso, não se seguiu a trilha errada ? Um especialista de domínio teria condições de entender esse formato ? Para efeito de compreensão da funcionalidade, isso funciona melhor que um conjunto consistente de exemplos concretos ?
    Os exemplos começaram a ser estudados a partir do surgimento de ferramentas que usavam esse modelo de conjuntos de exemplos como forma de especificação de comportamento. A primeira destas ferramentas que adquiriu um uso amplo foi o FIT (framework for integration testing): os exemplos são expressos em formato de tabela, que é interpretada através de um adaptador (fixture), que aciona o sistema sendo desenvolvido usando como parâmetros os dados da tabela. Estes exemplos são chamados de testes de aceitação automatizados (talvez teste não seria a melhor forma de descrever: falo disso mais adiante). O FIT evoluiu para incorporar um front-end Wiki, chamado FitNesse, que torna o formato ainda mais próximo de um especialista de domínio.
    A ideia é que o próprio especialista do domínio, ou um analista de negócios, ou um analista de testes seja responsável por essa especificação em forma de exemplo. No mínimo, o exemplo deve estar em um formato que todos consigam entender, e que não fique restrito a um perfil técnico.
    Por quê prefiro chamar de exemplos e não de testes: a diferenciação é sutil. Se enfatizamos o aspecto do exemplo, não nos preocupamos tanto com classes de equivalência, cobertura e casos interessantes do ponto de vista de detecção de defeitos. Na qualidade de exemplo, o foco é na comunicação, no formato acessível. De fato, muito do que normalmente chamamos de testes no contexto de práticas ágeis poderia ser melhor descrito como exemplos.
    As técnicas de TDD (desenvolvimento guiado pelos testes) e, por extensão, ATDD (desenvolvimento guiado pelos testes de aceitação) talvez seriam melhor entendidas se trocarmos "testes" por "exemplos". Brian Marick, justamente, propõe trocar a sigla TDD por XDD (eXample driven development). O objetivo principal é guiar o desenvolvimento, e para tal o papel de detecção de defeitos não é seu principal objetivo: o nome "testes" parece sugerir o contrário.
    O BDD (desenvolvimento guiado pelo comportamento) utiliza este modelo de especificação baseada em exemplos, adicionando alguns formalismos e ferramentas. Mas o seu uso é suficientemente interessante para garantir livros inteiros apenas tratando do assunto. Fico devendo um post específico, podem cobrar.
    A utilização de exemplos em geral, ATDD e BDD, têm provocado bastante barulho nos últimos tempos.
    Exemplos agora estão virando fashion.
    Eu ia discutir também a convergência entre esses três aspectos da especificação de comportamento em artefatos comuns, e seu efeito sobre a comunicação entre os envolvidos, mas essa elaboração fica para a próxima entrega. Até.

    quinta-feira, 21 de janeiro de 2010

    Construindo um império com R$40,00

    Algo que nós da YaW temos nos dedicado com bastante afinco nos últimos meses é o Google AppEngine(GAE).

    Para quem ainda não conhece, o GAE é um ambiente de runtime
    disponibilizado pelo Google onde você hospeda a sua aplicação sem
    precisar se preocupar com manutenção de servidores. E ainda ganha com
    tudo isso a escalabilidade proporcionada pelos servidores do próprio
    Google.

    Hoje ele dá suporte a duas linguagens: Python e Java(e a grande maioria
    dos seus frameworks de mercado como Struts 1 e Struts 2, JSF 1 e JSF 2,
    JPA com algumas limitações, EhCache, GWT, SpringMVC, etc. Lista
    completa aqui).

    Um detalhe importante sobre o GAE é que de início ele é completamente gratuito, e possui uma quota(beeeem generosa) de utilização, a partir do momento que você ultrapassar esta quota você tem de pagar pelo que ultrapassou. Detalhes sobre as quotas aqui.

    O próprio site da YaW está hospedado no GAE.

    E o que isso tudo tem ha ver com os R$40,00 e o império que você quer criar? Absolutamente tudo.

    Imagino que como a grande maioria dos desenvolvedores que conheço, você tem seu trabalho diário, alguns projetos pessoais, e também está aguardando surgir alguma idéia genial(o próximo Facebook, Youtube, Twitter) que vai surpreender o mundo e te deixar mais rico que o Bill Gates.
    Muito bem, o GAE pode te dar uma mãozinha nisso.

    Hoje o registro de um domínio custa R$30,00 anuais no http://registro.br, porém um detalhe é que o GAE não tem suporte a 'naked domains', ou seja, você não pode registrar um domínio no registro.br e colocar os servidores do Google como servidores DNS do seu domínio.
    Mas quanto a isso sem problemas, você pode utilizar um serviço de DNS gratuito como o Zone Edit e tantos outros como servidores DNS e direcioná-los para a sua aplicação no GAE.

    Pronto. Você investiu R$30,00 e algumas horas desenvolvendo a sua idéia genial, hospedou gratuitamente, e está pronto para colher os louros da fama e riqueza.

    Conhecem o BuddyPoke do Orkut? Pois é, ele foi assim. Um desenvolvedor, um notebook, hospedado no GAE, e hoje possui mais de 42 milhões de usuários e já foram enviados mais de 1 bilhão de pokes.

    Está esperando o que? O conhecimento quem é desenvolvedor já tem, e quem não tiver basta chamar um desenvolvedor e compartilhar a idéia. As ferramentas necessárias(máquina de desenvolvimento e servidores) você também já têm. Agora é só botar a cabeça pra funcionar, se mexer, deixar de lado o medo e a preguiça, e compartilhar com o mundo suas idéias.

    Este post não é só para fazer propaganda gratuita do GAE, nas próximas semanas vou postar aqui no blog tutoriais de como se utilizar alguns frameworks Java no GAE, como Struts 2 e JSF 2(que apresentei no TDC 2009) e JPA. E também enquanto isso teremos tempo de vocês conhecerem o ambiente, fazerem alguns testes com o plugin do Eclipse para o GAE e publicarem suas próprias aplicações.

    Obs: Os R$10,00 que sobraram é para me pagarem de cerveja quando ficarem milionários.

    http://twitter.com/rafanunes

    quarta-feira, 20 de janeiro de 2010

    Novas Tecnologias, Velhos Problemas

    Estou envolvido em projetos que demandam diversas integrações com webservices de parceiros comerciais. Ao adotar o stack JAX-WS 2.1 do NetBeans e do Glassfish nossas aplicações facilmente se beneficiam de representações Java das operações e estruturas de dados com as quais temos que interagir. O JAX-WS também tem permitido  velocidade para expor funcionalidades implementadas em Java, para aplicações internas desenvolvidas em outras plataformas.

    Toda essa facilidade de integração pode nos animar a princípio, de modo a utilizarmos intensamente esses benefícios. As armadilhas residem em :
     - ignorar o acoplamento com modelos de dados externos ao consumir webservices
     - permitir a transitividade do modelo de dados interno ao prover webservices

    O fato é que um contrato de webservice estabelecido hoje pode se tornar obsoleto em alguns meses. Naturalmente existem patterns de arquiteturas orientadas a serviço, adotados do lado do provedor dos webservices, que minimizam o impacto de tais evoluções. Uma prática interessante que tenho observado é o versionamento de serviços. Quando uma nova versão de serviço é disponibilizada a versão antiga continua operante, durante mais uma ou duas evoluções.

    Entretanto, o surgimento de uma nova versão de um serviço ocorre por novas necessidades de negócio, e o consumidor do webservice se verá obrigado a migrar mais cedo ou mais tarde. Sob este ponto de vista a manutenção de versões antigas simplesmente permite adiar o impacto da evolução.

    Se a aplicação consumidora estabeleceu dependência indireta com as representações Java geradas por ferramentas como o JAX-WS, esta ficará protegida do impacto de evolução dos serviços consumidos. A idéia não é novidade, e é bem discutida em uma publicação de Jens Coldewey, particularmente no tópico Subsystem-Façade (uma releitura do pattern GoF Façade).

    Considerando o serviço a ser consumido e sua estrutura de dados como um subsistema, procuramos evitar a utilização direta das classes geradas pelo JAX-WS. Além de utilizar um componente Façade para converter as estruturas de dados do serviço consumido para as estruturas internas da aplicação consumidora, encontramos espaço para outra prática de integração, que eu tenho nomeada como 'Wrapper', e que devo comentar num próximo post.

    O mesmo princípio de separação de subsistema é aplicado quando assumimos papel de provedor de serviços via JAX-WS. Considerando que nosso modelo de dados interno pode evoluir, este não é utilizado diretamente na interface dos serviços oferecidos. Combatemos a transitividade de nosso modelo de dados interno, seguindo o design pattern Value Object: criamos um modelo de dados customizado, que pretende permanecer estável para os consumidores dos serviços, ao longo de mudanças internas.

    Considero que essas práticas podem ser adotas ao criar webservices em Java utilizando outros mecanismos como o JAX-RS para REST, ou ainda com os precursores JAX-RPC e Apache Axis.

    Para expor webservices sem transitividade há também a abordagem Contact-First, utilizada pelo Spring Web Services. Tal abordagem também pode ser utilizada em JAX-WS. Neste caso sempre definimos o schema de dados e operações expostas em primeiro lugar, colocando a geração dos artefatos Java como uma atividade secundária.

    A versão original desta discussão pode ser lida em meu blog.

    terça-feira, 19 de janeiro de 2010

    Postar no Twitter com programa escrito em Java

    Depois de ter usado um pouco a API do Google, resolvemos usar também a do Twitter.

    Estava procurando na internet se alguém já tinha feito integração com uma aplicação Java e recebi 3 resultados de bibliotecas open source escritas em Java usando a API do Twitter:
    Escolhi a Twitter4J por ser a mais usada e atualizada, além de ter muito mais resultados nas buscas, inclusive com exemplos e tutoriais.
    No começo exitei um pouco e deixei para testar quando tivesse um tempo livre porque normalmente a gente
    não consegue colocar alguma coisa para funcionar usando biblioteca de terceiros em pouco tempo.
    Mas fiquei admirada com a facilidade de uso e a rapidez com que eu consegui postar um tweet.
    Foi coisa de minutos, o download do arquivo zip demorou mais do que escrever o código e rodar no Eclipse!
    Fiz download de um pacote de menos de 2 MB que tem os fontes, exemplos e o arquivo jar (twitter4j-2.0.10.jar), que já tem incluído todas as dependências que ele precisa para executar e que deve ser colocado no classpath da sua aplicação. Depois escrevi 2 linhas de código e ao executar já tinha meu tweet enviado. É muito simples, veja a minha classe de teste:

    import twitter4j.*;
    
    public class TwitterTeste {
    
      public static void main(String[] args) throws TwitterException {
    
          Twitter twitter = new Twitter("username", "password");
          Status status = twitter.updateStatus("Escreva sua mensagem aqui");
    
      }
    
    }
    

    Nesta biblioteca, encontramos classes muito fáceis de usar, onde foram encapsulados os acessos à API do Twitter. Além de atualizar o status do usuário, ou seja, criar um post no Twitter, é possível fazer leitura da "timeline" do usuário e dos seus seguidores, listar e enviar mensagens diretas, e muito mais.

    Aplicação prática
    Claro que todo desenvolvedor gosta de conhecer e testar novas APIs, principalmente relacionado a uma coisa tão na moda como o Twitter. Mas isso tudo não era só um teste de curiosidade, nosso objetivo de negócio era simplificar o post de minicursos gratuitos do usuário Open4Education e por isso resolvemos fazer uma integração com o Global Education System.

    E você está usando a API do Twitter para alguma coisa?
    Comente, compartilhe, "twite" também!

    []s

    Ana Abrantes
    http://twitter.com/anabrant

    YaW, Globalcode, e outros planos de dominação mundial...

    Como devem ter acompanhado no boletim da Globalcode desde o mês passado, foi firmada uma nova parceria agora no ABC Paulista.

    Esta parceria é fruto de um projeto meu(Rafael Nunes) e também de um outro instrutor da Globalcode, o Eder Magalhães. Queremos levar a experiência e aprendizado que tivemos nos últimos quase 4 anos como instrutores da Globalcode para a região do ABC Paulista. Amadurecemos a idéia nos últimos 2 anos, e julgamos que agora seria o momento oportuno para investirmos nesta empreitada.

    Ja iniciamos nossas atividades na YaW na segunda semana de janeiro com 2 minicursos gratuitos(que você pode conferir algumas fotos aqui e aqui) que para nossa surpresa tivemos quase que lotado nosso auditório, sinal de que o pessoal do ABC está tão otimista quanto a gente para este ano. E ontem(18/01) também já iniciamos a nossa primeira turma de Intensivo da Academia do Java com a sala praticamente cheia.

    Podem esperar que temos ainda diversos outros projetos e novidades que queremos compartilhar com todos vocês. E quem quiser mais informações sobre a gente, pode nos seguir no twitter ou mesmo entrar em contato diretamente pela a YaW!

    Um forte abraço, e um ótimo 2010 para todos nós!

    http://twitter.com/youandwe
    http://twitter.com/rafanunes
    http://twitter.com/edermag

    sábado, 16 de janeiro de 2010

    Muitas vagas, otimismo e sensação de reaquecimento da economia

    2010 começou cedo, contrariando a expectativa que muitos Brasileiros tem de "O ano começa mesmo depois do carnaval". 

    Embora o inicio do ano tenha sido "repleto" de catástrofes naturais e muita chuva aqui no Brasil, no campo profissional o otimismo está evidente, as pessoas estão cheias de energia e boas perspectivas em relação as oportunidades de JavaEE 6 e muitas outras tecnologias.

    Mas, parece que não são somente as pessoas que estão otimistas, os anúncios de vagas voltaram a crescer, empresas anunciando boas vagas, ou grandes quantidades de vagas, refletindo o que podemos chamar de "Otimismo corporativo". Veja algumas empresas que anunciaram vagas:
    Se em 2009, um ano de crise fizemos tudo isto, imagine em 2010.
    E você está preparado ?  Está otimista ?

    []s
    Yara
    http://twitter.com/yarasenger
    http://twitter.com/globalcode

    terça-feira, 12 de janeiro de 2010

    Novos treinamentos de Java EE 6

    No dia 10 de Dezembro saiu a versão 6 do Java EE e na semana seguinte a Globalcode lançou um treinamento focado nas últimas versões das principais tecnologias: JSF, Servlets, EJB e JPA. Muitos alunos tem me perguntado sobre esses treinamentos, então resolvi escrever dando um pouco mais de detalhes.

    Os novos treinamentos consistem em uma série de 4 hands-on (para que não conhece, hands-on são cursos rápidos e práticos de 8 horas) voltados aos principais componentes do Java EE 6:
    Os novos treinamentos tem como público alvo aquelas pessoas que já conhecem as respectivas tecnologias nas versões do Java EE 5 e querem se atualizar estudando somente as novidades.
    Você, ex-aluno da Globalcode, que andava reclamando que não tinha mais nenhum curso a assistir pois já tinha feito todos, tem 4 novas opções agora!

    Para facilitar a vida de quem está interessado em todos os 4 cursos, criamos o Core Java EE 6, que nada mais é do que um "guarda-chuva" englobando todos estes hands-on. Assim, você faz uma única matrícula e ainda se beneficia de um desconto em relação a assistir todos os cursos separadamente.

    E os alunos que estão começando agora? Se os hands-on focam somente nas novidades como é que fica quem já quer começar com a versão mais nova? Basta fazer os cursos combinados, de acordo com a tecnologia de interesse. Veja onde você se encaixa:

    Não conheço os componentes Web Java e quero aprendê-los já na versão mais atual :
    AW2-Desenvolvimento Web com Java EE + Hands on Servlet 3.0

    Não conheço EJBs e quero aprendê-los já na versão mais atual:
    Core EJB + Hands on EJB 3.1

    Conheço os componentes Web mas não conheço JSF e quero aprender já na versão mais atual:
    Core Web + Hands on JSF 2.0

    Não conheço JPA e quero aprender já na versão mais atual:
    AE4-Persistência de dados com JPA + Hands on JPA 2.0

    Resumindo, os novos treinamentos foram elaborados de forma a atender diversos públicos-alvo: os alunos que já conhecem as versões anteriores e querem focar somente nas novas versões (através dos hands-on) e os alunos que querem começar agora já com as novas versões (cursos combinados).

    Espero que eu tenha ajudado a esclarecer as principais dúvidas sobre a estrutura e objetivos dos novos cursos. Detalhes sobre o conteúdo podem ser vistos clicando nos nomes dos cursos.

    quarta-feira, 6 de janeiro de 2010

    Twitter : Porque, Como, Quem ?

    O Twitter é sem dúvida nenhuma um fenômeno da internet, mas também uma daquelas coisas "simples" que qualquer um de nós poderia ter pensado, alguns poderiam ter "programado" e outros poucos teriam finalizado, colocado em produção, etc... Como disse o Jonathan Schwartz sun no último JavaOne, é preciso ter coragem de colocar as idéias em prática, investir e arriscar até o fim.

    IDG Now! Twitter quebra barreira dos entusiastas e atinge uso em massa em 2009

    É interessante notar que seguindo pessoas interessantes recebemos "pequenos pacotes de 140 caracteres de informação útil" como lançamentos de tecnologias, notícias sobre eventos, matérias interessantes de revistas, curiosidades, e uma pitada da vida pessoal de algumas pessoas.

    Da perspectiva de quem twita acho que pode ser complexo resumir a informação em 140 caracteres, tirar os adjetivos e condensar a informação, mas é um exercício interessante para as pessoas muito "verbosas" (risos).

    O Twitter ganha outra vida se usarmos uma interface com o usuário melhor do que a interface web... Usando um cliente Twitter para desktop ao invés de termos que checar o que está acontecendo na página Web toda hora, a informação é automaticamente atualizada e você pode configurar para aparecem discretamente no canto superior da tela assim que forem postadas.

    Minha recomendação é usar o Tweet Deck e adicionar as seguintes colunas que exibem informações úteis:
    • All friends: nesta coluna aparecem todas as mensagens twitadas pelas pessoas que você está seguindo
    • Direct Messages: Mensagens diretas que não estão aparecem para todos visualizarem.  Você pode enviar mensagens para pessoas que você está seguindo, e somente pessoas que estão seguindo você podem enviar mensagens diretas para você.
    • Mentions: Mensagens que contém @seunome, indicando que era uma mensagem para você ou sobre você.
    • Search: Procure termos que te interessam e fique antenado sobre o que estão falando sobre aquele assunto, como por exemplo #javafx
    Outro forma interessante de ver as mensagens é adicionando a coluna Nearby, que mostra tudo o que está sendo twittado perto de você usando a sua localização. (esta funcionalidade eu testei no celular, que tem GPS, não sei se está disponível para todos), mas testando na praia percebi quanto besteira está sendo falada. Interessante, curioso. Talvez seja útil para trânsito, tragédias... Não descobri a utilidade além da curiosidade.

    Resumo: quem recebe qual mensagem?
    Quem recebe / lê as mensagens que você "Twita" ?
    - Pessoas que estão te seguindo
    - Pessoas que buscam trends / tópicos que você usou, por exemplo se você adicionou a coluna Search com "javafx" você vai ver as mensagens de pessoas que postaram conteúdo com este tópico. (Com exceção de contas de twitter fechadas).

    Que mensagens você recebe ?
    - Todas aquelas postadas por pessoas que você está seguindo
    - Todas aquelas que mencionarem seu @seunome
    - Mensagens enviadas diretamente para você (particulares)
    - Mensagens que utilizam os marcadores que você configurou na coluna de busca

    Globalcode no Twitter

    Open4Education: Notícias sobre eventos, minicursos gratuitos, e informações interessantes
    Globalcode: Notícias sobre a Globalcode, promoções, e muita tecnologia
    OpenTDC: Notícias sobre o Open The Developers Conference
    Instrutores:Lista com todos os instrutores da Globalcode
    Parceiros: V.Office, YAW

    Uma seleção de artigos e links sobre Twitter:
    http://www.webanalyticsworld.net/2009/02/ultimate-guide-to-twitter-marketing.html

    Não sou expert sobre Twitter, mas resolvi compartilhar minha visão. Acho que vale a pena testar o Twitter por um tempo, seguir algumas pessoas interessantes e porque não "repassar as mensagens mais interessantes"?

    []s
    Yara

    Academia Java 2010

    A tecnologia Java está em expansão constante e a prova disso foi o recente lançamento da plataforma Java EE 6, que ocorreu dia 10/12/2009, e o futuro lançamento da plataforma Java SE 7, previsto para este ano. Mas apesar da tecnologia evoluir de maneira muito rápida, a absorção do mercado acaba sendo bem mais lenta.

    Buscando um limite entre o realismo do mercado e a ousadia do open source, durante alguns anos, a Globalcode optou por manter a exclusividade dos recursos da plataforma Java SE 5 num módulo separado dentro da Academia Java. Assim, podíamos formar profissionais preparados para o que o mercado precisava: o profissional do Java SE 1.4 e do Java SE 5.

    Agora que o mercado amadureceu, é hora de mudar. A maioria das empresas já está usando o Java SE 6 e quem não está, não demora a migrar. Por isso, atualizamos o conteúdo da Academia Java para esta versão. Os módulos de sintaxe (AJ1), orientação a objetos (AJ2) e APIs (AJ3 e AJ4) absorveram todo o conteúdo do módulo de Java 5 (antigo AJ6) e também os recursos adicionados na versão do Java SE 6. O módulo de revisão para certificação SCJP (CX-310-065) (antigo AJ7), foi atualizado para o Java SE 6 e, seguindo a tendência de educação via Internet, foi transformado em uma série de videoaulas que o aluno da Academia Java pode assistir sem sair de casa e discutir com seus colegas no fórum que a Globalcode disponibilizará em breve.

    Todas estas mudanças têm apenas um objetivo: formar o melhor e mais atualizado profissional Java do mercado.

    Mais detalhes sobre as mudanças na Academia Java 2010 você pode ver na notícia Academia Java 2010 ou na página do curso juntamente com as próximas turmas.

    terça-feira, 5 de janeiro de 2010

    Retrospectiva Globalcode 2009

    Estavamos organizando a confraternização de final de ano da Globalcode e paralelamente fazendo retrospectiva de 2009 e o planejamento para 2010... e resolvi fazer um vídeo com alguns momentos marcantes do ano.

    Queria colocar uma música do Rei Roberto Carlos, mas tive que escolher uma música MPB - Música para Baixar, (Creative Commons), e por isto recorri ao portal Jamendo.
    A seleção é muito difícil porque são muitas músicas e tags, e acabei escolhendo uma música "natalina" chamada Beton Christmas, da banda DOC PILOT. (Thank you)



    O ano de 2009 foi um ano crítico pela crise financeira mundial que atingiu o Brasil, e mais especificamente o nosso setor com menos força, mas com certeza complicou o planejamento e deixou as decisões mais críticas. A resposta da Globalcode foi muita concentração e uma produção intensa de novos cursos, novos minicursos, 10 eventos, 2 novos blogs com bom conteúdo.

    Fechamos o ano com mais de 20.000 page views no blog Globalcoders (ago-dez) e quase 500.000 page views no site da Globalcode. Gostaria de agradecer imensamente aos autores, seguidores, comentadores e leitores, e toda a equipe.

    Por curiosidade segue a lista dos 10 posts mais acessados no Globalcoders (desconsiderando a home):
    1. Facelets uma forma mais ágil para construção de telas – Parte I - Eder Magalhães
    2. D.B.C.D. - Desenvolvimento baseado na "Caverna do Dragão" - Vinicius Senger
    3. Facelets uma forma mais ágil para construção de telas – Parte 2 - Eder Magalhães
    4. Sun Tech Days 2009 - Yara Senger
    5. SCJP 6 : curiosidades e dicas  - Rodrigo Perenha
    6. Arduino + SunSpot + Controle Remoto - Vinicius Senger 
    7. Spring Framework - O que é afinal de contas e para onde vai? - Ricardo Jun
    8. JSF 2.0 e ScrumToys - Alberto Lemos (dr. Spock) 
    9. Tendências: NoSQL (Benedicto Franco Junior)
    10. Devo Fazer um curso ou ler um livro ? Julio Viegas

    Que 2010 seja um ano ainda melhor, com mais resultados onde nossos melhores sonhos e projetos sejam realizados.