segunda-feira, 29 de agosto de 2016

Ferramentas Multiplataforma

Existem diversas ferramentas multiplataforma para desenvolvimento mobile. Uma busca rápida na Internet vai retornar diversas listas.   São ferramentas como o Cordova que permitem exportar seu código para mais de uma plataforma mobile, como Android, iOS, Windows e outros. Algumas destas ferramentas são extensões do Cordova e como tal permitem gerar aplicativos híbridos, outras geram aplicativos nativos de cada plataforma.  A ideia aqui é passar rapidamente por algumas destas ferramentas e permitir que você tome conhecimento delas. Entre as ferramentas que geram apps nativos podemos citar:

Appacelarator  

Oferece a possibilidade de desenvolver em javascript, mas promete gerar aplicativos nativos através de sua SDK.  Tem ferramentas para design de interfaces do app, IDE para o desenvolvimento e recursos para teste dos aplicativos. É possível testar free, mas a licença para uso de todos os recursos tem um custo mensal. Mais em http://www.appcelerator.com


Genexus 
A suite que trabalha com o conceito de base de conhecimento também permite exportar o seu desenvolvimento para aplicativos mobile (smart devices).  Interessante nesta ferramenta a possibilidade de criar uma solução completa com app e webservice num  mesmo projeto e de forma transparente. Além disso afirmam que não é necessário conhecer de programação.  Existe uma versão trial para teste e vários planos de pagamento para uso comercial.  Informações em http://www.genexus.com/produtos/genexus?pt


Delphi
O velho Delphi continua firme, embora o uso da ferramente para o desenvolvimento de software já não seja o mesmo de  alguns anos atrás.  O Delphi 10 promete desenvolvimento rápido, para aqueles que conhecem o object pascal e a sua poderosa IDE.  Oferece também uma experiência de usuário avançada em multiplataformas.  Siga para o site e confira https://www.embarcadero.com/br


Xamarin

Recentemente adquirido pela Microsoft e com  sua licença aberta para uso profissional no Xamarin Studio e no Visual Studio Community, esta ferramenta tem se mostrado bastante promissora e por conta disso tem ganho bastante adeptos.  O foco aqui é o desenvolvimento em C# e a liberdade para desenvolver apps para Android, iOS e Windows com um gerenciador de layout próprio (Xamarin forms) ou com o design de layout nativo de cada plataforma.  Conheça em https://www.xamarin.com/


Para as ferramentas que geram aplicativos híbridos e que em geral tem o Cordova como base, com o desenvolvimento javascript como foco, podemos destacar algumas delas:


Telerik
Ela oferece uma série de serviços online que prometem facilitar o trabalho, tais como geração do app, publicação nas lojas, plataforma de gerenciamento dos apps publicados  e serviços de banco de dados para onde seus apps podem enviar as informações coletadas. Com ela você pode testar free, mas pra desenvolver profissionalmente vai precisa da licença paga. Veja mais em http://www.telerik.com/platform


Sencha Touch
O Sencha é um fremawork de desenvolvimento web, já bastante conhecimento pela comunidade. O Sencha touch baseia-se no Ext JS para desenvolvimento javacript.  Oferece uma biblioteca de gráficos bastante interessante.  Assim como o Telerik ele possui uma versão free trial e para continuar utilizando você paga pelos módulos que desejar, um valor mensal aparentemente baixo para até 5 desenvolvedores. Veja mais em https://www.sencha.com/products/touch/#overview


Onsen UI
Esta é uma das ferramentas free que tem apresentado uma evolução constante, com um bom número de componentes para construção do app. Seu diferencial talvez seja a possibilidade de desenvolvimento em Angular 2 e React a partir da sua versão 2.0 .  Veja mais em https://onsen.io/


Ionic
O Ionic se apresenta, não apenas como um framework, mas como um SDK (kit de desenvolvimento de software) web para construção de aplicativos.  Tendo como base o Cordova ele oferece uma série de recursos que facilitam o desenvolvimento e otimizam o desempenho do app.  Possui componentes de interface baseados em css que se alteram de acordo com a plataforma sem necessidade de seleção.  A programação foca no AngularJS e a versão 2, que está em beta, permitirá o desenvolvimento com Angular 2.  Além de todos os recursos de desenvolvimento da ferramenta, ainda estão disponíveis alguns serviços online para prototipação, build dos aplicativo, envio de push entre outros.  Todas as ferramentas básicas do Ionic para desenvolvimento são gratuitas, já os serviços online tem uma versão gratuita com baixo limite de uso e para explorar mais existem vários planos de acordo com a sua necessidade.
O fato de ser uma ferramenta robusta, bastante utilizada, de fácil aprendizado, gratuita, entre coisas coisas, justifica nossa escolha para utilizá-la como recurso no desenvolvimento de aplicativos e será o Ionic nosso companheiro até o final desta série de posts sobre desenvolvimento de aplicativos mobile.

Meus caros, com este post não tive a intenção de detalhar cada ferramenta, não me preocupei em citar todas as existentes no mercado, e muito menos de esgotar este assunto.   Apenas pensei em dar um panorama geral sobre algumas das possibilidades de trabalhar com desenvolvimento mobile, certamente se for a procura você encontrará mais opções.
Até o próximo post e obrigado!


quarta-feira, 24 de agosto de 2016

Conhecendo Cordova

Oi pessoal, voltamos para nosso segundo papo e agora vou falar um pouco o que é o Apache Cordova ( https://cordova.apache.org/), como ele funciona e como utilizá-lo.


Basicamente o Cordova é um conjunto de APIs (bibliotecas de software) que permitem acessar as funções do dispositivo (tablet ou celular), tais como a câmera, o acelerômetro e outros, a partir de um código desenvolvido em Javascript.
Ok, então quer dizer que os dispositivos respondem a comando JS ? Não diretamente. Para conseguir esta mágica o Cordova precisa dos plugins, que são os verdadeiros responsáveis pela iteração entre javascript e funções do aparelho. O Cordova, na verdade faz a orquestração de todos o funcionamento dos plugins. Os plugins são bibliotecas, desenvolvidas para cada uma das plataformas a que ele se destina, com uma interface javascript que permite acessar as funções disponíveis nestas bibliotecas. Então se eu precisar acessar o GPS do aparelho, primeiramente faço a instalação do plugin para GPS no meu projeto. Neste plugin virá um conjunto de classes java que permitem a manipulação do GPS para android, virá um conjunto de classes Objetive-C ou Swift para manipulação do GPS do iOS, virá um conjunto de classes em C# para acesso ao GPS do Windows Phone e assim sucessivamente para outras plataformas de dispositivo. Além disso, vem também um conjunto de scripts (Javascript) que podemos chamar de interfaces que permitirão acessar a estas classes nativas de cada plataforma. Algo comum de acontecer é a funcionalidade do dispositivo possuir alguma característica ou ação que você não conseguirá manipular, pelo fato do plugin não disponibilizar acesso a esta item. Mas no geral os plugins mais usados são bem completos como veremos mais a frente em outro post quando estivermos falando sobre como utilizá-los.


E onde roda o aplicativo desenvolvido com Córdova? Roda no browser! Isso mesmo no broswer. Na verdade, roda no motor do browser, ou seja, no renderizador de páginas e interpretador de javascript, que no caso do Chrome e iOS chama-se Webkit. Este motor está disponível para que os aplicativos utilizem e exibam conteúdo html através de uma componente nativo das plataformas que em geral é conhecido por WebView. O webview é uma área onde pode-se carregar um conteúdo html remoto ou local (armazenado no aparelho) e rodar programas em javascript através das telas html.
Uma observação importante que precisa ser feita é que aplicativos híbridos, como são conhecidos os apps desenvolvidos com Cordova, não são sites que ficam armazenados num servidor e são carregados para o celular a cada acesso, ou seja, todos conteúdo do app está no aparelho, dentro do programa que foi instalado. É pelo fato de estar junto ao código do app que os plugins do Cordova conseguem acessar as funcionalidades do seu aparelho, pois por questões que segurança, sites não podem acessar funções da máquina (computador ou celular) diretamente.
Portanto construir aplicativos híbridos é basicamente desenvolver programas utilizando apenas html, css e Javascript, pois toda a arquitetura do Cordova e linguagem de construção dos seus plugins é transparente para o programador.

E como acontece ? Bem, toda a plataforma tem uma estrutura de projeto definida para criação de um aplicativo com sua linguagem nativa. O cordova conhece essa estrutura para diversas plataformas, então quando criamos um projeto mobile com cordova ele é independente de plataforma, mas quando eu precisar instalar o programa em um aparelho precisarei criar o projeto para aquela plataforma do aparelho. Exemplo, depois de ter criado o projeto quero testar no android, então peço que o cordova crie um projeto android. Ele cria com todos os arquivos, classes e configurações necessárias e carrega todos meu código javascript, telas html e outros componentes que criei para dentro do projeto android, além de suas bibliotecas e plugins e com isso o projeto Android está completo e posso gerar o aplicativo. Se não ficou muito claro, don't worry! Faremos passo a passo todo esse processo num próximo post.
Para gerar o projeto de uma determinada plataforma o cordova precisa da SDK desta plataforma, portanto para desenvolver apps híbridos para iOS ainda será necessário um computador mac, pois a SDK do iOS você só consegue instalar no mac (regra), assim como para desenvolver para Windows Phone você precisará ter uma maquina com o SO Windows. Agora deve ficar mais claro porque cresce tanto o número de apps para Android, uma vez que o SDK do Android está disponível para Windows, Linux e Mac.
O Cordova roda sobre o nodejs (npm), portanto também está disponível para Windows, Linux e Mac. As plataformas mobile em que podemos gerar apps com Cordova atualmente são Android, iOS, Windows, BlackBerry, Ubuntu, Firefox, LG WebOS e FireOS. Em versões anteriores o Cordova já esteve disponível também para Palm WebOS, Bada, e Symbian.


Importante ainda falar sobre o Cordova é que, ele e o Phonegap são o mesmo projeto. A Nitobi, empresa que criou o Phonegap (primeiro nome dado) antes de ser comprada pela Adobe abriu o código e doou à Apache Software Fundation. A Adobe decidiu dar suporte ao código aberto do Phonegap e solicitou à Apache que alterasse o nome do seu projeto por razões legais, então a Apache alterou o nome para Cordova.

Hoje ficamos por aqui e no próximo post vamos passar rapidamente por outras ferramentas que, assim como o Cordova, permitem desenvolver aplicativos para várias plataformas.



segunda-feira, 22 de agosto de 2016

Começando no Mobile Dev

Se você não tem experiência em alguma linguagem ou está começando a vida loka de programmer e se encantou pelo desenvolvimento de apps (aplicativos mobile) então estou aqui para te ajudar. Mas se você é alguém com espírito aventureiro e quer iniciar uma nova jornada pela construção de apps então vamos juntos.  Farei uma série de posts desde a escolha das ferramentas e linguagem até a publicação de aplicativos nas principais lojas.



Bem, vamos começar pelo escolha da tecnologia, mas pra isso temos um universo de soluções disponíveis pra nos ajudar a alcançar nosso objetivo.
Vamos conhecer algumas das nossas opções:




JAVA: se você já conhece esta linguagem pode ser que seja mais tranquilo desenvolver aplicativos para Android.











Swift: se conhece esta ou deseja desenvolver apps para iOS (iphone, ipad e ipod) então esta é a linguagem a ser encarada. Para iOS também pode é possível desenvolver em Objective-C que é muito parecida com o C (boa sorte!).










C# (C sharp): Se sua praia é Microsoft então aqui você se encontra e conseguirá desenvolver aplciativos para Windows Phone, mas o C# traz uma vantagem, pois com ele e utilizando o XAMARIN (veremos depois o que é isto) será possivel criar também apps para Android e iOS.




Javascript: algumas plataformas tem como linguagem nativa de desenvolvimento o javascript (associado a HTML5 e CSS3), tais como FirefoxOS e Tizen, mas também é possível desenvolver para qualquer umas das plataformas anteriores utilizando esta linguagem com a ajuda do Apache Cordova (que veremos depois em detalhes).









O que Escolher?
No caso dos nosso amigos iniciantes, eu recomendo escolher o Javascript e já emendar o estudo de um framework como o AngularJS. Para este estudo posso sugerir os vídeos do meu colega Rodrigo Branas https://www.youtube.com/user/rodrigobranas em javascript e angularjs.





Ok, visto as principais linguagens disponíveis para as plataformas mais utilizadas no mercado, agora vou falar de ambiente de desenvolvimento. Este são os mais diversos e para algumas linguagens é possível escolher qual a opção melhor você se adapta.

JAVA/Android: Para desenvolver aplicativos em java para android a principal IDE recomendada é a disponível no site do Android Developers. Seu nome é Android Studio e ela foi construída sobre a plataforma do IntelliJ IDEA, sendo a ferramenta oficial da google para o desenvolvimento android. O download para Windows, Linux e Mac, a documentação e vários vídeos de tutorial estão no site https://developer.android.com/develop/index.html .






Swift/iOS: para o desenvolver aplicativos para iOS você tem um requisito básico antes de se preocupar com a IDE. O requisito é a infraesrutura de desenvolvimento, ou seja, a máquina onde você vai trabalhar. Para você criar aplicativos para iPhone e outros dispositivos da apple você precisará de um MAC, existe vários modelos tais como MacBook, iMac ou Mac Mini, em geral são máquinas muito boas em potência e qualidade entretanto os preços são um pouco salgados (Já ouvi casos de quem conseguiu instalar o SO da apple (MAC OS) em um pc, mas não sei até onde isso vai funcionar para desenvolver os app, inclusive tem vários vídeos no youtube ensinando a fazer. Bem, mas se você já tem um mac ou resolveu comprar agora, então o próximo passo é instalar o XCODE direto da App Store para Mac. O XCode tem praticamente tudo que você precisa pra desenvolver os apps e até publicá-los na loja (mas sobre publicação veremos mais tarde).



C#/Windows: Para o desenvolvimento de apps em C# a principal opção é o próprio Visual Studio, IDE já utilizada para desenvolvimento em C# para outras plataformas, mas também é possível crias seus apps em C# para windows e para Android e iOS utilizando o Xamarin, uma IDE cujo fabricante foi recentemente comprado pela Microsoft e ao comprá-la abriu a licença do Xamarin, certamene para tentar aumentar a popularidade e o número de desenvolvedores para Windows. Uma boa notícia para quem já programa em java é que o C# tem sintaxe muito parecida, mas claro que as APIs diferem e é necessário um estudo destas para começar a batalha. O download do Xamarin pode ser feito de https://www.xamarin.com/


Javascript/Cordova: Aqui a sua liberdade é maior, você que já programa em alguma linguagem provavelmente já utiliza uma IDE, ou talvez o "vi" ou "notepad" se você é guerreiro, mas no geral já conhece alguma, então don´t warry e pode continuar utilizando sua IDE preferida, a maioria delas tem suporte para desenvolvimento HTML5/Javascript. Mas se você é da galera iniciante pode começar com o Visual Studio Code que é bem simples de usar e está disponível em https://code.visualstudio.com



O que escolher ? Para nosso colegas de primeira viagem para uma menor curva de aprendizado e maior produtividade a curto prazo, baseado inclusive na escolha anterior da linguagem, o que recomendo é a escolha do Cordova . Esta escolha tem sido feita não apenas por iniciantes, mas também por empresas que não possuem uma equipe muito grande para o desenvolvimento de apps, que tenham alta rotatividade em seus colaboradores e por isso precisam de um custo com aprendizado reduzido ou ainda por empresas que não foquem em altíssima qualidade no layout de seus apps, mas que tenham foco no negócio e nas funcionalidades. Não estou dizendo com a última afirmação que os apps saem uma porcaria, muito pelo contrário, você consegue alcançar uma boa qualidade nas interfaces dos seus apps, mas não é o layout nativo de cada plataforma.

Pessoal, este post vai ficando por aqui, até porque já tem bastante coisa pra estudar. No próximo vou falar um pouco sobre o cordova, javascript, angularjs e sobre o framework que utilizaremos para facilitar ainda mais nossa vida. Obrigado e até mais!