com que, caso a biblioteca Jackson esteja no classpath, o Spring converta o List<Item> para o formato JSON. Para fazermos o teste podemos utilizar o navegador ou uma ferramenta chamada curl:Se fizermos uma requisicao para a URL:/app/item/list.json Teremos o seguinte retorno:[{"id":1,"description":"item1"},{"id":2,"description":"item2"}]Aqui vemos o log do curl:curl -v -i -H "Accept: application/json" -X POST -d "" "http://localhost:8080/springmvc/app/item/list.json"* About to connect() to localhost port 8080 (#0)* Trying 127.0.0.1... connected* Connected to localhost (127.0.0.1) port 8080 (#0)> POST /springmvc/app/item/list.json HTTP/1.1> User-Agent: curl/7.19.3 > Host: localhost:8080> Accept: application/json> Content-Length: 0> Content-Type: application/x-www-form-urlencoded>< HTTP/1.1 200 OKHTTP/1.1 200 OK< Content-Type: application/jsonContent-Type: application/json< Transfer-Encoding: chunkedTransfer-Encoding: chunked< Server: Jetty(8.0.1.v20110908)Server: Jetty(8.0.1.v20110908)<[{"id":1,"description":"item1"},{"id":2,"description":"item2"}]* Connection #0 to host localhost left intact* Closing connection #0Para deixarmos a aplicacao mais exuta, podemos ao inves de retornarmos framentos de pagina usando JSP, podemos retornar somente JSON, e fazermos todo o tratamento no cliente usando Javascript e componentes como datatables, calendars, etc, auxiliados pela funcao $.getJSON() do jQuery.ConsideracoesArquiteturas exutasAplicacoes para web, onde ha uma grande necessidade de performance, podem se beneficiar de arquiteturas mais exutas, evitado o uso de frameworks pesados como JSF, na qual sao baseados em componentes. Aqui, mostramos um modelo baseado em actions.Largura de bandaO carregamento dos dados sob demanda e em pequenos framentos tambem economiza uma grande largura de banda, como tambem de processo de renderizacao da pagina.UsabilidadeOutra questao importante, e a usabilidade da aplicacao que aumenta de forma consideralmente, ja que com a nova versao do HTML versao 5, temos mais opcoes disponiveis e podemos considerar o descarte de frameworks de componentes java.CasesHa varios casos de utilizacao desse modelo em sites com um numero grande de acessos. Um exemplo classico e o facebook que utiliza PHP como backend e javascript intensamente, e ate desenvolveu um compilador para PHP, para suportar a quantidade enorme de acessos.Simplificacao do protocoloNessa abordagem, temos tambem o ganho da abstracao do backend utilizado, ja que, o que sao enviados para o servidor, sao somente GET/POST ou dados no formato JSON, que e mais exuto que a utilizacao de XML com SOAP, podendo ser uma otima opcao para exposicao de webservices.Dados de SessaoA maioria das aplicacoes usam cookies para armazenar dados de sessao no backend. Uma boa opcao e usar banco de dados nao estruturados ou orientados a documentos, onde eles so armazenam dados na forma de chave/valor, com uma alta performance de replicacao e disponibilidade, exemplos sao CouchDB, MongoDB.ConclusaoPor mais que JSF seja o padrao JEE, nao quer dizer que precisamos usa-lo sempre. A arquitetura de um sistema depende de tres fatores principais: atributos de qualidade (escalabilidade, performance, etc..), ambiente (experiencia da equipe, ferramentas, etc) e experiencia do arquiteto. Assim, nos como arquitetos, temos que nos abastecermos da maior quantidade de experiencias para escolhermos a melhor solucao para cada caso, independente da tecnologia ou plataforma, seja Java, PHP ou .NET.ReferenciasjQuery e Spring MVC: http://blog.springsource.com/2010/01/25/ajax-simplifications-in-spring-3-0/Jackson: http://jackson.codehaus.org/CounchDB: http://couchdb.apache.org/MongoDB: http://www.mongodb.org/cURL: http://curl.haxx.se/download.htmlOs fontes desse exemplo estao disponiveis no googlecode:http://code.google.com/p/com-naskar-springmvc/downloads/listhttp://code.google.com/p/com-naskar-springmvc/source/browse/