Série da semana: Primeiros passos no Angular

Veja mais

Os frameworks (React, Xamarin, Ionic, Flutter) vão substituir a programação Android nativa?

09/08/2018

130

Fala comunidade DevMedia, Salve!

E aí vamos trocar uma ideia?

Sinceramente, eu acho que a primeira dúvida que surge pra quem quer programar mobile é o que escolher pra começar. Hoje tem Xamarin, Ionic, React, Flutter, enfim, aí tem o Android Studio com o Java "do outro lado" dessa trincheira - menção honrosa aqui ao Kotlin, que causou uma certa divisão na comunidade, embora more na mesma casa que o Java

O que vocês acham? Esses frameworks vão substituir a programação mobile nativa?
Responder

Post mais votado

10/08/2018

Olá Estevão, respondendo a sua pergunta principal, eu acredito que "depende!"

A programação nativa tem muitos problemas que são facilmente resolvidos com desenvolvimento hibrido, você mesmo citou em um comentário o problema de demora de compilação, por exemplo, posso citar outros como: a estrutura do projeto fica robusta muito rápido (culpa do java rsrs); desenvolver interfaces é bem mais complicado; sem falar que se o seu objetivo é ter uma aplicação multiplataforma, terá que ter no minimo dois times de desenvolvimento e por ai vai. Todos esses problemas afetam muito projetos de pequeno e médio porte, e muitas vezes, realmente não vale a pena usar desenvolvimento nativo.

Entretanto, existem alguns projetos (sejam aqueles que precisarão utilizar muito recurso de hardware - como jogos, ou aqueles que tem um escopo muito grande e precisam de uma estrutura robusta para futuras atualizações) que precisam ter um acesso, digamos, "mais direto" aos recursos do dispositivo, e isto fica um pouco mais complicado utilizando Framework's, que geralmente, utilizam de webviews que funcionam de intermediário ao S.O. e por isso há uma certa perda de desempenho e etc.

É interessante frisar que há casos e casos, eu acredito que há momentos de escolher nativo e ha momentos para híbridos, pelo menos essa é a visão que eu tenho. Resumindo, eu acho que esta é uma discussão muito complexa cuja a resposta é muito mais pessoal do que outra coisa, existem muitos fatores a serem levados em conta e ambas as metodologias de desenvolvimento tem seus pontos fortes e fracos, não acho que uma possa substituir a outra, por isso acredito que, como em tudo na computação, a resposta é "depende!" kkkkk

Abraços.
Responder

Mais Posts

fala Estevao

Na série sobre android (https://www.devmedia.com.br/android-developer/) o usuário Saulo comentou que o Flutter, nova iniciativa do Google, seria o futuro da programaçao mobile;

achei a opiniao interessante.... o q voce acha man?
Responder

09/08/2018

Estevão Dias

Fala Tone, tudo certinho?

Se é o futuro eu não sei, mas que é uma boa resposta da Google ao que vem sendo feito em matéria de programação mobile nativa fora do Objective-C/Swift e Java/Kotlin isso é.

A grande sacada do Flutter é trazer para o aplicativo os componentes de interface, aumentando a performance porque para renderizar um botão, texto, imagem, etc, o app não precisará ir até o SO e pedir para ele fazer isso. Lembrando que esse vai e volta para fazer coisas triviais é um dos principais criadores de gargalos em outras soluções que não as "nativas oficiais" ou híbridas.

Outra coisa bacana no Flutter é que ele possui o Material Design e o Cuppertino, um tema para iOS, dentro dele. Ou seja, roda com a cara do sistema operacional onde está sendo executado e o controle disso fica na mão do desenvolvedor.

Além disso o Flutter tem um montão de componentes de tela, meio chatos de fazer na mão, prontinhos para usar :D

Mas assim, a principal vantagem que eu vejo no Flutter é o processo de desenvolvimento. No Android Studio, quando eu tenho que mudar alguma coisa no app eu tenho que recompilar o meu código, esperar o aplicativo ser fechado no emulador e reaberto,... demora. Mesmo quando essa alteração é pequena, acaba-se perdendo um certo tempo não só pelo que citei anteriormente, mas também executando todos os passos novamente até se chegar na tela onde eu peguei o erro. Com o Flutter isso não existe porque ele tem "live reload", ou "hot reload", mudou o código o app não fecha e a alteração tá lá como mágica, coisa que já era possível no desenvolvimento com JavaScript para Android/iOS e que me causa certa inveja kkkkkkkkkkkkkkk

Bom é isso. Maaaaaaaaaas, como tudo não pode ser flores, você precisa sacar de Dart pra entrar no Flutter, uma linguagem da Google, me parece, e que muita gente por aí ainda nem ouviu falar.
Responder
fala Estevão bom dia

sensacional a explicação obrigado!
Mas vc sabe dizer o react nativa tem o live reload ou por enquanto isso é um recurso 'exclusivo' do flutter?

Porque poxa, pensa só... entre programar com JavaScript e ter que usar uma noooovaaaa linguagem (dart) putz... +1 man risos?

abs
Responder
fala Lucas adorei o ponto de vista;

Realmente depende.... è complicado né, pois existe uma briga de interesses de fabricantes, cada um puxando para o seu lado....

De toda forma, me *parece* que a técnica do WebView foi uma solução multiplataforma 'temporária'... React Native e o Flutter me parecem tecnologias com mais chance de prevalecer em um contexto multiplataforma.... q acham?

E o xamarin, morreu? ;@

abracos
Responder

10/08/2018

Estevão Dias

Também acho que o webview seja algo temporário. HTML/CSS/JS é muito bom na web, muito performático, código nativo também tem o seu lugar, mas quando você precisa passar de um lado para o outro, como é comum fazermos no desenvolvimento híbrido, surgem os gargalos. Mesmo no desenvolvimento híbrido, uma das formas de deixar o aplicativo mais rápido é evitar ao máximo passar da fronteira aplicativo x so, pelo menos essa é a solução para a maioria dos problemas de gargalo.

Por isso também acredito que o React Native, Flutter e outros sejam soluções melhores que aquelas baseadas em webview.
Responder

10/08/2018

Pablo Sousa

O framework Quasar não entraria nessa seleção ?
Segue o link -> https://quasar-framework.org/
Vir nos comentários que ele é muito bom para se trabalhar com Vue.js
No meu caso por exemplo ainda vou testar, após fazer isso, faço uma publicação no fórum contando a experiência.
Responder

10/08/2018

Pablo Sousa

Fala Tone, tudo certinho?

Se é o futuro eu não sei, mas que é uma boa resposta da Google ao que vem sendo feito em matéria de programação mobile nativa fora do Objective-C/Swift e Java/Kotlin isso é.

A grande sacada do Flutter é trazer para o aplicativo os componentes de interface, aumentando a performance porque para renderizar um botão, texto, imagem, etc, o app não precisará ir até o SO e pedir para ele fazer isso. Lembrando que esse vai e volta para fazer coisas triviais é um dos principais criadores de gargalos em outras soluções que não as "nativas oficiais" ou híbridas.

Outra coisa bacana no Flutter é que ele possui o Material Design e o Cuppertino, um tema para iOS, dentro dele. Ou seja, roda com a cara do sistema operacional onde está sendo executado e o controle disso fica na mão do desenvolvedor.

Além disso o Flutter tem um montão de componentes de tela, meio chatos de fazer na mão, prontinhos para usar :D

Mas assim, a principal vantagem que eu vejo no Flutter é o processo de desenvolvimento. No Android Studio, quando eu tenho que mudar alguma coisa no app eu tenho que recompilar o meu código, esperar o aplicativo ser fechado no emulador e reaberto,... demora. Mesmo quando essa alteração é pequena, acaba-se perdendo um certo tempo não só pelo que citei anteriormente, mas também executando todos os passos novamente até se chegar na tela onde eu peguei o erro. Com o Flutter isso não existe porque ele tem "live reload", ou "hot reload", mudou o código o app não fecha e a alteração tá lá como mágica, coisa que já era possível no desenvolvimento com JavaScript para Android/iOS e que me causa certa inveja kkkkkkkkkkkkkkk

Bom é isso. Maaaaaaaaaas, como tudo não pode ser flores, você precisa sacar de Dart pra entrar no Flutter, uma linguagem da Google, me parece, e que muita gente por aí ainda nem ouviu falar.



Primeira vez que escuto falar de Dart.
Responder

10/08/2018

Pablo Sousa

Aproveitando a deixa, vai ter curso sobre flutter na Devmedia ?
Responder
Gladstone, entendi seu ponto de vista, e concordo com você e com o Estevão, webviews são de certa forma ineficientes, a vantagem é que são de fácil implementação. Com certeza os novos frameworks que geram "códigos nativos" vão ter maior visibilidade no mercado de desenvolvimento hibrido.

Ainda não tive muito tempo para estudar React Native, mesmo ele estando "na boca do povo", então não posso opinar quanto a ele, já o Flutter, estudei sobre ele os últimos dias (incentivado pelas discussões aqui da DevMedia rsrs) e bem, achei a ideia incrível, excelente, porém, ele usa a linguagem Dart, como já mencionado aqui, uma aposta da google pra substituir o JS (parece brincadeira né), eu fiz alguns testes na própria plataforma da Dart e achei uma linguagem menos eficiente que o JS, meio lenta e um pouco confusa, não sei bem, talvez seja só uma má primeira impressão. Bem, depois disso parando pra pensar no assunto, cheguei a conclusão que não seria bom investir agora em Flutter, visto que ainda está na Beta, e tipo, aprender um linguagem pra uma tecnologia que pode ou não vingar, é meio que um tiro no escuro, por enquanto vou tentar focar meus estudos no que já está mais consolidado.

E quanto a Xamarin, ainda acho uma sacada muito boa da microsoft, mas tenho a impressão que a comunidade não pegou bacana ainda, não sei o pq, talvez pela certa dificuldade dele comparado ao uso do Cordova (ambos vem disponível no Visual Studio 2017). O Xamarin é bem complexo, comecei a estuda-lo há um tempo, mas eu esbarrei em algumas dificuldades técnicas e acabei deixando em standby, em algum momento tento focar novamente.
Responder
O framework Quasar não entraria nessa seleção ?
Segue o link -> https://quasar-framework.org/
Vir nos comentários que ele é muito bom para se trabalhar com Vue.js
No meu caso por exemplo ainda vou testar, após fazer isso, faço uma publicação no fórum contando a experiência.


bom dia Pablo td bem?

Nao conhecia o Quasar... Voce chegou a testar, é legal?
abracos
Responder
Gladstone, entendi seu ponto de vista, e concordo com você e com o Estevão, webviews são de certa forma ineficientes, a vantagem é que são de fácil implementação. Com certeza os novos frameworks que geram "códigos nativos" vão ter maior visibilidade no mercado de desenvolvimento hibrido...


fala Lucas bom dia!

Obrigado por compartilhar a experiencia com o Flutter! Esse lance de ter que aprender outra linguagem é que desanima risos.... Mas legal que voce deu os primeiros passos; O Estevao tambem deu uma olhada por aqui e teve meio que a mesma impressao que voce; A tecnologia promete, mas essa coisa de 'forcar' o Dart é que complica; Vamos torcer para o Google adotar o JavaScript (Google tah parecendo a microsoft dos anos 90 risos);

O Xamarin a gente chegou a testar bastante uma epoca aqui no escritorio e o que mais pegou para a gente foram os travamentos durante o tempo de desenvolvimento... Mas isso foi em 2017, provavelmente a tecnologia deve ter evoluido e tal - ou nao risos;

vlw galera, abracos
Responder
No meu ponto de vista, o desenvolvimento hibrido para mobile é mais em vantajoso e segue em alta.
Digo isso por alguns motivos:
1- Ter que aprender a tecnologia Java para desenvolver um único aplicativo.
2- A vantagem da multiplataforma no caso dos APPs Híbridos
3- Mercado de trabalho e oportunidades, geralmente quem desenvolve um APP quer distribui-los em todas as plataformas disponíveis, financeiramente falando uma empresa ou alguma pessoal que queira desenvolver algo. Vai optar pelo menor custo de investimento, que também vejo mais vantagem nos híbridos.

Claro que os Apps Nativos tem suas vantagens, porem colocando na balança acredito que os Framework para desenvolvimento mobile valem mais apena.

Abraços.
Responder

13/08/2018

Diego Silva

Olá Estevão, tudo bem?

Então a resposta pra sua pergunta acho que dependerá de alguns fatores:

Por exemplo, um deles é o quão popular o desenvolvimento híbrido das aplicações ficará. Hoje, muitos desenvolvedores estão utilizando ionic, react native, entre outras alternativas como solução para suas implementações no ambientem mobile. Isso se deve muito a uma maior "facilidade" do uso desses recursos, que na sua maioria exigem apenas o conhecimento de HTML, CSS e JavaScript.

Outro fator que eu destacaria, seria a questão do desempenho das aplicações. Algumas aplicações mais simples não precisam ser tão avançadas nessa questão performática, o que é um incentivo ao uso do desenvolvimento híbrido. Porém aplicações mais robustas vão ser mais rígidas nesse quesito da performance, e nesse ponto aqui o desenvolvimento nativo.

Também acho que a manutenção de tais aplicações fala muito alto. O fato de um código pode ser corrigido num lugar só ao invés de ser corrigido em vários outros é uma vantagem a se considerar. No "lado nativo" se não me engano o Xamarin faz um pouco disso (não o conheço totalmente). E aqui temos uma vantagem para o desenvolvimento híbrido, a manutenção do código.

Na minha opinião, quando a questão da performance ficar mais aproximada (ao ponto de ser imperceptível), acho que nesse momento, o nativo vai começar a sair um pouco de cena e dará lugar de vez ao híbrido.
Responder
Olá Estevão, tudo bem?

Então a resposta pra sua pergunta acho que dependerá de alguns fatores....



fala Diego

Você não acha que o 'hibrido', no contexto do webView, vai morrer nos próximos 2 ou 3 anos...?
abracos
Responder
fala Fernando

Sei lah cara, você não acha que iniciativas como Flutter, Xamarin e React native são mais interessantes - do ponto de vista da tecnologia, não da linguagem... - do que o Ionic por exemplo? No contexto de vc não precisar do webview e tal...

fala ae rs
Responder