Sucesso Apps – Parte 2 – As dificuldades na escolha da linguagem de programação

Continuação da série Sucesso Apps. Leia a primeira parte:

Antes de mais nada uma introdução desta série de artigos

Um dos artigos mais lidos do site é o Manual definitivo para desenvolver aplicativos móveis de sucesso” (que de definitivo não tem nada). Eu costumava atualizar ele com frequência e acabei abandonado suas atualizações. Resolvi atualizar novamente, mas desta vez por partes e com o tema “Sucesso Apps”.

Será uma série mesmo, onde além de atualizar o que foi escrito no artigo em questão, quero fazer entrevistas na forma de Podcasts ou mesmo vídeos no Youtube, resumos de livros, links interessantes e muito mais. Será um processo lento, mas tenham calma.

Os desafios de se trabalhar com Android

O Android, porém, possui muitos desafios!

Até agora só falei das vantagens do Android, chegou a hora de dizer as desvantagens.

Qualquer usuário pode se logar ao Google Play, publicar suas apps num processo relativamente simples. É fácil de desenvolver aplicativos, mas não há garantias que sua App vá trabalhar perfeitamente em qualquer dispositivo Android.

Pode imaginar sua aplicação não funcionando no aparelho de um usuário em potencial? Imagina como é difícil ter um layout de aplicação para qualquer tamanho de tela, por isso é necessário ter conhecimentos para desenvolver um layout  adaptável aos diversos dispositivos.

Mas corrigir isso é possível realizando testes como o emulador do Android, correto? Mas acontece que o emulador do Android oferece uma quantidade limitada de dispositivos. E ainda há bugs no emulador e quando passado para um dispositivo pode dar outros erros. O emulador é bom para testes simples da aplicação, sendo necessário utilizar de outras ferramentas de testes antes de lançar seu aplicavo no mercado.

Outro problema é em relação ao hardware de aparelhos e suas compatibilidades e funções, como, por exemplo, o reconhecimento facial. Nem todos os dispositivos dispõem deste tipo de câmera. E se sua aplicação necessitar deste recurso e os usuários não o tiverem?

Sem contar com as versões do Android. Nem todos os aparelhos podem ter uma determinada versão do Android e por isso podem apresentar problemas. O que obriga o desenvolvedor a utilizar versões mais antigas do Android no desenvolvimento – na ânsia de pegar o maior número de usuários – e acaba perdendo a oportunidade de desenvolver aplicativos mais robustos e com o uso pleno de tecnologias mais avançadas dos dispositivos.

Se você quer desenvolver para Android, compre outros dois dispositivos extras, além do seu dispositivo mais novo para realizar testes de verdade, na vida real.

Outra opção para isto são serviços que oferecem este tipo de teste e dão relatórios de como melhorar

Preste atenção, a dica é este site: www.perfectmobile.com.

Uma mudança positiva do Android nos últimos anos é a utilização, além do Java e C# do Kotlin com o uso do JavaScript a linguagem de programação mais popular do mundo, ganhando ainda mais mercado.

Os desafios de se trabalhar com iPhone

Diferente do Android, o iPhone existem poucas variações de aparelhos e versões de sistemas operacionais e recursos de aparelhos, o que tornam estas dificuldades relativas ao Android praticamente inexistentes.  E os testes ficam muito mais fáceis no mundo real, bastando adquirir os dispositivos da Apple ou utilizando a mesma ferramenta de testes apresentada para o Android: www.perfectmobile.com.

Dificuldade de portabilidade e portabilidade

O ideal para todos nós seria desenvolver aplicativos para o maior número de sistemas operacionais possíveis, ou pelo menos para os dois maiores players: Android e iOS, se pensarmos no mercado mundial, e o Android e Windows Phone se pensarmos no mercado nacional ou mesmo da América Latina. Se seu interesse é desenvolver apenas para o Android, ou somente para o iOS ou Windows Phone, pode pular esta parte e ir direto para a segunda parte do curso. Agora, se você deseja desenvolver para ambas as plataformas ou todas existentes, continue por aqui.

Se você desenvolver uma aplicação para o iPhone, muitas coisas não poderão ser reutilizadas no desenvolvimento para o Android e vice-versa.

No iOS geralmente se escreve com Objective-C, já Android geralmente com Java, C# ou Javascript com Kotrin (muito mais opções que o iOs). Ambas as linguagens são similares em algumas questões: elas são lineares, procedurais e orientadas a objetos. Mas é muito diferente em relação aos objetos visuais, o ciclo de vida das aplicações. Resumo: Objective-C não é compatível com o Android e o Java, C# e até mesmo o Javascript não são compatíveis com o iOS.

Mas algumas coisas podem ser reaproveitadas por ambos os lados, caso queria aprender e desenvolver nativamente para ambos os sistemas operacionais. Como, por exemplo, os ícones e imagens utilizadas, ambos podem reutilizar os códigos em SQLite. Se você tiver que escrever códigos em C no iPhone, você pode reutilizar no Android, para isso basta se utilizar do NDK do Google que permite desenvolver em C e C++. Mas os elementos interface gráfica de ambos não são compatíveis.

Mas tudo depende da habilidade do desenvolvedor de reutilizar códigos e saber desenvolver em uma plataforma de forma a maxibilizar o reuso de códigos para ambas as plataformas.

Por exemplo, se você desenvolve aplicações no iOS em C ou C++, geralmente essa linguagem é utilizada na criação de games e não em aplicativos e há uma gama enorme de engines de games multi-plataformas com estas duas linguagens, no Android também é possível utilizar C e/ou C++ utilizando o NDK que permite utilizar também códigos Java e vice-versa.

O NDK é uma tentativa de ajudar desenvolvedores a desenvolverem em outra linguagem mais fácil que o Java, que é o C ou C++, e ajudar a ter portabilidade no desenvolvimento em outras plataformas.

Assim como o Kotlin ajuda desenvolvedores Javascript no desenvolvimento Android. Mas veremos mais adiante que o JavaScript é o maior aliado para quem deseja desenvolver em todas as plataformas.

Exemplos de ferramentas multi-plataformas de desenvolvimento

As chances de se obter sucesso e dinheiro no mercado de aplicativos mobile são maiores se desenvolver para um maior número de dispositivos e sistemas operacionais além do Android e iOS. Mas como já disse anteriormente é um caminho árduo. No entanto, há no mercado diversas ferramentas de desenvolvimento multi-plataformas que permitem o desenvolvimento mais amplo. E é a grande tendência atual dos fornecedores de ferramentas de desenvolvimento tornar este desafio uma facilidade aos desenvolvedores.

O Delphi, por exemplo, agora adquirida pela Embarcadero é uma das empresas fornecedoras de IDEs de desenvolvimento preocupadas em tornar sua linguagem de programação cada vez mais multi-plataforma.

Mas há diversos frameworks (geralmente javascript) que auxiliam este desenvolvimento multi-plataforma facilitando a vida dos desenvolvedores e um alcance maior a este mercado.

São alguns exemplos para ajudar você:

É um ambiente multiplataforma criado pela RunRev.

Capaz de criar apps para o iOS, Android, Mac, Windows, Linux e Servidores, a versão comercial do LiveCode oferece uma interface gráfica intuitiva baseada no conceito de arrastar e soltar e uma linguagem de programação natural, similar ao inglês. Os apps desenvolvidos com o LiveCode podem ser escritos uma vez e rapidamente distribuídos em todas as plataformas móveis populares, além de desktops e servidores. Uma licença anual do software custa US$ 500.

“Com sua interface fácil de usar e linguagem natural, o LiveCode coloca o poder da programação nas mãos de estudantes, profissionais liberais e desenvolvedores amadores, não importa sua familiaridade com a programação”, explica a RunRev.

Site do LiveCode: https://livecode.com/

AppAcelerator

O Appcelerator Titanium Mobile é um framework open source para desenvolvimento de aplicações mobile nativas. Os apps são escritos em JavaScript, utilizando a API do Titanium. O código JavaScript é compilado e empacotado através de ferramentas nativas de cada plataforma, gerando código nativo Objective-C, através do XCode e IOS SDK ou Java, pelo Android SDK, para iOS e Android respectivamente.

O Appcelerator Titanium mobile está disponível para Mac, Window ou Linux. Considerando que você querira desenvolver uma aplicação para iOS (iPhone ou iPad), é necessário um Mac com iOS SDK e XCode instaldo. Para Android, todas as plataformas acima citadas estão abilitadas, sendo necessário o Android SDK instalado e o ADT (Android Development Tools) para Eclipse.

Site do AppAcelerator: https://www.appcelerator.com/

AppMobi

Posicionada como uma solução de API JavaScript, a nova versão tem como alvo os desafios comuns dos desenvolvedores de games, e aborda questões relacionadas à autenticação do usuário, pagamentos, engajamento social e pontuação dos jogadores.

A principal tecnologia do playMobi é baseada no API e na plataforma de hospedagem de games TapJs, tem sido apontada como uma força importante do movimento que traz elementos sociais aos jogos HTML5. Segundo o tapjs.com, a TapJs permite que os desenvolvedores integrem seus games com contas de jogadores, com storages de dados, com o quadro de pontuação e com o Facebook por meio de uma API JavaScript.

Por enquanto, a playMobi possui capacidades de compra in-app baseadas na tecnologia “1Touch” – além disso, a empresa oferece aos desenvolvedores a habilidade de “escrever apenas uma vez” e utilizar os mesmos códigos em iOS, Android, Facebook e na web aberta.

Site do appMobi: https://www.appmobi.com/

React Native

O React Native é um framework baseado no já aclamado React, desenvolvido pela equipe do Facebook, que possibilita o desenvolvimento de aplicações mobile, tanto para Android, como para iOS, utilizando apenas Javascript

Olhando por esse lado, não parece ser nada surpreendente, nem inovador, pois já existem inúmeros frameworks que empacotam aplicações web em uma espécie de “browser”, como o Cordova, ou o Manifold.js, porém o React Native é diferente, pois todo o código desenvolvido é convertido para a linguagem nativa do sistema operacional.

Vantagens

As principais vantagens de uma aplicação nativa sobre uma aplicação web mobile são:

  • Experiência do usuário fluída;
  • Carregamentos em geral mais rápidos;
  • Melhor integração entre funções do celular como câmera, giroscópio, etc;
  • Segurança superior;
  • Melhor performance em geral.

Antes do surgimento do React Native, desenvolver para Android e iOS era algo relativamente complexo, pois além de ter que aprender as linguagens Objective-C (iOS) e Java (Android), o desenvolvedor não aproveitava praticamente nada do código de uma plataforma para outra, fazendo assim com que as empresas contratassem um time de desenvolvimento para cada sistema operacional, tornando o projeto muito lento e caro. Porém, com o React Native, o código pode ser reaproveitado em até 100% entre as plataformas, podendo fazer com que o custo e a duração do projeto caiam pela metade.

react_do_zero_ao_profissional Manual definitivo para desenvolver aplicativos móveis de sucesso

PhoneGap

O Phonegap é uma tecnologia open source, tem como principal característica desenvolver aplicativos webapp, que podem ser funcionais nos ambientes online ou offline. Para suprir as necessidades das linguagens nativas de cada plataforma, ele utiliza dos melhores padrões de web com o HTML5, CSS3 e o Javascript, tratando de uma forma bastante simples o seu desenvolvimento. Com uma interface baseada em telas de HTML, a sua lógica de programação e os seus recursos de dispositivos são tratados pelo Javascript tendo a possiblidade de realizar combinações com diversos scripts. Estes são: Jquery, MooTools e XUI. Dentro da lógica no javascript é realizado a comunicação com a API do PhoneGap.  Devido a grande quantidade de aparelhos, os quais possuem diversas resoluções e tamanhos de tela, os arquivos CSS são encarregados de exibir a aplicação corretamente. É importante lembrar que junto a estes novos padrões, está presente o Canvas, em testes realizados foi notado um ótimo desempenho com o framework.

Além da criação de páginas web que rodarão nos dispositivos móveis através de controles chamados WEBVIEW, que permitem a exibição de HTML, o Phonegap possui suporte a alguns recursos de extrema utilidade como: accelerometer, camera, compass, contacts, file, geolocation, media, network, notification (alert), notification (sound), notification (vibration) e storage imbutidos no html.

Site do PhoneGap: https://phonegap.com/

Ionic Framework

É um framework para desenvolvimento de aplicações mobile hibridas, criado em 2013 pela Drifty e com um grande suporte da comunidade.
 
É possível criar aplicações com o look and feel de uma aplicação nativa, mas ter apenas uma base de código, e no final, gerar instaladores para iOS, Android e Windows, mas nem contamos o windows pois já está em declínio.

Um APP escrito com IONIC, utiliza, JavaScript, HTML, CSS(SASS) e Angular (TypeScript).

Opinião do autor: Atualmente é meu favorito, na versão 3 e indo para a 4. 

Site do Ionic Framework.

 

Sencha Touch

O Sencha Touch é um framework MVC para o desenvolvimento de Apps mobile Web, utilizando de HTML5, CSS e JavaScript e possui bibliotecas prontas que oferecem uma interface idêntica aos aplicativos mobile. Se combinado com o PhoneGap, já mencionado, tornam juntos a solução perfeita para quem procura o desenvolvimento multi-plataformas. Ambos combinados permitem um maior poder de desenvolvimento e tornando as aplicações hibridas – ou seja, podendo ser instalado nos dispositivos, sem a necessidade de uma conexão web e ter acesso a todos os recursos dos dispositivos.

Site do Sencha Touch: https://www.sencha.com/

Conclusão

Independente de sua escolha, o desenvolvimento de aplicações móveis vai além da linguagem de programação. Tema do próximo capítulo desta série, mas que já escrevi um breve raciocino sobre o mesmo no artigo:O trabalho de desenvolver Apps ou Startups não necessita necessariamente ser um programador o qual recomendo sua leitura.

Sugestão de leitura Complementar

App marketing: virando o jogo com ajuda de machine learning

Você vai gostar:

15 livros de um empreendedores excepcionais para ler em 2019

Deixe uma resposta

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