www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - djinni and D

reply "w0rp" <devw0rp gmail.com> writes:
I was just watching this talk, and it is really interesting.

https://www.youtube.com/watch?v=ZcBtF-JWJhM

They are working with a C++ codebase they are sharing between 
different mobile platforms by mapping it to the languages 
specific to each platform. They explain in the talk, and as 
someone who has done a little iOS and Android development myself 
I understand this, that it's important to work with the platform 
specific tools so you can get the native look and feel specific 
to each platform. So they have a tool which generates code for 
connecting the platform languages to C++ and back. The best part 
is, this translation tool is actually free software.

https://github.com/dropbox/djinni

It uses Objective-C++ to connect to iOS with Objective-C, and JNI 
to connect to Android with Java. As I was watching this talk, my 
brain moved in a direction we can call a fanciful pipe dream.

1. Finish Objective-C support in D.
2. Finish iOS ARM support for GDC or LDC.
3. Finish Android ARM support for GDC or LDC.
4. Contribute to djinni, adding D (Objective-C) <-> Objective-C 
and D (JNI) <-> Java.
5. ???
6. Profit!

I'm pretty much just posting this to put that idea in the heads 
of others.
Apr 12 2015
parent reply "Ola Fosheim =?UTF-8?B?R3LDuHN0YWQi?= writes:
On Sunday, 12 April 2015 at 19:37:43 UTC, w0rp wrote:
 It uses Objective-C++ to connect to iOS with Objective-C, and 
 JNI to connect to Android with Java.
How fast is JNI now? I believe the now defunct Mosync framework compiles C++ to a VM emulated on JVM...
Apr 13 2015
parent reply "Paulo Pinto" <pjmlp progtools.org> writes:
On Monday, 13 April 2015 at 13:56:14 UTC, Ola Fosheim Grøstad 
wrote:
 On Sunday, 12 April 2015 at 19:37:43 UTC, w0rp wrote:
 It uses Objective-C++ to connect to iOS with Objective-C, and 
 JNI to connect to Android with Java.
How fast is JNI now? I believe the now defunct Mosync framework compiles C++ to a VM emulated on JVM...
Depends on which JVM you are speaking about. As for the official Java JVMs (not Android), Mark Reinhold acknowledged that JNI was made hard on purpose to force developers to try to avoid writing platform specific code. Now that Oracle is trying to get the last mile in terms of performance given the increase of Java usage in the data centers, the JNI will get replaced as part of the Project Panama, currently targeted for Java 10. The bindings are based on the experience with Java Native Runtime and his being driven by Charles Nutter, one of the JRuby developers. http://openjdk.java.net/projects/panama/ In any case I doubt the Android team will do anything about it, looking forward to Google IO 2015, to see if there will be any announcement regarding either the dropped NDK support (not available in AS) or if Java 8 will ever be supported. Given the GCJ zombie code in the GCC, they could have brought the CNI back to life with ART, but not even that. https://gcc.gnu.org/onlinedocs/gcc-4.9.0/gcj/About-CNI.html
Apr 13 2015
parent "Ola Fosheim =?UTF-8?B?R3LDuHN0YWQi?= writes:
On Monday, 13 April 2015 at 16:45:53 UTC, Paulo Pinto wrote:
 In any case I doubt the Android team will do anything about it, 
 looking forward to Google IO 2015, to see if there will be any 
 announcement regarding either the dropped NDK support (not 
 available in AS) or if Java 8 will ever be supported.
It's a pity Google only need to make Android "barely competitive". Android has always looked very unattractive to me, not that I find the iOS developer experience great either. Both ecosystems are built on "let's recycle desktop tech and build something on top of it and fudge it together, then evolve it".
Apr 14 2015