Análise de Plataforma: Python para S60 (PyS60)

Dando continuidade à minha análise das linguagens de programação existentes hoje para desenvolvimento mobile, hoje falarei da plataforma de desenvolvimento chamada Python. Para quem não sabe o que é a linguagem de programação Python, ela é uma linguagem que veio para mudar/ajudar o mundo da programação. Além de ser fácil aprendizado e uso, tem ganhado bastante atenção das comunidades de desenvolvedores e pode ser usada para diferentes propósitos como a construção de aplicativos desktop, desenvolvimento web, computação científica, utilitários, games, criação de efeitos especiais e por fim, claro desenvolvimento móvel.

Para a área de dispositivos móveis, Python é oferecida através da plataforma Symbian S60, que varia desde a segunda edição até a 'terceira edição com todos as features opcionais. Isso faz a plataforma ser bastante abrangente, visto que temos milhares de aparelhos no mercado prontos para ser usados como repositórios pelos seus aplicativos Python.


Podemos ver que no cenário de desenvolvimento mobile, existem hoje diversas plataformas disponíveis para os desenvolvedores, especialmente para os desenvolvedores da plataforma Symbian. Há o Symbian C++ que é o núcleo do S.O. Symbian disponível com uma imensa quantidade de APIs e funcionalidades prontas para o uso. Claro, que há um custo para isso: C++ não é uma linguagem tão fácil de se aprender e o framework exige um grau de aprendizado um pouco mais extenso e elevado. Java é bem mais fácil de usar e está presente, óbvio, em milhões de aparelhos móveis. As funcionalidades disponíveis por ele são suficientes, mão são restritas e disponibilizadas de acordo com o processo JCP. Isso significa que para criar uma nova API para o JavaME ? Só se for de acordo com todos os participantes de cada especificação JSR. Indisponível para meros mortais como nós : desenvolvedores.

Aí entra Python, como uma ponte, e pelo que vejo, isso é uma grande vantagem. Tem a facilidade de aprendizado de Java e é ao mesmo tempo tão poderosa como C++. Diferente de java que é limitado pelo processo de padrões, em Python se você quer criar uma API que use recursos avançados dos seu aparelho e a mesma não está disponível, é muito simples! Apenas crie uma extensão (módulo) e pronto! Está pronto para ser usado. Para os interessados em desenvolver em python, especialmente com tutoriais, aplicativos exemplos, etc: o site
http://croozeus.googlepages.com/py60extensions pode ajudar os iniciados!

Também, se você é um desenvolvedor que gosta de fuçar o aparelho móvel e mexer no hard code da máquina virtual, fique feliz! Porque o runtime do Python para S60 é open source, e você pode passar dias contribuindo com a comunidade caçando bugs, adicionando novas funcionalides e criando até a sua própria versão modificada.

Tecnologia: Python para S60

Prós:

  • Aplicativos integrados com web - Você pode facilmente usar a API de localização com o Google Maps e criar poderosos aplicativos mobile/web que usam o melhor de ambas plataformas. Posso citar exemplos como: MobyMaps, um aplicativo de geolocalização escrita apenas em 104 linhas de código, pyAmazon, Mobile Google Maps e tantos outros.
  • Aplicativos comerciais - Aplicativos que precisem acessar o sistema de arquivos, lista de contatos, conectividade bluetooth, câmera, galeria de imagens , etc. Com as APIS disponíveis em Python, elas permitem que o desenvolvedor escreva rapidmente aplicativos que possam interagir com seu aparelho e com outras pessoas. Exemplos claros como MobileGTD, PyS60RemoteControl e PySpy.
  • Rápida prototipação - Este sem dúvidas é uma das principais motivações de se usar Python para S60. Explicarei o porquê. O cenário comum é o desenvolvedor escolher uma linguagem de programação e começa logo de imediato a desenvolver seu aplicativo com ela. Se algo der errado ou não funcionar, ele só irar descobrir no fim do projeto, quando é tarde demais. Vários casos já foram reportados de projetos com desenvolvimento em JavaME onde o desenvolvedor trava em uma parte da codificação do seu aplicativo e descobre que aquela funcionalidade não pode ser feita com Java! Principalmente quando o sistema está quase pronto! Pois, Python vem ajudar aos desenvolvedores nesse desafio de uma forma elegante e bem eficiente: Se você tem uma idéia, e quer checar se aquela sua idéia funciona ou não, basta escrever algumas linhas de script de código Python para testá-la. Se você estiver satisfeito com a idéia/resultado, apenas incremente um pouco mais seu código para torná-lo seu produto final. Caso o contrário, você pode implementar a sua idéia agora (provada que funciona) em uma versão final com C++ ou Java se você necessita de mais performance ou portabilidade. Uma coisa bem legal com desenvolvimento em Python,
    é que com a rápida prototipação, você pode mostrar coisas já funcionando desde o primeiro dia de projeto em vez de utilizar documentações, diagramas ou slides.
  • Utilitários - Se você tem que dar alguma palestra ou participar de algum evento especial e precisa de soluções rápidas para problemas simples, porque não usar PyS60 ? Um exemplo prático foi uma pequena palestra que tive que dar sobre aplicações móveis tempos atrás, e pra a mesma desenvolvi pequenos aplicativos utilitários (câmeras fotográficas, gravador de vídeos, reprodutores de vídeos, jogos simples) em poucos dias. Qual linguagem usei ? Python! Prototipação rápida associada com altos recursos do aparelho me permitiram criar aplicações-demo bem interessantes para minha palestra.
  • Jogos - Python é uma linguagem com uma grande quantidade de biblitotecas APIs que podem ser utilizadas para jogos, como: Sensor API, Open GL, gráficos, manipulação de imagem, etc. Ela é também uma boa ferramenta para desenvolvimento de jogos casuais de curta duração. Embora, isso possa ser feito com o Flash Lite com uma API para gráficos mais poderosa e de fácil uso, as APIS do PyS60 irão ajudá-lo a desenvolver seus jogos com aquela sensação de "Uau! Pode fazer isso em Python é?? Que maneiro!"

Porque?

  • Vasta quantidade de APIs/funcionalidades - A plataforma Python para S60 oferece uma quantidade razoável de APIS para desenvolvimento, mas o mais legal é que em qualquer momento, você pode criar novos módulos /extensões usando Python/C se você sentir falta de alguma funcionalidade não coberta pelas APIs padrões. Esses módulos podem ser adicionados de uma plataforma para outra sem grnades modificações a depender da plataforma alvo.
  • Facilidade de uso - A linguagem Python é uma das linguagens mais fáceis de se aprender e de trabalhar. Em apenas algumas semanas, você pode está produzindo variados códigos de acordo com sua necessidade (Alta produtividade).
  • Suporte da comunidade- Como Python é open-source, logo há uma grande quantidade de scripts e códigos escritos pela comunidades open-source espalhados por aí, prontos para serem usados na sua aplicação.

Contras:

  • Desempenho/Performance - A performance de Python é razoável, embora seja mais lenta que C++, Java e Flash. Se você precisa desenvolver aplicativos que exijam computação científica, cálculos numéricos complexos, streaming de vídeo/áudio, python realmente não é a melhor opção.
  • Certificação/Assinatura dos aplicativos - Pode-se considerar que não é muito diferente dos aplicativos Symbian em C++, os aplicativos comerciais (e.g. os que são vendidos pelas operadoras) precisam ser assinados e passar pelo processo de certificação Symbian (Symbian Signed Proccess). Um pouco burocrático!
  • Portabilidade - Acho que é um dos principais contras da plataforma Python. Afinal de contas, ele só funciona em plataformas Symbian-S60. Mas é claro que é possível fazer o porte dela para outras plataformas visto que o núcleo de Python é o mesmo. Mas nem todas as bibliotecas do S60 pode ser portadas diretamente sem modificações críticas.

Porque?

  • Assinatura Symbian (Symbian Signed) - O processo era até para funcionar com aplicativos Python, mas ele foi desenhado para aplicativos em C++. Por isso fica aí uma incogníta na hora de certificar seus aplicativos Python. As poucas vezes que tentei fazer isso, acabei não conseguindo fazer (Acho que por falta de informação ou inexperiência).
  • Segurança - Como o processo de segurança é algo sempre levado em questão, especialmente na fase de desenvolvimento, logo é bem complicado lidar com essas questões de segurança da plataforma (e.g.evitar que usuários construam aplicativos malwares para os dispositivos). Sempre há restrições de API que pode desacelerar o andamento do projeto e aí começa o ciclo de teste, assinatura, re-teste, etc. Python para S60 também sofre desse male quando você decidir montar o package instalável dele para o Symbian (.sis).
  • Desempenho - O baixo desempenho de Python se deve pelo simples fato de ela ser uma linguagem interpretada. Logo, há umas desvantagens de performance em comparação com aplicativos desenvolvidos em linguagens nativas do aparelho.
  • Ferramentas- Em questão de ferramentas, PyS60 ainda deve muito. Embora tenha um plugin para testar seus scripts no emulador do C++ SDK do Symbian, scripts para testar no seu aparelho e até programas como py2sis ou Ensymble para tornar os scripts em instaláveis (.sis), ainda assim é fraco quando se fala de integração com ferramentas como Carbide C++, Eclipse, Netbeans, etc. Diferente dessas plataformas (JavaME, FlashLite, SymbianC++) que cada uma tem uma IDE forte associada, Python ainda não tem uma ferramenta ou plugin específico para desenvolvimento para mobile S60. Ah, e fãs do linux e mac irão ficar tristes: o Emulador de testes só roda no Windows! =/

Enfim, posso concluir que python permite você desenvolver coisas bem legais para seu aparelho, especialmente se ele for um Symbian Series 60. Com apenas poucas linhas de código você estará desenvolvendo aplicativos e utilitários de baixa/média e alta complexidade. Ideal para prototipação rápida, a linha de aprendizado é suave e a quantidade de APIs existentes é enorme abrigada por uma comunidade opensource que está sempre contribuindo com novas bibliotecas e APIs para sua aplicação. Como ainda está em fase de crescimento, a plataforma mobile de python está sempre inovando-se com novas releases, e você desenvolvedor pode ajudar e contribuir com a evolução da mesma, afim de tornar uma plataforma inovadora e divertida de programar para Symbians S60.

Se você estiver interessado em aprender mais sobre o Python para S60 , há diversos recursos nesse site wiki.


Acho que é isso!

Em breve postarei alguma análise sobre o Symbian C++!


1 comentários:

Quintana disse...

Fala Marcel. Sou leitor do seu blog e desenvolvedor. Gostei muito das suas análises técnicas sobre as plataformas, como atualmente estou trabalhando com desenvolvimento para iPhone, achei válido fazer uma análise desta plataforma da mema forma como você vem fazendo, está em :
http://www.mobits.com.br/2008/10/29/analise-de-plataformas-moveis-iphone-pros-e-contras

Espero ter contribuído. Grande abraço,
Rafael Quintana

top