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?
Aí vai a resposta do Michael, o criador do Genesis:
[quote=Michael Nascimento Santos]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?
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.
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.
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.
public interface FormControllerListener {
public void enabledConditionsChanged(Map updatedEnabledConditions);
public void visibleConditionsChanged(Map updatedVisibleConditions);
public boolean beforeInvokingMethod(MethodMetadata methodMetadata)
throws Exception;
public void afterInvokingMethod(MethodMetadata methodMetadata)
throws Exception;
public void dataProvidedListChanged(DataProviderMetadata metadata,
List items) throws Exception;
public void dataProvidedIndexesChanged(DataProviderMetadata metadata,
int[] selectedIndexes);
public void valuesChanged(Map updatedValues) throws Exception;
}[/code]
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,…).
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.
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.
[code] public PainelArmazem() {
super();
iniciarComponentes();
FormLayout layout = new FormLayout("right:pref, 3dlu, 35dlu, 7dlu, right:pref, 3dlu, " +
“35dlu”);
DefaultFormBuilder builder = new DefaultFormBuilder(layout);
builder.setDefaultDialogBorder();
builder.appendSeparator("Armazém");
builder.append("Volume",volume);
builder.append("Comprimento",comprimento);
builder.append("Área",area);
builder.append("Quantidade de Charutos",quantidadeCharutos);
add(builder.getPanel());
}[/code]
[quote=ronaldorezende]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…
[/quote]
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.
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,
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.)
[quote=ronaldorezende]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?
[/quote]
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
O que você quiser O genesis não te obriga a nada.
Não
Faça o que for mais simples para resolver seu problema.