[Disclaimer: Bias as I work for HashiCorp]<p>We designed Nomad[1], our scheduler, with this in mind. Nomad has the concept of &quot;task drivers&quot; and one of those task drivers is &quot;java.&quot; A task driver provides isolation using things like cgroups automatically, without you having to containerize your application. This makes sense for applications that are already _mostly_ &quot;containers&quot; (in the abstract sense): Java JARs, statically linked binaries, VMs, etc.<p>If you compile a fat JAR you can schedule it directly with Nomad, and Nomad will handle the isolation and resource constraints. Pretty nifty!<p>And, I noticed Capsule talks about OSv. Nomad can also deploy &quot;VMs&quot; natively on top of Qemu so you can deploy that as well.<p>The coolest thing perhaps is that you can mix and match this stuff: you can deploy JARs alongside containers alongside VMs and Nomad handles the binpacking and resource constraints for you. And this is why I bring up this plug for us.<p>[1]: <a href="https:&#x2F;&#x2F;nomadproject.io&#x2F;docs&#x2F;drivers&#x2F;index.html" rel="nofollow">https:&#x2F;&#x2F;nomadproject.io&#x2F;docs&#x2F;drivers&#x2F;index.html</a>