How to install JAVA JDK

Revision as of 09:10, 2 October 2020 by Registered User

The goal of this page is to describe the way to install the openJDK on your STM32 MPU board and your desktop (native), in a Distribution Package Environment. It is the "open Standard Edition Java Development Kit" installation process. According to the openstlinux-weston software architecture, we use xwayland for all Java application based on X11, means AWT/SWING Java display/graphical applications. By default the Java Development Kit is installed on the rootfs partition of the target.

1. Prerequisites[edit source]

1.1. Hardware prerequisites[edit source]

  • STM32MP157C-DK2 Or a STM32MP157C-EV1
  • a keyboard and a mouse connected to the board

1.2. Software prerequisites[edit source]

The STM32MP1 Distribution Package must be installed on your host. To do this follow the procedure described in the Install the STM32MP1 OpenSTLinux distribution article.

2. The yoctoproject meta-java[edit source]

JAVA for Linux-based system for embedded system is available as a meta data in Yocto project.

  • Clone following git repository into [your STM32MP1 Distribution path]/layers/meta-st/
  PC >git clone git://git.yoctoproject.org/meta-java

Depending on the Yocto release, select the right branch. (example : branch thud for the STM32MP15-Ecosystem-v1.1.0)

cd meta-java
git checkout  remotes/origin/thud 

You can have the list of available Yocto branch with the command :

cd meta-java
git branch -a

 master
 remotes/origin/HEAD -> origin/master
 remotes/origin/dora
 remotes/origin/krogoth
 remotes/origin/master
 remotes/origin/master-next
 remotes/origin/morty
 remotes/origin/pyro
 remotes/origin/rocko
 remotes/origin/sumo
 remotes/origin/thud
 remotes/origin/warrior
 remotes/origin/wip
 remotes/origin/zeus
  • If not done, setup your build environment
 cd [your STM32MP1 Distribution path]
 source ./meta-st/script/envsetup.sh 
(Select for the DISTRO openstlinux-weston and for MACHINE stm32mp1)
  • Add the meta layer in your yocto environment
 cd [your STM32MP1 Distribution path]/build-openstlinuxweston-stm32mp1
 bitbake-layers add-layer [your STM32MP1 Distribution path]/meta-st/meta-java
  • Define at least the following variables in your local.conf file.
([your STM32MP1 Distribution path]/build-openstlinuxweston-stm32mp1/conf/local.conf)

#Possible provider: cacao-initial-native and jamvm-initial-native
PREFERRED_PROVIDER_virtual/java-initial-native = "cacao-initial-native"

#Possible provider: cacao-native and jamvm-native
PREFERRED_PROVIDER_virtual/java-native = "jamvm-native"

#Optional since there is only one provider for now
PREFERRED_PROVIDER_virtual/javac-native = "ecj-bootstrap-native"


  • Include in your image the openjdk-8 component
 cd [your STM32MP1 Distribution path]/meta-st/meta-st-openstlinux/recipes-st/images

  • Edit the file st-image-weston.bb and add the following line under CORE_IMAGE_EXTRA_INSTALL
  openjdk-8 \
  openjdk-8-demo \
  • Build the image
 cd [your STM32MP1 Distribution path]/build-openstlinuxweston-stm32mp1
 bitbake st-image-weston

3. Compil and execution of some JAVA demo[edit source]

  • forkjoin benchmark Java application
 cd /usr/lib/jvm/openjdk-8/sample/forkjoin/mergesort
 javac MergeDemo.java
 java MergeDemo 200 100 3 1 1 3
Running with parameters: 200 100 3 1 1 3
Time in milliseconds. Y-axis: number of elements. X-axis parallelism used.
            1    2    3
    200:   10    7    8
    300:   17   12   12
    400:   20   14   14
  Total:   47   33   34
  • SampleTree Java application

Read the README.txt file for details. To execute in a linux weston console on the board, with a keyboard and a mouse.

 cd /usr/lib/jvm/openjdk-8/demo/jfc/SampleTree
 java -jar SampleTree.jar

Sampletree.png