The Source for Java Technology Collaboration
User: Password:



Chris Campbell

Chris Campbell's Blog

And This One Is Better Than Ever!

Posted by campbell on September 18, 2003 at 05:08 PM | Comments (7)

Do not expect any order or rhyme or reason for the content that follows. I've been away from the blogging game for several weeks, so I have a lot of random thoughts waiting to jump out of my dome (in typical fashion, none of them are well formed). Chet and Hans have been cranking out new blogs left and right, so I feel compelled to keep up with my end-of-the-hall-mates.

On the new OpenGL-based Java 2D pipeline: Work on this exciting new pipeline doth proceed apace. We've been making some excellent performance improvements over the past few days, and we're working with video board manufacturers to increase reliability, compatibility, and performance. I think desktop developers should be pleasantly surprised with the improvements offered by this pipeline, and I look forward to your feedback when 1.5 beta ships in a few months.

This new pipeline has been getting some publicity on various forums like Java Gaming and JavaLobby in recent weeks (check out those threads for some more detailed information; the JL thread was interesting until it devolved into a discussion on open sourcing Java, which seems to be par for the course). Now might be a good time to answer some frequently asked questions regarding the new OGL pipeline:

Q: You suck. Why isn't this pipeline being developed for Windows too (Sun is evil)? Why aren't you using a shared code base? Is it because you're dumb?
A: I'm rubber, you're glue... But seriously, we would very much like to offer this pipeline as an alternate implementation on Windows, but it won't make it in for 1.5... Hopefully we'll enable it in a future release, because it could really open some doors for interoperability with JOGL, and various other factors. The reality is that we have hundreds of video boards and driver combinations to support on Windows, and our effort is best concentrated right now on making our DirectX pipeline even more stable and performant. Driver flakiness is a big concern (just ask Chet and Dmitri!), so making sure that the OGL pipeline works on all Windows configurations will be a challenging task. We'd rather concentrate right now on making the OGL pipeline rock on Linux and Solaris, where graphics acceleration has traditionally been more dismal. (And yes, we do have a shared code base, with small platform-dependent modules to support GLX and WGL. It's a nice streamlined design, in my obviously biased opinion.)

Q: Why aren't you making use of UMD's Agile2D project? Is it because Sun sucks and hates open source software?
A: Agile2D is another interesting project out of UMD, but the downside is that it sits outside the guts of Java 2D and Swing, so you have to "port" your application to use Agile2D. Writing the OGL pipeline from the ground up allowed for much tighter integration with Java 2D internals, so you reap all sorts of benefits like using texture memory for caching glyphs and "managed images", in addition to all the performance gains reported by the Agile2D guys. If you tried out Agile2D, you should get all the same benefits and many more just by using core Java 2D and Swing in 1.5...

On the new "Sun Java Desktop System" branding strategy: Okay, so this one is taking a while to sink in, I'll admit. Some folks on JavaLobby are complaining that Java doesn't play a large enough role to warrant the name. Granted, a majority of the apps are not written in Java, but the biggies like Mozilla and StarOffice surely are Java-enabled. The important thing to keep in mind is that this is just the first release; prepare to see many more pure Java apps added to the package as time marches on.

I'm glad that the name doesn't mention the word Linux or Solaris... There's no reason for it. We're at an important cusp in the software world where the underlying OS has become irrelevant. Application developers and end-users alike no longer care what operating system they're using (yes, yes, gross generalization) as long as it runs their favorite cross-platform apps that help them get their job done, whether they are written in Java (NetBeans, Limewire) or not-Java (Mozilla, Evolution). If Sun decided tomorrow to base the Java Desktop System on OS/2 or FreeBSD or whatever, it wouldn't make a lick of difference to end-users (gross generalizations are fun). This general trend in the industry towards platform-agnosticism is really cool, and it's only going to accelerate.

On the state of the "Mu" project: I haven't had much time for Mu this summer, but that hasn't stopped others like Mr. Rob Ross from adding cool new features, like video playback. I made some minor enhancements to the "lite" client to improve ease-of-use (i.e. act more like iTunes), but those haven't yet been committed to CVS. Soon we'll be ripping out some of the internals and replacing them with an exciting new media content/metadata system about which I've been conversing with the Gas/JRec/Ptarmigan author. There's also talk about adding new pure Java codecs, live TV viewing, TV listings, and even some video conferencing functionality. Hopefully we'll make some more progress this autumn... Help from interested parties is always appreciated!

On Giants/A's playoff tickets: Should I stay or should I go? I could stay here and get some work done, or I could go sit in line at the ballpark with the rest of San Francisco. It's a beautiful day in the city, but I wonder if they have wireless down there? Better yet, I could bribe my sickly roommate into sitting outside all night for tickets. Yes, that sounds like a fantastic idea to me (hint hint nudge nudge)...

On Maven: I still haven't had a chance to play with Maven yet (beyond the few articles I've read), but it sure seems cool. Anything to eliminate the drudgery of build/doc/test systems is fine with me. And I used to think Ant was high-level...

On the genius of Bob Pollard: November 4th brings us a definitive box set from legendary lo-fi drunk-rockers Guided By Voices, entitled "Hardcore UFOs". Whenever I drop money on GbV, I come closer to understanding how crack addicts feel when they make their purchase -- 2% guilt and 98% elation. How can you not admire song titles like "I Invented The Moonwalk (And The Pencil Sharpener)"? The energetic, start-stop, repetitive-F-chord mania that is "Postal Blowfish"? The buzzing-guitar-string simplicity and effortless crooning of "Goldheart Mountaintop Queen Directory"?

On the virtues of vacationing (or "how to boost your debugging effectiveness"): This was a great summer. I took various long breaks (well, a few days at a time) away from work to visit with nature, friends, and family. My personal rule number one on these trips was "do not under any circumstances think about work", and then a funny thing happened. I'd be sweating my way up Half Dome or just plain sweating on a beach somewhere, and then I'd have a vision. No, it wasn't Yeti (what an odd assumption on your part)... It was the design flaw that's been nagging me for months, but this time it came with a solution. It's that old psychological notion of receiving inspiration when you least expect it. So there you go, next time you're working on some tough project, tell your boss you'll be taking a few days off to work-but-not-really on that important project.

On a related note, I was just reading James Gosling's latest blog entry about trusting (or better put, not trusting) yourself when debugging. I do this to myself all the time, and I never seem to learn my lesson. Just yesterday I was reading an old email I sent about the OGL pipeline, where I said something to the effect of "Q doesn't work even though I know that we're definitely doing Z, which should enable Q". So for months I built up this notion that the bug couldn't possibly be related to Z. And then what happens? I go revisit Z to discover a subtle flaw that had been there all along, and now of course when I fixed the bug in Z, Q is working just as I had always expected! Damnation! I could smite myself! (In fact, I just did that just to add a little drama...) Moral of the story? Don't trust yourself, but do listen to James, he's a smart guy.

On the coolness of iPods and iSights: I broke down and bought one of each, after hemming and hawing for months. The iSight is great, and the ease of iChat is unparalleled. Yet it just kills me that I'm able to video/voice chat with all of two people (Mac owners of course). So, good for Apple, they'll convince a couple more percent of the earth to buy their machines, and meanwhile everyone else (Windows/Linux users) is missing out on a fantastic hardware/software solution. Everytime a company ties people into a specific OS with some custom built application, the industry takes one step backwards. Argh like Charlie Brown.

I haven't yet received my iPod. I've been making all the necessary preparations, like converting my entire CD collection, encoded in the FLAC format, to MP3. I updated an old tagging/converting Java app that I had sitting around to handle the conversion, and it seems to be working like a charm. Yay Java. Note that by purchasing this iPod, I've admitted to myself that maybe the world isn't quite ready (yet!) for my idea of always-on, instant media transcoding/streaming from your home media server to your MIDP2-enabled cell/PDA (running a mobile version of Mu). But mark my words, this will be the future of personal, mobile entertainment! You just wait!

In my ears: The Super Friendz, "Love Energy" and Neil Young, "On The Beach"
In my eyes: Haruki Murakami, "The Wind-up Bird Chronicle"


Bookmark blog post: del.icio.us del.icio.us Digg Digg DZone DZone Furl Furl Reddit Reddit
Comments
Comments are listed in date ascending order (oldest first) | Post Comment

  • Charlie Brown
    I believe you meant "Auuugghhh".

    HTH.

    Posted by: mrfeinberg on September 18, 2003 at 07:44 PM

  • Java Desktop System - what does it offer to java developers
    Hi Chris,

    I am excited about the java desktop system and plan to get my hands on it as soon as it arrives in India.

    I am curious on the details of building desktop applications for this system and how is package management organized for the same.

    Will Sun be providing java bindings to GNOME ? (Very Big Question), or will applications be using Swing with just a GNOME look and feel.

    At any rate, since its Linux under the hoods, will there be java bindings to some of the many UNIX libraries available ?

    Will there be an easy way to install/un-install applications (both Sun and non-Sun) ? Upgrade applications ?

    Will the system be targeted only toward corporate users or will it offer something to home users as well ?

    Will be much obliged, if you could shed some light on the above whenever you find time.

    Thanks,
    Tarun,
    Bangalore

    Posted by: lenkite on September 25, 2003 at 02:54 AM

  • Java Desktop System - what does it offer to java developers
    Hi Tarun,

    The preferred development platform is (of course) Java, using technologies like Swing (for GUI building) and Java Web Start (for application installation, package management, etc).

    Developers using Swing automatically reap the benefits of GNOME and its L&F's (including the standard Sun Bluecurve theme). There should be no need for Java/GNOME bindings, although I believe those are already available from the open source community.

    Developers using Java Web Start for deployment can rest assured that their apps can be integrated/installed just like any other native application (just as JWS-enabled apps are today on Windows, Linux, Mac OS X, etc). The developer does not need to do anything special to deploy their apps for the Java Desktop System.

    Which UNIX libraries are you referring to, that aren't already accessible through the core Java libraries (I/O, networking, graphics, etc)?

    Right now, the system is geared towards corporate users, but if it proves successful in that space, I suppose it could be extended to the general population.

    Thanks,
    Chris

    Posted by: campbell on September 25, 2003 at 12:11 PM

  • Java Desktop System - what does it offer to java developers
    Hi Chris,

    Thanks for the answers. My intuition suggests that if you guys target this sytem towards home users as well, it will be an absolute rage, since there will be no shortage of developers developing desktop java apps.


    Posted by: lenkite on September 27, 2003 at 01:21 PM

  • Java Desktop System - what does it offer to java developers
    And yes. and if everything is going to be pure Java with Java Web Start to boot, I guess there's no need to provide bindings to Linux libraries.

    Posted by: lenkite on September 27, 2003 at 01:24 PM

  • Agile2D vs Sun 1.5

    I'm happy that Sun is doing an OpenGL Java2D. We suggested this years ago, long before we did Agile2D. We were sent a long technote explaining why it would never work. Glad you guys changed your minds!

    >the downside is that it sits outside the
    > guts of Java 2D and Swing, so you
    > have to "port" your application
    > to use Agile2D.

    This speaks volumes about Sun's software philosophy. If Sun had done a good job on AWT and Java2D, we could have used a Service Provider Interface and made Agile2D totally transparent.

    Instead Sun continues to believe (evident in this post) that only the VM is good enough to own Toolkit, Graphics, Image, RepaintManager etc. and that only one implementation shall be present at a time.

    If you do create your own you inevitably get nasty shocks - when you discover, for example, that all Swing components share a single static Repaint Manager. Or that there is no way for anyone other than the VM to know when an image or shape has changed.

    While working on the 1.5 OpenGL stuff, what a great opportunity to tidy this mess up: expose enough hooks so that third party groups can create their own renderers, so that Swing controls could, for example, be hosted in an OpenGL texture rather than a JFrame. Provide immutable Shape classes. Add change events to Images and Shapes. Fix the Shape classes so they are all cloneable, serializable, comparable etc.

    The baseline should be that you can create one Component using the standard Renderer and another nested within it using OpenGL one.

    Lets get away from global environment variables. They are a bad prop. Add Spi support. Let the third party people in. Then we might have a Pure D3D port, or a port to LWGL etc.

    Jon

    Posted by: jonmeyer on April 21, 2004 at 07:07 PM

  • Agile2D vs Sun 1.5
    This Forum has no editing (!), so I'm want to add that I reread Sun's post on OpenGL and Java2D from 1999. It was by Chris Campbell and didn't quite say that it would never be possible, rather that they had other things they wanted to do first.

    Oh, and Shapes now all are Cloneable and Serializable.

    Posted by: jonmeyer on April 22, 2004 at 05:18 PM





Powered by
Movable Type 3.01D
 Feed java.net RSS Feeds