Python for BlackBerry escrito em J2ME

Python for BlackBerry escrito em J2MEEstou escrevendo um interpretador Python para BlackBerry, para rodar aplicações Python nesses potentes smartphones. O objetivo é poder rodar aplicações Python for S60, da Nokia, também nos BlackBerry, bem como escrever aplicações mais facilmente nesses devices. O interpretador é um RIMlet, e está sendo escrito para rodar nativamente em BlackBerry, no formato .COD.

Não estou usando nenhum interpretador como base, apenas a própria especificação da linguagem, pois um interpretador para mobile deve ter arquitetura específica, devido a limitações de memória e processamento. Uso o interpretador no desktop para testar e inibir possíveis diferenças, analisando ambas as saídas.

Ainda estou implementando o núcleo da linguagem, como tipos de dados, if, loops, e alguns métodos básicos. Já consigo rodar alguns scripts básicos, como o abaixo.

w = 3

i = 1

resultado = 0

temp = 0

while i <= 1000000:

  resultado = w * i

  temp = i%100000

  if temp == 0:

    print resultado

  i = i + 1

print w


Antes de iniciar a execução de um script é feita uma preparação do mesmo, de forma que não seja necessário ficar interpretando cada instrução em tempo de execução. Dessa forma, mais tarde será fácil guardar um script já preparado num arquivo, para executá-lo sem a necessidade de preparação. Também não será difícil compilar esse script já preparado em bytecodes de forma que rode nativamente.

Já estou escrevendo o interpretador pensando na futura implementação da orientação a objetos da linguagem.

O script acima foi preparado em 64 milésimos de segundo, e visto ter o loop, roda 5 milhões de instruções python. Foi executado numa média de 14 mil instruções por segundo, levando um tempo total de 53 segundos. O teste foi feito num BlackBerry 8800.

Claro que o algorítmo de execução ainda está grosso, e deve ser lapidado com o tempo. No entanto, mesmo com esse algorítmo de execução, para a maioria das aplicações não será sentida diferença, pois dificilmente teríamos numa aplicação um while com 1 milhão de loops.

Bem, é isso. Depois vou executar esse script num Python for S60 para ver a perfomance.

Abraços.



Sobre o Autor

Este artigo foi escrito por Nelson Pereira Junior.
Nelson é desenvolvedor há 12 anos. Hoje desenvolve aplicações Web e Móveis na Abacomm Brasil cuidando do desenvolvimento server-side J2EE, banco de dados, design de aplicações móveis, e desenvolvimento móvel usando várias plataformas como BlackBerry, J2ME, FlashLite, Android, etc. Para conversar com o autor use o e-mail, MSN e GTalk npereirajr@gmail.com.



Receba artigos em seu e-mail

Receba os novos artigos do blog em seu e-mail. E-Mail:



13 Comentários

  1. Luciano:

    show de bola, bem o que falta no Brasil…. precisamos de aplicativos em portugues

    abs e sucesso

  2. Danilo Cesar:

    Rodei um 6600:
    62 segundos.

    Mesmo não fazendo IO (substituindo o print do meio por a=0) demorou 56 segundos.

    Não vale a pena apenas alterar o interpretador jython para roda-lo em J2ME? Digo, acho que a única inconveniência com ele hoje é o tamanho, mas se fosse um pouco mais “capado”, acho que rodaria em Blackbery’s.

  3. Nelson Pereira Junior:

    Danilo, vou estudar o Jython. Se eu ver que consigo reduzí-lo a no máximo 200KB, poderei fazer um fork. Mas preciso ver as características dele. Por exemplo, se pra cada detalhe da linguagem o Jython criar um objeto, já não será vantagem. Estou fazer o interpretador usando bastente vetores de tipos primitivos, com quase nada de objetos. Infelizmente não se pode dar ao luxo de seguir uma boa orientação a objetos numa aplicação mobile, principal uma aplicação desse nível.

  4. LKRaider:

    Que legal! mantenha-nos informados sobre o desenvolvimento :D

  5. Mayron:

    Que legal, muito boa a iniciativa….

    Tem condições de fazer algo desse tipo sony ericsson?

  6. Zacarias:

    Hm, legal, cara, principalmente por tu estar saindo do zero, acho que podes conseguir bastante desempenho desta maneira. Boa sorte nessa jornada o/

  7. Chell:

    I have seen your posts about this around and I am greatly hoping you succeed. I want to get a Blackberry but just might not if I can’t develop with Python on it. Perhaps this could also be a base for a Python interpreter on Android.

    Have you thought of announcing your project on the Python discussion list?

    http://mail.python.org/mailman/listinfo/python-list

  8. dragoc2099:

    Thanks for the post, I have been having the same problems.

  9. Lucky:

    Good blog

  10. alvini:

    Thanks for the great tips.

  11. sanju:

    Thanks for this - great idea.

  12. ????:

    Hmmm, I am tempted to try this.

  13. Vlatko:

    I recently discovered this blog. I’ve had a similiar idea to your rewriting the ten commandments for some time now.

Deixe um comentário

blogarama.com Globe of Blogs EatonWeb Blog Directory