Files
java-core-examples/reflection/scripts/run-all.sh
T

46 lines
2.6 KiB
Bash
Executable File

#!/usr/bin/env bash
# Regenerates every file in output/. Needs JDK 25 as JAVA_HOME; JDK26_HOME (optional) adds the
# JEP 500 comparison run. JMH takes a few minutes.
set -euo pipefail
cd "$(dirname "$0")/.."
mvn -q package
# env -u keeps the sandbox's JAVA_TOOL_OPTIONS banner out of committed output.
J() { env -u JAVA_TOOL_OPTIONS "$JAVA_HOME/bin/java" "$@"; }
echo "--- 01: basics ---"
{ echo '$ java -cp target/classes com.ankurm.reflection.ReflectionBasicsDemo'; echo
J -cp target/classes com.ankurm.reflection.ReflectionBasicsDemo 2>&1; } > output/01-basics.txt
echo "--- 02: module rules ---"
{ echo '$ java -cp target/classes com.ankurm.reflection.ModuleRulesDemo'; echo
J -cp target/classes com.ankurm.reflection.ModuleRulesDemo 2>&1
echo; echo '$ java --add-opens java.base/java.lang=ALL-UNNAMED -cp target/classes com.ankurm.reflection.ModuleRulesDemo'; echo
J --add-opens java.base/java.lang=ALL-UNNAMED -cp target/classes com.ankurm.reflection.ModuleRulesDemo 2>&1; } > output/02-module-rules.txt
echo "--- 03: final fields (JDK 25, and JDK 26 if JDK26_HOME is set) ---"
{ echo '$ java -cp target/classes com.ankurm.reflection.FinalFieldDemo # JDK 25'; echo
J -cp target/classes com.ankurm.reflection.FinalFieldDemo 2>&1
if [ -n "${JDK26_HOME:-}" ]; then
echo; echo '$ java -cp target/classes com.ankurm.reflection.FinalFieldDemo # JDK 26'; echo
env -u JAVA_TOOL_OPTIONS "$JDK26_HOME/bin/java" -cp target/classes com.ankurm.reflection.FinalFieldDemo 2>&1
echo; echo '$ java --illegal-final-field-mutation=deny -cp target/classes com.ankurm.reflection.FinalFieldDemo # JDK 26'; echo
env -u JAVA_TOOL_OPTIONS "$JDK26_HOME/bin/java" --illegal-final-field-mutation=deny -cp target/classes com.ankurm.reflection.FinalFieldDemo 2>&1 || true
fi; } > output/03-final-fields.txt
echo "--- 04: method handles ---"
{ echo '$ java -cp target/classes com.ankurm.reflection.MethodHandlesDemo'; echo
J -cp target/classes com.ankurm.reflection.MethodHandlesDemo 2>&1; } > output/04-method-handles.txt
echo "--- 05: JMH call cost (a few minutes) ---"
J -jar target/benchmarks.jar CallBenchmark -rf text -rff /tmp/jmh-reflection.txt > /tmp/jmh-reflection.log 2>&1
{ echo '$ java -jar target/benchmarks.jar CallBenchmark'; echo
J -version 2>&1 | head -1
echo; grep -A20 '^Benchmark ' /tmp/jmh-reflection.log | grep -v 'Benchmark result is saved'; } > output/05-call-benchmark.txt
echo "--- 06: single-file quick start ---"
{ echo '$ java src/main/java/com/ankurm/reflection/QuickStart.java'; echo
J src/main/java/com/ankurm/reflection/QuickStart.java 2>&1; } > output/06-quickstart.txt
echo done