Running D in the Java VM

John Colvin john.loughran.colvin at gmail.com
Fri Nov 15 02:01:48 PST 2013


On Friday, 15 November 2013 at 08:50:14 UTC, Paulo Pinto wrote:
> On Friday, 15 November 2013 at 07:13:34 UTC, Jeremy DeHaan 
> wrote:
>> Hey everyone!
>>
>> I have been experimenting for the past couple of days with an 
>> idea I had, and since I recently made a little progress I 
>> thought I would share some of what I have been doing with you. 
>> What I have done, in a nutshell, is began the process for a 
>> language converter that takes D source files, converts them 
>> into Java source files, and then compiles them as Java class 
>> files so that they can be ran on Java's VM. It is extremely 
>> limited in what it can do right now, only being able to 
>> convert/compile a simple Hello World program, but I was proud 
>> of myself for getting even that far so I wanted to brag. :P
>>
>> You may want to ask, "Hey, man. D is a great language. Why 
>> would I ever want to convert it to Java?" Normally, you 
>> wouldn't. Java blows. What I am envisioning for this project 
>> is something quite magical in my opinion. If we can take D 
>> code and have it compile into Java class files, we can then 
>> compile them into Android dex files. This would make D able to 
>> build and run on Android devices through its VM. Sure, people 
>> are working on getting D to compile to ARM binaries, but this 
>> could be another option as a Java alternative on 
>> Android.(eventually)
>>
>> Unfortunately I do not know much about compilers, but even in 
>> the last couple of days I feel like I have learned a great 
>> deal about what kinds of stuff goes into them. Eventually I'd 
>> like to make a full blown compiler that takes D code and can 
>> go right to dex files, but that would be something that would 
>> happen way down the road. In order to get D working on Android 
>> sooner, I figured a language converter would be the easier 
>> route.
>>
>> I can, and would love to go in to more detail about this, but 
>> it is getting late and this post is already quite long. Maybe 
>> I should start a blog about my D escapades? Anyways, I would 
>> love to hear feedback on this idea! Thanks for your time!
>
> It is an impossible task, because many of the D semantics 
> cannot be expressed in JVM/Dalvik bytecode.
>
> --
> Paulo

Like what? Barring low-level device access, they are both turing 
complete languages and given the necessary transformations a 
complete program in one can always be statically* translated to 
the one in the other. However, efficient java code would be a 
different matter.

*very important. There are many code-level concepts in D that are 
not expressible in the JVM, but a static translation doesn't need 
to honor those: it simply needs to make a program that has the 
same observable effects for any given input. This is definitely 
possible, although quite possibly monstrously involved when done 
in detail.


More information about the Digitalmars-d-announce mailing list