[quote=julioromano]Pessoal
Sempre trabalhei com WEB e mesmo em Java, nunca fiz uma aplicação desktop profisisonalmente.
Em WEB, publico a minha aplicação em um servidor, o qual já possui um banco de dados instalado e eu apenas conecto a ele.
Minha dúvida é: Como isto funciona em uma aplicação desktop?
Digamos que eu tenha um aplicativo feito em Swing, utilizando banco de dados MySQL ou PostgreeSQL. Como poderia fazer para distribui-lo? O computador que fosse executar este aplicativo, obrigatóriamente precisaria ter o MySQL Server ou PostgreeSQL Server, instalado?
[/quote]
Depende. Se o seu programa funciona apenas para uma máquina (tipo word) o banco tem que ir junto do programa e cada programa tem o seu banco. Agora, se vc quer um sistema que só tem um banco mas tem multiplos programas descktop acessando é outra historia.
Se vc quiser o primeiro tipo então isso não é um sistema distribuido. Essa configuração é chamada standalone ( “está sózinho” )
Se v quiser o segundo tipo existem 2 opções
A primeira opção é fazer cada programa cliente no desktop se comunicar directamente com o banco de dados. Isso é conhecido como arquitetura cliente-servidor.
A segunda opção é fazer cada programa cliente se comunicar com um programa servidor. E esse servidor comunica com o banco. Só ele comunica com o banco. Isto é conhecido como arquitura 3-tier ou n-tier e é a mais semlahante a web. A diferença é que o cliente não é um browser, é um programa feito por vc.
O cliente-servidor está meio obsoleto. Ele tem graves problemas para controle de concurrencia e processo centralizados (robots temporizados por exemplo). Mas funciona e vale a pena em sistemas pequenos que nunca irão crescer .
A n-tier é o padrão. Foi para isso que se criaram os EJB, mas tem riscos elevandos para um iniciante. Vc tem que criar uma boa arquitura , provavelmente utilizar cache ou criar componentes hibridos que leem do banco mas escrevem pelo servidor centrar.
hoje em dia EJB pode ser usado para isso, mas existem outras formas como serilização + HTTP ou REST. Nenhuma é perfeita a virtude está em pegar o melhor de cada. É mais moderno que cliente-servidor, mais seguro, mas mais complexo.
Sistemas desktop distribuidos são naturalmente mais complexos que web, portanto não pense que vai conseguir da primeira um sistema perfeito. Estude bem padrões de projeto e arquitetura e modelos como o EJB para ter um ideia do que está em causa.