Re: Running D in the Java VM
Am 22.11.2013 17:15, schrieb John Colvin: On Friday, 22 November 2013 at 13:36:08 UTC, Paulo Pinto wrote: I don't have any issue with Java and do like the language, but it has lost its place if you care about portable code across mobile platforms. Ironic, much? :p Sadly yes. There is hope with RoboVM, but that is community driven. Oracle seems more interested into pushing HTML5 frontends with Java running on the server side. Last year that made some PR announcements about Java support for iOS and Android. When what they actually had was an ADF web application! -- Paulo
Re: Running D in the Java VM
I haven't tried it, but here is an idea to target the JVM: - use ldc `-output-ll` option to generate LLVM IR. - use the LLJVM backend to generate some Jasmin assembly code from the LLVM IR ( as described on https://github.com/davidar/lljvm) - link with the LLJVM linker. This may produce some java bytecode, but to have something working properly I suppose the D runtime should also be compiled along with Phobos. This may be a faster way to get to the JVM than writing a source translator. However, this is not the best way to get Java compatability since it does not seems to be possible to access the Java library from the input D code. 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!
Re: Running D in the Java VM
On Friday, 22 November 2013 at 07:48:34 UTC, eles wrote: On Friday, 22 November 2013 at 05:30:00 UTC, Paulo Pinto wrote: Am 22.11.2013 00:52, schrieb John J: On 11/21/2013 05:02 PM, Paulo Pinto wrote: Am 21.11.2013 21:25, schrieb inout: On Thursday, 21 November 2013 at 07:35:01 UTC, Volcz wrote: On Sunday, 17 November 2013 at 05:49:43 UTC, John J wrote: On 11/15/2013 02:13 AM, Jeremy DeHaan wrote: If it should survive as an alternative, Jave should have Not to mention that Google leaves to the developers the effort of creating the JNI wrappers themselves, instead of providing a nice C++ API for them. almost: http://developer.android.com/reference/android/app/NativeActivity.html That is a Java class full of native methods for calling into native code from Dalvik. Now lets say you are doing a game, so NDK already provides the necessary C, C++, OpenGL libraries. Do you want to use Renderscript for GPGPU code? Well if targeting Android versions lower than 4.4, you need to write the JNI bindings yourself. Do you want to allow the players to share their games achievements via Google Play Game Services? Then you need to write the JNI bindings yourself. But fear not, Google has made a video about it, http://www.youtube.com/watch?v=dxI5bReatJw. Lets see if part 2 ever comes up. If you need more than graphics, sound or sensors manipulation, then you need JNI. -- Paulo
Re: Running D in the Java VM
On 2013-11-22 06:30, Paulo Pinto wrote: that Google leaves to the developers the effort of creating the JNI wrappers themselves, instead of providing a nice C++ API for them. I guess they want their developers to use Java. Otherwise they would have made C++ a first class citizens and not force C++ to go through Java. -- /Jacob Carlborg
Re: Running D in the Java VM
On Friday, 22 November 2013 at 12:45:19 UTC, Jacob Carlborg wrote: On 2013-11-22 06:30, Paulo Pinto wrote: that Google leaves to the developers the effort of creating the JNI wrappers themselves, instead of providing a nice C++ API for them. I guess they want their developers to use Java. Otherwise they would have made C++ a first class citizens and not force C++ to go through Java. Certainly, that is also one of the reasons why they have come up with Renderscript and are now moving to native compiled Java post KitKat. I don't have any issue with Java and do like the language, but it has lost its place if you care about portable code across mobile platforms. Hence why I am using C++, as it is the only common language across all SDKs thus requiring minimal setup to get going. -- Paulo
Re: Running D in the Java VM
On Friday, 22 November 2013 at 13:36:08 UTC, Paulo Pinto wrote: I don't have any issue with Java and do like the language, but it has lost its place if you care about portable code across mobile platforms. Ironic, much? :p
Re: Running D in the Java VM
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
Re: Running D in the Java VM
Surely the main requirements would be gui and networking? Which would be completely possible. On 15 Nov 2013 12:05, John Colvin john.loughran.col...@gmail.com wrote: 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.
Re: Running D in the Java VM
On Fri, 2013-11-15 at 09:44 +0200, Rory McGuire wrote: […] Nice one, I have to use Java at work, it would be awesome if I didn't have to. Would be cool if you make it so that the outputs to java are just trasforms of the AST that way people could write other types of output such as C. Just use Scala, Ceylon, Kotlin or statically compiled Groovy instead of Java. Everyone I know who has ever tried it has never looked back. Management can be handled easily since all the languages interwork well with Java, so change over to a new language is incremental, it does not require a revolution. Java is dead, long live the JVM. -- Russel. = Dr Russel Winder t: +44 20 7585 2200 voip: sip:russel.win...@ekiga.net 41 Buckmaster Roadm: +44 7770 465 077 xmpp: rus...@winder.org.uk London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder
Running D in the Java VM
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!
Re: Running D in the Java VM
On Fri, Nov 15, 2013 at 9:13 AM, Jeremy DeHaan dehaan.jerem...@gmail.comwrote: 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! Nice one, I have to use Java at work, it would be awesome if I didn't have to. Would be cool if you make it so that the outputs to java are just trasforms of the AST that way people could write other types of output such as C.
Re: Running D in the Java VM
On Friday, 15 November 2013 at 07:30:07 UTC, Timur Gafarov wrote: Maybe it would be better to compile D directly into JVM/Dalvik bytecode? Oh, absolutely. Like I said though, I don't really know that much about compilers so I decided to go this route. Also, it's actually been a pretty fun project so far and I see no reason to do it a different way right now.