O documento discute as opções para desenvolvimento de aplicativos móveis multiplataforma. Apresenta as principais plataformas móveis e suas respectivas participações de mercado, além dos desejos dos desenvolvedores. Em seguida, discute o uso de tecnologias web como HTML5, CSS3 e JavaScript para criar aplicativos híbridos, permitindo o desenvolvimento para múltiplas plataformas com uma única base de código. Por fim, resume os principais frameworks cross-platform.
5. Como anda o mercado?
Parcela do Mercado
Sistema Operacional
(2º Sem. 2012)
Android 68,1 %
iOS 16,9 %
BlackBerry 4,8 %
Symbian 4,4 %
Windows Phone 2,5 %
Outros 2,4 %
Fonte: IDC Worldwide Mobile Phone Tracker, 8 de Agosto de 2012
6. Mas ainda assim enfrentamos um grande desafio:
Criar aplicativos
multi-plataforma
7. O que os desenvolvedores querem?
Fonte: Developer Economics 2012 (developereconimics.com), Junho de 2012
8. • .NET Framework (C#, • Java, C/C++, HTML5, Adobe
Visual Basic, F#, AIR
IronPython, IronRuby...) • Android Runtime
• Visual Studio
• Objective-C • Java, C++
• X Code • Eclipse, NetBeans, MotoDev...
• Mac OS • Open Source
9. Objective-C C++
Java
C# Adobe AIR Visual Basic
Como criar um aplicativo multi-plataforma
neste cenário?
Visual Studio Eclipse
NetBeans MotoDev
19. Mobile Apps Cross-Platform
• Write Once, Run Anywhere
• Utiliza, na maioria das vezes, tecnologias web
• Técnicas utilizadas
• JavaScript Frameworks
• jQuery Mobile, Wink, Zepto JS, LimeJS...
• App Factories
• AppMkr, Tiggzi, Mobjectify...
• Web-to-native wrappers
• Sencha Touch, PhoneGap, MoSync...
• Runtimes
• Titanium Mobile, Unity, Adobe Air, AppMobi...
20. Mobile Apps Cross-Platform
• Reduzem drasticamente o custo e tempo de
desenvolvimento
• Permitem que os web developers possam reutilizar seus
conhecimentos em uma nova plataforma
24. Native App
Prós
•Melhor performance
•UI nativa
•Pode armazenar mais informações offline
•Disponível nas App Stories
•Acesso a todas as funcionalidades do aparelho
•Instalado no aparelho
Contras
•Mais demorado e custoso para desenvolver
•Suporta apenas uma plataforma
•Precisa ser aprovado para ser publicado na App Store
25. Web App
Prós
•Utiliza tecnologias web (HTML5, CSS3 & JavaScript)
•Suporta múltiplas plataformas
•Não é preciso ser aprovado nas App Stories
•Atualizações instantâneas
Contras
•Linguagem interpretada
•Não possui acesso a todas as funcionalidades do aparelho
•Não pode ser encontrado nas App Stories
26. Hybrid App
Prós
•Utiliza tecnologias web (HTML5, CSS3 & JavaScript)
•Suporta múltiplas plataformas
•UI nativa (suportado por alguns frameworks)
•Pode armazenar mais informações offline
•Disponível nas App Stories
•Instalado no aparelho
•Suporta muitas funcionalidades do aparelho
Contras
•Linguagem interpretada
•Precisa ser aprovado para ser publicado na App Store
27. Qual a melhor opção?
• O aplicativo requer o uso de alguma funcionalidade
especial? (Câmera, acelerômetro, GPS, armazenamento...)
• Qual o seu orçamento?
• O aplicativo requer conexão com a internet?
• Quantas plataformas você pretende suportar?
• Quais linguagens de programação eu, ou minha equipe,
domina?
• A performance é muito importante?
• O tempo é curto?
29. • Baseado no jQuery e jQuery UI
• Suporta as plataformas iOS, Android, Windows Phone,
BlackBerry, WebOS, Bada, MeeGo, Symbian
• Possui o Download builder
<!DOCTYPE html>
<html lang="en">
<head>
<title>Hello jQuery Mobile</title>
<link rel="stylesheet“ href="http://code.jquery.com/jquery.mobile.min.css" />
<script src="http://code.jquery.com/jquery-1.5.2.min.js"></script>
<script src="http://code.jquery.com/mobile/jquery.mobile-1.0a4.min.js"></script>
</head>
<body>
<div data-role="page">
Hello jQuery Mobile
</div>
</body>
</html>
30. • Suporta as plataformas Android, iOS e Blackberry
• Baseado nas bibliotecas javascript ExtJS, jQTouch e Raphaël
• Possui sua própria IDE: o Sencha Architect
• Possui a extensão Sencha Animator
• Roda apenas na engine webkit
• Documentação perfeita
Ext.application({
launch: function () {
Ext.create('Ext.Panel', {
fullscreen: true,
html: 'Hello World!'
});
}
});
31. • Suporta as plataformas iOS, Android, Blackberry, Symbian,
Bada e Windows Phone
• Possui suas próprias APIs javascript que possibilitam o uso
de recursos nativos que as plataformas oferecem
var showMessageBox = function() {
navigator.notification.alert("Hello World!");
}
function init(){
document.addEventListener("deviceready", showMessageBox, true);
}
32. • Suporta as plataformas iOS, Android e Blackberry (beta)
• Possui sua própria IDE: o Titanium Studio
• Possui sua própria loja virtual: a Appcelerator Marketplace
• Suporta as linguagens server-side PHP, Python e Ruby
• Possui suas próprias APIs javascript que possibilitam o uso de
recursos nativos que as plataformas oferecem
var winHello = Titanium.UI.createWindow();
var lblHello = Titanium.UI.createLabel({
text: 'Hello World!',
});
winHello.add(lblHello);
winHello.open();