Vamos ao exemplo prático:
-
Web:
- conteúdo: HTML
- formatação: CSS
- manipulação: Javascript
-
Desktop:
- conteúdo: Java
- formatação: Java
- manipulação: Java
Outro exemplo:
1- O cliente pede que não seja exibido 10 campos de entrada, apenas 5 são necessários, o resto será preenchido no banco com valores default.
-
Programador web:
- Além de mudar classes de negócio, ele vai mudar o HTML.
-
Programador Desktop:
- Além de mudar classes de negócio, ele vai mudar a classe que estende JPanel.
2- O cliente pede que a cor da barra de cima seja azul, e não vermelho.
-
Programador web:
-
Programador Desktop:
- Muda a mesma classe que estende JPanel.
Só pra clarear, o MVC é útil para separar o modelo da apresentação, mas este padrão não diz como é estruturado a View por si só. Na web, eu separo a visualização entre apresentação e conteúdo (usando CSS e HTML). No Desktop, não dá, a apresentação e o conteúdo é uma coisa só, tudo misturado. O problema é que o “mindset” Desktop não deixa ninguém considerar essa questão.
[quote=ViniGodoy]Entretanto, se o software exige um controle um pouquinho mais aprofundado do hardware, a web passa a tornar-se uma péssima alternativa. Nós, por exemplo, tinhamos um software que enviava mensagens via socket para um servidor, que o usuário escolhia.
Esse servidor controlava um equipamento, ligado em centrais telefônicas. Não era incomum um laboratório ter 2 ou 3 equipamentos desses. A aplicação então rodava testes e dava resultados em tempo real, com atrasos máximos tolerados na casa dos milissegundos.
Não sei, mas parece que transformar essa arquitetura em web seria uma grande idiotisse. Primeiro, porque cada cliente era, por si só, bastante autônomo. Não vejo muito por que concentra-los todos num único servidor web. Depois, não vejo como enviar pacotes de rede pelo cliente. Isso teria que ser feito no servidor, o que criaria um gargalo descenessário.
Sem falar que as respostas do hardware deveriam ser pintadas na tela, em forma gráfica e em tempo real. Com javascript até é possível fazer isso, mas não sem pooling e com muito menos eficiência do que fazíamos.
Outro caso são jogos, softwares de pintura, navegadores, aplicativos que gerenciam recursos no SO, e muitos outros tipo de software que não se resumam a cadastro/relatório. O desktop tem seu nicho, menor que o web, mas onde ele sempre será necessário.[/quote]
Eu acredito na lei de Atwood:
E a medida que o tempo passa, mais e mais tipos de aplicações passam a serem viáveis na Web. O seu exemplo pode ser considerado onde o Desktop era a melhor alternativa. Mas isso quando? Em 2007? Em 2010?
Vamos extrapolar: e se sua aplicação fosse requerida em 2019? Ainda acha que Desktop seria melhor que a Web? Veja, enquanto você descrevia o problema, eu imaginava como faria usando HTML5 e WebSockets. Algo impensável de se fazer hoje (dada a falta de disponibilidade no IE), mas que pode ser viável no futuro.
O Desktop tem seu nicho (e usaria se fosse necessário), mas é muito menor do que o pessoal pensa.
Sim, eu tenho minhas paixões. Mas eu não sou idiota. As minhas escolhas são baseadas em experiência, não em “press release” de vendors. E posso tranquilamente mudar de opinião, havendo bons argumentos.