I&#x27;d be interested to hear a response about what OP is doing specifically, but yes... the term &quot;AOT&quot; generally means compiling down to a native executable.<p>Excelsior JET has been around forever, and works quite well, although it&#x27;s very expensive.  There was some discussion at the most recent Java One conference which suggested that Oracle will bring AOT to the JDK soon (probably prompted by the fact that Microsoft is doing this on the .NET side).  However, there&#x27;s as of yet no indication of timeline... or whether that will be in the core open-source JDK, or a paid enterprise feature.<p>Regardless, there is a lot that you can do, short of full-fledged AOT, to reduce the amount of work a JVM has to do at startup.  Historically, some of the worst offenders have been libraries and frameworks that make heavy use of reflection.  In recent years, alternatives have emerged that do more work at compile-time rather than relying on reflection at run-time.<p>For dependency injection, you might look at a compile-time solution like Dagger (<a href="http:&#x2F;&#x2F;square.github.io&#x2F;dagger&#x2F;" rel="nofollow">http:&#x2F;&#x2F;square.github.io&#x2F;dagger&#x2F;</a>), rather than traditional reflection-based packages like Spring or Guice.  For logging, you might want to use SLF4J (<a href="http:&#x2F;&#x2F;www.slf4j.org&#x2F;" rel="nofollow">http:&#x2F;&#x2F;www.slf4j.org&#x2F;</a>) rather than Apache Commons Logging.  Use a database schema management solution like Flyway (<a href="https:&#x2F;&#x2F;flywaydb.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;flywaydb.org&#x2F;</a>) rather than letting an ORM screw around with your database schema every time on startup.  Etc.<p>However, I really just don&#x27;t understand the &quot;Java is slow&quot; gripe in the original comment.  At my company, our Spring Boot-based services startup in around 8-12 seconds depending on the service.  These are fairly complex application components too, no trivial &quot;hello world&quot; stuff.  Sure, in my career I&#x27;ve seen some legacy apps that takes minutes to startup... but that&#x27;s because a ton of cruft has been added over time.  If you architect your application to initialize and communicate with a ton of external dependencies at startup every time, then startup is going to be slow no matter what language you&#x27;re using.<p>It&#x27;s just hard to take most of these gripes seriously.  Java is well suited for server-side business application development, and systems integration.  If you&#x27;re using it in THAT context, and adhering to smart modern design principles, then it blows every other option away.  If a Spring Boot or Dropwizard app is too slow to startup, then I&#x27;m sorry but you just don&#x27;t know what you&#x27;re doing.<p>If you&#x27;re using Java for video game development, or some kind of desktop app, or embedded development on your Raspberry Pi Zero, then well... you&#x27;re going to have a bad time, because Java is not very good for that even if you DO know what you&#x27;re doing.  Use something else in those contexts, for goodness sake.