Skip navigation

[I was going to reply to Chris's excellent weblog in the talkback section, but I started rambling and it touched on some other thoughts I've had, so I decided to ramble here instead... Keep in mind that I'm only half-wearing my Sun cap right now (kind of like one of those green and brown, half A's, half Giants caps that were popular in the '89 Series), so I'm not speaking entirely on behalf of the company.]

In response to Chris Adamson's recent blog entry, The End (of Java3D) and the Beginning (of JOGL):

I'd just like to point out that JOGL is not an all-out replacement for Java3D. The two can co-exist, and one could potentially rewrite the platform-specific layer of J3D to sit atop JOGL. Java3D does indeed act as an "isolation layer" for the underlying platform when a developer uses its "immediate mode" APIs, but more importantly Java3D offers a high-level scene graph API. Many educational and corporate institutions have chosen Java3D because of its scene graph offerings, in addition to the appeal of its cross-platform nature.

On the other side of the coin you have the traditional game shops, who want to get as close to the graphics platforms/hardware as possible. Many of these folks are finding JOGL a better fit because it's a lower-level API, and they can make use of their existing OpenGL knowledge/code base. So I think it depends on the type of application you're developing which API best suits your needs. The gaming community has been clamoring for official Java bindings for OpenGL for quite some time, so that's where Sun's efforts seem to be heading, but don't count Java3D out for good; it still serves its purpose quite well as a higher level 3D graphics library.

Related to this discussion, we're also starting to see some folks on the forums asking whether JOGL would be a better fit than Java 2D for their apps/games. Again, JOGL is not the end-all and be-all Java graphics library. Many people don't realize that OpenGL is actually an expressive 2D library, despite its tight association with the 3D world. However, there's so much more to 2D graphics than rendering lines and sprites really fast (think medical imaging, complete support for any image format or color/sample model, printing, text rendering, stable offscreen rendering, etc). This is where Java 2D really blows the proverbial socks off all the other 2D libraries out there.

My answer to those folks on is the same as my J3D response: Java 2D is a higher-level, easier-to-use, more robust, more full-featured 2D rendering API than JOGL. Like J3D, the two technologies can play well together (if we do our job correctly, there should be no reason why the two API's couldn't be used in the same application). Also like J3D, we use hardware-accelerated graphics libraries (such as Direct3D and OpenGL) under the hood, so for many applications, performance should be virtually the same whether you use Java 2D or JOGL. As I mentioned earlier for J3D, we could also port our OpenGL-based Java 2D pipeline to sit atop JOGL (in fact, we're exploring this idea for a future release, which should further decrease our dependence on native C code). If you want to access the very latest in hardware technology, such as programmable shaders, or if you have large data sets of vertices and you're comfortable with the increased complexity of OpenGL, then JOGL would certainly be a better fit.

So the choice is yours... Each API has its benefits; it's up to you to evaluate which one is best-suited for your next project!

As I was driving home tonight, I was listening to Forum on KQED (Michael Krasny rules! Oops, did I say that out loud?)... The topic of the show was advancements in assistive technologies for the blind. One of the guests was a blind man, the first to summit Mt. Everest. He has recently been participating in a research project that aims to convert visual signals into electrical impulses that can be detected by the tongue. Apparently, he wears a small camera on his head, and then the images it "sees" are processed in realtime and transmitted to a thin device that rests on his tongue. The signals are of sufficient resolution for his brain to interpret them (with plenty of practice) as if they were real visual stimulii. So far he's been able to "watch" his wife walk around a park, a ball rolling on the floor, and so on. Really changes the way you think about assistive technologies, eh?

Another guest mentioned a trend in designing accessibility into products from the start, rather than patching accessible features onto products as an afterthought. The example he provided was glucose monitors that retail in drug stores for $20 can cost upwards of $500 for a model that is accessible for the visually impaired. Manufacturers are beginning to realize that they can offset these costs by taking accessibility into account during the design phase, which generally results in a better product for everyone.

What's this mean for Java developers? Well, if you've ever written a Swing application, most likely your app will play quite nicely with assistive technologies, such as screen magnifiers and readers. That's one of the many perks of using Swing: you're automatically taking advantage of the Java Accessibility API. You can rest easy knowing that your application will be accessible by millions of users who would otherwise be locked out from your offering. You don't have to worry about whether a specific kind of assistive device is present; Java takes care of the gory details for you. One of these days, you may just find your application deployed to a tongue near you.

In my ears: Radiohead, "Hail To The Thief"

I grew up in a small town in upstate New York called Red Hook. In that small town is our little old family cabin, known as "The Camp". That little cabin overlooks a small pond, and floating in the middle of that small pond this holiday weekend was a whole slew of old friends and family. And amongst the slew was a satisfied Java developer (and I'm not referring to myself). Go figure.

Let's refer to this developer as Jolene. After all, she's doing top-secret research at MERL(Mitsubishi Electric Research Labs) in Cambridge, and we wouldn't want to blow her cover. Anyway, as we floated in the lake and soaked up the sunburn, Jolene gave me a general description of the research she was working on at MERL. Cool stuff, but I was curious about the underlying technology. (Back at Georgia Tech, I found that most researchers were not fans of the Java platform, which pained me to no end, so I was wondering if that was the same everywhere.) Well, Jolene told me they were making heavy use of JMF, JAI, Java 2D, and plenty more. Although she couldn't delve into the details, she explained how each technology played a role in their project. She didn't have any complaints about these technologies, but she had concerns about deployment, so I described how Java WebStart might make her life easier. She was excited about the possibilities.

"Fantastic!", I thought. This was just the kind of customer interaction we (at Sun) wish we could have on a more frequent basis. And there we were, in the middle of nowhere, having this conversation. (Just then, a couple other friends realized we were talking about Java on vacation, and gave us a well-formed cannonball off the raft, effectively throwing water on the conversation. They were right, of course; beer, hot dogs, and lounging take precedent when you're on holiday.)

The point of the story, if there is one, is that we only hear about what our customers are working on (and what they think of our technologies) when things go wrong. All the little shops in my hometown proudly display all the letters of commendation they've received over the years. It's pretty rare that we receive such a letter at our offices at Sun. (When we do, they go straight to the hallway wall; it's kind of like putting a good report card on the refrigerator.)

This isn't surprising, though. It's great to have so many Java developers out there, keeping us on our toes, posting their concerns on JavaLobby, always motivating us to push the envelope with Java technologies. Wouldn't it be strange if Tom Tomorrow or Garry Trudeau all of a sudden penned a strip praising George W. Bush?

Okay, maybe that's a bad example. But I know for a fact that there are thousands of satisfied Java developers/users out there. We'd really like to hear from you... Everyone could use a little confidence boost every now and then, right? Send us mail and let us know how you're using our products, what you like about them, what you don't like... Or just say hello.

In my ears: Led Zeppelin, "How The West Was Won"