| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/06/2008 21:39:31
|
Igor Novaes
JavaBaby
![[Avatar]](/images/avatar/cc88ced1e298d32dcad4c0aff35ab56f.jpg)
Membro desde: 21/03/2007 21:07:43
Mensagens: 95
Offline
|
Caros amigos.
Estou pretendendo fazer uma revisão sobre o pacote Swing para encarar um sistema de pequeno a médio porte com esta aplicabilidade.
Gostaria de abrir uma discussão com este tópico, e é até uma dúvida minha sobre o assunto de qual arquitetura mais utilizada/recomendável para trabalhar com Swing e banco de dados.
Eu até o momento estou arquitetando o desenvolvimento como faço no J2EE com (MVC - JavaBean - JSP) e a segunte hierarquia de classes para trabalhar em DeskTop:
Conexão.java - extendendo da Classe JFrame;
Classes DTO - extendendo de Conexao;
Classes DAO - extendendo das Classes DTO;
Formulários Frame - extendendo de Classes DAO implementando ActionListener;
Classes de Start extendendo dos Formulários.
Existe uma cultura mais padronizada/utilizada pela comunidade java ou realmente eu posso ter um sistema bem arquitetado desta forma?
Gostaria muito que isso fosse comentado por vocês até mesmo pra eu ter a certeza do que posso aplicar pra obter uma performace sadia.
E claro para todos aqueles que tenham esta grande e importante dúvida sobre o assunto.
Muito obrigado.
Abraço a todos.
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/06/2008 21:50:31
|
Bruno_Leonardo
JavaEvangelist
Membro desde: 25/01/2008 17:13:57
Mensagens: 406
Offline
|
Cara,
Por incrível que pareça iria postar um tópico com o mesmo questionamento do seu, afinal essa dúvida persiste em minha cabeça já algum tempo. Espero que os colegas experientes possam dar seus apoios e compartilharem seus conhecimentos.
|
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/06/2008 01:51:39
|
RafaelRio
Java Ninja
![[Avatar]](/images/avatar/e81218f96c55d1006352ed0a3b08d790.jpg)
Membro desde: 05/09/2006 06:52:42
Mensagens: 255
Localização: São Paulo
Offline
|
Igor Novaes wrote:Caros amigos.
Estou pretendendo fazer uma revisão sobre o pacote Swing para encarar um sistema de pequeno a médio porte com esta aplicabilidade.
Gostaria de abrir uma discussão com este tópico, e é até uma dúvida minha sobre o assunto de qual arquitetura mais utilizada/recomendável para trabalhar com Swing e banco de dados.
Eu até o momento estou arquitetando o desenvolvimento como faço no J2EE com (MVC - JavaBean - JSP) e a segunte hierarquia de classes para trabalhar em DeskTop:
Conexão.java - extendendo da Classe JFrame;
Classes DTO - extendendo de Conexao;
Classes DAO - extendendo das Classes DTO;
Formulários Frame - extendendo de Classes DAO implementando ActionListener;
Classes de Start extendendo dos Formulários.
Existe uma cultura mais padronizada/utilizada pela comunidade java ou realmente eu posso ter um sistema bem arquitetado desta forma?
Gostaria muito que isso fosse comentado por vocês até mesmo pra eu ter a certeza do que posso aplicar pra obter uma performace sadia.
E claro para todos aqueles que tenham esta grande e importante dúvida sobre o assunto.
Muito obrigado.
Abraço a todos.
Não vou conseguir dar nenhuma resposta mais elaborada agora - mesmo porque eu ainda penso bastante em como fazer um design legal com Swing - mas veja o Presentation Model do titio Fowler e os artigos no sítio do JGoodies.
Essa thread e essa também podem te ajudar a pensar em algo, principalmente se seguir os links e testar alguma coisa.
Procure pelo Swing Application Framework (JSR-296) e o Genesis. Eu me dou melhor com o primeiro, mas vi um projeto em que usaram o Genesis e conseguiram uma ótima arquitetura. Esse software tinha testes unitários, domain model, AOP, tudo encaixadinho bonitinho, muito fera.
EDITADO: Com Swing, não tente separar a view do controller.
Sim, isso mesmo, vou repetir pra não acharem que escrevi errado e, pra quem achar que eu pirei, ter certeza de vez: não tente separar a view do controller!
Ficou mais confuso e na sua cabeça predominam ??????????????????????????????????? ? <- (Essa última interrogação só indica que a frase é uma pergunta, não está na sua cabeça.)
Veja o Presentation Model e o artigo A Swing Architecture Overview.
Mão na massa!
This message was edited 1 time. Last update was at 07/06/2008 02:00:33
|
Rafael Fiume.
Yes, Nós Temos Bananas
Sun Certified Programmer for the Java Platform, Standard Edition 6
Sun Certified Web Component Developer for the Java Platform, Enterprise Edition 5
Nullius in verba.
"A palavra de nenhum homem será a final."
Lema da Royal Society, associação de cientistas de Londres, em 1660. Entre os seus membros e presidentes esteve Isaac Newton. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/06/2008 08:25:50
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20581
Localização: Curitiba/PR
Offline
|
Os paradigmas desktop e web são bem diferentes. Por consequencia, a sua arquitetura também vai ser.
Acho que vc vai sobrecarregar sua arquitetura fazendo dessa forma. Sua aplicação não precisa ter as limitações do HTTP (sem conexão ou estado), seu cliente é consideravelmente mais poderoso e pode processar muita coisa para o servidor, etc...
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/06/2008 08:39:37
|
Bruno Laturner
GUJ Expert
![[Avatar]](/images/avatar/5800ccd9514fd789d08e5831951aa6bc.jpg)
Membro desde: 18/02/2008 16:17:53
Mensagens: 3002
Offline
|
Igor Novaes wrote:Conexão.java - extendendo da Classe JFrame;
Classes DTO - extendendo de Conexao;
Classes DAO - extendendo das Classes DTO;
Formulários Frame - extendendo de Classes DAO implementando ActionListener;
Classes de Start extendendo dos Formulários.
Já que a pergunta é sobre arquitetura:
Conexão é uma JFrame?
Objetos que só guardam dados são conexões?
Objetos que só fazem a interface com a persistência são objetos que guardam dados?
Formulários acessam o banco diretamente?
Essas "Start" faz tudo isso que disse acima?
Não quero sabe se é "Sim" para a sua arquitetura, quero saber se essa sua laranja é uma maçã.
O problema que vejo é que você está usando Herança para agregar funcionalidade, quando Herança foi feita para especializar tipos e comportamentos sobre dados.
|
A resposta acima foi achada em menos de 5 minutos no google.
The prisoner falls in love with his chains. --E.W. Dijkstra |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/06/2008 12:15:20
|
Igor Novaes
JavaBaby
![[Avatar]](/images/avatar/cc88ced1e298d32dcad4c0aff35ab56f.jpg)
Membro desde: 21/03/2007 21:07:43
Mensagens: 95
Offline
|
Esta arquitetura que desenhei é utilizada de forma a poder ter um reaproveitamento máximo do código e sem perder o padrão java bean.
Isto inclusive foi discutido com alguns professores do curso onde tomei curso de Java, e nenhum deles havia condenado este padrão. Mesmo porque faço uso da herança de classe - o grande ponto da O.O..
Sei que realmente é um assunto muito peculiar e específico para cada projeto, mas a minha laranja mesmo sendo maçã não deixa de produzir suco de laranja. Até fujo um pouco da normalidade dos formatos passados nos cursos e apostilas de Java que presenciei.
Mas, como o java é um planeta, sei que existe muita coisa pra ser descoberta. E programar em java é pesquisar sempre.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/06/2008 13:20:17
|
RafaelRio
Java Ninja
![[Avatar]](/images/avatar/e81218f96c55d1006352ed0a3b08d790.jpg)
Membro desde: 05/09/2006 06:52:42
Mensagens: 255
Localização: São Paulo
Offline
|
Igor Novaes wrote:Até fujo um pouco da normalidade dos formatos passados nos cursos e apostilas de Java que presenciei.
Se conseguir uma boa arquitetura, vai fugir totalmente do que encontra em apostilas. Só pra acrescentar ao que os camaradas já disseram:
ViniGodoy wrote:Os paradigmas desktop e web são bem diferentes. Por consequencia, a sua arquitetura também vai ser.
Acho que vc vai sobrecarregar sua arquitetura fazendo dessa forma. Sua aplicação não precisa ter as limitações do HTTP (sem conexão ou estado), seu cliente é consideravelmente mais poderoso e pode processar muita coisa para o servidor, etc...
Se mastigar o que o ViniGodoy disse, vai sair algo assim:
Pra que precisa de DTO's?
E parece que você vai delegar toda a lógica pro DAO ou view, Tem certeza que isso é bom?
Cara, DTO é da década de 70! Se você não usa EJB 2.1 pra baixo, é quase certeza que você não vai precisar deles.
E tenta sempre usar três camadas (apresentação, negócio, integração com a base). Cadê a camada de negócio na sua arquitetura?
Bruno Laturner wrote:] Já que a pergunta é sobre arquitetura:
Conexão é uma JFrame?
Objetos que só guardam dados são conexões?
Objetos que só fazem a interface com a persistência são objetos que guardam dados?
Formulários acessam o banco diretamente?
Essas "Start" faz tudo isso que disse acima?
Igor, muito mais que herança, coesão ajuda a ter um bom design OO. Herança tava na moda nas décadas de 80 e 90. Agora é "out", não é fashion!
Há maneiras melhor para conseguir aproveitamento de código.
Pergunta aos seus professores já ouviram falar da GoF. Sem GoF vai ficar difícil conseguir uma boa arquitetura e OO.
|
Rafael Fiume.
Yes, Nós Temos Bananas
Sun Certified Programmer for the Java Platform, Standard Edition 6
Sun Certified Web Component Developer for the Java Platform, Enterprise Edition 5
Nullius in verba.
"A palavra de nenhum homem será a final."
Lema da Royal Society, associação de cientistas de Londres, em 1660. Entre os seus membros e presidentes esteve Isaac Newton. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/06/2008 14:36:59
|
Igor Novaes
JavaBaby
![[Avatar]](/images/avatar/cc88ced1e298d32dcad4c0aff35ab56f.jpg)
Membro desde: 21/03/2007 21:07:43
Mensagens: 95
Offline
|
Cara, DTO é da década de 70! Se você não usa EJB 2.1 pra baixo, é quase certeza que você não vai precisar deles.
Rafael, vc já ouviu falar em "conceituar uma classe" para o sistema? Pois é disso que eu cito como DTO (padrão java bean - getters and setters).
Herança tava na moda nas décadas de 80 e 90. Agora é "out", não é fashion!
Eu acho que sistema, ainda mais com Java, sem herança de classe é como tomar sopa de garfo. Desculpe-me, mas Herança é fundamental e existe pra ser usada. Se não eu vou voltar pro ASP.
Mas é isso mesmo - eu acho que estas coisas são bastante complexas e eternamente discutíveis.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/06/2008 15:19:07
|
Bruno Laturner
GUJ Expert
![[Avatar]](/images/avatar/5800ccd9514fd789d08e5831951aa6bc.jpg)
Membro desde: 18/02/2008 16:17:53
Mensagens: 3002
Offline
|
Java Beans != getters e setters
DTOs != Java Beans
Herança != Reuso de implementações
Tua arquitetura != Orientada a Objeto
|
A resposta acima foi achada em menos de 5 minutos no google.
The prisoner falls in love with his chains. --E.W. Dijkstra |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/06/2008 07:46:26
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20581
Localização: Curitiba/PR
Offline
|
DTOs cheiram a structs do C. Aliás, nunca vi uma razão real para utiliza-los.
Eles adicionam muita redundância ao código.
No caso de aplicação desktop a camada Controller também não precisa ser tão grande. O mecanismo de eventos da própria linguagem pode se encarregar disso. Caso você queira computação distribuída em alguns pontos, o RMI cuida disso.
Vai ser muito mais transparente, mais simples e sem parafernalhas.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/06/2008 08:18:24
|
Igor Novaes
JavaBaby
![[Avatar]](/images/avatar/cc88ced1e298d32dcad4c0aff35ab56f.jpg)
Membro desde: 21/03/2007 21:07:43
Mensagens: 95
Offline
|
Pois bem,
Neste caso, como eu deveria pensar ao construir minha aplicação desktop com swing? Como deveria arquitetar?
E mergulhar em EJB 3.0 para aplicações de pequeno e médio porte é uma prática desnescessária?
Vlw...
|
|
|
 |
|
|