Arquitetura desktop - genesis ou mvc+swing+facades?  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
ronaldorezende
JavaGuru

Membro desde: 16/03/2005 14:26:23
Mensagens: 233
Offline

Pessoal,
estava pensando em fazer a aplicacao desktop com facades GerenciadorXxxxx, que seriam as regras de negócio (teria obter, salvar, excluir....). Os controladores das interfaces de usuário só iriam interagir com esses façaces. Os façades iriam usar o hibernate para persistência. As telas do programa iriam usar swing e para montar os formulários, iria usar builders do jgoodies forms.

Um colega deu a opinião de usar o framework Genesis. O genesis usa Thinlet e hibernate. Com ele não é necessário fazer os façades. Ele já faz a ligação dos POJOs nos componentes da interface de usuário.

Como ainda não tive tempo de avaliar o Genesis, gostaria de saber a opinião de vocês. A aplicação é simples. É um servidor de banco de dados firebird. E dificilmente terá mais que um usuário usando a aplicação ao mesmo tempo.

Eu já vi as vantagens do Genesis. Teria alguma desvantagem?

This message was edited 1 time. Last update was at 18/03/2005 10:16:41

caiofilipini
GUJ Master
[Avatar]

Membro desde: 26/06/2003 15:17:59
Mensagens: 1255
Localização: São Paulo
Offline

Olá, Ronaldo.

Aí vai a resposta do Michael, o criador do Genesis:

Michael Nascimento Santos wrote:Nao existe desvantagem em usar o genesis, Ronaldo. A unica coisa que talvez possa limita-lo seria o Thinlet em si, caso as interfaces exigissem funcionalidades que este framework nao oferece. Se for necessario usar Swing por causa disso, seria extremamente simples desenvolver um binding para Swing e tirar proveito de todas as outras funcionalidades do genesis.

A grande questao eh: voce quer reinventar a roda e sofrer ou tirar proveito de algo pronto e utilizado com sucesso por outras pessoas?

Para maiores informações, assine a lista de discussão usuarios@genesis.dev.java.net.


É isso.

[]'s

Caio N. Filipini
"There is no spoon."
[Email] [WWW]
Filipe Sabella
GUJ Expert

Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline

A desvantagem do Genesis é ser obrigado a usar o um servidor de aplicações, como o JBoss, por exemplo.
Quando ele diz que seria simples mudar a tecnologia de interface, basta reescrever os bindings, eu não boto nenhuma fé hehe é simples para ele, que conhece cada linha de código do projeto

Minha sugestão para você, Ronaldo, é a seguinte: se você manja bem de desenvolvimento de aplicações com Swing e comunicação remota OU está cheio de vontades de aprender, não use Genesis.
Mas se você quer desenvolver o software rapidamente, com qualidade garantida por uma grande empresa, use o Genesis. Neste caso, fique preparado para se irritar com o Thinlet caso a interface precise de algo a mais além de um punhado de formulários.

ronaldorezende wrote: Um colega deu a opinião de usar o framework Genesis. O genesis usa Thinlet e hibernate. Com ele não é necessário fazer os façades. Ele já faz a ligação dos POJOs nos componentes da interface de usuário.

Ele faz mais que isso. Na palestra que assisti, a parte chatíssima da interface com o usuário (clica aqui, desabilita ali, preenche ali) pareceu-me bastante facilitada com o uso do Genesis.

E, por último, se for fazer o treco na mão mesmo, não use POJOs, só por causa do Hibernate
http://wrschneider.blogspot.com/2005/01/avoiding-anemic-domain-models-with.html

Former LIPE.
[ICQ]
caiofilipini
GUJ Master
[Avatar]

Membro desde: 26/06/2003 15:17:59
Mensagens: 1255
Localização: São Paulo
Offline

Lipe, a pedido do Michael:

Michael Nascimento Santos wrote:Eh possivel rodar apps genesis sem servidor de aplicacoes, em modo local. Inclusive, o demo eh assim:

https://genesis.dev.java.net/nonav/2.1/maven-site/pt-BR/useradmin_sample.html

E esta eh a unica interface necessaria para um binding swing:

https://genesis.dev.java.net/source/browse/genesis/genesis/modules/client/src/net/java/dev/genesis/ui/controller/FormControllerListener.java?rev=1.3&view=markup


[]'s

Caio N. Filipini
"There is no spoon."
[Email] [WWW]
ronaldorezende
JavaGuru

Membro desde: 16/03/2005 14:26:23
Mensagens: 233
Offline

Caio,
o que quer dizer isso?
Tá certo que é a única interface necessária. Mas o que é necesário fazer para que o swing possa ser utilizado no lugar de thinlet?
Foi bom você dizer isso. Eu ia deixar de usar o genesis por ele não ser swing.
Mas ainda estou com dúvidas se uso ou não. Pois esse é meu primeiro projeto em java. Talvez eu ia terceirizar algumas coisas ou até ele todo. Mas se fosse feito em MVC com o Swing tradicional, seria mais fácil para que eu possa entender a coisa.

ronaldorezende
JavaGuru

Membro desde: 16/03/2005 14:26:23
Mensagens: 233
Offline

Mas se você quer desenvolver o software rapidamente, com qualidade garantida por uma grande empresa, use o Genesis. Neste caso, fique preparado para se irritar com o Thinlet caso a interface precise de algo a mais além de um punhado de formulários.

Não entendi muito bem. Sou novo em java e esta será minha primeira aplicação.
Qual seria o problema do Thinlet? Que tipo de coisa eu poderia precisar, que é além de um punhado de formulários, e que eu poderia não ficar satisfeito com o Thinlet.
É verdade que eu queria usar swing, pois ele é mais "oficial". Creio que deve existir mais coisas prontas para swing. Por exemplo, esses dias eu encontrei um componente open source para o usuário selecionar a data em um calendário (que mostra o mês o dia da semana,....).
Filipe Sabella
GUJ Expert

Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline

Caio, obrigado pelo link.
E rodar em modo local pode não adiantar em muitos casos hehe estava falando sobre implementar a comunicação client -> server com outra tecnologia que não EJBs.
Mas quanto ao Swing, realmente peço desculpas por ter falado besteira, pois assim parece simples o suficiente

Ronaldo, brinque um pouco com o Thinlet para saber sobre o que estou falando hehe mas, só para esclarecer, eu que sou maníaco por customização. Se sou podado do poder de fazer qualquer coisa que seja, fico irritado. Se não é o seu caso, e realmente sua aplicação conterá apenas alguns formulários, vá em frente!

E sim, realmente Swing contém muitas coisas prontas na Internet. Mas se um "widget" com calendário é tudo que você precisa .. po, constrói um você oras!

Faz quanto tempo que está programando em Java? Se sua experiência é pouca e o prazo é curto, recomendo o Genesis, sem dúvida.

Former LIPE.
[ICQ]
ronaldorezende
JavaGuru

Membro desde: 16/03/2005 14:26:23
Mensagens: 233
Offline

Que isso!! Eu amo software livre! Se já tem um calendário em software pronto que atende minhas necessidades, com certeza eu vou usar.
Fazer outro para trazer o mesmo benefício seria desprezar o trabalho dos outros. Tá certo, que as vezes é bom agente fazer pra aprender....

Mas vamos lá...

Se eu usar o Genesis, minha aplicação continará sendo MVC?
Terei minhas regras de negócio separadas e também minhas interfaces de usuário separadas?

Eu gostei muito da idéia dos gerenciadores de layout do swing. Principalmente do jgoodies forms. Minha idéia era usar o jgoodies forms para criar os formulários.
Criei um formulário para teste e foi muito simples. Veja o código abaixo.
Talvez no Thinlet não seja tao simples. No meu caso do swing, eu terei uma classe padrao, que instancia a janela padrão e adiciona o painel criado pelo jgoodies forms na janela.
Filipe Sabella
GUJ Expert

Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline

ronaldorezende wrote:Que isso!! Eu amo software livre! Se já tem um calendário em software pronto que atende minhas necessidades, com certeza eu vou usar.
Fazer outro para trazer o mesmo benefício seria desprezar o trabalho dos outros. Tá certo, que as vezes é bom agente fazer pra aprender....

Quis dizer com a minha fala que, se você quer usar Swing só por causa de um componente, melhor usar Thinlet de uma vez.

Quanto ao Genesis, não sou nenhum conhecedor da tecnologia, como ficou provado com a besteira que eu falei. Contudo, pelo que vi na palestra a separação de camadas fica desse jeito que você falou. Interface > Controler > Persistencia. Sendo que a parte de persistência quem cuida é o Genesis.

Por que você não ... humm ... experimenta? Não vai gastar 2h para aprender Thinlet. Já a curva de aprendizado do Genesis eu não sei, mas para sacar como ele basicamente funciona não me pareceu coisa de mais de um dia.

Former LIPE.
[ICQ]
mister__m
Virtual Machine Man
[Avatar]

Membro desde: 18/03/2005 16:13:17
Mensagens: 736
Offline

Bem, não seria muito legal continuar pedindo pro Caio responder as mensagens por mim

LIPE wrote:... rodar em modo local pode não adiantar em muitos casos hehe estava falando sobre implementar a comunicação client -> server com outra tecnologia que não EJBs.


Basta escrever um novo aspecto que faça a comunicação usando RMI, XML/HTTP ou outro protocolo. Parece difícil, mas não é Veja:

https://genesis.dev.java.net/source/browse/genesis/genesis/modules/aspect/src/net/java/dev/genesis/aspect/EJBCommandExecutionAspect.java?rev=1.10&view=markup

A idéia toda do genesis é permitir que o seu código não tenha "noção" dessas coisas e oferecer diversos pontos de extensão para o usuário - como permitir o binding para outras APIs gráficas de forma simplificada

Michael Nascimento Santos, aka Mister M

Summa Technologies do Brasil - http://www.summa-tech.com/
genesis: Uma nova forma de desenvolver aplicações - https://genesis.dev.java.net/
ThinNB: Suporte a Thinlet no NetBeans - https://thinnb.dev.java.net/
Líder da JSR-310 - Date and Time API
Expert Group Member das JSRs 207 (PD4J), 250 (Common Annotations), 270 (Java 2 SE 6.0), 296 (Swing Framework) e 303 (Bean Validation)
SouJava: Fortalecendo a comunidade Java brasileira - https://soujava.dev.java.net/ https://www.soujava.org.br/
JSR Community @ java.net - http://community.java.net/jsr
Blogs - http://blog.michaelnascimento.com.br/ http://today.java.net/pub/au/80
Twitter - @mr__m
[WWW]
ronaldorezende
JavaGuru

Membro desde: 16/03/2005 14:26:23
Mensagens: 233
Offline

Michael,
essa será minha primeira aplicação java. Será um ambiente muito simples. Terá um servidor de banco de dados e a aplicação rodando inteira no cliente. Quase sempre apenas 1 pessoa irá utilizar a aplicação. A aplicação também não será utilizada muito. É um programa pra fazer orçamento. Só será utilizada quando tiver orçamento para fazer. Talvez menos de 10 por mês.
O genesis é indicado mesmo para esse meu caso?

Qual seria o nível de acoplamento da minha aplicação a esse framework? Minhas regras de negócio ou interfaces de usuário seriam diferentes devido ao uso dele?
Um colega me disse que eu nao precisarei fazer os façades que eu iria fazer, se usasse o genesis. Eu ia fazer façades como GerenciarXxxx (obter, incluir, excluir...)
(desculpe essas pergunas, mas essa é minha primeira aplicação em java.)
mister__m
Virtual Machine Man
[Avatar]

Membro desde: 18/03/2005 16:13:17
Mensagens: 736
Offline

ronaldorezende wrote:essa será minha primeira aplicação java. Será um ambiente muito simples. Terá um servidor de banco de dados e a aplicação rodando inteira no cliente. Quase sempre apenas 1 pessoa irá utilizar a aplicação. A aplicação também não será utilizada muito. É um programa pra fazer orçamento. Só será utilizada quando tiver orçamento para fazer. Talvez menos de 10 por mês.
O genesis é indicado mesmo para esse meu caso?


Com certeza E permite que você escale sua aplicação no futuro, de modo a usar um servidor de aplicações, sem mexer em uma linha do código

ronaldorezende wrote:Qual seria o nível de acoplamento da minha aplicação a esse framework?


O que você quiser O genesis não te obriga a nada.

ronaldorezende wrote:Minhas regras de negócio ou interfaces de usuário seriam diferentes devido ao uso dele?


Não

ronaldorezende wrote:Um colega me disse que eu nao precisarei fazer os façades que eu iria fazer, se usasse o genesis. Eu ia fazer façades como GerenciarXxxx (obter, incluir, excluir...)


Faça o que for mais simples para resolver seu problema.

Para outras perguntas, é melhor usar as listas de discussão do genesis.

Michael Nascimento Santos, aka Mister M

Summa Technologies do Brasil - http://www.summa-tech.com/
genesis: Uma nova forma de desenvolver aplicações - https://genesis.dev.java.net/
ThinNB: Suporte a Thinlet no NetBeans - https://thinnb.dev.java.net/
Líder da JSR-310 - Date and Time API
Expert Group Member das JSRs 207 (PD4J), 250 (Common Annotations), 270 (Java 2 SE 6.0), 296 (Swing Framework) e 303 (Bean Validation)
SouJava: Fortalecendo a comunidade Java brasileira - https://soujava.dev.java.net/ https://www.soujava.org.br/
JSR Community @ java.net - http://community.java.net/jsr
Blogs - http://blog.michaelnascimento.com.br/ http://today.java.net/pub/au/80
Twitter - @mr__m
[WWW]
Filipe Sabella
GUJ Expert

Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline

Obrigado pelos esclarecimentos Michael. Não imaginava que seria simples assim, mais uma vez parabéns pelo projeto.

Pergunta: alguém da comunidade do Genesis já tomou a iniciativa de implementar a interface adaptadora para Swing?

Former LIPE.
[ICQ]
mister__m
Virtual Machine Man
[Avatar]

Membro desde: 18/03/2005 16:13:17
Mensagens: 736
Offline

LIPE wrote:Pergunta: alguém da comunidade do Genesis já tomou a iniciativa de implementar a interface adaptadora para Swing?


Não que eu saiba. De vez em quando aparecem amigos meus dizendo que conhecidos deles estão usando genesis, então, nunca sei

Nosso plano inicial era fazer isso no genesis 4.x. Contudo, se alguém financiar essa tarefa, pode sair antes. Vamos torcer.

Michael Nascimento Santos, aka Mister M

Summa Technologies do Brasil - http://www.summa-tech.com/
genesis: Uma nova forma de desenvolver aplicações - https://genesis.dev.java.net/
ThinNB: Suporte a Thinlet no NetBeans - https://thinnb.dev.java.net/
Líder da JSR-310 - Date and Time API
Expert Group Member das JSRs 207 (PD4J), 250 (Common Annotations), 270 (Java 2 SE 6.0), 296 (Swing Framework) e 303 (Bean Validation)
SouJava: Fortalecendo a comunidade Java brasileira - https://soujava.dev.java.net/ https://www.soujava.org.br/
JSR Community @ java.net - http://community.java.net/jsr
Blogs - http://blog.michaelnascimento.com.br/ http://today.java.net/pub/au/80
Twitter - @mr__m
[WWW]
ronaldorezende
JavaGuru

Membro desde: 16/03/2005 14:26:23
Mensagens: 233
Offline

Financiar?
Quanto seria em horas e R$ ?
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team