Skip to main content

Long in coming...

Posted by cayhorstmann on February 12, 2009 at 9:04 PM PST

style="float:right; margin-left: 1em;" />
A Thinkpad sale seduced me into
upgrading my laptop. My feeble rationale was that I could stop dual-booting,
use Linux on the new laptop and Vista on the old one. So, I got a shiny new
Thinkpad T500 for under $1,000, blew away Vista Homeless Edition, and installed
Ubuntu Jaunty Alpha 4. I expected the usual fussing with wireless networks,
display adapters, and futile fights to activate exotic peripherals. I was
totally disappointed. Everything, and I mean everything, down
to the webcam, worked after a 30 minute install with one reboot and no fussing.
With an alpha release.

style="float:left; margin-right: 1em;" />This is the end of an era that began
with the famous words in Linus Torvalds' original Linux announcement: “Do
you pine for the days when men were men and wrote their own device
drivers?” Years ago, I religiously posted pages with my install
experience, such as href="http://www.horstmann.com/linux-thinkpad-r40.html">this one, filled
with arcane drivel, so that my fellow sufferers could glean a few morsels of
wisdom or at least share the pain.

Now, there would be no point. Installing Linux has become so much easier
than >removing the crapware from
pre-installed Vista that it isn't even funny. (No flames please—I am not
saying that you should run Ubuntu. If you run Windows, Mac OS X, OpenSolaris,
Fedora, or whatever, I am sure you have excellent reasons for your choice, and
I am not trying to change your mind.)

So, what's this to do with Java?

My point is that some technologies undergo a relentless process of
continuous improvement that ultimately pays off, and it is easy to be deceived
by all the naysayers who were disappointed by a prior version. As we say in
German: “Was lange währt, wird endlich gut.” (Long in coming, but
worth it in the end.)

In the Java space, I see that with Java EE. In the beginning, it had a noble
goal—to deal with hard problems of clustering and failover. But the price
of entry was very high. EE 5 did a good job learning from the competition, and
significantly lowered the price of entry. Now JSF 2 and other EE 6 features do
this again, and there is ample room for an EE 7 that turns the crank one more
time.


There are some people who still think that Java EE is an elephant or that Linux
can't do wireless. That was yesterday, but today, it probably pays to research
the most recent offerings before opining how Java EE or Ubuntu is too hard to
use.

With Java SE, it's less clear. Will the Java language and essential
libraries, such as Swing, stay essentially frozen in time? Like the href="http://en.wikipedia.org/wiki/Amiga">Amiga? I hope not. For example, I
dislike the idea of separating JavaFX from Java SE. I want better UI effects
and more powerful language features in the core platform. All this talk about
“complexity budget” is overblown. All successful technologies that
have been around for some time have some degree of legacy cruft, and a way of
dealing with it. Mark it as deprecated in version n + 1, isolate it in
an optional package in version n + 2, then ditch it in version
n + 4.

What is needed in SE is an effective stewardship. There are isolated calls
for a better Swing or modern language features, but not by people who run the
show. What the heck is Java SE 7 doing anyway? I can tell more from href="http://tech.puredanger.com/java7/">Alex Miller's blog than from href="http://jcp.org/en/jsr/all">watching JSRs. Here's hoping for
relentless and continuous improvement of the core Java language and platform

Comments

"What is needed in SE is an effective stewardship. There are isolated calls for a better Swing or modern language features, but not by people who run the show"

So "effective stewardship" equals bloating the language with feel-good "features" that have no other reason for being included than that "Ruby has it so Java is dead unless it also has it" (or one of the million excuses to put stuff like closures into the language that all amount to the same thing)? I don't think so. Effective stewardship is precisely the opposite, it protects the language against such things, slowly and deliberately chips away at proposals until only those that offer a true improvement are left (and no, closures don't fall into that category, not for Java. They're nice in Ruby which was designed around them, retrofitting them into a language designed to not have them (like Java) is a bad idea).

As to JEE5, it's indeed a big step up from J2EE 1.4. So big in fact that one might wonder if it shouldn't have gotten a completely new name so as to shake off the negative connotations many people have with especially EJB 1 and 2.

As to Linux, I too was pleasantly surprised with Ubuntu when I first saw it a few years ago. After years (literally) of trying unsuccessfully to get Linux working on an old (by the time) laptop it was the first distribution that required only minimal changes to get the screen and the PCMCIA stack to both work with the same kernel (which even a few weeks earlier had proved impossible to achieve with 3 other distributions, it was just impossible to get both drivers into the same kernel).

"Sometimes Linux workds, sometimes it doesn't. " This holds true for everything. For instance, Mac OS X on my MBP late 2008, with every software update installed, often loses the WiFi connection (and my Airport is just a few meters away), while Ubuntu is ok in the same scenario. There is still a big gap between Mac OS X and Linux, and unfortunately I cannot use only the latter (so I work partially in Linux and partially in Mac OS X). But in the latest two years I've seen a big progress in Ubuntu evolution. The biggest difference is about some applications. For instance, there's nothing such as Omnigraffle Pro for quickly drawing fine-looking diagrams or iMovie for recording and postprocessing a video.

Yeah, my last few Linux installs have been mostly pretty easy but there are still some weird gotchas. For example, Both Ubuntu 8.10 and Fedora 10 suffer from a severe regression in the Intel video device driver that prevents them from doing graphics properly on many older machines. I ran into this on on an old Sony Vaio desktop. I've found workarounds for some hardware (Dell) but they don't seem to work for the Vaio. Fedora 8 and 9 work fine on that hardware. I suspect Ubuntu 8.04 would too if I tried it. That said, Linux installs I've done from the major distros from the last few years have usually been a lot easier than Windows installs over the same period.

Hey Cay, old student of yours. I've been following your posts on Java.net and artima. After I heard a blurb about you using Ubuntu for Java development on the Java Posse, I decided, after a few months, to take the plunge too. A year later and now my home and work computers are all Ubuntu. A few co-workers are in awe of my system, and may eventually switch too. Keep the excellent blogging up.

One swallow does not make a summer. My Linux machine has not really been usable due to display driver problems since I upgraded the Ubuntu in 2007. Years ago there have been times when I've upgraded Mandrake or later Fedora when there have been problems with the display. Sometimes Linux workds, sometimes it doesn't. I haven't seen any significant progress in reliability since I started using it the best part of a decade ago. So, Java. SE is stable and reliable. FX is undergoing rapid and backward incompatible changes. I don't want to see SE regress to that stage. However, it would be nice to see upgrades to SE (like 6u10) to being in video codecs, OpenGL and (when stable) higher level libraries.