Skip to content
Snippets Groups Projects
  • Nadav Har'El's avatar
    448a1d51
    Add build framework for Java classes and JNI · 448a1d51
    Nadav Har'El authored
    Added build ("make") framework for compiling Java code we want to run in
    OSv (in/with the Java payload), as well as JNI, i.e., OSv-specific C code
    we want to run from the above Java code.
    
    The Java source files in java/src/ are now all compiled during build
    (see java/build.xml for the Ant file doing this compilation) and the
    result is one JAR, build/$mode/java/cloudius.jar (/cloudius.jar in bootfs).
    We can easily change build.xml to create more than one if we want.
    
    As an example of JNI, I used the not-working-yet balloon feature.
    java/src/com/cloudius/balloon/Balloon.java is the class
    com.cloudius.balloon.Balloon which is supposed to have one "native"
    (implemented in C) function giveup(). This function's implementation is
    in java/jni/balloon.c. We get this file to compile to balloon.so (put
    in /usr/lib/jni in the bootfs) by adding java/jni/balloon.so to the
    "jni" list in build.mak.
    
    If you don't know how write the ugly function signature as seen in
    java/jni/balloon.c, you can run "javah com.cloudius.balloon.Balloon"
    to build the empty functions needed for implementing the native functions
    defined in the above class.
    448a1d51
    History
    Add build framework for Java classes and JNI
    Nadav Har'El authored
    Added build ("make") framework for compiling Java code we want to run in
    OSv (in/with the Java payload), as well as JNI, i.e., OSv-specific C code
    we want to run from the above Java code.
    
    The Java source files in java/src/ are now all compiled during build
    (see java/build.xml for the Ant file doing this compilation) and the
    result is one JAR, build/$mode/java/cloudius.jar (/cloudius.jar in bootfs).
    We can easily change build.xml to create more than one if we want.
    
    As an example of JNI, I used the not-working-yet balloon feature.
    java/src/com/cloudius/balloon/Balloon.java is the class
    com.cloudius.balloon.Balloon which is supposed to have one "native"
    (implemented in C) function giveup(). This function's implementation is
    in java/jni/balloon.c. We get this file to compile to balloon.so (put
    in /usr/lib/jni in the bootfs) by adding java/jni/balloon.so to the
    "jni" list in build.mak.
    
    If you don't know how write the ugly function signature as seen in
    java/jni/balloon.c, you can run "javah com.cloudius.balloon.Balloon"
    to build the empty functions needed for implementing the native functions
    defined in the above class.