Is Java becoming the de facto standard from Linux application development in the same way .NET is the standard for Windows application development? If not why not?
In short: No.
It really depends on what sort of application you are writing. For many the answer is still regular old C/C++ (if doing, say Qt or GTK+ GUI development). Many doing GTK+ development may also be using Python + PyGTK. If doing web or web services development, you see lots of Ruby, Python, PHP, and Java.
While the answer may seem to be yes to the casual user, it really isn't a good comparison. There are many different computer languages that can run under Linux and Windows. In fact, the different .NET languages (such as C#) can run under Linux using Mono. In addition, there are MANY programs written in Java that run just fine under Windows.
A better comparison might be Java is to the Java Run Time Engine as C# is to the .Net Framework.
Not really, though perhaps it should (from the perspective of making the Linux desktop successful).
While you can use Java on Linux as a platform in a similar way to .Net on Windows there are two substantial differences:
- .Net is fundamentally tied to the Windows platform, but Java is portable across pretty much all platforms. So Java isn't really "native" to Linux.
- The Linux platform is much more heterogeneous, with substantial (some might say fragmented) communities around many different programming languages and toolkits. There's the python folks, the C++ folks, the C folks, Perl people etc.
Having said all that, I think the failure of the Linux community to properly embrace Java on the Desktop is the main reason why Linux hasn't yet been successful in the desktop space. Java and it's huge library/tool ecosystem is the only open source platform that can realistically compete and win with .Net for general purpose application development. And if more people developed Java applications (which can run identically on Windows and Linux) then the Microsoft desktop monopoly would be substantially weakened.