Performace em aplicação web Java

Olá… blza galera?!
Estou precisando de um help sobre arquitetura de projetos Java. E já abrindo discussão pra experiencia de todos. Pesquisei no forum aqui e não consegui encontrar.

Preciso, em um sistema pessoal, que o tempo de resposta das requisicoes sejam o mais curto possivel. Estou levando em conta que o pc cliente, rede, internet, servidor e banco está em perfeito estado, pensando então somente na arquitetura como impactante no tempo de resposta, para mim poder entender a melhor maneira de arquitetar o sistema. O restante é de certa forma fora de controle quando está em produção.

Entao sobre o oceano de framewoks em java no mercado, o que seria legal implementar para um sistema que necessite tempo de resposta curto (nao necessariamente real-time, mas quanto mais proximo, melhor):

  1. Implementar algo mais “na mão”, como por exemplo javascript + spring form simulando as servlets, com toda tela em html puro + jstl + el, é uma vantagem neste quesito de performace em relação especificamente a JSF, ou desenvolvendo “BEM” com JSF+JBoss Seam o ganho é equivalente??

  2. Implementar minhas regras em um EBJ no servidor de aplicação, é maior vantagem do que embutir os BO’s diretamente no tomcat, no mesmo quesito acima? (sendo que pelo numero de acesso, preciso balancear ou clusterizar os tomcats).

  3. O tão falado web container Jetty melhoraria a aplicação em relação ao Tomcat 6 ?

  4. Java responde bem a sistemas WEB em real-time no geral ??

Bom seria isso, ficamos livres para discutir qualquer assunto relacionado!

Obrigado a todos!

jopss

Cara, essa discução aqui vai te esclarecer bastante coisa, pelo menos a respeito do JSF e JSP e tals:

http://www.guj.com.br/posts/list/95822.java

Agora quanto aos EJBs, se você usar lookup é bem rapidinho, fuja dos webservices desnecessários, to sofrendo aqui por causa disso, é uma lentidão absurda.

Tópico interessante, quero ver a discussão rolar pra agregarmos mais conhecimento.

Abraços!

Uma das regras de ouro é “menos é mais”. Por exemplo, menos frescuras na tela, menos coisas que devem ser feitas pela sua aplicação, menos coisas que o usuário tenha de clicar ou digitar etc.

Agora, “real-time” em aplicação Web é meio apelação, não? Real-time é ter de processar montanhas de ordens na Bolsa, geradas por “algorithmic trading”. Isso sim é real-time, mas aí você tem de usar algo que não é bem um WebSphere da vida.

Opa thingol… na verdade nao seria real-time, como eu tentei explicar no inicio, mas o mais proximo possivel… o que recomendaria para a arquitetura com java web?

Um problema que tenho é que minhas telas devem atualizar automaticamente a cada 3 segundos… e isso as vezes nao consigo resposta no tempo esperado. Sei que depende de cada projeto, mas pense num sistema generico… o que seria legal aplicar numa app web java para tempo de respostas curtos, tipo de 2 a 3 segundos… please…

obrigado!
jopss

Opa, thingol, você poderia falar mais sobre “algorithmic trading”?
Ou me indicar alguma boa literatura, por gentileza ^^

Grato!

Jopss, a página inteira precisa ser “refrescada” (essa foi boa né?) ou é só alguma área em específico?

Com JSF + Richfaces você pode criar um panel e só dar um rerender nele quando quiser, aí você não precisa dar refresh na página inteira, o que consumiria recursos.

Isso se enquadra naquele caso de menos é mais. Usando AJAX ou algo parecido, atualizar apenas as coisas que devem ser atualizadas na sua tela, já que há a maldita atualização automática. (Convenhamos que 3 segundos é meio pesado para uma aplicação Web; dá a impressão que para tal coisa seria melhor ter uma aplicação Swing disparada por Java Web Start, e você passar para o cliente só um blocão de dados que contém a atualização da tela dele.

Opa… bom as coisas sao feitas por Ajax, com prototype, a cada 3 segundo atualiza uma tabela de dados, dados estes que não sao objetos “gordos”, e sim somente estes dados sao retornados no banco… Nao estou utilizando JSF, e sim html + prototype + spring form… mas mesmo assim, não está performático…

Nao entendi sobre sua opiniao do Swing com Java Web Start. Eu teria no cliente uma app Swing, acessando dados via web, retornando a atualização? Mas isso nao cairia no mesmo esquema que web mas com Swing?

jopss

Mais ou menos. É que você pode, por exemplo, usar um esquema de compressão de dados se for em uma aplicação Swing, para reduzir o tráfego (eu sei que você pode mandar os dados via JSON para sua aplicação web, no browser, mas dá para fazer algo ainda mais complicado se for em uma aplicação Swing. No mínimo dá para você usar ZLIB também.)

Procure por reverse ajax e dwr comet, já implementei algo do tipo para chat estilo call center.