24 lines
1.4 KiB
Bash
Executable File
24 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Java 8 features: every demo compiled and run on a real JDK 8; regenerates output/*.txt
|
|
# JDK8=/path/to/jdk8 JDK21=/path/to/jdk21 ./run.sh
|
|
set -uo pipefail
|
|
unset JAVA_TOOL_OPTIONS
|
|
HERE="$(cd "$(dirname "$0")" && pwd)"
|
|
JDK8="${JDK8:-/opt/jdks/jdk8}"; JDK21="${JDK21:-}"
|
|
OUT="$HERE/output"; mkdir -p "$OUT"; B="$(mktemp -d)"; trap 'rm -rf "$B"' EXIT
|
|
cd "$HERE"
|
|
ver() { "$1/bin/java" -version 2>&1 | sed -n 1p | sed 's/.*"\(.*\)".*/\1/'; }
|
|
cr() { local jdk="$1" src="$2" cls="$3" o; o="$(mktemp -d -p "$B")"
|
|
echo "\$ javac $src && java $cls ($(ver "$jdk"))"
|
|
"$jdk/bin/javac" -d "$o" "$src" 2>&1 | grep -v '^Note:' ; "$jdk/bin/java" -cp "$o" "$cls" 2>&1; }
|
|
co() { local jdk="$1" src="$2" o; o="$(mktemp -d -p "$B")"
|
|
echo "\$ javac $src ($(ver "$jdk"))"; "$jdk/bin/javac" -d "$o" "$src" 2>&1; }
|
|
cr "$JDK8" src/LambdaDemo.java LambdaDemo > "$OUT/01-lambda.txt"
|
|
{ cr "$JDK8" src/StreamsDemo.java StreamsDemo; } > "$OUT/02-streams.txt"
|
|
cr "$JDK8" src/OptionalDemo.java OptionalDemo > "$OUT/03-optional.txt"
|
|
cr "$JDK8" src/DefaultMethodsDemo.java DefaultMethodsDemo > "$OUT/04-default-methods.txt"
|
|
cr "$JDK8" src/TimeDemo.java TimeDemo > "$OUT/05-java-time.txt"
|
|
cr "$JDK8" src/FunctionalInterfacesDemo.java FunctionalInterfacesDemo > "$OUT/06-functional-interfaces.txt"
|
|
{ co "$JDK8" broken/CaptureError.java; echo; co "$JDK8" broken/DiamondError.java; } > "$OUT/07-compile-errors.txt"
|
|
exit 0
|