openjdk 9 in ios - any sample xcode project or any sample using JavaLauncher interface?

Bob Vandette bob.vandette at oracle.com
Sat Mar 5 20:46:12 UTC 2016


The jimage files are the new JDK 9 Modular Runtime Image files for the Java runtime classes.
They replace the existing rt.jar and other runtime jar files.

https://bugs.openjdk.java.net/browse/JDK-8061971 <https://bugs.openjdk.java.net/browse/JDK-8061971>

The complete list of changes coming in JDK 9 can be found here:

http://openjdk.java.net/projects/jdk9/ <http://openjdk.java.net/projects/jdk9/>

Bob.

> On Mar 5, 2016, at 3:13 PM, Grigory Ptashko <grigory.ptashko at gmail.com> wrote:
> 
> Hello Bob.
> 
> 
> I see. That’s a very useful sample. Thank you very much.
> 
> But before I get started may I ask you what are the *.jimage files are?
> I see there are no rt.jar or tools.jar anymore.
> 
> I’m a long time jdk7 user so I’m not aware of the latest innovations in jdk..
> 
> Maybe some documentation links?
> 
> Thank you.
> 
>> On 5 марта 2016 г., at 1:46, Bob Vandette <bob.vandette at oracle.com> wrote:
>> 
>> Hi Grigory,
>> 
>> We have been pretty focused on just keeping up with the evolving JDK 9 sources
>> and haven’t yet had enough time to devote to getting samples into the repository
>> or document the project structure requirements.
>> 
>> In general we require the same JRE structure that you’d see on non Mobile platforms
>> to be maintained with one exception.  All static libraries are only used when the project is
>> being built and should not be marked for inclusion in the application package.
>> 
>> Here’s an old Xcode project which I published before we integrated the JavaLauncher into
>> the mobile repo.  It will at least give you an idea how the Java binaries are packaged.
>> 
>> http://cr.openjdk.java.net/~bobv/mobile/j1/xcode/RunJava.tar.gz
>> 
>> If you’d like to convert this to use the JavaLauncher, you should take a look at JavaLauncher.h
>> which described the JavaLauncher Framework interface.
>> 
>> Here’s an example of how it is used:
>> 
>> static void javaLauncherCallback(const char *exception_msg, int error_code, void *app_data)
>> {
>>   NSLog(@"HelloWorld::javaLauncherCallback: Received exception.");
>>   NSLog(@"HelloWorld::javaLauncherCallback: Exception msg: %@.",
>>         [NSString stringWithUTF8String: exception_msg]);
>> }
>> 
>> static JavaArgs *java_args = NULL;
>> 
>> @implementation HelloWorld
>> 
>> +(void)initialize
>> {
>>   if (java_args == NULL) {
>>       java_args = [[[JavaArgs alloc] init] retain];
>>       java_args.callback = javaLauncherCallback;
>>   }
>> }
>> +(void)createJavaVM
>> {
>>   [JavaLauncher createJavaVM:java_args];
>> }
>> +(void)callJava
>> {
>>   [JavaLauncher performSelectorInBackground:@selector(callJava:)
>>       withObject:java_args];
>> }
>> 
>> @end
>> 
>> Let me know if you have any questions.
>> Bob.
>> 
>> 
>>> On Mar 4, 2016, at 4:57 PM, Grigory Ptashko <grigory.ptashko at gmail.com> wrote:
>>> 
>>> Hello.
>>> 
>>> Does anyone have any examples on how to use java from jdk9 on ios?
>>> I’ve built the jdk and jre, found the Java Launcher objective-c interface.
>>> But I cannot understand how can I use them in the xcode project.
>>> 
>>> I can add the JavaLauncher.framework to my project and include JavaLauncher.h.
>>> But what libraries should I link my target against?
>>> 
>>> Here’s the jre tree. What am I supposed to do with all these files in terms of adding them to
>>> my xcode project? All the *.a and *.jimage files?
>>> 
>>> ├── bin
>>> │   └── unpack200
>>> ├── conf
>>> │   ├── logging.properties
>>> │   ├── management
>>> │   │   ├── jmxremote.access
>>> │   │   ├── jmxremote.password.template
>>> │   │   ├── management.properties
>>> │   │   └── snmp.acl.template
>>> │   ├── net.properties
>>> │   ├── security
>>> │   │   ├── java.policy
>>> │   │   └── java.security
>>> │   └── sound.properties
>>> ├── lib
>>> │   ├── amd64
>>> │   │   ├── jli
>>> │   │   │   ├── libjli.a
>>> │   │   │   └── libjli.symbols
>>> │   │   ├── jvm.cfg
>>> │   │   ├── libfreetype.a.6
>>> │   │   ├── libj2gss.a
>>> │   │   ├── libj2gss.symbols
>>> │   │   ├── libj2pcsc.a
>>> │   │   ├── libj2pcsc.symbols
>>> │   │   ├── libj2pkcs11.a
>>> │   │   ├── libj2pkcs11.symbols
>>> │   │   ├── libjaas_unix.a
>>> │   │   ├── libjaas_unix.symbols
>>> │   │   ├── libjava.a
>>> │   │   ├── libjava.symbols
>>> │   │   ├── libjimage.a
>>> │   │   ├── libjimage.symbols
>>> │   │   ├── libmanagement.a
>>> │   │   ├── libmanagement.symbols
>>> │   │   ├── libnet.a
>>> │   │   ├── libnet.symbols
>>> │   │   ├── libnio.a
>>> │   │   ├── libnio.symbols
>>> │   │   ├── libsunec.a
>>> │   │   ├── libsunec.symbols
>>> │   │   ├── libunpack.a
>>> │   │   ├── libunpack.symbols
>>> │   │   ├── libverify.a
>>> │   │   ├── libverify.symbols
>>> │   │   ├── libzip.a
>>> │   │   ├── libzip.symbols
>>> │   │   └── minimal
>>> │   │       ├── Xusage.txt
>>> │   │       ├── libjvm.a
>>> │   │       └── libjvm.symbols
>>> │   ├── classlist
>>> │   ├── java.base.symbols
>>> │   ├── modules
>>> │   │   ├── appmodules.jimage
>>> │   │   ├── bootmodules.jimage
>>> │   │   └── extmodules.jimage
>>> │   ├── psfont.properties.ja
>>> │   ├── psfontj2d.properties
>>> │   ├── security
>>> │   │   ├── US_export_policy.jar
>>> │   │   ├── blacklisted.certs
>>> │   │   ├── cacerts
>>> │   │   └── local_policy.jar
>>> │   └── tzdb.dat
>>> 
>>> Please, can anyone shed some light on it?
>>> 
>>> Thank you.
>>> 
>>> --
>>> Best regards,
>>> Grigory Ptashko
>>> 
>>> +7 (916) 1489766
>>> grigory.ptashko at gmail.com
>>> facebook.com/GrigoryPtashko
>>> 
>> 
> 
> 
> --
> Best regards,
> Grigory Ptashko
> 
> +7 (916) 1489766
> grigory.ptashko at gmail.com
> facebook.com/GrigoryPtashko
> 



More information about the mobile-dev mailing list