First. What are you even talking about?
Quiet:test user$ time java Test
Test
real 0m0.104s
user 0m0.074s
sys 0m0.028s
Quiet:test user$
That's on a current MBP 13" top end.And second: Who cares? What us "Java guys" do with Java, well, it doesn't matter in the slightest that it takes half a second to start. Because, we deploy to running processes. "We" power things like Hadoop clusters. The startup time is meaningless in "our realm" and frankly, I think if you're wondering about java for something like command line tools, it's just the wrong tool for the job for many reasons. And if you're looking at GUI apps, it's still better than Electron :P
So seriously, Hacker News, what is the obsession with this?
We are dilettantes, we think there is always something that could be improved in a domain we don't fully understand.
If you're writing Scala, you have the option of compiling with scala-native, which targets LLVM.
ExcelsiorJET has a free license for non-commercial uses.
https://www.excelsiorjet.com/#free
RoboVM's fork is another possibility
See also: "your _____ takes too much memory." "Your ____ takes more computational resources than _____." E.g., The new existential threat for the entire programming world is Atom/VSCode and other Electron apps.
In short, it's people without a point hoping to discredit something for various reasons.
If I want to write code that (say) is run dozens of times during a large build process, that's not really acceptable. The JVM is a poor fit for the Unix model in particular, which tend to use lots of small processes with a single purpose that work together.
Yes, there are workarounds (been there, done that), but the larger point is that the JVM and its ecosystem are primarily targeted at fairly heavy-weight and long-lived server processes that have obvious implementation biases along these lines.
The slow startup time is just one symptom of these implementation biases, and the question is not whether you can work around these problems, but why you should bother in the first place if the JVM is a poor fit for your application domain.
So, which language allows serious programs do a lot of work without time penalty?..
We are optimists, we think there is always something that could be improved.
"It's never good enough" can be interpreted in two way.
Though I do agree that we should always strive to make it as good as possible. Being a "Java guy" myself, I indeed do not find the JVM startup time to be a big deal in our applications. Especially in my environment (hospital) where our program is pretty much running the entire day without a restart.
So in the morning, the doctors/admin/.. start their application and rarely shut it down until the end of the day.
(That is of course quite specific to where I work)
Not saying it can't be done with java. Even android studio has a hot class swapping feature (I know it isn't JVM but as a proof of concept this exists)
When using plain JSPs with exploded WARs, you can usually hot reload.
https://www.excelsiorjet.com/ is just one example from many third party commercial JDK vendors delivering AOT compilers since the early days of Java, and still in business.
Also for those that don't want to pay for AOT compilers, OpenJDK is going to start supporting AOT compilation as well.
I can wait 15 seconds. Its cool.