Add java8-features module: runnable demos and captured output for the ankurm.com java8-features article
This commit is contained in:
Executable
+23
@@ -0,0 +1,23 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user