jreicherChronos: because it's the JVM "implementing" that exit code. If it wanted, it could override any exit code written in the Java code it's running.
Chronosjreicher: Ah, that makes sense. Your carefully crafted exit code could easily be overridden, so you can't count on it.
dreamrealbut that's the case for any of them
dreamrealincluding C
dreamrealthe only way you're going to guarantee that sort of thing is at the language spec level, and you have to trust the spec for it to be true anyway
jreicherI was thinking that, and realised I never looked at the Java language spec for this.