Keeping the Faith
In the Java community you have two schools of thought: the zealots, if you will, who feel that pure Java is worth the attempt, and the compromisers, who feel it's more important to use Java no matter what.
Swing against SWT is a good example of this: SWT is a compromise, where native GUI elements are used to further Java, and Swing is the pure Java element. The GUI is hardly the only battle fought by these two "camps." Think of those who advocate Java-to-native compilation (or oppose it), or those who want Java to have features used by C#, like attributes and autoboxing (and those who don't want those features). They're similar issues, fought for and over with the passion normally reserved for raw survival.
I find myself on the zealots' side, but I have to confess that I understand those who do not. Perhaps the zealots - the "pure Java" camp - are throwing the dice, hoping Java is strong enough right now to survive and win. Throwing the dice means you might win...and you might lose - and Java might become irrelevant. Compromising might subvert the original intent, but also ensure the survival of the technology and the benefits it has brought and continues to bring.
It could be that the time is ripening for open source Java, with the commits being validated by Sun to prevent wild strains in a methodology similar to that followed by Linux. Java is currently burdened by its appearance as both a product (see the "Java Desktop," for example) and a commodity (witness the various add-ons, such as SWT and JGoodies, which purport to make "core Java" better or easier or, if you like, "faster"). The add-on products aren't bad, per se, but with the confusion over Java's core role, they fracture the foundation for the community. We need to see Java as a commodity, as something that everyone can use, such that Sun is itself a controlling interest of an available technology - not the controlling interest of a product that everyone else is allowed to use, because the allowance itself grants value. It's either valuable or it's not. I say it is - but the longer it's shared grudgingly, the less valuable it appears.
What I would like to see is a viable future strategy. I'm willing to accept that SWT fixed some issues present in an older version of the JRE, and the native OS look and feel is an advantage for those who wish it. (I personally switch OSes too often to want a native look and feel. I want my applications to work the same regardless of OS.) That said, I think that Swing has caught up to SWT in many ways and, in other ways, I think it will catch up if it's important enough, and eventually you'll see SWT as I do: as a split in Java, in what could be a unified front. It's important to me that Java has a plan for handling situations like this, where there's a viability in "pure Java" that needs to be preserved, but an "impure Java" possibility needs to be addressed.
I wish I could see the future and tell you which camp was better for Java: the one that advocates a "pure vision," despite being flawed in perceptible ways, or the one that advocates the surrender of a fight that, in their opinion, not only isn't winnable, but has already been lost. The optimist in me says that the former view is better, that flaws can be corrected with time...but the existence of the latter worries me, unless steps are taken to use the strengths of all involved.
About the Author
Joseph Ottinger is a consultant with Fusion Alliance (www.fusionalliance.com)
and is a frequent contributor to open source projects in a number of capacities.
Joe is also the acting chairman of the JDJ Editorial Advisory Board.