How to Install Java 8 and DCEVM on Debian 8 (Jessie)

Updated on June 30, 2017
How to Install Java 8 and DCEVM on Debian 8 (Jessie) header image

Java is a platform-independent programming language / virtual machine.

In this tutorial, we will install the OpenJDK implementation of Java 8 on a Debian 8 (Jessie) machine as well as the process of installing DCEVM (Dynamic Code Evolution VM) - an extension that allows unlimited runtime redefinition of classes with the help of Hotswap Agent.

Prerequisites

  • A fresh install of Debian 8 (Jessie)

Step 1: Adding Jessie-backports to apt config

Add the following lines to /etc/apt/sources.list

# jessie-backports allows newer software to be installed
deb http://http.us.debian.org/debian/ jessie-backports main
deb-src http://http.us.debian.org/debian/ jessie-backports main

Step 2: Update apt

Update apt to refresh the packages with the backports.

apt-get update

Step 3: Install Java

Install Java from the backports package list.

apt-get install -t jessie-backports openjdk-8-jre openjdk-8-jre-headless

Install DCEVM

If you need to, you can install DCEVM openjdk-8-jre-dcevm which allows Java code to be reloaded while running. Please note that DCEVM is not required to run Java applications.

apt-get install openjdk-8-jre-dcevm

Step 4: Verify installation

Use the below command to verify that Java is installed:

java -version

The output should resemble the following:

root@debian:~# java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-1~bpo8+1-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)

Verify DCEVM is installed

If you installed DCEVM, use the below command to verify the installation:

java -dcevm -version

The output should resemble the following:

root@debian:~# java -dcevm -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-1~bpo8+1-b11)
Dynamic Code Evolution 64-Bit Server VM (build 25.71-b01-dcevm-light, mixed mode)

How to use DCEVM

To use DCEVM, we need to use the aforementioned Hotswap Agent. Download that from Github and then run your .jar application as follows:

java -dcevm -javaagent:hotswap-agent-1.1.0-SNAPSHOT.jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=127.0.0.1:54321 -jar Your.jar

This will bind the hotswap transport port to 127.0.0.1:54321, which a developer can connect to via an SSH tunnel. It is possible to bind the transport port to an external IP address, but it's a serious security concern because it allows arbitrary code execution. Please use Vultr firewall if you do decide to bind to an external IP address.

Note: This example assumes that the Hotswap Agent jar is located in the same directory and named hotswap-agent-1.1.0-SNAPSHOT.jar.