This is the idea behind Apps versus Virtual Apps in JWrapper.
Your App Bundle is the whole downloadable, installable bundle that sets up its own JRE and extracts all the files. Inside that though JWrapper lets you define multiple Virtual Apps, each of which the user ends up seeing as a 'runnable thing'.
Exactly how the user sees this depends on the OS. On Windows and Linux they get a shortcut for each one but MacOS is a bit different. MacOS doesn't have the concept of a 'start menu' with folders for grouping so if you wanted to deploy all the 8 virtual apps above you'd end up with quite a disjointed mess in your Applications folder. Instead, JWrapper puts one app into the Applications folder and shows a chooser to the user when it launches:
If you need to run an app in the background you don't want to have to figure out the classpath and JRE settings just to get it running. Also it would be nice if you had the whole JWrapper runtime framework and libraries available right? How about if you could run it and have it prompt the user for admin permissions?
When you create a virtual app in JW you can make it hidden and then use the JWSystem.forkVirtualApp method to run it. You can pass in launch properties rather than command line parameters which removes OS specific issues of encoding or special characters along with any limits on how much you can pass to your child app. You can have it check for an update before it runs and you can even ask it to prompt the user for elevated permissions.