performance, escalabilidade, penetracao, seguranca, ou qualquer outro tipo de teste imaginavel em cada camada. Tambem modulariza o sistema de maneira que times separados possam trabalhar de maneira independente, com o menor impacto e conflito possivel, apenas dependendo de um bom alinhamento do contrato de cada interface.Outra vantagem seria a possibilidade de reuso da API para outras interfaces, como por exemplo aplicacao mobile, utilitarios de linha de comando, ou integracao com ferramentas de terceiros.webappO browser deve receber um conteudo estruturalmente estatico, que sera dinamicamente gerado pelo javascript, baseado em informacoes providas pelo servidor. Sim, eu sei que em dispositivos moveis antigos, o melhor pode ser entregar o conteudo pre-renderizado, gerado dinamicamente no servidor, mas falarei minha sugestao sobre isto mais tarde.Independente de ser conteudo estatico no servidor, continua existindo a necessidade de restringir acesso a alguns recursos, e isto requer uma interface de servidor, como um servlet, um CGI(sim o bom e velho CGI), um AuthenticationFilter ou qualquer outra interface que garanta que o usuario so acesse o conteudo quando estiver em um contexto autenticado e atualmente valido. Isto, infelizmente, impede que seja usado um simples servidor web estatico.Todos sabemos que o javascript e poderoso o suficiente para renderizar qualquer coisa no cliente, e se no passado o processamento no lado do cliente era um problema, nao e mais verdade atualmente. Bem em alguns dispositivos moveis ainda pode ser, mas em pouco tempo nao sera mais.Normalmente, se voce esta tendo problemas de performance na renderizacao ou manipulacao de objetos, voce tem algo que precisa ser refatorado.O front-end, deve ser tratado de forma componentizada, permitindo, via javascript, a reutilizacao de codigos. O W3C ja possui drafts para componentizacao, mas atualmente a forma mais efetiva continua sendo no formato de plugins, muito utilizado pelo jQuery. Nao digo usar o jQuery em si, mas o conceito e otimo.Sempre que me perguntam minha opiniao sobre geracao de html dinamico do lado do servidor, como jstl, struts, ou algo do tipo, minha resposta e: lixo tecnologico. Durante a evolucao tecnologica, surgem vertentes para todos os lados, mas muitas sao desnecessarias e sao continuadas e/ou defendidas, porque os envolvidos com estas vertentes nao querem admitir que escolheram o caminho errado e ja investiram muitos recursos com o aprendizado e aplicacao delas. No fim, sao tecnologias defendidas com interesses secundarios que nao a melhor qualidade da aplicacao.Acho importante ressaltar que eu ja trabalhei com estas tecnologias muito e por muitos anos.webapp-api, session-api, data-moduleAcho mesmo que preciso separar estes topicos em outros posts.Existem tantas coisas novas no mundo do desenvolvimento de software, mas a verdade que muitos desprezam e que existem coisas que nao precisam ser melhoradas. Assim como no mundo real, existem coisas que nao precisam ser melhoradas. Nao disse que nao podem ser melhoradas, disse que nao precisam.Existe uma infinidade de sub topicos a serem tratados em cada um destes modulos, se eu for levantar aqui nao terminarei este artigo.Como sempre, comentarios sao bem vindos.