As it stands on the branch I'm working on, if you define a 'java command', or 'java function' then all this means that lcidlc generates a native code stub for the external handler that calls into Java - so the actual implementation you write is Java. This extra stub is only compiled on Android, so you can use the same IDL file (and indeed, the same source file it generates) for both Android and iOS.
That's what I was getting at.
The 'libexports' stuff is iOS specific (since there is no dynamic libraries allowed on iOS device builds).
Ah... sorry, my mistake. I see MCExternalDescribe etc are already extern...
In terms of JNI stubs for Desktop then it depends on what the purpose would be here - there is no JavaVM or any support for such currently in the engine so it wouldn't have much point at the moment. The reason to do this for Android is that Android is written in Java so you need to write the majority of stuff that talks to the system in Java.
Couldn't a JVM be created if an external is loaded that needs one?
EDIT: Also, the Android class libraries are essentially entirely different from standard Java - meaning code written for Android that does anything related system/UI related won't do anything on the Desktop.
Well... there's heaps of Java stuff that could be used that has nothing to do with android... arguably it would be better to find a C library that does the same job and use that but for Java devs that's not going to help much...