Arquitetura e frameworks para sistema desktop com Swing

4 respostas
A

Postei esta mesma mensagem no fórum de frameworks, aqui talvez eu tenha mais respostas:

Pessoal,
Tenho que converter um sistema de contabilidade feito em Clipper!!! (é isso mesmo e por incrível que pareça a empresa que o fez ainda o vende) para Java. O sistema será desktop mesmo com Swing e de banco de dados Firebird. Alguém tem alguma sugestão de arquitetura e framework (MVC , Java App Framework)? O último sistema Swing que trabalhei tudo era feito na mão, inclusive as telas.
A princípio pensei em desenhar as telas no Netbeans e desenvolver uma arquitetura tipo domain model com jpa, service e um controller que faria o tratamento de eventos, mas tenho um pouco de receio de ficar muito complexo para um sisteminha desktop. Se usar o blueprint da Sun começa entrar beans binding com Observer.

Alguém tem alguma sugestão? O cliente não liga muito se o sistema tá pouco acoplado e se tem arquitetura n camadas. Mas também não queria fazer nada tosco.

4 Respostas

hmichel

SUgiro você a dar uma olhada no genesis.dev.java.net/ e também não deixe de ver o NetBeans Platform em http://platform.netbeans.org/.

Att.

D

Fale amhfilho.

Nós aqui na empresa usamos um framework chamado JGenesis (desenvolvido aqui mas opensource), que tem por principal objetivo auxiliar no desenvolvimento de apps comercias em java. Integrado junto ao Spring, Hibernate e outros frameworks, ele estabelece toda uma infra usando parte da especificacao JavaEE e já fornece implementacoes básicas para muitas coisas (BDs, DAOs, BOs, etc). O JGenesis ja fornece tb componentes visuais e nao visuais swing que podem ser manipulados via Netbeans (navigator para colecoes de beans, textfields, comboboxes, etc… somente nas versoes do NetBeans 5.X por enquanto). O grande problema atual é a falta de documentação, mas o projeto já está disponível no site: [http://jgenesis.sourceforge.net/]. Caso haja interesse, estaremos por aqui pra dar uma ajuda.

Falow

PS. Desenvolvemos o ERP da empresa com auxílio do JGenesis.

A

Legal diogo_emilio ,
Vou dar uma olhada neste framework.
Valeu!

L

amhfilho

Uma sugestão de arquitetura:

Swing -> EventHandler -> UseCase-> WorkUnit ------> DAO -> JPA[color=white]
…[/color]|
[color=white]…[/color]------>Repository__> DAO -> JPA

EventHandler é um objeto java (pojo) que trata os envento gerados pelo swing. O objetivo é facilitar uma eventual substituição da interface com usuário.

UseCase-> É a classe que realiza o caso de uso. No seu exemplo de contabilidade, você teria algo como CadastraLancamentoUseCase, CadastraPlanoUseCase, etc… É nele que você escreve as regras de negócio. Acho ruim a prática de colocar as regras nos EntityBeans. No seu domínio da contabilidade (que conheço muito pouco), por exemplo, penso ser uma regra de negócio válida: “Não é permitido fazer lançamentos para períodos fechados”. Por favor, mesmo que não sejá válido, considere ser só para este exemplo, ok? :wink: Pois bem, poderia-se colocar esta regra no método Lancamento.setData. Mas acho ruim. A regra não é da Entidade Lancamento e sim do caso de uso CadastraLancamentoUseCase. Diferença importante principalmente em situações mais complexas.

WorkUnit -> é um padrão de arquitetura descrito pelo martin fowler. Permite que você tenha “transações de negócio” independentes do banco de dados. Assim, você pode abrir uma transação e deixá-la aberta indefinidamente sem trancar o banco. O banco só entra na jogada no “commit” da transação de negócio.

Repositoty -> É o responsável por permitir ao UseCase, obter as entidades que precisa para sua realização. No exemplo anterior, o LancamentoUseCase poderia utilizar o PeriodoRepository para obter o período informado e descobrir se ele está fechado.

DAO -> abstrai a tecnologia de persistencia. Se você tem certeza que sempre vai utilizar em ambientes compatíveis com JPA (não vai querer rodar em JME, por exemplo), pode, penso não é necessária.

Espero ter ajudado.

Abraços

Criado 4 de agosto de 2010
Ultima resposta 7 de ago. de 2010
Respostas 4
Participantes 4