Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ev3dev-lang-java/openjdk-ev3
A custom Build of OpenJDK 9/10/11/12/13/14/15 for EV3, a Lego Mindstorms Brick using ARM Soft Float
https://github.com/ev3dev-lang-java/openjdk-ev3
adoptopenjdk cross-compiler ev3 ev3dev java java10 java11 java12 java13 java14 java15 java9 jvm lejos lejos-ev3 openjdk
Last synced: 2 days ago
JSON representation
A custom Build of OpenJDK 9/10/11/12/13/14/15 for EV3, a Lego Mindstorms Brick using ARM Soft Float
- Host: GitHub
- URL: https://github.com/ev3dev-lang-java/openjdk-ev3
- Owner: ev3dev-lang-java
- License: mit
- Created: 2018-01-03T23:01:51.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2024-03-11T19:42:36.000Z (7 months ago)
- Last Synced: 2024-03-26T05:12:48.857Z (6 months ago)
- Topics: adoptopenjdk, cross-compiler, ev3, ev3dev, java, java10, java11, java12, java13, java14, java15, java9, jvm, lejos, lejos-ev3, openjdk
- Language: Shell
- Homepage: https://ci.adoptopenjdk.net/view/ev3dev/
- Size: 4.74 MB
- Stars: 13
- Watchers: 4
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# OpenJDK for ev3dev-lang-java
Custom build of OpenJDK providing Java support for ev3dev on the following devices:* LEGO Mindstorms EV3, featuring a ARM926EJ-S CPU
Builds for older boards should work on newer boards, the performance might just be a bit lower.
## Build Status
| OpenJDK version | Platform | Type | VM | ev3dev-stretch | ev3dev-buster |
|-------------------|----------|---------|--------|-------------------------|-------------------------|
| OpenJDK 9 | EV3 | x86→ARM | C1 JIT | [archived][archive] | N/A |
| OpenJDK 10 | EV3 | x86→ARM | C1 JIT | [archived][archive] | N/A |
| OpenJDK 11 | EV3 | ARM→ARM | C1 JIT | [![-> jenkins][1]][2] | [![-> jenkins][3]][4] |
| OpenJDK 12 | EV3 | ARM→ARM | C1 JIT | [![-> jenkins][5]][6] | [![-> jenkins][7]][8] |
| OpenJDK 13 | EV3 | ARM→ARM | C1 JIT | [![-> jenkins][9]][10] | [![-> jenkins][11]][12] |
| OpenJDK 14 | EV3 | ARM→ARM | C1 JIT | [![-> jenkins][17]][18] | [![-> jenkins][19]][20] |
| OpenJDK 15 | EV3 | ARM→ARM | C1 JIT | [![-> jenkins][21]][22] | [![-> jenkins][23]][24] |
| OpenJDK tip (dev) | EV3 | ARM→ARM | C1 JIT | [![-> jenkins][13]][14] | [![-> jenkins][15]][16] |[1]: https://ci.adoptopenjdk.net/view/ev3dev/job/eljbuild/job/stretch-11/badge/icon
[2]: https://ci.adoptopenjdk.net/view/ev3dev/job/eljbuild/job/stretch-11/
[3]: https://ci.adoptopenjdk.net/view/ev3dev/job/eljbuild/job/buster-11/badge/icon
[4]: https://ci.adoptopenjdk.net/view/ev3dev/job/eljbuild/job/buster-11/[5]: https://ci.adoptopenjdk.net/view/ev3dev/job/eljbuild/job/stretch-12/badge/icon
[6]: https://ci.adoptopenjdk.net/view/ev3dev/job/eljbuild/job/stretch-12/
[7]: https://ci.adoptopenjdk.net/view/ev3dev/job/eljbuild/job/buster-12/badge/icon
[8]: https://ci.adoptopenjdk.net/view/ev3dev/job/eljbuild/job/buster-12/[9]: https://ci.adoptopenjdk.net/view/ev3dev/job/eljbuild/job/stretch-13/badge/icon
[10]: https://ci.adoptopenjdk.net/view/ev3dev/job/eljbuild/job/stretch-13/
[11]: https://ci.adoptopenjdk.net/view/ev3dev/job/eljbuild/job/buster-13/badge/icon
[12]: https://ci.adoptopenjdk.net/view/ev3dev/job/eljbuild/job/buster-13/[13]: https://ci.adoptopenjdk.net/view/ev3dev/job/eljbuild/job/stretch-bleeding/badge/icon
[14]: https://ci.adoptopenjdk.net/view/ev3dev/job/eljbuild/job/stretch-bleeding/
[15]: https://ci.adoptopenjdk.net/view/ev3dev/job/eljbuild/job/buster-bleeding/badge/icon
[16]: https://ci.adoptopenjdk.net/view/ev3dev/job/eljbuild/job/buster-bleeding/[17]: https://ci.adoptopenjdk.net/view/ev3dev/job/eljbuild/job/stretch-14/badge/icon
[18]: https://ci.adoptopenjdk.net/view/ev3dev/job/eljbuild/job/stretch-14/
[19]: https://ci.adoptopenjdk.net/view/ev3dev/job/eljbuild/job/buster-14/badge/icon
[20]: https://ci.adoptopenjdk.net/view/ev3dev/job/eljbuild/job/buster-14/[21]: https://ci.adoptopenjdk.net/view/ev3dev/job/eljbuild/job/stretch-15/badge/icon
[22]: https://ci.adoptopenjdk.net/view/ev3dev/job/eljbuild/job/stretch-15/
[23]: https://ci.adoptopenjdk.net/view/ev3dev/job/eljbuild/job/buster-15/badge/icon
[24]: https://ci.adoptopenjdk.net/view/ev3dev/job/eljbuild/job/buster-15/[archive]: https://github.com/ev3dev-lang-java/openjdk-ev3-archive
## Overview & documentation
See [Docs](docs/openjdk-ev3-maintainer-manual.pdf)
## Components
The build process produces these files:| Name | File name | Summary | Where it runs | Who is it for | What is it useful for |
|-------|-----------------|-------------------|---------------|-------------------|-------------------------------------------------|
| JRI | `jri-ev3.zip` | Minimal runtime | Brick | Java developer | Running Java programs on ev3dev. |
| JDK | `jdk-ev3.zip` | Full JDK | Brick | ev3dev power user | Compiling Java programs directly on the brick. |
| JMODs | `jmods-ev3.zip` | Runtime modules | Developer PC | both | Creating custom JRIs. |_JRI stands for "Java Runtime Image". The term itself is not specific to this project,
it is equivalent to [Modular Run-Time Image](https://openjdk.java.net/jeps/220).
To see which modules are included in our case, take a look at the `JRI_MODULES` variable in `scripts/config.sh`._## Building locally
1. Install [Docker](https://docs.docker.com/engine/installation/) for your operating system.
2. Follow this script:
```bash
# define parameters
TARGET_WORKSPACE="$(pwd)/build" # 10 GB of free space should be sufficient, probably less
TARGET_DEBIAN_VERSION="stretch" # stretch or buster
TARGET_OPENJDK_VERSION="11" # 9, 10, 12, 13, 14 - retired, may not be working
# 11, 15 - most likely working
# loom or tip - experimental, may be broken# clone repository
git clone https://github.com/ev3dev-lang-java/openjdk-ev3.git
cd openjdk-ev3# prepare working directory
mkdir -p "$TARGET_WORKSPACE"
chmod -R 777 "$TARGET_WORKSPACE" # docker may not share UID with the current user# build base system container
docker build --build-arg DEBIAN_RELEASE="$TARGET_DEBIAN_VERSION" \
--build-arg ARCH="armel" \
--tag "ev3dev-lang-java:jdk-cross-$TARGET_DEBIAN_VERSION" \
--file ./system/Dockerfile.cross \
./system# on top of that, create a build scripts container
docker build --build-arg commit="$(git rev-parse HEAD)" \
--build-arg extra="Manual build by $(whoami)" \
--build-arg DEBIAN_RELEASE="$TARGET_DEBIAN_VERSION" \
--build-arg BUILD_TYPE="cross" \
--tag "ev3dev-lang-java:jdk-cross-build" \
./scripts# now run the build
docker run --rm \
--interactive \
--tty \
--volume "$TARGET_WORKSPACE:/build" \
--env JDKVER="$TARGET_OPENJDK_VERSION" \
--env JDKVM="client" \
--env JDKPLATFORM="ev3" \
--env JDKDEBUG="release" \
--env AUTOBUILD="1" \
ev3dev-lang-java:jdk-cross-build# finally, make workspace accessible for all users (i.e. current one too) and list files in its root
chmod -R 777 "$TARGET_WORKSPACE"
# and list the output directory (now it should contain three *-ev3.tar.gz files)
ls "$TARGET_WORKSPACE"
```