HTML/JQuery + Java

Gostaria de saber a opinião de vocês para a seguinte arquitetura, considerando que tivesse como premissas, Performance, Segurança, Escalibilidade e sabendo que muitos usuários o acessariam ao mesmo tempo, ou seja, muitas requisições simultâneas.

Do lado cliente apenas HTML e JQuery, sem utilizar nenhum framework web, pensei nisso com o intuito de aumentar a performance.

Na camada de negócios Spring para modularização. Não tenho certeza, mas, JPA para fazer inserts, updates e deletes e Jdbc para pesquisas, pois acredito que as consultas são muito pesadas, dependendo de como for utilizado. A parte de persistência tive a idéia lendo um post do Martin Fowler mas não sei se entendi corretamente o propósito, se eu estiver errado por favor me corrijam, mas mesmo assim penso ser uma boa idéia.

Principalmente na parte HTML e JQuery, gostaria de saber se vocês acreditam que possa ter algum problema nessa abordagem, ou se acham válido. Já trabalhei bastante com JSF + Richfaces, mas não acho que seja uma boa idéia em questões de tempo rápido de resposta.

Obrigado! :smiley:

cara,

a não utilização de um framework para camada de visão e controle (indepedente de qual for), acho que nao seria um boa abordagem, pois vc teria que usar JSP/Servlet e vc acabaria fazendo muita coisa na mão. Entao evite esse trabalho desnecessario, utilize um Framework.

t+

Já tralhei em sistemas para prefeituras que eram acessados por contribuintes. O número de acessos era grande.
Usavamos Hibernate, Spring Framework, Spring MVC e Jstl e muito pouco JQuery.
Não tinha problema algum. Dependendo a prefeitura o servidor era Jonas ou Glassfish.

[quote]cara,

a não utilização de um framework para camada de visão e controle (indepedente de qual for), acho que nao seria um boa abordagem, pois vc teria que usar JSP/Servlet e vc acabaria fazendo muita coisa na mão. Entao evite esse trabalho desnecessario, utilize um Framework. [/quote]

Então, o que vocês diz com fazer muita coisa na mão?
A forma que eu quero fazer é ter um html com os componentes, e o que tiver que carregar, como combo, tables e inputs seriam plugins jquery, que apenas retornando um json já funcionariam, então nesse sentido acho que não teria problema.

[quote]Já tralhei em sistemas para prefeituras que eram acessados por contribuintes. O número de acessos era grande.
Usavamos Hibernate, Spring Framework, Spring MVC e Jstl e muito pouco JQuery.
Não tinha problema algum. Dependendo a prefeitura o servidor era Jonas ou Glassfish[/quote]

Pensando em um sistema no nível de uma rede social por exemplo, poderiamos dizer o mesmo? Utilizar a4j por exemplo não acho que tenha o mesmo tempo de resposta de um servlet puro e uma requisição ajax utilizando jquery.

blz,
vc vai usar esses componentes, mas o que vc vai usar para ligar seu html com o java, JSP/Servlet?

Servlet.

Depois que a pagina estiver carregada, usando ajax você não vai recarrega-la e sim apenas atualizar seus dados.
Então acho que não tem problema.
E usar um padrão como o MVC não impede uma melhor performance da sua aplicação e sim organiza seu código o que é algo muito recomendado.

entao cara,
muitas coisa que vc vai fazer na mao com Servlet vc pode evitar com um Framework.

t+

Então ainda não consegui ver uma vantagem significante para utilizar um framework entende? Problema em fazer na mão pra mim não importa, eu acredito que eu tenha muito mais flexibilidade utilizando JQuery para criar qualquer componente que eu quiser, do que criar um render em JSF por exemplo, essa flexibilidade acredito que seja um ponto grande a considerar em uma aplicação que possa ter vários componentes customizados.

cara,
so de utilizar request.getParameter(""); isso me da ate arrepio, alem de controlar objeto na sessão e por ai vai…

t+

Matheus,

Com sua abordagem, percebo que está querendo quebrar paradigmas. Pelo que entendi você está querendo velocidade tanto na requisição quanto na resposta ao utilizar JQuery e liberdade na criação de componentes (principalmente usando jQuery) na sua página, certo?

Percebi também pelos comentários, que ainda existe uma grande resistência na não utilização de framework para camada de apresentação quando se pensa em desempenho na requisição e resposta. Acredito que é por que estão pensando na velocidade da construção e não na performance do sistema.

Se você acha que terá bastante tempo para a construção, vai em frente sim com a utilização de apenas HTML e JQuery para a camada de apresentação.

t+

Entendo que request.getParameter(""); é ruim mesmo, nesse ponto o JSF facilita bastante, mas acho que só por isso não compensa utilizar um framework.

Se for usar HTML, jQuery e Servlet recomendo usar pelo menos:

Legal! obrigado pelas dicas, vou analisar melhor.

Tem alguém que ache essa arquitetura interessante também?

Também gostaria de saber a opinião de vocês na parte que citei sobre a persistência.

Polêmico hein, mas é uma dúvida que sempre tive, o recurso de um framework de apresentação facilita muito o controle das transações web, porém percebo que deixa muito a desejar no quesito flexibilidade referente a criação de componentes, gosto bastante de JSF mas criar Renderers é doidera, em contrapartida o JQuery fornece um gama de opções e recursos para isso, então a pergunta fica, para a criação de uma camada de apresentação leve e que proporcione um atrativo visual fantástico vale a pena abrir mão de um framework de apresentação?

Comentem aí pessoal,

Vlw

[]'s

Dá pra usar o Struts. Meio só como Front Controler; para controlar as chamadas a servidor de uma forma mais “agradável” de se trabalhar.
+JSTL pra não ficar usando servelet que eu acho deixa o código muito porco.
e JQuery pra ficar bonito; dá até pra usar o ajax do Jquery.

Claro tudo isso na camada de apresentação. negócio e persistencia já é outro assunto

Estava pensando numa outra forma, eu teria apenas um servlet principal, que através da url ele localizaria os controllers, por exemplo:

http://localhost//<controller_principal>//

E os “controllers” teriam um contrato e algum tipo de convenção

Imagino que mais ou menos como os frameworks web para php fazem.

[quote]
+JSTL pra não ficar usando servelet que eu acho deixa o código muito porco.
e JQuery pra ficar bonito; dá até pra usar o ajax do Jquery. [/quote]

A idéia é essa mesmo, utilizar ajax do JQuery, porém JSTL eu não iria precisar, pois ia retorna sempre JSON e atribuir os valores via JQuery.

O que acham?

Vlw! :slight_smile:

Bem no final , se bem feito tudo funciona.
Teria que fazer um belo teste pra ver se realmente dá diferença na performace. Usando o jMeter ou algum outro …

pois depois de trabalhar assim :


			<table width="100%" border="0" cellspacing="0" cellpadding="0" class="appSort">
				<thead>
					<tr>
						<th width="32" align="center">
							<div class="hDiv"><input type="checkbox" name="todos"></div>
						</th>
						<c:forEach var="th" items="${sort.ths}">
							<th abbr="${th.sortName}" align="${th.align}" class="${th.sorted ? 'sorted' : ''}">
								<div class="hDiv ${th.sorted ? sort.sortOrder : ''}">${th.display}</div>
							</th>
						</c:forEach>
					</tr>
				</thead>
				<tbody>
					<c:forEach var="vo" items="${vos}" varStatus="i">
						<tr class="${(i.count-1) mod 2 eq 0 ? 'even' : 'odd'}">
							<td align="center">
								<div class="bDiv">
									<input type="checkbox" name="ids" value="${vo.id}">
								</div>
							</td>
							<td align="${sort.ths[0].align}">
								<div class="bDiv">${vo.nome}</div>
							</td>
							<td align="${sort.ths[1].align}">
								<div class="bDiv">${vo.email}</div>
							</td>
							<td align="${sort.ths[2].align}">
								<div class="bDiv">
									<c:if test="${vo.representante eq 1}">
										<img src="app/images/yes.png" width="14" height="14">
									</c:if>
								</div>
							</td>
							<td align="${sort.ths[3].align}">
								<div class="bDiv">
									<c:if test="${vo.seguradora eq 1}">
										<img src="app/images/yes.png" width="14" height="14">
									</c:if>
								</div>
							</td>
							<td align="${sort.ths[4].align}">
								<div class="bDiv">
									<c:if test="${vo.corretora eq 1}">
										<img src="app/images/yes.png" width="14" height="14">
									</c:if>
								</div>
							</td>
                                            .
                                            .
                                            .

Isso parece uma nogeira … rs

								<table width="100%"  cellspacing="1" cellpadding="1" align="center" id="tabelaListRooms" >
									<thead>
										<tr>
											<th colspan="3" class="pagetitle" >Clientes em Espera</th>
										</tr>
										<tr >
											<th  class="pagetitle" colspan="2" >Cliente</th>
											<th  class="pagetitle" >Assunto</th>
										</tr>
									</thead>
									<tbody>
										<%
										for (int i = 0; i < chatrooms.length; i++){
											if (chatrooms[i].getName().equalsIgnoreCase("StartUp") || chatrooms[i].getName().equalsIgnoreCase("Historico"))
												continue;
											%>
											<tr>
												<td width="25%" >
													<input  type=radio id="rn" name="rn" value="<%=chatrooms[i].getName()%>"
														<%
														if (chatrooms[i].isDisable())
															out.write("disabled='disabled'");
														%>
													/>
										
												  <%
													for (int j = 0; j < chatrooms.length; j++) {
														if (chatrooms[j].getName().equalsIgnoreCase("StartUp") || chatrooms[j].getName().equalsIgnoreCase("Historico"))
															continue;
														
														if(chatrooms[i].getChatter(chatrooms[j].getName())!=null){
															Date d = new Date(chatrooms[i].getChatter(chatrooms[j].getName()).getLoginTime());
															DateFormat df = new SimpleDateFormat("HH:mm:ss"); 
															String s = df.format(d);
															%>
															<%=chatrooms[i].getChatter(chatrooms[j].getName()).getNome()%>										
															</td>
															<td width="25%" >					
															Aguardando desde: <%=s%>
															<%
														}
													}			
												%>				
											</td>
											<%
											if (see == true && chatrooms[i].getName().equals(roomname))	{
												%>	
												<td width="50%" >
													<%=chatrooms[i].getDescription()%>						
												</td>
												<%
											}else {
                                            .
                                            .
                                            .

Como já falanram nesse tópico :
request.getParameter("") dá arrepios (alissonvla )
rsrsrs

Ah isso é verdade!!
dessa forma da arrepios hehe…

Mas pretendo criar plugins JQuery para reutilização de código, por exemplo:

   <html>
           <div id="tabela"></div>
   </html>
  $(document).ready(function() {
       $("#tabela").table(//parametros);
  });

vlw!!