Diferenças entre desenvolvimento web e desktop

Olá amig@s.

Por mais repetitivo que esse tópico possa parecer, peço vossas contribuições na seguinte questão:

  • Sob o ponto de vista do desenvolvimento (i.e., sob a perspectiva do programador), quais as diferenças entre desenvolver apps para web e desenvolver apps para desktop?

Grato desde já.

Bom sou desenvolver de aplicações java.
E com base nisso de um modo bem claro e direto “Sob o ponto de vista do desenvolvimento” a diferença está nas tecnologias utilizadas para desenvolvimento da interface homem máquina. Pois as regras de negócios serão basicamente as mesmas.

Ex: No caso de java desktop você provavelmente usará Swing como framework gráfico. No web possivelmente JSF. Contudo a lógica por trás da action de um determinado botão em ambos os casos será mesma. Assumindo que estamos desenvolvendo o mesmo projeto em arquiteturas distintas.

Indo um pouco além de sua pergunta. Uma grande diferença entre as duas plataformas. É a que de certo modo uma aplicação web é “multiplataforma” e não requer a instalação em mais de um dispositivo, pois basta acessar o endereço da aplicação e a mesma já estará disponível. Diferente de uma aplicação desktop onde a mesma deverá ser instalada em cada dispositivo que a irá, sem levar em conta as possíveis incompatibilidade com certos S.O.s

A diferença é que a interface web é baseada em texto (HTML) e interface desktop é baseado em componentes nativos.

1 curtida

Não necessariamente. Vários do frameworks web trabalham com componentes. E no caso do desktop “arrastar e soltar” num quer dizer que você não está desenvolvendo uma interface em texto puro. Ao fazer isto a IDE gera automaticamente o código refente aquele determinado componente, para que você possa se concentrar mais em sua lógica de negócio do que na interface propriamente dita.

A base para comunicação de dados na web é o HT(exto)TP. Você poderia citar quais são esses vários frameworks web e que protocolo eles usam?

Uma API web é baseada em texto, uma API de componentes de interface é baseado em código C++, Java ou Swift. Não entendi o que IDE ou geração de código tem a ver, e porque alguém iria querer negligenciar o trabalho na interface?

Componente web texto
<p:dataTable var="car" value="#{dtBasicView.cars}">

Componente desktop texto
JTable tabela = new JTable(dados, colunas);

HTML Nativo texto puro
<table style="width:100%">

Visando a pergunta de @elfr - Sob o ponto de vista do desenvolvimento

Não está perguntando como é feito os recursos que ele irá utilizar. Mas sim na diferença de como usar.

O ponto de vista do desenvolvimento é sobre como usar?

Sem palavras. :scream:

Olá amigos.
Obrigado pelas respostas construtivas.

Antes de mais nada, apenas quero enfatizar que as diferenças são, como já dito por alguns colegas, sob o ponto de vista do desenvolvedor. Em outras palavras, a preocupação é: quais aspectos um desenvolvedor web se preocupa que não é objeto de preocupação de um desenvolvedor desktop? E vice-versa…

Assim sendo, após algumas pesquisas e levando em consideração o debate do tópico, consegui algumas respostas como:

  • Incompatibilidade: enquanto o desenv. web se preocupa apenas com a incompatibilidade de browser, o desenv. desktop de preocupa com as incompatibilidades de hardware, SO, drivers;
  • Processamento: o desenv. web faz uso “apenas” do processamento do servidor, enquanto que o desenv. desktop pode fazer uso do processamento da máquina do cliente;
  • O acesso aos recursos de uma app desktop é mais fácil que um app web
  • E assim sucessivamente…

No entanto, surgiram algumas dúvidas sobre as diferentes “plataformas”:

  • Como os app críticos funcionam na web? Por exemplo: o que o desenvolvedor deve levar em consideração na app crítica caso falte internet?
  • A diferença na construção/acesso ao BD?
  • Onde os testes são mais fáceis?
  • Etc.

Mais uma vez, grato pelas contribuições.

Abs.

Sem internet não tem o que fazer ou considerar do ponto de vista do desenvolvedor. O navegador precisa de internet. Sem internet ele manda você conectar.

Nunca vi ninguém usar browser pra rodar “apps offline”. Você já rodou algum “app offline” no seu browser? Acho que isso não existe brother

No caso de uma aplicação web você poderia modularizar a aplicação em apps menores. Separando os estágios críticos da aplicação onde estes seriam instaladas na rede interna.(Arquitetura de microserviços)

Um exemplo. Tomamos uma multinacional que tem um erp web. A filial brasileira possui uma pequena aplicação que emite notas e envias essas informações para o servidor central que fica no Estados Unidos, porém antes de enviar as informações das notas o programa verifica se o link com a matriz está online. Caso esteja ela envia as informações em arquivo json, o servidor da matriz interpreta e armazena no banco de dados.
Caso o link esteja offline o programa armazena estas informações em uma base local, e na filial tem uma outra pequena aplicação que na verdade é um serviço que de meia em meia hora verifica se a notas para enviar para a matriz.

Segue link com melhor explicação.
Arquitetura de microserviços ou monolítica?