Skip to content

Commit 5ed8097

Browse files
committed
[readme] jshell & jmods update
1 parent 8f9802f commit 5ed8097

File tree

1 file changed

+6
-30
lines changed

1 file changed

+6
-30
lines changed

README.md

Lines changed: 6 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -7,36 +7,8 @@ The output consists of these parts:
77
* Stripped down version -- a runtime image
88
* JDK built for the EV3 - `jdk-ev3.zip`
99
* Basically the full build
10-
* [Official OpenJDK linux-amd64](http://jdk.java.net/10/) with EV3 jmods
11-
* Only a stripped down version -- also a runtime image
12-
* It can be used for creating custom JRE images. For this, jlink and the ev3 jmods are included.
13-
* It has `javac` (jdk.compiler module).
14-
* JShell remote launcher (hackish, linux-only) is available.
15-
16-
## JShell on the EV3
17-
18-
### Usage
19-
20-
First, you have to either [add](https://askubuntu.com/a/4833) your pubkey to the EV3 brick's authorized_keys,
21-
or set the [SSH_ASKPASS](https://unix.stackexchange.com/a/83991) environment variable. Then, run a script from
22-
the amd64 JDK on your computer: `bin/jshell-launch.sh <ssh args>`, where `<ssh args>` is an address with an optinal
23-
port-specifying flag. The options are just added to the SSH command line and aren't sanitized in any way.
24-
25-
### Theory
26-
27-
We've managed to run JShell in a kind of "split-mode". The compiler part runs on your powerful computer,
28-
whether the not-so-demanding execution is done on the brick. This was almost supported out of the box -
29-
the default JShell configuration already uses JDI transport. The only issue is that it does not provide an
30-
intuitive way to connect to a remote host. JShell always launches a new JVM process in the JDI mode.
31-
32-
Our hack relies on replacing the agent in the VM started by JShell. The new dummy agent just
33-
writes the port number it was supposed to connect to a file `/tmp/jshellargs`. Then, if you make
34-
`jshellargs` a UNIX pipe, you can very easily pass the port to another application.
35-
36-
JShell on your computer is the listening side of the JDWP channel. To reuse the existing remote agent,
37-
which is used in the local JDI mode, we tunnel a chosen port over the SSH session. SSH connects to the
38-
JShell listening socket and itself listens on the remote side. Then, the last task is to run the
39-
JShell JDI agent on the remote side, which is handled by SSH as well.
10+
* EV3 jmods
11+
* It can be used for creating custom JRE images.
4012

4113
## Building
4214

@@ -67,3 +39,7 @@ sudo docker run --rm -it -v <path on host, where the sources should be stored>:/
6739
```
6840
8. If the build was successful, JDK packages were created in `/build/jre-ev3.zip`, `/build/jdk-ev3.zip` and `/build/jdk-pc.zip`.
6941
If you have mounted `/build`, you can access the files from the host.
42+
43+
## ~~JShell on the EV3~~
44+
45+
No longer supported. JShell backend on the EV3 is a huge overkill.

0 commit comments

Comments
 (0)