Actions codificadas em linguagens dinâmicas  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
Rubem Azenha
GUJ Master
[Avatar]

Membro desde: 28/06/2004 00:10:43
Mensagens: 1933
Localização: São Paulo, SP
Offline

Olá,

O que vocês acham de actions codificadas em linguagens dinâmicas?
Estou pensando em usar isso. Como as actions fazem parte do controller, o que eles devem fazer de verdade e chamar a camada de negócio, passando os dados da camade de visão devidamente validados e formatados (desde que essa validação e formatação não tenha uma lógica de negócios muito "pesada").
Geralmente não fazem muito processamento, ou seja, não vamos ter muitos problemas com performace. E com Groovy por exemplo, é possível compilar e aumentar um pouco a performace.

Eu acho que isso traz um ganho de produtividade considerável...

Alguém já teve alguma experiência com isso? O que achou?



Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning
[WWW]
Mauricio Linhares
Moderador
[Avatar]

Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline

To fazendo isso num projeto onde estamos utilizando Spring 2 + Groovy. Como o Spring 2 tem suporte direto pra carga de objetos em outras linguagens dinâmicamente (incluindo aí quando você altera o fonte e ele percebe na hora e recarrega o objeto), as coisas tem indo muito bem.

A idéia mesmo era fazer com que quase todo o desenvolvimento fosse feito com Groovy, mas como ainda tem gente que não está acostumada, não dá pra obrigar né

Mas action agora, só escrito e carregado dinâmicamente

Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr

Screencast de Introdução a linguagem Objective-C
[WWW]
cv
Moderador
[Avatar]

Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline

E o suporte a refactoring, como fica?
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
Rubem Azenha
GUJ Master
[Avatar]

Membro desde: 28/06/2004 00:10:43
Mensagens: 1933
Localização: São Paulo, SP
Offline

Explique-se...



Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning
[WWW]
cv
Moderador
[Avatar]

Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline

Ok, vamos supor que vc escreve as views usando freemarker e as actions em javascript, jython ou jruby.

Ou seja, o minimo de codigo java que acaba sobrando no seu projeto eh o modelo de dominio e uns pedacos de hibernate aqui e ali.

Dai vc percebe que, na verdade, Account eh uma *instancia* de Product, e instancias de Product sao ProductHoldings, e esses objetos tem semanticas completamente diferentes do que vc estava esperando.

Voce usa Eclipse ou IntelliJ.

O que vc faz? Senta no canto e chora, ne?
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
Rubem Azenha
GUJ Master
[Avatar]

Membro desde: 28/06/2004 00:10:43
Mensagens: 1933
Localização: São Paulo, SP
Offline

Ah, bem, aí você esta falando do problema de linguagens com tipagem fraca.

Eu particularmente prefiro usar uma linguagem dinâmica (no sentido de ser totalmente interpretada) mas com tipagem forte.

Bem, o que pode ser feito para contornar o problema para quem usar tipagem fraca?



Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning
[WWW]
Grinvon
GUJ Master
[Avatar]

Membro desde: 18/08/2003 22:10:49
Mensagens: 1899
Localização: Em qualquer lugar
Offline

Eu tinha pessando nisso, quando soube que o Java 6 iria suportar linguagens de script de forma dinâmica. Então pensei, então poderiam construir frameworks como RoR de forma que dentro do Java tive-se uma aplicação rails quase que idêntica a uma RoR.

>> Inocêncio.
[MSN] [ICQ]
cv
Moderador
[Avatar]

Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline

A diferenca eh que, numa app escrita em Rails, quase todo o "codigo" eh Ruby - e tem um nadica de YAML.

Numa aplicacao J2EE, voce pode usar umas 4 ou 5 "linguagens" diferentes antes de perceber:

- JSP / Velocity / FreeMarker
- Properties
- Hibernate XML
- web.xml
- Java

Jogando Jython, Rhino ou JRuby em cima, vc dificulta ainda mais qualquer refactoring, pq nao so as suas ferramentas tem que conhecer todas essas linguagens, mas vc tb tem que ser capaz de saber onde as referencias a objetos de outros mundos tao vindo, e se eles vao ou nao ser afetados.
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
agsilva
JavaChild

Membro desde: 17/07/2006 20:17:47
Mensagens: 142
Offline

cv wrote:A diferenca eh que, numa app escrita em Rails, quase todo o "codigo" eh Ruby - e tem um nadica de YAML.

Numa aplicacao J2EE, voce pode usar umas 4 ou 5 "linguagens" diferentes antes de perceber:

- JSP / Velocity / FreeMarker
- Properties
- Hibernate XML
- web.xml
- Java

Jogando Jython, Rhino ou JRuby em cima, vc dificulta ainda mais qualquer refactoring, pq nao so as suas ferramentas tem que conhecer todas essas linguagens, mas vc tb tem que ser capaz de saber onde as referencias a objetos de outros mundos tao vindo, e se eles vao ou nao ser afetados.


Puxa, tens toda razão cv. Mas, e se fosse usada apenas uma linguagem, como Groovy? Acho que não seria tão afetado, desde que a equipe toda estivesse por dentro.

Ah, só pra destacar: dá pra contornar o Hibernate XML usando Hibernate Annotations.
pcalcado
Moderador
[Avatar]

Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline

Se você mantêm actions muito simples uma linguagem mais leve pode facilitar, desde que:

1 - Ela elimine algumas das chatices de trabalhar com Servlets/HTTP/Request-Response, se não use Java
2 - Você não tenha um acoplamento tão forte com seus objetos de domínio. Meia dúzia de gets, iterações, poucos condicionais e só.

Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay
[Email] [WWW] [Yahoo!] [MSN]
rodrigoy
GUJ Ranger
[Avatar]

Membro desde: 18/04/2006 01:06:28
Mensagens: 758
Localização: São Paulo
Offline

Deixa eu dar os meus $0,02... no caso do struts, abusar do jakarta commons ajuda um pouco. Vcs conhecem o LazyValidatorForm? Segue um exemplinho:

O JSP:


A action:


O struts-config.xml:


Moral da história. Com o LazyForm tudo que está no JSP vai para a Action. Com o copyProperties tudo que está no entity é copiado para o Form. O Lazy form dá uma tipagem mais leve para o form do struts.


Rodrigo Yoshima
www.ASPERCOM.com.br

Próximas Turmas:
São Paulo: Scrum 28/agosto | OOAD-UML 13/setembro

Débito Técnico Blog: blog.aspercom.com.br
[WWW]
felipecruz
JavaTeenager

Membro desde: 18/07/2006 10:25:29
Mensagens: 150
Offline

Bom.. eu ja fiz um framework academico de MVC onde um dos hotspots eram valicações em scripts (groovy ou beanshell) como um aspecto (antes de chegar no action mesmo)

mas o action em si mesmo em script eu já nao sei o que ele tras de tão vantajoso, e até pode atrapalhar no refactoring como ja disseram


loogica - http://blog.loogica.net
SpeedRace.Claude
What is classpath?
[Avatar]

Membro desde: 10/09/2008 18:21:38
Mensagens: 7
Offline

PessoALL, eu estou precisando estudar uma dessas linguagens que trabalham com JAVA.
EX: JSP, Velocity, Groovy.

Estou no Rio de Janeiro e estou procurando cursos para trabalhar com isso.

This message was edited 1 time. Last update was at 12/09/2008 14:56:31

 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team