As ferramentas de desenvolvimento mobile de paradigma multiplataforma despertam grande interesse. São vistas por alguns com suspeitas quanto ao seu desempenho e capacidade de dar ao usuário a mesma usabilidade de um aplicativo nativo. Por outro lado, são vistas como alternativa para acelerar o processo de desenvolvimento e reduzir custos.
Nesse artigo, falaremos um pouco sobre uma das ferramentas pioneiras nesse paradigma e sempre lembrada entre as opções por aqueles que optam pelo caminho não nativo: o Appcelerator Titanium.
O que é o Titanium?
O Titanium é um SDK open-source para desenvolvimento de aplicativos móveis, em que o desenvolvedor utiliza o Javascript para criar uma base de código comum que é então convertida para gerar o mesmo aplicativo em diferentes plataformas.
Foi criado em 2008 pela empresa Appcelerator, inicialmente para desenvolvimento de aplicações desktop multiplataforma utilizando HTML5, CSS e Javascript. Com a percepção de que as peculiaridades entre sistemas operacionais também existiam no recém-existente mundo dos smartphones e tablets, o Titanium se estendeu a ele, também permitindo que aplicativos iOS e Android fossem criados a partir de um único código. Devido ao sucesso da iniciativa, a Appcelerator reduziu a atenção dada a sua ferramenta para aplicações Desktop, até descontinuá-la, e passou a focar-se no Titanium Mobile, aumentando o leque de plataformas suportadas com Windows Phone, BlackBerry e Tizen, além de produzir ferramentas, serviços e treinamentos para os desenvolvedores do framework.
Para facilitar o uso do SDK, a Appcelerator tinha como seu principal produto o Titanium Studio, uma IDE que era inicialmente oferecida em dois planos: um gratuito para desenvolvedores individuais e o empresarial, que dava acesso a serviços para controle e otimização do ciclo de vida da aplicação (ferramentas de teste, anaylitcs, monitores de desempenho, hospedagem em nuvem e outros).
Em 2015, a Appcelerator promoveu uma mudança em seu modelo de negócio e o Titanium Studio foi eliminado junto a sua opção gratuita para desenvolvedores individuais. Atualmente, é necessário pagar por um plano (valores começam 36 dólares/mês) que dá direito a nova IDE, o Appcelerator Studio, e a parte dos recursos que faziam parte do antigo plano empresarial.
Quem usa o Titanium?
Segundo dados publicados no site da plataforma, o Titanium conta com uma comunidade de aproximadamente 950 mil desenvolvedores e seus aplicativos estão instalados em mais de 480 milhões de dispositivos. Entre as grandes empresas internacionais que utilizam ou já utilizam o Titanium para desenvolver seus aplicativos estão: PayPal, Ebay, Cisco, Citibank, PwC, Avis, Mitsubishi e outras.
Quais as vantagens?
Reaproveitamento que gera redução de esforço
Ao “encobrir” as diferentes plataformas sob uma camada comum em Javascript, o Titanium torna possível reaproveitar grande parte do código (60-90%, segundo dados da Appcelerator), o que é especialmente vantajoso para equipes reduzidas e que não contam com profissionais especializados em mobile, ou mesmo grandes equipes que buscam reduzir o tempo gasto no desenvolvimento.
Alloy
O Alloy é um framework integrado ao Titanium que torna automática a estruturação do código e a arquitetura do projeto no padrão Model-View-Controller (MVC), facilitando o trabalho do desenvolvedor em manter seu código organizado conforme a aplicação cresce. Outra vantagem desse framework é a sua orientação a componente, isto é, a ideia de que qualquer área de funcionalidade reaproveitável, seja de interface gráfica ou apenas funções, pode ser transformada em um componente modular para ser reutilizada ao longo da sua aplicação ou em outros projetos, evitando que seja necessário reescrever código.
Aplicativo Nativo
Em Frameworks híbridos como Phonegap e Ionic, o desenvolvedor cria algo semelhante a um website utilizando HTML, CSS e Javascript, que é então executado em um aplicativo nativo por meio de um Webview: componente que se assemelha a um browser, mas, ao contrário deste, possui acesso à parte das APIs nativas e recursos do hardware.
Entretanto, a facilidade em criar um aplicativo a partir do desenvolvimento web é contraposta pelo desempenho inferior dos híbridos, uma vez que a Webview é uma camada entre os recursos do hardware e a interface do aplicativo. Além disso, na maior parte dos casos, não é possível dar ao usuário a mesma experiência e usabilidade que ele teria com um aplicativo nativo, seja por conta do citado desempenho inferior, que recai sobre a fluidez de navegação, seja pela interface gráfica com componentes que não atendem totalmente às guidelines de design da plataforma.
O Titanium, ao contrário dos híbridos, gera aplicativos verdadeiramente nativos. Para isso, ele atua como uma camada intermediária que traduz o código Javascript do desenvolvedor em chamadas nativas às APIs de cada plataforma expostas pela SDK. Portanto, um botão criado no Titanium, não é um elemento HTML estilizado com CSS para reproduzir a aparência de um botão do iOS ou Android, mas uma chamada que a camada intermediária mapeia ao comando correspondente em Java/Objective-C para criação de um Button/UIButton.
Módulos nativos e Hyperloop
O Titanium permite que o desenvolvedor escreva código nativo em Android ou Objective-C para criar módulos que estendem componentes, funcionalidades e recursos que não estão disponíveis no Titanium ou que modificam os que existem. Deste modo, ao invés de aguardar por atualização oficial da SDK para utilizar um novo componente lançado na última versão do Android/iOS, basta criar um módulo para ele.
Recentemente, o Titanium introduziu o Hyperloop para facilitar ainda mais este processo, removendo a necessidade de escrever o módulo em linguagem nativa. Com ele, é possível acessar diretamente qualquer API nativa via Javascript e em meio ao código da sua aplicação.
[UPDATE] A partir do dia 2 de maio, como informou o leitor Chrystoffer, os planos Indie e Hyperloop passaram a ser gratuitos. Leia mais aqui.
Por exemplo, o trecho do código seguinte em Java que cria um botão:
import android.widget.Button;
…
Button button = new Button(this);
button.setText(“Botão em Android”);
Poderia também ser feito no Hyperloop dentro de qualquer controller ou widget:
var Button = require(“android.widget.Button”),
Activity = require(‘android.app.Activity’),
var button = new Button(new Activity(Ti.Android.currentActivity));
button.setText(“Botão via Hyperloop”);
Dicas
Aos que se interessaram pelo Titanium e pretendem conhecer mais, basta criar uma conta de avaliação no site e baixar o Appcelerator Studio. Esta conta vale por 45 dias e dá acesso a todos os recursos da plataforma, mas não permite que seus aplicativos sejam publicados nas lojas. Para aqueles que não desejam pagar pela plataforma ou que experimentaram problemas de desempenho com a pesada IDE, também é possível utilizar a versão grátis do Titanium com editores de texto e outras IDEs
Mais informações podem ser obtidas nesse artigo.
Para as dúvidas que surgem durante o processo de desenvolvimento, o Titanium conta com uma extensa documentação e alguns guias práticos em seu site oficial, além de aplicativos de exemplo em seu Github. Outra alternativa bastante recomendada é inscrever-se no grupo aberto do Slack, Ti-Slack, onde é possível tirar dúvidas e trocar experiências com desenvolvedores do mundo inteiro. Há, inclusive, um canal para aqueles que falam português.
Recursos como módulos nativos de Android e iOS, e widgets podem ser facilmente encontrados no site gitt.io, que faz o trabalho de procurar e listar repositórios do GitHub automaticamente. Já os módulos feitos com Hyperloop podem ser encontrados no site loopmodules.com. Procure módulos e widgets que ainda são mantidos por seus desenvolvedores ou contribuidores, pois alguns deles não são atualizados há anos e podem apresentar problemas com as SDKs mais novas.
Siga as orientações da documentação em relação a boas práticas para evitar vazamentos de memória. Eles são um problema recorrente para os desenvolvedores que estão começando e provocam problemas de desempenho e até mesmo fechamento inesperado do aplicativo. Este artigo também pode ajudar!