riedquat - valueable resource for those who seek.
Home Blog Technical Reports Art Articles RapiDocs Coding Links Reviews Projects: CherBot Daimonin Gridarta

SUN open sources Java

previous: Book Reviews Started
next: Automatic Test Generation - Heaven or Hell?

As you've probably already heard, SUN recently open sourced Java. This is a very interesting, dangerous but required step, and the only logical option for a bright future of Java.

Note: This blog entry is under development and might be changed a few times.

Open Source

There have been various heated debates concerning open source in general and open sourcing Java in particular for years now. Now that even Microsoft has a licensing model that tries to be as close to open source as you could expect from Microsoft (Microsoft's Shared Source strategy), it's probably clear to even the last opponent of open source that for certain fields open source is the only option.

Open Source Java

Does open sourcing Java make sense? Or is it nonsense?

To me it definitely makes sense. I use Java since 1995, when I saw it as an option for platform-neutral software development when I was still using a Commodore Amiga. There are lots of reasons, why open sourcing Java makes sense to me.

Alternatives to Java

For development of large applications, currently I see only two options of programming languages: Java and C#. As a small excursion, let me explain to you why I think it's only these two programming languages. As a developer, I'd want a modern, heavily object-oriented programming language. I want a compile once run everywhere distribution system, because that's easy for non-technical users. I want a large API and an easy-to-use extension mechanism. The language should keep me from doing too many stupid things. Stupid things are pointer errors, or using the stack where I should use the heap instead. The language should come with features for large projects, e.g. name spaces, documentation system, bundling, distribution etc.. And it needs enough community momentum to be relevant in the industry, so I can use it in my job, too.

Looking at these requirements, old-fashioned languages like C++, weakly-typed languages like Perl, limitedly-portable languages like C or niche-languages like Ada or Eiffel more or less are not suited. There's a lot of other programming languages out there. But the more the requirements aren't solely of academic-technical but also social nature, the less of them are really useful.

Issue One: Java's partly lack of success on UNIX

Though Java is quite popular on UNIX, C and C++ also are. Of course, C is a language in the nature of UNIX - or vice versa, UNIX an operating system in the nature of C. This is not so true for C++. But a large part of the UNIX community in the open source scene was preferring C++ over Java only for licensing reasons. Looking at this issue, open sourcing Java already is too late. KDE and Qt for instance could've been developed to large parts in Java. If Java would've been open sourced from the beginning on, probably the requirement of developing and choosing Qt for KDE wouldn't have been there in the first place.

Of course the decisions of KDE to use Qt and C++ are not solely based on Java not being open source when these decisions were made. In fact, looking closer, this example is rather bad in the sense that when KDE decided to use Qt, Qt wasn't open source itself. And when KDE decided to use C++, Java's poor performance (poor at that time) probably was not an option. I rather want the reader to ignore these facts and focus on the licensing issue in general, taking the KDE / Qt vs. Java / Swing example as a prototypical example that shows the general issue of the licensing. Looking at Gnome, which basically only survived because a lot of desktop effort was driven by people to that licensing concerns matter and therefore didn't want to go with the KDE / Qt solution - not speaking of SUN Java - should help you to understand my point.

Issue Two: Swing is badly neglected

When doing it properly and the right way, developing user interfaces with Swing is not painful except for one thing. Pretty much of Swing is nice. It's easy to use and implement MVC in Swing. Same goes for I18N and L10N. And despite the fact that some people develop new layout managers, I think that layouting GUIs with Swing also is an easy task. The thing that really hurts about Swing is lack of components. Maybe SUN dreamed of a component market for Swing components. But honestly, would you use Java and buy missing components from third parties when there are alternatives based on C++ or C# where you could get the components for free? Even Windows / MFC provides more comonents than Swing, far more. The lack of standardized, freely available Swing components drives many application programmers into either using Qt and running into licensing problems on Windows or choosing Windows and running into portability problems on all other platforms.

Issue Three: Availability / Platform Support

SUN only supports Solaris and Windows. All other platforms would've required vendor support for Java. For servers and mainframes, that's not an issue, as IBM, HP etc. support Java on their platforms, and so does Apple for the Mac. But there are many other platforms which Java would be the ideal language for - in theory: Amiga OS, Atari MultiTOS, AROS, MorphOS, QNX, RiscOS, BeOS / Zeta to name just a few. Most of these platforms have only poor support for Java or none at all. All of these platforms would've had support if Java would've been open source. Now several of these platforms already are pretty much obsolete. But the unavailability of Java on these platforms drove many programmers into not using Java or using a different platform, eliminating the need for Java: portability.

Dangers

That Java is open source also has a bad side. There's the danger of thousands of Java implementations coming into life and being spread. Incompatibility threatens Java. Then again, competition never is bad for the market and the customer. I think, this danger is small enough to be ignored.

Conclusion

Finally, I think everybody, including Microsoft, Java's strongest opponent, can only win from Java being open source:

About

About Cher

Cher is a computer hacker that actively contributes to open source software and also runs some of his own projects as open source.

Cher's homepage is ↗http://www.riedquat.de/.

About Java

Java is a programming language originally named Oak and developed by the Green Team at Sun Microsystems, targetted at embedded systems. Today, Java is most successful on the server and mobile devices, though used through all ranges of computers from smartcards up to mainframes.

Java's homepage is ↗http://java.sun.com/.

About SUN

SUN Microsystems is a computer company originally founded as Stanford University Network that focusses on high-end computing and networking, providing workstations, servers and mainframes.

SUN's homepage is ↗http://www.sun.com/.

show
 . 
..: