Not sure if this is the right forum but, is XCode resposible for any of these binary or is this part of the Java installer?
/usr/libexec/java_home symlink to /System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/java_home
If XCode is responsible for them, any chance a new option could be added to define what is the default java version when calling java_home with no arguments.
Something like [-d auto|<version>].
So the current behavior is auto, but you can override if/when needed.
I've installed Java 9 Early Access, so my java_home currently give me;
$ /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home
$ /usr/libexec/java_home -V
Matching Java Virtual Machines (3):
9, x86_64: "Java SE 9-ea" /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home
1.8.0_60, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home
1.7.0_51, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home
$
But for 95% of when I'm doing I still need to use Java 1.8. So this requires me to uninstall Java 9 so the default returns back to Java 1.8 and everything returns back to before.
i.e;
Default to Java 9
$ /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home
Change default using maybe -d to 1.8, so when java_home called it return that without having to supply -v 1.8
$ /usr/libexec/java_home -d 1.8
$ /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home
Return to default behaviour by specifying auto as defult
$ /usr/libexec/java_home -d auto
$ /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home