You can run the Jar files using app_process, which replaces the java executable on Android. Looking at /system/bin/am for example, we see it's really running
exec app_process $base/bin com.android.commands.am.Am "$@"
You've mentioned running Xposed. If you'll google the manual installation of this framework, you'll see it both deploys a jar to /system/frameworks and replaces app_process with a modified one, where the hooks are added. It's also instructive to read through the modified app_process code.
Note you may need this answer to actually run your apps.
Finally, note that you seem to have misunderstood the link to stackoverflow answer in the comments (https://stackoverflow.com/q/30656933/2291). The Jars are installed. On newer systems, they are converted (and the files removed from the jar) to ART and run as native code (i.e. machine language). On older systems, I think the java class files are converted to Dex bytecode and run in the Dalvik VM. That means that the Dex bytecode is run in Dalvik in the same way Java bytecode is run by the Java VM on the fly. In any case, the JAR files always contain code initially.
.dex
'es, then what are those.jar
's there for?.jar
files are Android's standard class library which is loaded by Dalvik/ART VMs just like JVM on PCs loads JCL from different.jar
/.jmod
files. Environment variable BOOTCLASSPATH defines a list of all such.jar
files. Like.apk
files,.jar
files are also ZIP files and contain aclasses.dex
file which is either interpreted or JIT compiled (as was done by Dalvik) or AOT compiled to.odex
or.oat
files (as ART does). All apps built with Android SDK depend on this standard class library.