sábado, 17 de abril de 2010

Tradução da Documentação da Implementação de Referência da Especificação CDI (JSR-299)

Tem alguns meses que estou ajudando na tradução do Guia de Referência do Weld, o qual é a implementação de referência da especificação CDI (JSR-299). Essa documentação é um ótimo início para quem quer conhecer essa nova especificação que integra a nova edição Java EE 6.

Esse trabalho de tradução foi iniciado pelo João Paulo Viragine, mas devido às suas atividades na JBoss Brasil, ainda não pôde ajudar o quanto gostaria, tudo em prol da JBoss In Bossa 2010. Foi neste momento que comecei a ajudar.

Aqueles que estiverem interessados em conferir o estado atual deste trabalho, visitem a versão em HTML ou a versão em PDF, as quais são atualizadas sempre que possível. Também ficaríamos felizes se estiverem interessados em ajudar na tradução ou revisão.

sexta-feira, 25 de setembro de 2009

Use Menos Camadas Para Uma Melhor Manutenibilidade

Aqui traduzi dois parágrafos do pequeno artigo postado por Adam Bien. Acredito que vale a pena refletir:

Algumas vezes você possui o banco de dados e os requisitos direcionados pelo cliente / patrocinador e principalmente pela UI (User Interface). Fazer um desacoplamento do banco de dados que você possui, neste cenário, não é benéfico. Contrariamente, o desacoplamento tornaria seu código mais complexo e mais difícil de manter. No caso de uma melhoria de funcionalidade, você terá que manter / melhorar a lógica de mapeamento, bem como tudo que estiver ao redor.

Em vez de esconder seus objetos de domínio atrás de uma Service Facade, você poderia derivar os objetos diretamente a partir do banco de dados (isto é, através de geração automática) e expor eles diretamente (ou seja, a própria referência) para a UI. A camada de apresentação (JSF, Wicket e outros frameworks centrados no servidor) poderiam até mesmo ligar os objetos persistentes declarativamente para os componentes UI.

A ideia defendida é diminuir a complexidade deixando de adicionar mais camadas (ou até removendo) em nossas aplicações. A cada camada sempre temos lógicas de mapeamento que apenas adicionam complexidade e muitos problemas para resolvermos.

Outro exemplo que me deparo é a camada dos objetos de acesso aos dados (DAOs). Não seria melhor manipularmos os nossos objetos de domínio diretamente? Possuímos ótimas ferramentas de mapeamento objeto-relacional, como o Hibernate e JPA. Será mais problemático utilizar o Session / EntityManager ou criar e manter mais uma camada sobre outra?

Texto original

domingo, 5 de novembro de 2006

Prefácio à AJAX

Provavelmente as páginas que você encontra na web não tenha a dinâmica que você gostaria que possuissem. Porém essa realidade vem se modificando nos últimos anos. A técnica AJAX têm o objetivo de incrementar as páginas atuais e pode introduzir uma dinâmica comparável às aplicações tradicionais.

Desde os primeiros anos deste século, a World Wide Web tem passado por um intenso crescimento em termos das tecnologias e metodologias que são usadas para trazer este meio, uma vez estático, à vida. Os panfletos e catálogos on-line pararam de dominar a Web, a partir do momento que as aplicações web começaram a emergir como uma porção significante dos destinos on-line. As aplicações web diferenciam de seus antecessores, ao oferecer um serviço instantâneo aos seus usuários. Assim, sejam para o gerenciamento do processo de negócios ou até mesmo interesses pessoais, os desenvolvedores foram forçados a criar novos paradigmas de interação à medida que os usuários esperam por funcionalidades mais ricas.

Estimulada por tecnologias pouco conhecidas e pouco usadas que tinham sido incluídas em navegadores web durante algum tempo, a Web deu um passo corajoso adiante, perturbando o modelo de uso tradicional que requer um carregamento total da página a cada vez que novos dados estão disponíveis ou uma nova parte da lógica da aplicação for acessada. Colocadas sob este contexto, as companhias começaram a experimentar o re-carregamento dinâmico de porções das páginas web, transmitindo apenas uma quantia pequena de dados ao cliente, resultando em uma experiência de usuário mais rápida e argumentavelmente melhor.

Na frente deste movimento estava o Google. Depois do gigante de busca se tornar público, novos experimentos conduzidos pelos engenheiros do Google começaram a aparecer através de seu laboratório, nomeado como Google Labs. Muitos dos projetos no Google Labs, tal como o Google Suggest, o Google Maps e o Google Calendar, envolvem apenas uma única página web que nunca era descarregada, mas, ainda assim, era constantemente atualizada. Estas inovações, as quais começaram a trazer os recursos das interfaces dos aplicativos desktop para dentro dos limites da tela do navegador, foram exaltadas ao redor da Web como uma nova era no desenvolvimento para a web. E realmente, pelo menos de certa forma, elas fizeram.

Assim, numerosos produtos gratuitos e comerciais começaram a desenvolver-se a fim de tirar vantagem deste novo modelo de aplicação web. Estes projetos expandiram sua tecnologia usando uma variedade de termos, tal como execução remota por JavaScript, chamadas de procedimentos remotos pela web, e atualização dinâmica. [ZAKAS, 2006].