Java Desktop Ou Web

Preciso desenvolver vários sistemas para o hospital em que trabalho. Qual seria ma melhor de fazer isso?

Desenvolver um sistema para cada departamento usando Java desktop ou fazer um grande sistema web?

Olá

Como muitos aqui já sabem, eu tenho enorme dificuldade de entender quando alguém fala na opçao entre desenvolver Java desktop e web. Para mim e para muita gente na Sun, Java desktop é isso ou o novo sistema da Sun.

Você não está confundindo a camada de apresentação com a arquitetura do sistema?

Independente da camada de apresentação ser via browser ou via swing não há quase nenhum sentidio em desenvolver sistemas em 2004 que não sejam com arquitetura web. Mesmo que seu sistema seja separado por departamentos é claro que devem acessar uma base de dados comuns e deve haver alguma outra aplicação vendo dados consolidados a partir das aplicações departamentais.

Resumo: não faça como a Microsoft que pensa que trabalhamos isolados do mundo. Desenvolva sempre pensando em arquitetura web.

[]s
Luca

Olá Luca.

O que eu pude entender, (também uso este vocabulário), é que uma aplicação desktop tem as seguintes caracteristicas:

  • É aquela aplicação que deve ser baixada no HD do cliente e executada por uma linha de comando.
  • Provavelmente utiliza o swing para interfaces com o usuário.

Para os programadores de outras linguagens como VB ou Delphi fica mais facil entender o que é uma aplicação desktop e uma aplicação WEB. Basicamente, em uma aplicação WEB o usuário abre o navegador e digita http://… e entra na aplicação não precisando de uma instalação, configuração de variavéis de ambiente, drives odbc, clients de banco de dados, etc…

Um exemplo de uma aplicação desktop é o IRPF java2004.

O grande lance agora é poder juntar as duas tecnologias, isto é, uma aplicação WEB (http://…)
com a interface grafica do desktop, (swing, swt, xul, etc), integrandos com frameworks como SPRING, WEBWORK, etc…

Abraços.
Orlando Cesar Martins

Olá

Orlando, uma aplicação web não precisa abrir browser. Há um monte de aplicações swing por aí que usa http/https para se comunicar com um servidor web e não abrem browser. Há uma coisa que vivo repetindo aqui:

Não escrevam sistema nenhum confinado em redes locais e usem na camada de apresentação o protocolo http/https na porta 80 para se comunicar com as outras camadas.

Se vai desenvolver uma aplicação para uso de um tribo de índios isolada no meio da Amazonia isto não é motivo para violar tudo que se considera hoje como boas práticas. Nunca cometa a loucura de permitir que a camada de apresentação acesse diretamente o banco de dados. A tribo de índios mesmo sem antena parabólica conectada à web, deve ter uma rede local e um dia a web chega lá. Coloque no servidor um aplicativo que receba posts ou gets e devolva respostas também por http/https. Se um dia o cacique viajar até uma outra tribo e perceber que lá existe web, vai querer usar sua aplicação até durante suas caçadas na mata.

No dia em que o cacique solicitar uma pequena atualização você perceberá a bobagem que seria usar uma aplicação cujo ÚNICO meio de instalação seja o antiquado ato de baixar de um CD. Se o ambiente de desenvolvimento não tem algo parecido com Java Web Start ou download controlado de upgrades de versões então fuja correndo dele.

[]s
Luca

Luca

Quando eu programava em CLIPPER faziamos um grande esforço para desmembrar as camadas, muitas vezes não era possivél; Mais quando migrei para o Delphi, isto se tornou regra. Nem todos os programadores Delphi programam “orientados a eventos”. Quando se fala em aplicação WEB , estou querendo dizer exatamente uma aplicação (camada view) que rode no navegador, e uma aplicação desktop é aquela que roda através de linha de comando, isto é, (camada view) não roda no navegador como (jsp, xul, etc…). Provavelmente nossos termos estão errados. Até gostaria de seber onde encontrar uma literatura para que eu possa entender melhor estes termos.

Abraço.
Orlando Cesar Martins

Olá

É simples. Esqueça completamente esta noção de que aplicação web PRECISA rodar no browser. Isto é misturar arquitetura que é uma coisa muito mais ampla com a camada de apresentação que é única e exclusivamente aquilo que vai para a tela do modo que você conseguir.

Até clipper poderia ser usado na camada de apresentação de um sistema distribuido com arquitetura web se você construisse uma outra aplicação intermediária que trocasse dados com o clipper e os passasse para um servidor com protocolo http/https. É claro que não teria sentido usar arquivos dbf para persistir a lógica do negócio mas eles poderiam ser usados muito bem para armazenar logs no cliente.

[]s
Luca

Valeu Luca. Agora vamos para o post do MVC.

Abraço.

bastante interessante a discussao. só que fiquei com uma dúvida: se uma aplicação Web é algo tao abrangente, como se chama especificamente aquele tipo de aplicação que roda no brower (html+javascript+css…) e eh feita com servlets/jsp/php/asp/… ?

Olá

Chama-se aplicação web. É composta da camada de apresentação que é apenas uma de suas partes + a camada de controle feita pelos servlets + a lógica do negócio que inclui persistência, infra-estrutura de serviços.

[]s
Luca

E como se chama uma aplicação que usa JMenu, JFrame, JPanel, JTree, etc na camada view e tem as outros camadas (M,C) e persistência.

Orlando.

Olá

Tudo misturado rodando na mesma máquina ou confinada em uma rede local? O nome claro desta porcaria é coisa obsoleta.

[]s
Luca

Então o programa da RF é uma porcaria? Veja o paralelo, a receita disponibilizava este programa em Delphi, como o governo federal esta adotando tecnologias free, passou a adotar o java como plataforma de desenvolvimento. Com isto o governo esta colocando para o usuário uma opção que até pouco tempo não existia. Hoje posso baixar o aplicativo e rodar no Linux.

Orlando

Olá

  1. O programa da receita não é uma aplicação isolada e se conecta ao servidor web no momento certo. Não esqueça que o programa da receita faz parte de um sistema muito, mas muito complexo mesmo, que processa e analisa as declarações. O que você vê é a apenas o que a gente chama de captura de dados.

  2. Mas pensando bem o programa da receita poderia ser bem melhor. Porque você não pode seguir fazendo sua declaração de imposto de renda no escritório quando começa fazendo ela em casa?
    O melhor seria um sistema suficientemente seguro com dados encriptados com uma senha privada só sua (sem acesso da receita) e armazenados em um servidor da receita com acesso web. Quando acabasse sua declaração você poderia apagar as declarações intermediárias que fez só para comparar opções e enviava a definitiva sem a criptografia privada. Atualmente o trafego na rede não comporta um sistema assim, mas no futuro pode ser assim.

[]s
Luca

Luca não entendo quando você fala de aplicação isolada. Não existe uma aplicação isolada. Toda aplicação basicamente lê as informações do usuário, processa e envia uma resposta (entrada, processamento e saida). Se o processamento é local ou remoto não importa. No Delphi inicialmente nos programavamos em cliente/servidor, isto é, 2-camadas, para migrar o sistema para 3-camadas, era só mudar o DM para RDM e hospeda-lo em um servidor, que poderia ser local ou remoto. O artigo do Lozano fala justamente isto (a confusão entre MVC e 3-camadas), e a junção das duas gera uma aplicação MVC com 4-camadas. Me corrija se estiver errado.

A camada View e Control da aplicação da receita é o programa que baixamos na internet.

A camada Model lê as informações do View, processa, persiste (Não importando qual a forma utilizada para o transporte dos dados).

Uma aplicação em três camadas é dividida assim:

1ª Camada View
2ª Camada processa os eventos (executando commit ou rollback, store procedures, etc).
3ª EX. Servidor de banco de dados que processa as informações e envia os resultsets para a 2ª camada que analiza e volta a 1ª camada.

Orlando.

Olá

Aplicação isolada é aquela que é confinada em uma rede local. Para ver os dados de uma filial é preciso fazer replicação ou outros malabarismos. Isto está obsoleto e a maioria das empresas está migrando para um modelo onde tudo está massivamente conectado.

Não raciocine com o modelo cliente servidor nos dias de hoje senão vai ter enormes dificuldades de modelar aplicações que as vezes podem estar com camadas espalhadas pelo mundo.

Esqueça principalmente tudo o que aprendeu sobre colocar componentes de acesso a banco de dados na tela da aplicação. As antigas versões do Delphi e do VB induziam o programador a cometer este erro. Esqueça isto em Java. A gente programa usando pool de conexões no servidor e não mandando o patrão comprar banco de dados enterprise ou com uma conexão por cliente GUI.

E volto a insistir: o programa da receita é apenas e tão somente um capturador de dados. É como o PINpad que lê seu cartão de crédito criptografa, envia ao servidor e recebe a autorização. O programa da receita é só isto: captura sua declaração, envia ao servidor e recebe a confirmação.

O sistema da receita usa os dados capturados pelo programa que roda na sua máquina da mesma forma que a administradora de cartão de crédito usa os dados capturados pelo programa que roda no PINpad.

Nem o programa do PINpad e nem o programa da receita rodam confinados em uma rede local. Apenas o program da receita tem uma opção que pode ser usada como workaround em casos especiais para gerar um disquete.

[]s
Luca


Eu nunca aprendi assim Luca. Imagina uma aplicação em que a tabela clientes do banco de dados é utilizada em diversos módulos, o dia que você alterar a estrutura da tabela, terar que aplicar as mudanças em diversas partes do sistema. Isto é loucura. Não conheço ninguém que programe assim. Não sei de onde veio esta idéia. Isto não é regra e sim excessão.

Luca o Delphi proporciona uma gama de arquiteturas e procedimentos para executar uma determinada tarefa, assim como o java. Existem n formas de se desenvolver uma aplicação, algumas politicamente corretas e outras não. O problema é que o Delphi e VB criaram a ilusão de que todos poderiam ser PROGRAMADORES DE COMPUTADOR, (pela facilidade do uso), porém isto não é verdade, existem metodos e arquiteturas para o desenvolvimento, (que muitas vezes não são seguidas pelos ditos PROGRAMADORES), mais existem diversos programadores que sabem utilizar estas ferramentas para compor aplicações de alto nivél. Eu nunca trabalhei com programadores que utilizassem componetes de conexão e acesso a dados nos forms, e sim no DM, criando uma 2ª camada.

Orlando