Java at first is great.  Once you get in to large and complex loads, the GC tuning becomes load specific.  While tuning GC can be fun (for the first dozen times), the bigger problem happens when your load shifts and your GC tuning becomes subtly wrong.<p>Also even IF you are tuned properly, there is a world of 99-percentile you&#x27;ll never get to.<p>Additionally, the difference between openJDK and Oracle JDK becomes something admins learn to hate you for.  Complex shell scripts to invoke java, and lots of standard unix tools just don&#x27;t work super well.  eg: pgrep and pkill. you can tweak it, but it takes a little while to learn the many tips and tricks.<p>It&#x27;s not all bad, most Java programs are deployed in a static-all-batteries-included fashion, so you rarely worry about system-installed library versions.  So that makes deployment a little less hassle. You never have to recompile for cross platform.  The profiling tooling and other stuff is pretty good, and the more you&#x27;re willing to pay the better the tools get.