Linux has been used extensively and very successfully as a Web server, but the face of the Web is constantly changing. In its current form, Linux can't compete with Windows without Java on the enterprise level. Many Linux Web servers serve either static content or dynamic content generated via CGI or the popular PHP. Neither of these systems have built-in enterprise functionality. While almost any language can use XML (and in turn use SOAP or XMLRPC to make remote method calls), there is more to enterprise functionality than remote method calls. Enterprise functionality includes remote method calls, load balancing, fail-over, transactions, and a myriad of other stability and scalability functions.
Enter Java. Java already provides this functionality on Linux, without the high price tag of Windows-based solutions or high-end Java Application Server solutions. There is already JBoss, a powerful Open Source EJB server, available for free and completely community supported. Couple this with Jakarta, the Apache Foundation's Java Servlet Engine, and you have an extremely powerful enterprise server. For those who want the safety blanket of commercial support, there is always the Enhydra application server at a very low cost (I believe $99 + support costs). All this on Linux at no or low cost.
There are other advantages to pushing Java on Linux, such as name recognition. When CEOs hear Linux, they might shrug, but when they hear Linux and Java together in the same sentence, they'll start to listen. In the current economic downturn, all companies, small to large, are going to look for ways to save money on IT. Linux can present enterprise-level functionality for pennies compared to the cost of proprietary solutions, which will make any CFO happy.
There is one problem with all of this: Java is not an easy language to learn for beginners. Luckily, no one said you need to know Java to use Java! There are two separations between Java the language and Java the platform. The first is the myriad of languages that will run on Java, the most popular of which is JPython. These languages run directly on the Java platform, and have all functionality of Java. The second is the JNI (Java Native Interface). The JNI allows Java to call native code in C/C++, Python, Perl, or any other language with a JNI binding.
By using a combination of these systems, complex business logic can be built in Java, C, or C++, with interfaces and frontends built in Python, Java, or Perl. This integration allows Web sites and applications to be built quickly and easily in the same component architecture that has served Microsoft so well.
There is a major fault to this whole plan: performance. Java is not exactly known as the fastest system in existence, but the future is bright on this front as well. GCJ, the GCC compiler for Java, is making huge strides. It already supports most of the Java SDK APIs and JNI. It is missing support for RMI and other functionality needed by EJB. Another major problem is that it will only compile programs into a single executable, thus eliminating Java's component architecture.
This is where Sun should come in. Sun now owns Cobalt. Cobalt's servers run Linux. If GCJ can be completed and brought up to speed with Java2, Sun can have high-performance, low-cost Java application servers that can be pitted against Microsoft's upcoming blade offerings. Couple this with Sun's upcoming Peer2Peer services, and you have a software offering that matches and beats anything offered by Microsoft.
There is another reason Sun should work with the community to finish GCJ: C#. Microsoft is basically re-inventing Java on its own .NET platform. Their popular J++ is being geared to be a jumping platform from Java to C#. Sun needs to fortify its position by increasing Java's power and availability.
Finally, there is a reason for Sun to help increase Java's integration with languages such as Python and Perl. VB.NET is incompatible with VB6. VB's terrible OO support has finally caught up with it, and Microsoft had to retool it to be fully object oriented, thus breaking backward compatibility. This is a perfect time to bring VB programmers to Python and Perl, interfacing to the Java platform. It gives VB programmers a simple language to use while also giving them the enterprise functionality they expect with the tools they crave.
All of these pieces fit together to allow a beautiful friendship between Sun and Linux. Once a company is ready to move from small server appliances to enterprise servers, who are they going to call? You guessed it: Sun.
Sun, Linux, and the Open Source Community could make a great team to help extend the causes of everyone involved. Linux finds its way into Microsoft space in the server room as an application server, J2EE extends its position in the face of .NET, Python and Perl find their way into VB's rapid application development space, and Sun increases its revenue and name recognition. Everyone wins. Except Microsoft, of course.