sábado, 30 de janeiro de 2010

Algumas sugestões de podcast

Alguns twitters atrás o brother @rafanunes pediu algumas sugestões de podcast. Rapidamente eu enviei através do twitter algumas sugestões de podcast que acompanho. Sabiamente, por estar antenada e sempre ponderando em como tirar o melhor proveito do twitter, a @yarasenger me alertou sobre a volatilidade do twitter e recomendou-me documentar as sugestões num post no blog. Ela citou que as mensagens no twitter podem se perder rapidamente dentro dos vários posts que uma pessoa recebe quando acompanha várias outras pessoas ou quando acessa com pouca freqüência o twitter. Então, aqui estão as sugestões que indiquei para o brother:

  • twit.tv - Leo Laporte and friends: Este cara tem vários podcasts com notícias e comentários sobre segurança e tecnologia. Muito bom para desenvolver o ouvido para o inglês. As várias discussões usam o inglês na velocidade normal. Além de ajudar a se manter atualizado, nos ajuda a ter outros pontos de vista sobre a tecnologia com uma visão crítica.

  • Buzz Out Loud: Este podcast segue a linha do Leo Laporte. Tenho acompanhado este podcast a mais de 4 anos. Os primeiros episódios tinham um inglês numa velocidade moderada, agora são 3 pessoas discutindo tecnologia e as últimas novidades numa velocidade impressionante. Uma pessoa sempre interrompendo outra e comentando as notícias recentes. Eles publicam um episódio novo quase que diariamente. Considero um nível avançado. Muito bom! Já estão com mais de 1000 episódios gravados. Agora estão disponibilizando videocasts gravados com o vídeo gravado durante a realização dos episódios.

  • Java Posse: São caras da Microsoft, Java e google falando de tudo sobre estas plataformas. Cada um tentando puxar a sardinha pro seu lado. Muito legal ...

  • BBC podcasts: São podcasts dos mais variados assuntos, que vão desde tecnologia até música, atualidades e política internacional.

  • World Nerds: Discutem sobre a origem das palavras em inglês e o uso em diversos contextos. Além das diferenças entre o inglês britânico e americano (não apenas pronuncia, mas significados principalmente). Contudo, este podcast está um pouco parado.

  • ELSPOD - English as a Second Language Podcast: Muito bom para desenvolver o ouvido pro inglês. Numa velocidade menor, assuntos sobre atualidades e cultura norte america são apresentados neste podcast. Por curiosidade, o narrador deste podcast foi o ator na serie Star War que interpretou o Chewbaca (bicho peludo que acompanhava o Han Solo - Harrison Ford).

  • Maestro Billy: Episódios semanais com uma compilação de várias músicas. Muito bom para saber o que anda rolando nas rádios e pistas.

  • VOANews Learning English: Muito bom para desenvolver o ouvido para o inglês. São narrações de textos, com direito a transcrição no site, de atualidades, história america, curiosidades, política, etc. Sempre num inglês claro, sem gírias, 1/3 da velocidade normal dos diálogos. Mas também tem uma rádio online, em velocidade normal de conversação, parecida com a CBN.

Acompanho todos estes podcasts através de configuração no Google Reader. Dá para rodar o áudio sem acessar o site de cada podcast, além de saber quando algum episódio novo está disponível.

Caso tenha outras sugestões para complementar o portifólio apresentado, não deixe de escrever nos comentários. Seria muito bom estar atualizado com sugestões.

[]'s
Spock

segunda-feira, 4 de janeiro de 2010

EJB 3: Uma evolução sob os conceitos do Hibernate e Spring

Definitivamente o modelo de componentização definido no Java EE 5 e 6 evoluiu e melhorou muito. Mas, sem dúvida muita dessa evolução se deve às pressões do Hibernate e Spring Framework. Estes dois últimos frameworks nasceram baseados no conceito de POJO, que nada mais é do que a concepção de um modelo de componentização baseado em classes Java sem as regras impostas pelo EJB (curioso, sem o EJB não existiria o Hibernate ou o Spring).

O Hibernate nasceu da idéia de promover um modelo de persistência mais simples que o proposto pelos EJBs do tipo Entity Beans definido na especificação EJB 2.x. Este foi o primeiro tipo de EJB a sofrer com a evasão de desenvolvedores com o surgimento deste framework e a conscientização sobre os problemas nos Entity Beans. A partir de um modelo baseado em JavaBeans e o uso do JDBC, o Hibernate usa a Reflection API para gerar os SQLs necessários para persistir o estado de beans em diversos banco de dados relacionais, além de definir o conceito de dialeto para resolver as diferenças de sintaxe do SQL usado entre as diferentes implementações de banco de dados. Ao resolver efetivamente a persistência dos objetos em banco de dados relacional, a morte dos entity beans estava decretada. Não foi atoa que no Java EE 5, numa tentativa de resgatar um padrão efetivo entre os desenvolvedores, surgiu o JPA usando os mesmos conceitos do Hibernate e promovendo uma API padrão com base em vários dos seus conceitos. A morte oficial dos entity beans no EJB!

Já o Spring Framework nasceu para combater os problemas resultantes das idéias usadas nas definições de outro tipo fundamental de componente do modelo proposto pelos EJBs: os Session Beans. Usando a mesma proposta do Hibernate, o Spring Framework adotou o JavaBean como modelo de componentização aliado aos serviços enterprise com o auxílio da programação orientada a aspectos (AOP). Assim, o Spring Framework decretou a morte dos EJBs do tipo Session Beans.

O Java EE 5, apesar de manter compatibilidade com as versões anteriores, aplica os mesmos conceitos usados pelo Hibernate e Spring Framework (JavaBeans e injeção de dependências, por exemplo), numa tentativa de evitar o êxodo de desenvolvedores da padronização. Dando o braço a torcer, o EJB 3 aplica um modelo baseado em POJOs (que ironia!) até eliminar a obrigatoriedade das interfaces home, remota e local (favorecendo uma modelagem OO efetiva, uso de herança, polimorfismo, design patterns e interfaces de negócios). Contudo, o Java EE 5 trouxe uma novidade que impôs uma evolução nos frameworks que foram os seus carrascos: O uso de anotações para eliminar configurações em XML. Poderíamos dizer que o EJB 3 não é uma mera cópia dos conceitos usados no Hibernate e Spring, mas também traz uma inovação ao fazer copy/paste/modify. Curioso foi ver que o Hibernate e o Spring foram obrigados a evoluir.

Contudo, podemos notar que o EJB 3.0 deixou de fora muitas das melhorias já presentes no Hibernate/Spring. No JPA 1.0 podemos notar a falta do mecanismo de "Criteria" e no EJB a falta de uma modularização mais flexível além dos tradicionais JAR, WAR e EAR. Tanto que agora no EJB 3.1 e JPA 2.0, várias melhorias tentam eliminar as deficiências reclamadas pela comunidade que já não existiam em versões antigas do Hibernate e Spring Framework.

Muitos se questionam hoje se deveriam usar o Hibernate e o Spring considerando as evoluções do EJB 3 e JPA estabelecidas pelo Java EE 5 e 6. Acredito que pela simplicidade e padronização proporcionados no Java EE deveríamos usar o EJB e JPA. Mas, considerando as limitações deveríamos levar em consideração o uso do Hibernate e do Spring Framework. Apesar de não serem frameworks padrões, e por isso mesmo, não estão limitados às imposições políticas de vários interesses, estes frameworks têm a liberdade de evoluir e experimentar idéias inviáveis até o momento no Java EE, além de propiciar a integração com outros frameworks que também não são padrões e são legados ainda em uso pela comunidade (por exemplo: Struts, iText, Quartz, etc). Muitos conhecem as vantagens de usar o Hibernate diretamente em detrimento das limitações do JPA. No Spring temos a modularização através de OSGi e o uso pleno do AOP como parte da modelagem dos componentes de negócios das aplicações enterprise.

Apesar das melhorias amplamente comentadas no Java EE 6 através do EJB 3.1 e JPA 2.0, ainda é evidente muitas das vantagens do uso direto do Hibernate e do Spring Framework.