Matej said:
I have never found Gnu "Java" usable.
It's probably just me. But it's always a couple of versions old and misses a
lot of what I use in Java. Plus it doesn't seem to integrate with anything.
Just give me Sun or IBM JVMs for server or desktop.
As Andrew pointed out, Java does translate into machine code (which I assume
you mean by "native format" - correct me if I'm mistaken). Furthermore, the
beauty of running server code in a JVM is that the same product can run on
different OSes. I routinely develop and test my Java projects, server, client
and application, on Windows (XP these days), Linux and Solaris. Companies
like IBM and Oracle, just to name two, are /awfully/ glad their server
products are cross platform.
The optimizations that Java (especially in server mode) can perform on your
bytecode are generally superior to those performed statically at build time on
compiled executables.
Hey, isn't the object code in a compiled executable an intermediate format,
too? Doesn't it get translated to "native format" also?
Sun does not "force" you to keep your "codes" in bytecode. You are perfectly
welcome to use .Net and C#. Of course then you are stuck using Windows
servers, which are more expensive and less reliable than, say, Linux. Oh, and
you are tied to a single vendor, Microsoft. Oh, and also all your support
software, like the web servers and cluster-facets, have to come from that
vendor. Hmm, maybe it's economics and the desire for functioning products
that forces you to use Java.
Short answer: Sun runs Java in a JVM because it works to do so, on technical
grounds. Not as some sort of weird strong-arm tactic to oppress you. Maybe
you should abandon the paranoid approach and just consider the technical and
economic merits.