Difference between revisions of "How to install JAVA JDK"

[checked revision] [quality revision]
(Merge articles)
m
 

The goal of this page is to describe the OpenJDK installation procedure on your STM32 MPU board and (native) desktop, in a STM32MP1 Distribution Package environment.
It is the "Open Standard Edition Java Development Kit" installation process. According to the OpenstLinux Weston software architecture, XWayland is used for all Java applications based on X11, which 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]

1.1 Hardware prerequisites[edit]

  • STM32MP157x-DKx Discovery kit More info green.png Or aSTM32MP157x-EV1 Evaluation board More info green.png
  • a keyboard and a mouse connected to the board

1.2 Software prerequisites[edit]

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.

The process has been verified with ecosystem release v2.0.0 of the OpenSTlinux distribution.

Info white.png Information
The Host OS Ubuntu release 18.04 and next is required. See PC prerequisites

2 The yoctoproject meta-java[edit]

JAVA for Linux-based embedded systems is available as metadata in the Yocto project.

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

Depending on the Yocto release, select the right branch. (for example, branch dunfell for the ecosystem release v2.0.0 )

Info white.png Information
The last commit tested is cf9604a4789801d9dfb0cb8ca134ff04b42ae161 : openjdk-8: remove -Werror
cd meta-java
git checkout  remotes/origin/dunfell 

You can see the list of available Yocto branches with the following command:

cd meta-java
git branch -a

 master
 remotes/origin/HEAD -> origin/master
 remotes/origin/dora
 remotes/origin/dunfell
 remotes/origin/g0hl1n/jdk14
 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/zeus
  • If not already done, set up your build environment
 cd [your STM32MP1 Distribution path]
 source layers/meta-st/scripts/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]/layers/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 \
  • Increase the Rootfs partition size

Update the file ([your STM32MP1 Distribution path]/ layers/meta-st/meta-st-stm32mp/conf/machine/include/st-machine-common-stm32mp.inc)

IMAGE_ROOTFS_MAXSIZE = "819200"
  • Build the image
 cd [your STM32MP1 Distribution path]/build-openstlinuxweston-stm32mp1
 bitbake st-image-weston

3 Compilation and execution of some JAVA demos[edit]

  • 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


The goal of this page is to describe the OpenJDK installation procedure on your STM32 MPU board and (native) desktop, in a STM32MP1 Distribution Package environment. <br>

It is the "Open Standard Edition Java Development Kit" installation process.
According to the OpenstLinux Weston software architecture, '''XWayland''' is used for all Java applications based on '''X11''', which means '''AWT/SWING''' Java display/graphical applications.<br>

By default the Java Development Kit is installed on the rootfs partition of the target.  

==Prerequisites==
===Hardware prerequisites===
*{{Board | type=157x-DKx}} Or a{{Board | type=157x-EV1}}
* a keyboard and a mouse connected to the board

===Software prerequisites===
The STM32MP1 Distribution Package must be installed on your host. To do this, follow the procedure described in the  [[STM32MP1 Distribution Package - OpenSTLinux distribution#Download|Install the STM32MP1 OpenSTLinux distribution]]  article.

The process has been verified with {{EcosystemRelease | revision=2.0.0}} of the OpenSTlinux distribution.

{{Info|The Host OS Ubuntu release 18.04 and next is required. See [[PC prerequisites]]}}

==The yoctoproject meta-java ==
JAVA for Linux-based embedded systems is available as metadata in the Yocto project.

* Clone the following git repository into [your STM32MP1 Distribution path]/layers
 {{PC$}}cd [your STM32MP1 Distribution path]/layers
 {{PC$}}git clone git://git.yoctoproject.org/meta-java

Depending on the Yocto release, select the right branch. (for example, branch dunfell for the {{EcosystemRelease | revision=2.0.0}})  
{{Info|The last commit tested is cf9604a4789801d9dfb0cb8ca134ff04b42ae161 : openjdk-8: remove -Werror}}
 {{PC$}}cd meta-java
 {{PC$}}git checkout  remotes/origin/dunfell 

You can see the list of available Yocto branches with the following command: 
 {{PC$}}cd meta-java
 {{PC$}}git branch -a

  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/dora
  remotes/origin/dunfell
  remotes/origin/g0hl1n/jdk14
  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/zeus</pre>


* If not already done, set up your build environment
 {{PC$}} cd [your STM32MP1 Distribution path]
 {{PC$}} source layers/meta-st/scripts/envsetup.sh
 (Select for the DISTRO openstlinux-weston and for MACHINE stm32mp1)

* Add the meta layer in your Yocto environment 
 {{PC$}} cd [your STM32MP1 Distribution path]/build-openstlinuxweston-stm32mp1
 {{PC$}} bitbake-layers add-layer [your STM32MP1 Distribution path]/layers/meta-java
{{ReviewsComments|-- [[User:Olivier Gallien|Olivier Gallien]] ([[User talk:Olivier Gallien|talk]]) 18:21, 31 January 2022 (CET)<br />Updated path according to where git clone is made above }}
* 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
 {{PC$}} 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<pre>

  openjdk-8 \
  openjdk-8-demo \</pre>


* Increase the Rootfs partition size
Update the file (''[your STM32MP1 Distribution path]/ layers/meta-st/meta-st-stm32mp/conf/machine/include/st-machine-common-stm32mp.inc'')<pre style="overflow-y: visible; max-height: none;">

IMAGE_ROOTFS_MAXSIZE = "819200"</pre>


* Build the image
 {{PC$}} cd [your STM32MP1 Distribution path]/build-openstlinuxweston-stm32mp1
 {{PC$}} bitbake st-image-weston
{{ReviewsComments|-- [[User:Olivier Gallien|Olivier Gallien]] ([[User talk:Olivier Gallien|talk]]) 18:26, 31 January 2022 (CET)<br />during testing, it has been seen that adding OpenJDK increases the rootfs size to the extent that it causes a build failure related to an ST set environment variable. IMAGE_ROOTFS_MAXSIZE. It can be good to warn about it.<br/>

 [[User:Yves Coppeaux|Yves Coppeaux]] ([[User talk:Yves Coppeaux |talk]]) 13:26, 02 February 2022 (CET)<br/>

DONE }}
==Compilation and execution of some JAVA demos==

* '''forkjoin''' benchmark Java application
 {{Board$}} cd /usr/lib/jvm/openjdk-8/sample/forkjoin/mergesort
 {{Board$}} javac MergeDemo.java
 {{Board$}} 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.
 {{Board$}} cd /usr/lib/jvm/openjdk-8/demo/jfc/SampleTree
 {{Board$}} java -jar SampleTree.jar

[[File:Sampletree.png|link=]]
<noinclude>

[[Category:How to run use cases with expansions]]
{{PublicationRequestId | 17583 | 2020-10-02 | Philip Sage}}</noinclude>
Line 58: Line 58:
 
  {{PC$}} cd [your STM32MP1 Distribution path]/build-openstlinuxweston-stm32mp1
 
  {{PC$}} cd [your STM32MP1 Distribution path]/build-openstlinuxweston-stm32mp1
 
  {{PC$}} bitbake-layers add-layer [your STM32MP1 Distribution path]/layers/meta-java
 
  {{PC$}} bitbake-layers add-layer [your STM32MP1 Distribution path]/layers/meta-java
 
{{ReviewsComments|-- [[User:Olivier Gallien|Olivier Gallien]] ([[User talk:Olivier Gallien|talk]]) 18:21, 31 January 2022 (CET)<br />Updated path according to where git clone is made above }}
 
   
 
* Define at least the following variables in your local.conf file
 
* Define at least the following variables in your local.conf file
Line 92: Line 90:
 
  {{PC$}} cd [your STM32MP1 Distribution path]/build-openstlinuxweston-stm32mp1
 
  {{PC$}} cd [your STM32MP1 Distribution path]/build-openstlinuxweston-stm32mp1
 
  {{PC$}} bitbake st-image-weston
 
  {{PC$}} bitbake st-image-weston
 
{{ReviewsComments|-- [[User:Olivier Gallien|Olivier Gallien]] ([[User talk:Olivier Gallien|talk]]) 18:26, 31 January 2022 (CET)<br />during testing, it has been seen that adding OpenJDK increases the rootfs size to the extent that it causes a build failure related to an ST set environment variable. IMAGE_ROOTFS_MAXSIZE. It can be good to warn about it.<br/>
 
[[User:Yves Coppeaux|Yves Coppeaux]] ([[User talk:Yves Coppeaux |talk]]) 13:26, 02 February 2022 (CET)<br/>
 
DONE }}
 
   
 
==Compilation and execution of some JAVA demos==
 
==Compilation and execution of some JAVA demos==