Criando interfaces de usuário multiplataforma em 2017

Cerca de uma década atrás, era moda modelar uma GUI em um sabor de plataforma cruzada de XML (como XUL) e, em seguida, ter um processo de mecanismo de renderização específico da plataforma que o arquivo XML para exibir um layout. Já não está na moda fazer isso, no entanto. Hoje em dia, em 2017, a tendência é criar seus aplicativos em plataformas que permitem que você escreva tudo em HTML, CSS e / ou JavaScript, independentemente do ambiente em que seu código deveria ser executado.

A "primeira geração" desse tipo de ferramentas produziu o que são basicamente aplicações "híbridas", onde os aplicativos da Web são executados em WebViews específicos do navegador e da plataforma. Esta técnica é bastante ineficiente, no entanto. Seus aplicativos não se sentem muito "nativos", são bastante inchados e eles tendem a ser bastante desprovidos de desempenho. No entanto, é relativamente fácil ter um look-and-feel consistente em diferentes ambientes. Phonegap / Cordova é a plataforma mais popular para ambientes móveis e NW.js para ambientes de desktop.

A "segunda geração" é diferente: compilam tudo para binários completamente "nativos", específicos da plataforma. Em vez de confiar em WebViews, os widgets "nativos" são usados ??quando possível. Isso dá ao seu aplicativo um aspecto e uma sensação mais "nativos", geralmente tem menos inchaço e é muito melhor para o desempenho. No entanto, você terá mais diferenças entre as diferentes plataformas. Exemplos são NativeScript , React Native & Tabris.js (tudo para ambientes móveis).

Infelizmente, ainda não existem ferramentas de "segunda geração" para desktop. Então, agora mesmo, se você quer construir um aplicativo de desktop multiplataforma, você está preso com ferramentas de "primeira geração". O NW.js possui um histórico mais longo do que o Electron e possui suporte para vários recursos não presentes no Electron, mas também vem com suas desvantagens . O AppJS ainda é mais antigo, mas não é tão maduro – e não tão popular – quanto os outros dois.

De qualquer forma, sua confiança nos WebViews significa que seu aplicativo se sentirá mais como um aplicativo da Web do que um aplicativo de desktop. E os infortúnios e as desvantagens da performance são inevitáveis ??com este tipo de solução . Isso significa que você nunca terá o mesmo desempenho que o código que você escreve diretamente em Java ou C ++, nem a mesma performance que você obteria em plataformas de "segunda geração", e nunca mais se sentirá "nativo". No entanto, ainda pode ser a melhor solução, por exemplo. quando um look-and-feel consistente em diferentes plataformas é mais importante ou quando você tem um plano de fundo como desenvolvedor web.

Se o desempenho, a falta de inchaço e a sua aplicação obtendo essa sensação "nativa" são critérios importantes, você pode querer aguardar um pouco mais até as primeiras plataformas de "segunda geração" aparecerem para desktop. É realmente, mas uma questão de tempo, antes das plataformas para aplicativos de desktop seguirem o mesmo caminho evolutivo que as plataformas para aplicativos móveis, embora possam vir a ser "extensões de desktop" para plataformas móveis existentes.

Do jeito que está procurando atualmente, parece que em breve você poderá escrever aplicativos "nativos" para desktop e celular, com a mesma base de código. Com o React Native já tendo plugins que adicionam suporte para o Windows 10 e suporte para o MacOS , pessoalmente vou com o React Native e darei sua equipe de desenvolvimento algum tempo até suportarem todos os ambientes de desktop que eu preciso suportar e essas extensões para desktop são suficientemente maduras para ambientes de produção.

Se você não pode esperar tanto tempo, não quer apostar no que está por vir no futuro ou se esses critérios não são importantes para qualquer aplicativo que você quer construir hoje, você pode tentar alguns dos " primeira geração "disponíveis atualmente e veja qual é mais adequado para você. Apenas esteja ciente das desvantagens!

Como sempre, escolha sabiamente …

Texto original em inglês.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *