JSON+javascript vs JSP

Em um projeto que estou trabalhando, surgiu uma dúvida e gostaria da opinião do pessoal daqui do fórum.

Tenho várias classes de negócio que produzem objetos que facilmente são serializados em JSON. Tenho servlets (sempre invocados via AJAX) que são usados apenas como adapters sobre as classes de negócio subjacentes. Esses servlets dificilmente ultrapassam 20 linhas de código (incluindo imports, comentários e tudo mais), eles apenas leem os parâmetros da requisição, mandam para a classe de negócio e colocam o resultado no response. No response, esses servlets podem gerar uma dessas duas coisas:

  1. JSON puro, que será processado no cliente (um browser) que cria <div>s e <span>s dinamicamente e os coloca na página.
  2. A HTML pronta dos <div>s e <span>s (gerados por um JSP), no browser, o javascript simplesmente acrescenta esse resultado dentro de uma <div> usando o innerHTML.

Já testei ambas as formas, e as duas produzem o mesmo resultado e funcionam muito bem, no entanto gostaria de colocar as diferenças na balança:

A forma 1 é mais leve, gera menos tráfego de rede e demora menos tempo para ser processada no servidor, pois boa parte do processamento (layout e formatação) fica no cliente.
No entanto, do lado do cliente, o código fica bem complexo e a manutenibilidade é ruim, pois há um monte de javascript montando a página dinamicamente.
A forma 2 é mais simples do lado do cliente, pois basta uma linha de código para colocá-la no layout, mas demora mais no servidor. No entanto, no servidor tenho apenas um JSP simples e a manutenibilidade é legal.

Há também uma forma híbrida destas duas, criar um JSON que contém em algum campo a HTML pronta. Mas, não sei se isso é boa ideia.

Outra coisa, é que no futuro pretendo reutilizar os JSONs gerados para criar webservices.

Eu pessoalmente, sou mais inclinado a ir para a forma 1, apesar de ser algo completamente fora do padrão (ou talvez inovador se você ver de uma forma diferente). Mas, gostaria de coletar as opiniões dos demais colegas do fórum.

Que belo problema ein? rsrsrs

Acho que as duas alternativas são legais, se bem implementadas… porém, em minha humilde opinião

Acho legal evitar o tráfego no servidor… prefiro a opção da pré-validação através de JavaScript no cliente… por que isso evita idas-e-vindas e tráfego extra… Se pensarmos que o seu sistema pode aumentar… e ser utilizado por muito mais usuários no futuro… seria interessante evitar este tipo de tráfego desnecessário no servidor. O legal seria centralizar a geração deste código que é devolvido para o cliente… e então, a manutenção fica clara e objetiva… por que todos os clientes recebem esta informação dinamicamente através dos seus servlets… de um único e bem definido local… e fazem o processamento de validação localmente, sem exigir recursos de rede, e só então, submetam o conteúdo para o servidor.

Abraço,

Eu diria que o problema está aqui. Se o código do lado do cliente é complexo, ruim de manter, então esse código em JS é ruim. Ponto. Hora de dar um upgrade nas tuas habilidades de como escrever JavaScript, além de sair atrás de frameworks fáceis de usar que façam esse trabalho.

Sobre qual o melhor, eu considero AJA(JSON) “A” maneira certa de fazer comunicações desse tipo entre clientes e servidores.

se vc pretende gerar webservice disto eu sugiro mandar JSON ou entao microformatos, que basicamente sao “divs & spans” embutidos num documento XHTML.

Existem componentes js que trabalham direto com JSON, portanto pense seriamente em usar libs como prototype, jquery, yui, sua view ficará mais fácil de manter e ainda assim podera ter seus webservices restfull com os JSON gerados.

No site do VRaptor tem exemplo de como usar prototype:
http://www.vraptor.org/pt/ajax.html

Voce pode montar grids, combos, etc tudo com componentes que trabalham em cima do JSON.

Respondendo a todos vocês.

Realmente, quanto ao javascript, eu havia esquecido sobre o JQuery, que não está sendo usado no momento. O JQuery será acrescido ao projeto em breve, quiçá ele deverá atenuar o problema da complexidade do javascript e deixá-lo bem mais fácil, apesar de não se comparar a simplicidade do JSP, mas a manutenibilidade já será muito boa. :slight_smile:

Placar por enquanto:
JSON+javascript [color=red]5 x 0[/color] JSP :lol: