occlum/demos/java
2020-08-15 19:12:39 +08:00
..
hello_world Add Java demo 2020-07-17 17:35:24 +00:00
.gitignore Rename "occlum_context" to "occlum_instance" for demos 2020-08-15 19:12:39 +08:00
download_and_build_web_app.sh Add Java demo 2020-07-17 17:35:24 +00:00
README.md Add Java demo 2020-07-17 17:35:24 +00:00
run_java_on_occlum.sh Rename "occlum_context" to "occlum_instance" for demos 2020-08-15 19:12:39 +08:00

Use Java with Occlum

This project demonstrates how Occlum enables unmodified Java programs running in SGX enclaves.

About JDK

JDK 11 is supported currently. The source code of JDK 11 can be found here. In order for it to cooperate with Occlum, a minor modification has been made to it. The modified JDK is compiled in Alpine Linux with bash configure && make images commands. We have installed it at /opt/occlum/toolchains/jvm/java-11-openjdk/jre while making the Docker image.

Demo: Hello World

We provide a "Hello World" demo to show how to run a simple Java program inside SGX enclaves. The demo code can be found here.

How to Run

Step 1: Compile the source code with occlum-javac

occlum-javac ./hello_world/Main.java

When completed, the resulting file can be found at ./hello_world/Main.class.

Step 2: Start JVM to run the hello world program

./run_java_on_occlum.sh hello

Demo: Web application with Spring Boot

We also choose a Java web application that using WebSocket with Spring Boot. The demo code can be found here.

How to Run

Step 1: Download the demo code and build a Fat JAR file with Maven

./download_and_build_web_app.sh

When completed, the resulting Fat JAR file can be found at ./gs-messaging-stomp-websocket/complete/target/gs-messaging-stomp-websocket-0.1.0.jar.

Step 2: Start JVM to run the JAR file on Occlum

./run_java_on_occlum.sh web_app

The web application should now start to listen on port 8080 and serve requests.

Step 3: To check whether it works, run

curl http://localhost:8080

in another terminal.

It is recommended to access the web application in a Web browser. You have to manually map port 8080 of the Docker container to a port on the host OS. Check out how to use the -p argument of docker run command.