javac.exe is for compiling java class. e.g javac.exe App.java
java.exe can be use to call java compiled jar or other use. e.g java.exe -jar xxxxx.jar or java.exe -m xxxxxx
First, let's understand B4J produces jar file using JDK 11+ but this is not user friendly.
Windows users prefer to use exe format so they can just double-click and run.
Maybe some B4X developers confused with the exe compiled from VB or VB.Net
Java applications need to use JVM to run
B4J IDE has build-in the Build Standalone Package feature which make an exe format easier.
BUT this exe is not the same exe like what produce by Visual Studio or VB.
Once the packaging completed, there are 2 exe files.
To run our app, we execute the java.exe or App.exe inside the \bin folder which required to pass some parameters such as the module names. I don't know how the magic actually works but this is what I understand.
The packager has bundled together with a java.exe and other required files to let you run the java app without Java runtime or JDK installed.
If you don't want to pass more parameters, it is better use the App.exe 1 level up, it make things a bit easier.
If you don't want to use that, it is fine to just use the App.exe inside the \bin folder but you need to pass some parameters.