34 lines
2.9 KiB
Bash
Executable File
34 lines
2.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Java 21 features: every demo compiled and run on a real JDK 21; regenerates output/*.txt
|
|
# JDK21=/path/to/jdk21 ./run.sh
|
|
set -uo pipefail
|
|
unset JAVA_TOOL_OPTIONS
|
|
HERE="$(cd "$(dirname "$0")" && pwd)"
|
|
JDK21="${JDK21:-/opt/jdks/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 FILE CLASS [javac flags...] -- [java flags...]
|
|
cr() { local src="$1" cls="$2"; shift 2; local jf=() rf=(); while [ $# -gt 0 ] && [ "$1" != "--" ]; do jf+=("$1"); shift; done; [ "${1:-}" = "--" ] && shift; rf=("$@")
|
|
local o; o="$(mktemp -d -p "$B")"
|
|
echo "\$ javac ${jf[*]:-} $src && java ${rf[*]:-} $cls ($(ver "$JDK21"))"
|
|
"$JDK21/bin/javac" "${jf[@]}" -encoding UTF-8 -d "$o" "$src" 2>&1 | grep -v -e '^Note:' ; "$JDK21/bin/java" "${rf[@]}" -cp "$o" "$cls" 2>&1; }
|
|
co() { local src="$1"; shift; local o; o="$(mktemp -d -p "$B")"
|
|
echo "\$ javac $* $src ($(ver "$JDK21"))"; local r; r="$("$JDK21/bin/javac" "$@" -encoding UTF-8 -d "$o" "$src" 2>&1 | grep -v -e '^Note:')"; if [ -n "$r" ]; then echo "$r"; else echo "(compiled cleanly)"; fi; }
|
|
PV=(--release 21 --enable-preview)
|
|
cr src/VirtualThreadsDemo.java VirtualThreadsDemo > "$OUT/01-virtual-threads.txt"
|
|
cr src/RecordPatternsDemo.java RecordPatternsDemo > "$OUT/02-record-patterns.txt"
|
|
cr src/PatternSwitchDemo.java PatternSwitchDemo > "$OUT/03-pattern-switch.txt"
|
|
cr src/SequencedCollectionsDemo.java SequencedCollectionsDemo > "$OUT/04-sequenced-collections.txt"
|
|
cr src/KemDemo.java KemDemo > "$OUT/05-kem.txt"
|
|
{ cr src/GcNamesDemo.java GcNamesDemo -- -XX:+UseZGC; echo; cr src/GcNamesDemo.java GcNamesDemo -- -XX:+UseZGC -XX:+ZGenerational; } > "$OUT/06-generational-zgc.txt"
|
|
cr src/VectorDemo.java VectorDemo --add-modules jdk.incubator.vector -- --add-modules jdk.incubator.vector > "$OUT/07-vector-api.txt"
|
|
cr src/StringTemplatesPreview.java StringTemplatesPreview "${PV[@]}" -- --enable-preview > "$OUT/08-string-templates.txt"
|
|
cr src/UnnamedPreview.java UnnamedPreview "${PV[@]}" -- --enable-preview > "$OUT/09-unnamed-patterns.txt"
|
|
{ echo "\$ java --enable-preview --source 21 src/UnnamedMainPreview.java ($(ver "$JDK21"))"; "$JDK21/bin/java" --enable-preview --source 21 src/UnnamedMainPreview.java 2>&1 | grep -v '^Note:'; } > "$OUT/10-unnamed-main.txt"
|
|
cr src/ScopedValuesPreview.java ScopedValuesPreview "${PV[@]}" -- --enable-preview > "$OUT/11-scoped-values.txt"
|
|
cr src/StructuredConcurrencyPreview.java StructuredConcurrencyPreview "${PV[@]}" -- --enable-preview > "$OUT/12-structured-concurrency.txt"
|
|
cr src/FfmPreview.java FfmPreview "${PV[@]}" -- --enable-preview --enable-native-access=ALL-UNNAMED > "$OUT/13-ffm.txt"
|
|
{ co broken/PreviewWithoutFlag.java; echo; co broken/NonExhaustive.java; echo; co broken/DominatedCase.java; } > "$OUT/14-compile-errors.txt"
|
|
exit 0
|