Hsqldb X H2 X Derby

Pessoal to desenvolvendo em java um sistema de automação comercial
de supermercado de pequeno e medio porte(sendo que possui um modo administrativo usando RMI) e estou utilizando o banco de dados mysql so que estava pensando em troca o banco de dados pelo hsqldb ou H2 ou Derby para poder fazer a integração do banco de dados e a aplicação, entao quero algum conselhos, dicas,opnião sobre o assunto.

Olá

Não entendi bem onde entra o RMI. É para comunicação com a base de dados?

Também não entendi na sua arquitetura onde ficará a base de dados. Será uma para cada terminal de caixa?

Já pensou em usar HTTP para fazer a comunicação entre os terminais de caixa e o módulo administrativo usando servlets? Conhece HttpClient? XML-RPC? XStream? JMX?

[]s
Luca

o software e divido em 3 partes - estou usando hibernate

modulo administrativo que gerencia o banco de dados

Contém
Gerenciamento de Produtos
Gerenciamento de Funcionarios
Gerenciamento de Fornecedores
Gerenciamento de Transportadoras

modulo Administrativo Remoto para fazer o gerenciamento de banco de dados remotamente

modulo venda - programa de vendas para os caixas

os caixa fazem um acesso remoto

servlets? Conhece HttpClient? XML-RPC? XStream? JMX?
nao conheço mais estou trabalhando para desktop com swing
posso utiliza algum deles ?
qual vc me recomenda ?

e sobre o banco de dados, qual vc me recomenda ?

Olá

[quote=zerxxx]os caixa fazem um acesso remoto

servlets? Conhece HttpClient? XML-RPC? XStream? JMX?
nao conheço mais estou trabalhando para desktop com swing
posso utiliza algum deles ?
qual vc me recomenda ?
[/quote]

Na verdade quase todos. O fato da camada de apresentação ser Swing não impede que se use servlets.

Você poderia colocar um servlet engine em uma máquina qualquer servidora que pode ser a mesma onde ficará o módulo administrativo.

Você pode usar HttpClient para enviar mensagens XML para o servlet que você vai desenvolver e instalar no servlet engine (tomcat, jetty, etc.). As mensagens podem ser objetos serializados com XStream. Ou outra alternativa seria usar o Apache XML-RPC para que a aplicação de caixa solicite a execução de métodos no servidor.

Todas estas mensagens se iniciam no cliente e o servidor responde. Pode haver casos em que o cliente envie uma confirmação de recebimento sem que o servidor precise responder mas isto já é coisa do seu protocolo de troca de informações entre cliente e a retaguarda.

Para que o servidor se comunique com a aplicação cliente, faça com que de tempos em tempos o cliente envie uma consulta do tipo “sonda” perguntando: ei, tem alguma mensagem para mim?

O JMX você pode usar para reconfigurar alguma coisa no servidor sem precisar tirar o sistema do ar. É uma das facilidades do Java que poucos já se deram conta como é útil.

Quanto ao banco de dados eu não tenho a menor dúvida: entre as opções que você colocou, continue usando o MySQL. Os outros 3 são bancos mais simples. Você poderia avaliar o PostgreSQL e comparar com o MySQL.

A grande vantagem de você fazer a aplicação deste modo é que usando HTTP para se comunicar ao invés de RMI, você com facilidade poderá desenvolver futuros módulos que se comunicarão pela Internet abrindo possibilidades de ferramentas gerenciais que a direção poderá usar de qualquer parte do mundo. E se no futuro houver a adição de filiais já estará pronta a integração.

[]s
Luca

Poxa :shock:

que disse que ao mesmo tempo posso desenvolver uma aplicação web e
desktop.

tem algum tutorial,material que possa me recomenda para mim inicia?

Olá

[quote=zerxxx]Poxa :shock:

que disse que ao mesmo tempo posso desenvolver uma aplicação web e
desktop.[/quote]

Não foi bem assim. O que eu disse é que você pode fazer uma aplicação web com camada de apresentação Swing. O Firefox e o eMule são aplicações deste tipo.

O caminho para estudar deva passar no mínimo por tutoriais sobre:

  • protocolo HTTP
  • servlets
  • uso do tomcat ou do jetty
  • URLConnection
  • HttpClient
  • Serialização
  • XStream
  • Apache XML-RPC (escrevendo o servidor usando servlet)
  • arquiteturas de mensagens

Se achar complexo faça como sabe mas vá aos poucos estudando um modo melhor de fazer.

[]s
Luca

Eu ando usando muito o H2DataBase, na minha opinião é o melhor banco de dados para trabalhar com Java em modo embebido.

Se não tua plicação der para usar o H2DataBase embebido, então nem pensa duas vezes, vai ficar muito mais rápido que com MySql ou outros… basta ver no site do H2DataBase.com o gráfico de desempenho.

E depois na minha opinião já esta uma base de dados bem robusta pelo tempo q ela existe, daqui a pouco tempo ficará melhor ainda, ta evoluindo muito rápido.

Já falei algumas vezes com o Thomas Mueller, que lidera o projeto, e a equipe tem se dedicado muito, até encontrei um bug numa versão beta, que estava usando, e ele me enviou uma classe que resolvia o problema no mesmo dia…

É muito fácil falar com a equipe que desenvolve e dar alguns palpites e respondem muito rápido, tenho o Thomas aqui no meu GoogleTalk, e assim qualquer problema mais grave que tenho falo logo com ele e o problema fica resolvido, mas problemas sérios só tive mesmo 1, e na tal versão beta, portanto tá bem estável, mas o bom é q estão disponíveis para nos dar suporte a qualquer momento, e isto é muito bom num projeto open source, dá para confiarmos mais.

To muito satisfeito com o H2 e já dês das primeiras versões beta se tornou a minha base de dados preferida, e estou sempre a utiliza-la em quase todos os meus projetos.

Vale a pena conferir… :wink:

Quanto a trabalhar com Swing com WebBased por trás, não é uma má idéia, mas não sei até que ponto isto ia ser prático, e o tratamentos dos dados seria muito manual, além de poder ficar muitas breças de segurança…

Agora Luca, me tira uma dúvida, usar XStream ou JMX, quando se pode usar RMI, é preferivel?

Em termos de desempenho RMI não é bem mais rápido?

Só curiosidade que não estou por dentro do XStream e do JMX…

Mas pelo que sei estas APIs fazem o Stream de XML certo? E serialização não é melhor pois fica mais automático e evita os parses de XMLs?

Olá

Já trabalhei com várias aplicações assim, inclusive uma que tem mais de 10 mil clientes on line e nenhum dos seus medos ocorreu. O tratamento de dados é quase igual porque o Swing é só a camada de apresentação. A única diferença é que algumas consistências podem ser feitas no cliente (mas também precisam ser consistidos no servidor)

XStream não tem nada a ver com JMX e pouco a ver com RMI.

O problema do RMI é que na minha opinião a gente deve usar HTTP como protocolo de transporte para passar por firewalls com facilidade.

JMX serve para monitorar e gerenciar a aplicação.

XStream serve para serializar em XML que é muito bom para depurar as mensagens com facilidade. Se as mensagens forem MUITO simples, CSV pode funcionar.

Quanto a serialização pura você precisaria transmitir binário sobre HTTP como um anexo.

E usar Apache XML-RPC é um dos modos mais fáceis que conheço para fazer RPC usando XML sobre HTTP.

[]s
Luca

Valew Luca.

Obrigado ai pelas explicações :wink:

Só uma curiosidade nas aplicações que trabalhaste em Swing com WebBased foi usado alguma API pública para webclient? Ou foi desenvolvido um webclient expecífico? E vc conhece alguma API para webclient boa, que suporte cookies e posts multipart?

Olá

Usamos HttpClient mas não usamos sessions porque a própria aplicação tinha um protocolo de mensagens para garantir a integridade das transações. Não foi necessário usar sessions e posts multipart.

No caso das aplicações em que trabalhei as mensagens trocadas eram XML que encapsulavam o protocolo ISO8583 comum na área financeira. Em alguns casos simples usamos CSV. O importante é ter facilidade de depurar as mensagens porque aqui não pode haver nenhum erro.

[]s
Luca

Valeu Luca pela força !!!

to estudando pra valer