Agosto de 2008
Arquivo Mensal
Seg 25 Ago 2008
EJB 3: Dead Or Alive? (em inglês), artigo por Adam Bien, 2008-08-22, em Javalloby DZone. Veja também Absolute Beginner EJB 3 / JPA Series - the Essential Bootstraps And Background Information, no Weblog de Adam Bien.
Why you should consider Tapestry 5 (em inglês), artigo por Joshua Java, 2008-08-21. Veja também a discussão do artigo em TheServerSide.COM. A versão 5.0.14 do framework open source de apresentação web Tapestry foi recentemente lançada e o Tapestry 5 está quase atingindo o nível de release estável (GA). A nova geração do Tapestry, criado e mantido pelo contundente Howard Lewis, vem se mostrando cada vez mais sólida e madura, buscando superar algum criticismo contra as mudanças profundas e quebras de compatibilidade retroativa introduzidas na evolução pelas versões 3, 4 e 5 do Tapestry.
JavaFX is Dead, Long Live JavaFX (em inglês), por Per Olesen, 2008-08-22, impressões sobre o Java FX Preview SDK, disponível para download gratuito.
CodeGear promove encontros on-line para desenvolvedores Java (em português), notícia por Paula Zaidan, 2008-08-20, em JavaFree. Durante dois dias (21 e 28 de agosto) de sessões on-line, gratuitas e em português, especialistas da companhia apresentam as novas funcionalidades do JBuilder 2008, no JBuilder Day América Latina. A divisão CodeGear pertencia à Borland e foi recentemente comprada pela Embarcadero.
Four harmful Java idioms, and how to fix them (em inglês) - Rewrite convention and optimize your code for maintainability. Artigo por John O’Hanley, 2008-07-29, em JavaWorld.com.
Spring Recipes: A Problem-Solution Approach, crítica de livro escrita por Meera Subbarao, 2008-08-21, em Javalobby DZone.
OpenXava 3.0.3: JPA Application Engine (em inglês), notícia por Javier Paniza, 2008-08-19. Veja mais sobre o OpenXava no site do projeto.
Jt - Java Pattern Oriented Framework (Jt 2.7), TheServerSide.COM. Veja também Jt Framework project em java.net.
Presentation: Future Directions for Agile, por David Anderson, 1h 32min;
Presentation: 10 Ways to Screw Up with Scrum and XP, por Henrik Kniberg, 1h 28min; ambas em inglês, em InfoQ, filmagem de apresentações realizadas durante o evento Agile Conference 2008.
7 Principles Of Clean And Optimized CSS Code (em inglês), artigo por Tony White, 2008-08-18, em Smashing Magazine.
13 hand-picked Vertical and horizontal CSS Menus (em inglês), por Developer Fox, 2008-08-20. Veja também Usando CSS para criar uma barra de abas, por Márcio d’Ávila, 2004-01-07, e referências em Componentes e Bibliotecas JavaScript e AJAX - Menu e Treeview HTML Dinâmico em JavaScript.
Sáb 23 Ago 2008
Vulnerabilidades, configurações e atualizações com correções de segurança dos servidores web Apache HTTPd e Java Apache Tomcat foram a pauta das atualizações de hoje no artigo Tutorial Tomcat - Instalação e Configuração Básica (revisão 31) e na página de referências sobre Entidades e Centros de Segurança - Centros de Informação de Segurança de Empresas - Apache Software Foundation.
Confira nos links acima.
Qui 21 Ago 2008
Cloud computing, ou computação em nuvem (computação nas nuvens, para os mais românticos) é o termo que vem sendo adotado para o seguinte conceito e tendência: uso de recursos computacionais e serviços baseados na Internet (chamada “a Nuvem”, “the Cloud”). Segundo Reuven Cohen, a explicação mais simples para cloud computing pode ser descrita como ’software centrado na Internet’.
Isso engloba o uso maciço de software como serviço (software as a service - SaaS) através da Internet — o exemplo típico são as aplicações de escritório do Google Docs disponíveis e utilizadas através da Internet, utilizando-se um simples navegador/browser Internet no computador do usuário. Também inclui a tendência de desenvolvimento de aplicações que incorporam serviços e funcionalidades disponibilizadas através da Internet, chegando até o desenvolvimento de software e serviços usando uma plataforma computacional disponibilizada pela Internet, como mostra o artigo A short introduction to cloud platforms — An Enterprise-oriented view [pdf] de David Chappel, agosto 2008.
Atualmente, empresas como Google e IBM encabeçam a promoção e a pesquisa do uso de cloud computing, muitas vezes alardeado como o futuro da informática, como mostra a reportagem Google prepara, hoje, o futuro da informática [vídeo] da Rede Globo, apresentada no Jornal da Globo de 6 de maio de 2008.
Embora profetizado como grande tendência futura para os próximos anos, cloud computing enfrenta também o ceticismo e a crítica, como por exemplo se vê no ensaio do cronista de tecnologia americano John C. Dovorak (reprodução comentada por Antonio Passos), em sua coluna publicada na revista INFO Exame de junho de 2008. Já para o especialista visionário Nicolas Carr, autor do best-seller Does IT Matter (2004) e do livro recente “A grande virada: reconectando o mundo, de Edison a Google” (do inglês The Big Switch: the World from Edison to Google), cloud computing é uma forte previsão, mas a adoção nas grandes empresas não vai acontecer do dia para noite, ainda levará de uns cinco a dez anos para as grandes corporações migrarem em peso sua TI para cloud.
Cloud computing não deve ser confundido porém com grid computing, ou computação em grade/grelha. Este último consiste no modelo computacional do uso de um conjunto ou agrupamento de computadores em rede (mas com baixo acoplamento) para computação distribuída de aplicações e serviços, se comportando como uma espécie de super computador virtual, permitindo a realização de tarefas em larga escala.
A utilização de plataformas cloud computing — ou seja, a formação de um grid de computadores disponibilizados através da Internet — é uma forma possível de implementação de grid computing. O caso mais comum atual de grid computing, porém, ainda é a agregação de um conjunto de servidores dentro do ambiente de datacenter de uma corporação, aproveitando o investimento em servidores de pequeno e médio porte para produzir o processamento e a disponibilização de serviços de grande porte.
A definição de Dennis Byron, analista da Research 2.0, apresentada no blog Carreira e Certificações em TI no artigo Computação em nuvem: Microsoft, Google e tempestade à vista, apresenta uma relação objetiva entre os dois conceitos:
O cloud é, basicamente, uma combinação de grid computing, que tratava basicamente de potência de processamento bruta, e software como serviço. Na realidade, cloud é virtualização de rede.
Para saber mais sobre cloud computing:
- Cloud computing, por Wikipedia, the free encyclopedia.
- What is cloud computing? - uma definição por Whatis.com.
- Cloud computing: entenda este novo modelo de computação, por Daniela Moreira, editora assistente do IDG Now!, 2008-08-14.
- Computação nas Nuvens: O futuro, segundo o Google!, por nandokanarski, 2008-05-07, no blog underGoogle.
- Google e IBM se unem por computação em nuvem, por IT Web, 2007-10-09.
- Cloud computing aponta futuro da TI, por Gilberto Pavani Junior, especial para InformationWeek Brasil, 2008-06-27, em IT Web.
- Cloud computing: a web vira extensão do seu HD, por Redação Terra, 2008-07-28, em Terra Tecnologia.
- Cloud computing, por Jonathan Weber, fundador e editor do NewWest.Net, 2008-05-05, em Times Online UK.
Para saber mais sobre grid computing:
- Grid computing, por Wikipedia, the free encyclopedia.
- Computação em grelha, por Wikipédia, a enciclopédia livre.
- IBM Grid computing, por IBM.
- Computação em Grade - Uma Visão Introdutória, por Marcos Pitanga, 2004-03-30, em Clube do Hardware.
- Grid computing, no glossário de Termos técnicos do Guia do Hardware.
- Grid Computing Planet, portal de artigos e recursos sobre grid computing da Earthweb/Jupitermedia.
Sáb 9 Ago 2008
[Atualizado em 31 de outubro de 2008.]
No contexto de arquitetura de software, ambos os termos técnicos Tier e Layer em inglês podem ser traduzidos para português como Camada, em geral relativo a sistemas multi-camadas. Mas cuidado para não haver equívoco ou ambiguidade, pois os dois termos não são meros sinônimos, têm significados distintos.
- Layer se refere a Camada Lógica de organização dos componentes do sistema ou aplicação.
- Tier se refere a Camada Física ou Estrutural dos componentes com foco na infra-estrutura (hardware, sistema operacional e serviços/servidores) e suas responsabilidades no sistema.
Segundo Peter Eeles, no artigo Layering Strategies, o termo layer (camada) se refere à aplicação do padrão arquitetural genericamente conhecido como Layers Pattern, que estrutura em camadas um sistema que requer decomposição, por algum motivo. Por exemplo, um sistema:
- que é muito complexo para ser compreendido em seu todo de uma só vez;
- que é difícil de ser mantido;
- que é construído por equipes distintas, possivelmente com habilidades e conhecimentos diferentes;
- cuja maioria dos elementos reusáveis são difíceis de se identificar.
Eis as principais camadas lógicas (layers), segundo Martin Fowler in: Patterns of Enterprise Application Architecture (Addison-Wesley, 2003, ISBN-13 978-032112742-6, 560 p.), Capítulo 1 - Layering, The Three Principal Layers:
| Camada Lógica |
Responsabilidades |
| Apresentação |
Interação com usuário (exibição de informações, validação de entrada), provisionamento de serviços. |
| Domínio / Negócio |
Lógica específica particular ao sistema ou aplicação. |
| Acesso a Dados |
Comunicação com bancos de dados, EIS, sistemas de mensagens, monitores de transação. |
Uma boa prática que se prega no projeto da arquitetura de software é que cada camada lógica só deve interagir com a(s) camada(s) imediatamente adjacente(s), visando a maior separação de atribuições (coesão) e o baixo acoplamento.
As camadas físicas (tiers) caracterizam a infra-estrutura sobre a qual o sistema ou aplicação executa. As camadas físicas podem variar de acordo com a plataforma e o ambiente tecnológicos específicos que se utiliza. Um modelo canônico de camadas físicas em ambiente web pode ser resumido como a seguir.
| Camada Física |
Caracterização |
| Cliente |
Navegador (browser) web, páginas DHTML (HTML, JavaScript, CSS, DOM), componentes/plug-ins adicionais RIA (Flash, Applet Java, JavaFX, ActiveX, XUL etc.), outros objetos MIME (dados, documentos e arquivos em outros formatos). |
| Rede e Serviço Web |
Servidor web, protocolo HTTP sobre TCP/IP, processamento de requisição-resposta do cliente web, encaminhamento e integração com servidor de aplicações. |
| Serviços de Componentes e Aplicação |
Servidores de aplicação (plataformas mais comuns: Java EE e Microsoft .NET), servidor de objetos distribuídos (EJB, COM+, CORBA etc.). |
| Serviços de Dados e Integração |
Servidores de bancos de dados (SGBD), sistemas de mensageria, mecanismos de integração/interação com outros sistemas (EIS). |
Tipicamente, as camadas lógicas são mapeadas em uma ou mais fatias da camada física da arquitetura. Para exemplificar um mapeamento típico de camadas lógicas em camadas físicas no ambiente web, a apresentação em geral abrange o cliente web, o servidor web e os mecanismos MVC do servidor de aplicação; o domínio ou negócio se concentra no servidor de aplicação; e o acesso a dados se concentra nos servidores de bancos de dados e outros eventuais componentes na camada física de dados e integração.
Contudo, para Eeles, o termo layer é um conceito geral de divisão de um sistema em camadas, que pode ter diversas estratégias de organização e aplicação. Este autor define tier como um caso específico de layer associado a estratégia particular de responsibility-based layering (camadas baseadas em responsabilidades).
Eeles ainda adverte para o fato que mesmo tiers não implicam a efetiva organização ou distribuição física. Um sistema 3-tier pode estar fisicamente em um único hardware, ou ter suas camadas distribuídas entre dois ou mais computadores.
Para saber mais:
- Designing Enterprise Applications with the J2EE Platform, Second Edition. Livro por Inderjeet Singh, Beth Stearns, Mark Johnson e o Sun Enterprise Team, Addison-Wesley, Copyright © 2002 Sun Microsystems, 440 p., ISBN 0-201-78790-3. Disponível gratuitamente on-line (HTML), ou em formato PDF para baixar. Aplicável à plataforma tecnológica Java EE.
- Application Architecture for .NET: Designing Applications and Services. Microsoft Patterns & Practices Developer Center, Microsoft Corporation, dezembro 2002, 166 p., disponível em formato PDF para download gratuito. Aplicável à plataforma tecnológica Microsoft .NET Framework.
- A Guide to Building Enterprise Applications on the .NET Framework. MSDN Architecture Center, Building Distributed Applications, Microsoft Corporation, setembro 2003. Aplicável a Microsoft .NET Framework.
- Desenvolvimento em Camadas [em Português]. Por Cláudio Chiba e Alexandre Nardi, Opus Software e Microsoft, MSDN Brasil, 21 de maio 2007.
- Web Applications: N-Tier vs. N-Layer, por David Hayden, 22 de julho 2005, em seu blog. Também publicado em CodeBetter.com, .NET Tutorials, Patterns, and Practices.
- Should all apps be n-tier?, por Rockford Lhotka, 21 de julho 2005, em seu blog.
- Layers and Tiers and Bears, oh my - Part1, por Scott Stewart, 6 de abril 2005, blog em dotNETjunkies.com.
- About layers and tiers, por Jack van Hoof, 5 de março 2008, SOA and EDA blog.
- The Layered Architecture Style, por Arnon Rotem-Gal-Oz, 5 de fevereiro 2008, em seu blog.
- A reminder on “Three/Multi Tier/Layer Architecture/Design” brought to you by my late night frustrations, por Scott Hanselman, 1º de junho 2005, em seu blog.
- Layers and Tiers, por Pranshu Jain, 15 de setembro 2006, em seu blog. Artigo também publicado em IT Toolbox.
- Arquitectura de aplicação e modelo 3 camadas [PDF em Português], por Paulo Souza, professor de Engenharia da Informação, Instituto Superior de Engenharia do Porto, Portugal, 2006.
Layers Pattern: