Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_017ic4b6NtPJHrkan4BXhCAM
46 lines
2.6 KiB
Bash
Executable File
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
|