Add java11-features module: runnable demos and captured output for the ankurm.com java11-features article
This commit is contained in:
Executable
+24
@@ -0,0 +1,24 @@
|
||||
#!/usr/bin/env bash
|
||||
# Java 11 features: every demo compiled and run on real JDKs; regenerates output/*.txt
|
||||
# JDK8=/path JDK11=/path ./run.sh
|
||||
set -uo pipefail
|
||||
unset JAVA_TOOL_OPTIONS
|
||||
HERE="$(cd "$(dirname "$0")" && pwd)"
|
||||
JDK8="${JDK8:-/opt/jdks/jdk8}"; JDK11="${JDK11:-/opt/jdks/jdk11}"
|
||||
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" -encoding UTF-8 -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"))"; local r; r="$("$jdk/bin/javac" -encoding UTF-8 -d "$o" "$src" 2>&1)"; if [ -n "$r" ]; then echo "$r"; else echo "(compiled cleanly)"; fi; }
|
||||
cr "$JDK11" src/StringMethods.java StringMethods > "$OUT/01-string-methods.txt"
|
||||
cr "$JDK11" src/FilesDemo.java FilesDemo > "$OUT/02-files.txt"
|
||||
cr "$JDK11" src/HttpClientDemo.java HttpClientDemo > "$OUT/03-http-client.txt"
|
||||
cr "$JDK11" src/VarLambda.java VarLambda > "$OUT/04-var-lambda.txt"
|
||||
{ echo "\$ java src/SingleFile.java ($(ver "$JDK11"))"; "$JDK11/bin/java" src/SingleFile.java 2>&1; } > "$OUT/05-single-file.txt"
|
||||
cr "$JDK11" src/NestMates.java NestMates > "$OUT/06-nest-mates.txt"
|
||||
{ co "$JDK8" broken/JaxbRemoved.java; echo; co "$JDK11" broken/JaxbRemoved.java; echo; co "$JDK11" broken/VarWithoutLambda.java; } > "$OUT/07-compile-errors.txt"
|
||||
{ echo "# the Java 8 compile of src/StringMethods.java: these String methods do not exist on 8"; co "$JDK8" src/StringMethods.java; } > "$OUT/08-string-methods-on-8.txt"
|
||||
exit 0
|
||||
Reference in New Issue
Block a user