Aplicação Cliente-Servidor em java

Olá comunidade!

Certa vez queria desenvolver um software deskto em Java que trabalhasse em rede. Era uma aplicação de estudo, nada profissional onde eu deveria cadstrar algumas coisas e nada mais. um programador me falou que eu poderia colocar o banco de dados e a aplicação em uma máquina e apontar um atalho para os demais hosts da rede. Bem, funcionou perfeitamente, até porque não havia carga para “stressar” o sistema. minhas dúvidas são: esta é a prática recomendável para desenvolver aplicações cliente-servidor em Java? Quando deve-se usar um servidor de aplicações como JBoss ou outro assim? Estou perguntando isso por que preciso desenvolver uma aplicação deste tipo, que vai ser acessada por vários usuários ao mesmo tempo e estou pensando em fazer isso com Java.
Detalhe: Nas operações com banco de dados eu utilizo procedures no MySQL.
Qualquer dica ou opnião eu agradeço!

Ola, na verdade aqui temos coisas BEMMM distintas digamos assim…
O conceito aplicação client - server, é quando tu trabalha com aplicações distribuídas, ou seja… tu tem 2 JVMs rodando distintamente. Isso podemos falar sobre RMI ou Sockets com Objetos Serilizados trafegando na rede.
Quando falamos em aplicações WEB, ai sim tu vai precisar de um servidor d aplicações, e suas aplicações rodando tudo via web.
Vale apena analisar o seu cenário e ver qual é a melhor solução para o seu cliente.

Obrigado por sua atenção Rafael!

O programa que eu vou desenvolver não tem necessidade de rodar em interface web. É bem simples mesmo, e eu poderia desenvolver utilizando a ferramenta com a qual trabalho, que é o Genexus (pouca gente conhece), mas como quero começar a desenvolver em Java resolvi avaliar principalmente a questão de desempenho.
Não sei se minha dúvida ficou clara na minha primeira mensagem, mas o que realmente eu gostaria de saber de vocês mais experientes na linguagem é: Para uma aplicação desktop que vai ser acessada por vários usuários simultaneamente, qual seria a melhor forma de distribuição?

  1. instalar em cada estação de trabalho uma versão do programa que aponta para um banco de dados que está na rede?
  2. instalar somente em uma máquina o aplicativo .jar e apontar atalho nas demais máquinas?
  3. utilizar programação em redes (RMI, sei lá) para dividir responsabilidades e fazer alguns métodos serem executados de maneira remota? Já ouvi falar de um framework Gênesis…
  4. nenhuma dessas maneiras porque aplicações deste tipo em Java são desenvolvidas de outra forma! hehehe :slight_smile:

obs.: só quero lembrar que vou utlizar o MySQL com store procedures para todas as operações com banco de dados.

:shock: Bom dia Povo,

Tive que ressucitar este tópico pois é muito de meu interesse.

Alguém tem resposta para o ultimo post do amigo gilmarcandPJ :?:

Grato.

Existem várias opções a escolha.

Se você está somente criando conexão com o banco, poderia usar um jar com suas dependências e apontar o endereço do banco usando o ip do servidor.

Você poderia usar RMI sim, deixaria o trabalho bem simples e colocaria boa parte da ‘carga de processamento’ no servidor.

Você poderia escrever o client usando JSP ou JSF e rodar os mesmos no navegador.

Você poderia usar webservice e consumir os mesmos por meio do JAX-WS que, se não me engano, dá pra ser usado em uma aplicação JSE.

Ou você poderia usar EJB com um servidor de aplicação.

Tudo depende do que o software vai fazer.

valeu André,

No meu caso é só um cliente servidor simples.

Opa. Desculpe demorar tanto pra responder. Se é só um cliente servidor (sem internet), um RMI pode dar conta do recado.

Abraço.