Running D in the Java VM

Jeremy DeHaan dehaan.jeremiah at gmail.com
Fri Nov 15 10:39:14 PST 2013


On Friday, 15 November 2013 at 14:41:32 UTC, Russel Winder wrote:
> On Fri, 2013-11-15 at 08:13 +0100, 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
>
> Well done for having a go and getting somewhere with it, and 
> hopefully
> having some fun. However I am not sure this approach will lead 
> to
> anything that could go into general production. As others have 
> pointed
> out D → Java, source to source translation is probably not the 
> best way
> of getting D code to run on JVM. Scala, Groovy and Kotlin 
> compile direct
> to class files, i.e. generate JVM bytecode directly. Ceylon also
> compiles to bytecode but not to class files. The point here is 
> that Java
> source cannot really encode much of the D semantics, whereas 
> they can be
> encoded in JVM bytecodes. Now that the JVM has method handles 
> and
> invokedynamic, the previous history of how to support non-Java 
> code is
> irrelevant: Scala's compilation strategy predates this JVM 
> technology
> and it shows; Java 8, Ceylon, Groovy, and Kotlin are using the 
> new JVM
> technology to great effect.

It is a surprising amount of fun for me actually. I usually work 
on game development stuff(most currently DSFML), so it is a nice 
change of pace. It started as something that I thought could be 
production worthy, but who knows? Since for the long term I want 
this to only be used for Android compilation and not general Java 
VM stuff I was considering making use of version(Android) to 
separate things that are and aren't possible when going from D to 
Java.

In any case, I'll keep working on it more as a 
knowledge/experience gaining project than anything else. So far 
it has been awesome at that for me. If it really starts to look 
good though I will see if I can get people to start using it. ;)


More information about the Digitalmars-d-announce mailing list