Is there any particular reason to translate the python code to Java?

Couldn't that step be omitted by making a python to Dalvik bytecode compiler?


On Thu, Sep 1, 2011 at 6:17 PM, Kristopher Micinski
<[email protected]> wrote:
> On Thu, Sep 1, 2011 at 12:08 PM, eukreign <[email protected]> wrote:
>> Hello,
>>
>>  I've spent a few evenings working on a project to be able to write
>> Android applications in Python by compiling Python source into Java
>> source. I thought I'd share what I have in case there is interest in
>> this (maybe even outside of Android development). I see this project
>> having two parts, a Python to Java converter and a very basic
>> simulated/stubbed out Java/Android API (so that one could write unit
>> tests in python and run them in python, before compiling everything
>> into Java).
>>
>>  Of course 100% Python to Java is not possible or practical to
>> implement in a reasonable amount of time but I think enough could be
>> implemented so that we could have 100% Python syntax with maybe 50%
>> Python semantics and 50% Java semantics. I think just getting to that
>> point would be a huge productivity gain on working with any java
>> frameworks/APIs. Over time I think there can be work arounds for
>> things that Java can't do like multiple inheritance, dynamic class
>> creation, duck typing, etc.
>>
>>  So, how does it work? I use Pythons ast and symtable modules to walk
>> the source code and try to infer the possible types that a variable
>> can have. This gives me the type information that Java will need. Then
>> another pass generates Java source using this type information. There
>> is nothing particularly magical especially since duck typing isn't
>> implemented and you can't change the type of a variable after you've
>> assigned to it the first time. So you have to be very careful with the
>> Python code you write, think of it as statically typed Python where
>> you don't have to declare types since they are inferred. I haven't
>> gotten to lists and dictionaries yet but the principles will be the
>> same, you can't have heterogeneous lists so the first thing you put in
>> a list will provide that lists type.
>>
>>  Why not use PyPy? It's possible to achieve some of my goals with
>> PyPy and in some cases it will achieve a lot more than I will ever
>> attempt to implement. One advantage of PyPy is that it supports a lot
>> more of Pythons dynamism (for one, PyPy generates code from a loaded
>> Python module while py2j uses static python source files). There are
>> two major problems with PyPy for my purposes: 1) it generates
>> specialized jvm byte code that the dalvik vm cannot convert 2) because
>> PyPy is more pythonic it will be much harder to compile code in a way
>> that will just plugin into the Android APIs, with PyPy you can't
>> import Java packages or inherit from Java classes as you would have to
>> do to write Android apps.
>>
>>  Code I have so far is hosted here: https://bitbucket.org/eukreign/py2j/src
>>
>>  I would say it's still more of a prototype than even alpha level
>> code. You can see an example of input file and output in the samples
>> directory.
>>
>>  Also, the bottom of both analyze.py and compiler.py have a ton of
>> unit tests you can look at to see what is possible so far.
>>
>>  If you have questions or are interested in helping me please send me
>> an email.
>>
>>  - lex
>>
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Android Developers" group.
>> To post to this group, send email to [email protected]
>> To unsubscribe from this group, send email to
>> [email protected]
>> For more options, visit this group at
>> http://groups.google.com/group/android-developers?hl=en
>
> Lex,
>
> Sounds like a fun hobby project, but also a lot of work if you
> *actually* want it to work well ;-).  If you want to just get a quick
> and dirty solution, perhaps you should look here:
>
> http://code.google.com/p/android-scripting/
>
> Neat idea otherwise, though.
>
> Kris
>
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en
>



-- 
Michael Banzon
http://michaelbanzon.com/

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to