Skip navigation

Everyday Blog

Posted by kfarnham Sep 28, 2007

Tuned in to the perpetual back-channel conversation

It seems there's plenty of places to turn for information about technology, and Java in particular, but how do you filter out the junk -- the ads, the cross-posts, the calls for help from people who are in hopelessly over their heads -- and just find the good stuff?

Social networks help, knowing who you're talking to and assessing their contributions based on what you know about them. A few weeks ago, the Java Posse podcast mentioned an all-Java IRC client, jIRCii, and a #javapossechannel on Tuning in over the last few days, I've seen a lot of notable Java people on the channel, including Romain Guy (of Filthy Rich Clientsfame), Coté of the Drunk & Retired podcast, Klaasjan Tukker of NL-JUG, and GNU Classpath's Dalibor Topic.

In fact, it was Dalibor who pointed me to one of today's most intriguing Java Today items, about a full-blown Java-based OS being built atop OpenJDK. The JNode project has announced version 0.2.5 of their Java-based OS, continuing their move to OpenJDK, as described in aFAQ. The new release features "Java 6 support, substantially improved consoles, experimental support for isolates and a large set of bug fixes and improvements to all parts of the system, including better memory mamagement and increased performance." The project's goal "is to get an simple to use and install Java operating system for personal use. Any java application should run on it, fast & secure!"

Also in Java Today, the appropriately-named DotNetFromJava project offers you the ability to access .NET assemblies from Java directly without the need of writing native code/wrappers. "The intended purpose of this software API is to provide access to the .NET APIs, widening in this way the available java APIs. Furthermore, the java developer will gain development time by avoiding to write native code."

It's a well-known fact that hardware companies are abandoning the race for single-CPU speed and instead are focusing on multicore processors. Despite the fact that many algorithms can be easily parallelized, most client-side Java code is still written for single-CPU systems. In the article Multicore processing for client-side Java applications, Kirill Grouchnikov shows you how to fine-tune a core JDK array-sorting algorithm for improved processing speed of as much as 35%.

Apropos of the IRC discussions mentioned earlier, the latest Poll asks "Where do you most often discuss Java?" Cast your vote on the front page, then check out the results page for current tallies and discussion.

The latest Feature Articleoffers up a new GUI concept called the Fling Scroller, reminding us how Swing programmers should focus not only on "look" but also "feel", particularly if new kinds of gestures can make applications more pleasant to use. In this article, Jan Haderka introduces a new behavior to JLists to allow users to "fling" off the top or bottom of the list and have the scrolling continue briefly as a result of the gesture.

In today's Weblogs, Simon


The Space Between Blog

Posted by kfarnham Sep 27, 2007

How to reduce the gap between your interests and our activities

So, Josh Marinacci did something remarkably open and democratic a few weeks back. In a blog, he said, you vote for your favorite article and I'll write it. Today, he's back and reports that The votes are in:

Before I get to the results themselves I must say that I was quite surprised by the response. 34 comments with some very good suggestions. I'm glad to see that there is such passion in these topics.

So here's the breakdown (and please correct me if I miscounted) :

  • Graphic Design for Engineers: 18
  • Intro to Painters: 14
  • JavaFX Script: 10
  • JXMapViewer: 8
  • Swing App & Beans Binding in NetBeans: 7
  • Nice feedback with Drag and Drop in Java 6.0: 2
  • 1 each for JNLP'd Derby driven app and some stuff with lucene / solr / hibernate

Given these results, I imagine I'll be hearing from Josh with a proposal/outline about graphic design soon, followed by Painters. An interesting point on the latter -- Josh proposed this a while back, and my reply was "OK, but is SwingX [which is where Painters come from] in any way serious about getting to a 1.0 release someday?" My thought was that people wouldn't be super enthusiastic about investing in an API that seems unlikely to be production-ready anytime soon. The fact that Painters came in second in Josh's poll suggests that a lot of Swing users are ready to dig into Painters, regardless of SwingX's status. Point, Josh.

Anyways, this is an interesting experiment for Josh to take on, and I'd like to build on this spirit of openness and ask everyone: are there specific, topics you'd like to see new feature articles on? Let us know, either in comments here or in an e-mail to cadamson [at] I'll add topics to the wish list portion of the writer's guide, the wish list being due for an update anyways.

Also, if you have an update about your project that you'd like to see on the front page, e-mail me directly or use the submit contentform.

Also in today's Weblogs, Brian

Two years in the making, jMaki 1.0 hits the street

Continuing what's been a busy month of 1.0 releases, jMaki has just announcedits first full-version release.

jMaki is one of those things where the name may be better known than the particulars of the project (hint: think "Ajax made easy"). Fortunately, the project is pulling together a guide to the many docs and blogs that explain what it is and how it works. A good place to start for absolute beginner information is the Why Use jMaki?document, which makes the case for jMaki's simplifications, standardizations, and flexibility.

Recently on the O'Reilly editor's list, we had a discussion trying to track where the Ajax market is going. There's a sense that a lot of developers have built DIY Ajax systems with hand-rolled JavaScript on the client and their choice of server-side frameworks... and have come away from the experience saying "I'm never doing that again." And as a result, there's now a great interest in getting a handle on all the various Ajax frameworks out there... do you want DWR or GWT or jMaki or something else entirely?

jMaki's in a busy part of the webapp world right now, and it will be interesting to see what kind of a niche it can carve out for itself.

Also in Java Today, Javalobby has just posted an Interview with Tom Ball, openjfx compiler lead. After briefly discussing Project Jackpot, he talks about his new role on openjfx, the differences between JavaFX and JavaFX Mobile, the challenges of living up to community demands, the schedule for delivering JavaFX, the role of the open-source community in JavaFX's development, and more.

A pair of entries on The Aquarium portray the history and future of GlassFish in graphic form. First, in How Did We Get Here? GlassFish v2 History, Part I, Eduardo Pelegri-Llopart writes, "Rich has written a nice Historical Recap going through NetDynamics, KivaSoft, Netscape, iPlanet, Forte SynerJ, SunOne, Sun Java System Application Server, and then, GlassFish. He captured it all in this picture." Then the entry Branches, Branches... GlassFish Branches... looks ahead: "Nice post from Abhijit where he captures graphically, and in more detail, the Future GlassFish Releases. Abhijit covers GFv2 UR1, GFv2.1 (tentative name) and GFv3. Read his Detailed Entry or go directly to the Diagram."

In today's Forums,hat27533 offers a tip of the hat to the jMaki project on the occasion of the 1.0 release, writing in Re: Well Done The JMAKI team, "I have just completed a RIA framework investigation at my company. JMAKI fits with our constaints: 1) Java based, 2) No new language for developers to learn, 3) Future proof, 4) Must be pure thin client with no client side runtimes. I have recommended that we use JMAKI going forward for all our web application needs."

eduardomartins announces further help for Mobicents users in Mobicents Quick Start Guide wiki page updated. "I know people are having some hard times with the current issue of having versions for JBoss 3.x and 4.x, so I've updated the main wiki page to make things easier. Let me know if the instructions doesn't work for you. Note, the problem with the src packages on sourceforge with the jain-slee-tck-1.0 folder empty is not fixed yet. Please use the CVS."

Finally, in @Webservice and JMS @Resource, markshure writes: "Hey all, I'm trying to create a webservice that uses the in-built embedded message queue. Everything works except when using the @Resource annotation with a JNDI reference to the queue and connection factory, both of them are null. Can this kind of resource injection be used within a web service or do I need to use a service locator? Note that when I use the @Resource with a test client application (appclient -client) it works fine. I'm using Sun App. Server 9.0 Update 1."



What Would You Say Blog

Posted by kfarnham Sep 25, 2007

Busy day in the forums

We used to run two items a day from the forums on the front page, and last year, I decided to experiment with putting three up there, to see if it improved traffic or the variety of posts. Now that's a very subjective topic, but I did think that after a while, it got easier to find three good posts to use, messages that had interesting short excerpts, weren't completely dependent on their thread for context, enticed the casual reader to come by and read more, etc. Maybe that was the messages getting better, or me learning how to find (or edit) messages to make them work, I don't know...

But today, I couldn't cut down to three messages. So I posted four. And there was a fifth one, about uploading "cells" to Project Wonderland, that nearly made the cut.

Our current internal plans call for us to take a long hard look at the forums in the coming months and rework the various categories to best suit current interests: we should really embrace new topics like JavaFX and retire forums that have served their purpose, like "The Big Question", which preceded the GPL'ing of Sun's JDK. Still, even in their current form, the forums are host to a remarkable variety and genuine depth of discussion. We're glad you find them useful, and hope you'll tell us how they can be improved.

We'll start today's Forums section with some green fields design work in the Project Wonderland forum. In Re: Some thoughts about the modules design,kaplanj writes, "Java Web Start is good, but it has some downsides. Right now, both the client and server must be restarted to recognize a new cell type. Also, the build scripts need to be updated to only rebuild jar files that have changed -- right now they rebuild all jar files. A Servlet should also be written to use the packed jar files. If you are interested in developing a more complete module system to allow dynamic loading, we would welcome the contribution. I would love to see a design document we can all comment on (like Jordan did with WFS). To help get started, I have also included an email I wrote to the team a while back on the subject of modules."

V B Kumar Jayanti explains where XWSS has gone in Re: cannot find xwss sample download. "The main page for XWSS is now and it ships in Project WSIT/Metro ( and Metro is in turn a part of GlassFish. So yes you can get samples of XWSS 2.0 style and XWSS 3.0 style security. XWSS 3.0 (which is what is used WSIT/Metro) makes use of WS-SecurityPolicy to specify the security policies of a service inside the WSDL. Please post XWSS related questions to You can quickly create Security Applications by making use of NetBeans (with WSIT Plugin) and GlassFish."

brunogh has some guidance for getting started with Bluetooth development in NetBeans, in the message Re: bluetooth jsr82. "After you create a mobile project you can check Bluetooth availability by clicking with the right button in the project and then Properties->Platform, then select the Java Apis for Bluetooth Wireless Technology optional package (by default is selected). After that, you can run two instances of the project and emulate Bluetooth communication Try to run BluetoothDemo available in ME Application Developers Demo Box."

Finally, in Re: [JAI] JAI Success Stories, Brian Burkhalter reveals how to get listed on the JAI home page. "These success stories may be supplied directly to me. Assuming that the project is interesting then there is a good chance that this will be posted. The verbiage should included something about what JAI contributed and one or more images should accompany the text. A perusal of existing pages should provide a good idea of what is required."

Our latest Java Mobility Podcast is Java Mobile Podcast 21: Wireless Toolkit. The Sun Java Wireless Toolkit for CLDC and CDC is a state-of-the-art toolbox for developing wireless applications that are based on Java ME's Connected Limited Device Configuration (CLDC) and Connected Device Configuration (CDC), and designed to run on cell phones, mainstream personal digital assistants, and other small mobile devices. The toolkit includes the emulation environments, performance optimization and tuning features, documentation, and examples that developers need to bring efficient and successful wireless applications to market quickly.



Out Of My Hands Blog

Posted by kfarnham Sep 24, 2007

On not judging books by their covers

Friday's blog about coding versus writing was in part responsible for the current poll, which asks "Which factor is most important in choosing a book on a Java topic?" Unintentionally or not, all the factors I chose as responses are external in nature, things you could know without actually opening the book (though the "what people are saying about it" option implies access to other sources of info about the book). I was sort of looking for these external factors that go into what makes you pick a specific title.

So, of course, it didn't even take a day to get called on that one. On the results and discussion page, mike__rainville points out a couple of factors that guide his book-buying purchases, and all of them are content-driven:

  • License to use code in my applications
  • Useful prior edition(s)
  • Complete instructions to quick start for practical use
  • Reasonably current version support
  • Strategic, reference implementation APIs, not tied to any particular IDE (aiming for portable applications)

Now my question back to Mike is, can you really evaluate these without having access to the full content of the book, before you buy it? Even if you look up the book on the publisher's page, it may not be completely clear what version of the topic is covered, what its license is, or some of these other factors. Having this kind of pre-purchase knowledge almost requires you to be able to pick the book off a shelf and read it first... and that's problematic, because bookstores have been reducing their shelf space for programming books pretty consistently since dot-bomb. What was once two racks of Java books at my nearby Barnes & Noble is now half a rack, not as a result of Java fading relative to other languages, but as a result of the entire programming section shrinking.

I'd love to be able to pick up programming books and really evaluate them before I buy. But unless the topic is really mainstream -- think CSS and not MMAPI-- it's probably not practical.

So what do you do to make an informed decision? Or are books not even the best source of information anymore? That could be a whole new discussion...

In Java Today, Jean-Francois Arcand's Blog offers an introduction to Grizzlets, a small API that lets you write Comet-style Ajax applications more easily. He writes that rather than expecting developers to create their own Comet implementations with Servlets, "it would be much more simple if we can write a single POJO class, hook it to an Ajax client, and bang make it work! So here comes Grizzlet, an extremely simple POJO based approach to write Comet based application!" In a code example, he shows that Grizzlets are POJOs, implementing a single Grizzlet interface.

The latest edition, issue 139, of the Java Tools Community newsletter is out, with tool news from around the web and from community projects, announcements of new projects in the community, and a Tool Tip summarizing Daniel Lopez's eight-part "Scripting Away with Java 6" series, in which he experiments with different scripting languages on the JVM.

Recorded at QCon London, Scott Delap provides An Overview Of Desktop Java Technologies In Todays RIA World. The 49-minute session covers "the technologies that are making the development of desktop applications easier today, and also advances in deployment techniques such as Java Web Start and Pack200 which assist in the centralized deployment of desktop applications. Finally, the session will look at which situations where desktop java applications should be considered versus other technologies such as Ajax, Flex, and OpenLazslo."

In today's Weblogs, Roberto


Head Games Blog

Posted by kfarnham Sep 21, 2007

Can good programmers be good writers, and vice versa?

JRuby co-lead developer Charles Nutter has kicked up a contentious discussion with a recent blog wondering Are Authors Technological Poseurs? His argument, in a nutshell, rests on his assertion that "good authors do not have time to be good developers":

What brings me to this conclusion is the growing realization that working on a JRuby book would--for me--mean a good bit less time spent working on JRuby and related projects. I fully intend to make a large contribution to the eventual JRuby book, but JRuby as a passion has meant most of my waking hours are spent working on real, difficult problems (and in some cases, really difficult problems). It physically pains me to consider taking time away from that work.

As someone who sees a lot of technical writing and has written a couple of books, there's a degree to which I can agree with Nutter. The best books come from a deep practical knowledge of a topic, and that comes with time. Aerith, cited heavily in Filthy Rich Clients, was written a year before the book came out. If it were written concurrently for the sake of the book's examples, it's a good bet it wouldn't have been as ambitious, and that would make the book less interesting. And it's a very safe bet that the first book on a topic is almost never worth owning, unless it's from a technology's creators, and even then it won't enjoy the knowledge that comes from people putting the stuff to unintended, unforeseen uses.

Knowing what you're talking about takes time. Nearly three years after my first book came out, my consulting work and other exploits in media make me wish I'd included some topics that didn't seem important when I was writing it. That's the kind of perspective that only comes with time and experience. So in that way, Nutter's right: the more you program, the better author you'd be, but the less time you have to actually write.

But on the other hand, I think he sells short the idea of writing, implying that it is just a brain-dump of knowledge that is measured solely by the time it takes to get the words and bytes out of your head and into natural language by way of a keyboard. Frankly, the best writers I know are also good programmers because both tasks require of the same skills: discipline, self-direction, design, a sense of perspective, detail-consciousness, etc. When I see writers who struggle to express themselves and what matters in their writing, I suspect their code is equally creaky, and is more a mass of statements that just happen to work (under current conditions, and only after a lot of clueless banging against the compiler and System.out.println("WTF?");s).

Developers who know what they're doing can tell you how and why it works, and how to do best do it. And that's exactly what technical writing is.

So, apropos of book writing, the latest Poll asks "Which factor is most important in choosing a book on a Java topic?" Cast your vote on the front page, then check out the results pagefor current tallies and discussion.

One writer/developer with wide ranging interests and abilities is Joshua Marinacci, and he's looking for feedback in today's Weblogs. In You vote for your favorite article and I'll write it!, he says, "I'm thinking of working on another article or two over the next few weeks, but I don't know what to write about. Oh sure, I have lots of ideas, but I don't know what's most interesting to you."



Double Vision Blog

Posted by kfarnham Sep 20, 2007

Why program in one language when you can use two?

Presumably, by this point, everyone's sufficiently comfortable with the idea of running scripting languages in Java, as formalized by Java SE 6's javax.script package, that we can all look beyond the novelty of running a scripting language on the JVM and get into the bigger question of what you can do with this ability.

It's one thing to just run an application written entirely in another language in a JVM interpreter, like deploying your Ruby apps on JRuby. What's potentially more interesting is interspersing scripting langauges into your otherwise-Java apps where they make sense. Imagine, for a moment, that you have some part of your functionality where you look at it and think "I really wish I could use something other than Java for this." For example, if you needed to crunch some logic with a rule engine, you could use Drools, but you might also consider just switching to Prolog for that part of your functionality. A deeply recursive problem might be well-suited to LISP/Scheme. And I'm sure you can think of more examples, perhaps involving domain-specific languages.

But is there an art or a science to mixing interpreted languages into your Java code? Can you still maintain a clean, object-oriented design while adopting languages that lack Java's formalities? Scripting in Javaauthor Dejan Bosanac dives into this question in today's Feature Article, in which he writes about Scripting With Balance in Design and Performance:

When thinking about scripting languages in Java applications, two key questions come up: how it will affect software architecture and how will it affect performance. By keeping the design with interface principle at our focus and applying simple patterns shown in this article, we can successfully tackle both of these questions. The rest is left to you to choose what language best suits your programming needs, but also when and how much scripting you want to use in your projects.

In Java Today, InfoQ has posted a review and excerpt from Filthy Rich Clients, the new book by Chet Haase and Romain Guy. Reviewer Andy Roberts writes, "the term "Filthy Rich Clients" was only coined relatively recently by the authors to describe "applications that are so graphically rich that they ooze cool. [...] In short, they make users actually enjoy their application experience". With that in mind, the book goes on to explain how to utilise Java2D and Swing in order to enhance your desktop applications."

David Dagastine blogs that he'll be presenting a Sun HotSpot JVM Talk at Intel IDF today in San Francisco. "'ll be presenting tomorrow at Intel Developer Forum in San Francisco with an esteemed colleague from Intel, Kingsum Chow. The session is SSGS003: "How to Get the Most Performance from Sun JVM on Intel Multi-Core Servers"." Along with an overview of how HotSpot takes advantage of current and future Intel multi-core CPU's, the talk will offer "a look at how to select JVM parameters for your application to get the most performance, and at employing VM parameters tuning as a last resort."

The ever-interesting Bruce Eckel is back with a surprising criticism of one of the net's most popular standards, in RSS: The Wrong Solution to a Broken Internet. "RSS seems clever close-up, if you ignore the internet traffic increase issues. But if you look at the real problem, RSS is a workaround that just supports the existing problem: anonymity." He goes on to argue that the need for privacy prevents a far more efficient publish-and-subscribe model, and instead forces RSS clients to reply on inefficient and bandwidth-wasting polling.



Duke, Box Hero Blog

Posted by kfarnham Sep 19, 2007

Java on devices other than phones, PCs, and servers

We're all so used to the success stories of Java on phones and servers that we sometimes overlook other places where the JVM could provide some value. Lots of devices need custom software, which could be written in any appropriate bytecode, but if you get into issues where the devices start to communicate, or you want equivalent behavior across devices and architectures, the JVM starts to become a very appealing option. A developer creating content for Blu-Ray Disc players doesn't, and shouldn't, have to know about the CPU architecture of all the players on the market: he or she can just write a single Java Xlet and have it work everywhere.

But critical mass seems a necessary component of actually realizing these Java-on-the-device dreams. Those who studied Jini years ago will remember how many introductions to the concepts of Jini would argue for Jini-enabled printers that allowed desktops and devices to discover available printers on a LAN, negotiate capabilities with those printers, and send them print jobs. Great idea, but it didn't actually turn out that way, as Bruce Eckel noted in last year's Wither Jini?:

For instance, the most common example given for Jini seems to be the "smart printer" example, where you need to print something and your Jini client dynamically finds an available printer. I asked Bill Venners if anyone had ever implemented this, and he said no. So when you give people this example, and then say that Jini isn't really used for that, it leaves you with the question "what do I use it for, then?"

While the Jini-printer story has been a disappointment, it doesn't close the book on Java-based printing innovation. James Gosling reports that he's Hanging out with printer engineers, spending this week at theRicoh Developers Conference, and notes some of the cool things that Ricoh is doing with embedded JVMs in their printers:

If you were at JavaOne, you saw a simple (but valuable) one: print a document from your laptop, it goes to a master spool server, then walk over to any printer, stick in your badge, and out comes your document. When everything is on the network, the possibilities for end-to-end synergies are endless.

Blu-Ray players, printers, what else should be running Java? Are there other cases where networking and abstracting away the hardware differences across devices would enable new functionality and create value?

Also in today's Weblogs, Carol


That Was Yesterday Blog

Posted by kfarnham Sep 18, 2007

GlassFish v2 and NetBeans 6 beta make their debuts

As expected, GlassFish and the NetBeans 6.0 beta were released yesterday. At the moment, there seems to be a little more talk about the GlassFish release, as it's a final (as opposed to a beta) and because there's just so much stuff in this release. A GlassFish v2 Launch Roundup page collects links from all over the web: technical and overview blogs, news coverage, and more.

In fact, we've handed the entirety of today's Weblogs over to the GlassFish v2 launch, noticing that with all of GlassFish's various subprojects, there is a lot more to this launch than might initially be evident. Jean-Francois

Awaiting the debuts of GlassFish v2 and NetBeans 6 beta

After a long time in development, and an escalating series of pre-releases, this looks to be the week that we see major releases from the GlassFish andNetBeansprojects. Everything's vapor until it ships, of course, but even the major industry magazines like eWeek are spotlighting the anticipated release of GlassFish v2 and the NetBeans 6 beta.

As part of the event, this week's Spotlightis on the latest Ask the Expert session, which is about GlassFish v2. The new version "builds on the quality and feature richness of the initial GlassFish application server implementation, GlassFish V1, to provide higher value-add features for the enterprise. Got a question about GlassFish V2? Post it during the week of September 17 on the Ask the Experts page and get answers from GlassFish experts Eduardo Pelegri-Llopart, John Clingan, Sridatta Viswanath, Scott Oaks, and Dhiru Pandey."

In Java Today, the Aquarium has a GlassFish v2 Launch RoundUp entry to collect items of interest related to the launch. Initial links of interest include an overview of features, related blogs, and news coverage from eWeek, InfoWorld, and more.

A new SDN series by John O'Conner starts off with an entry on Exploring JavaFX Script. He writes, "JavaFX Script was announced at the 2007 JavaOne Conference in May. The technology is still very new, but Sun Microsystems and the community are making dramatic progress each week. So it is a good time to get involved with the language. It has progressed enough that you can actually download and use it. Several beautiful demo applications exist, showing the possibilities of this language."

InfoQ tracks a series of blog posts and responses that debate the question Has JPA Killed the DAO? A blog by Adam Bien suggests the DAO pattern is no longer interesting, but followups, including one from magle argue that using EntityManagers directly instead using DAOs can lead to such anti-patterns as mixing application logic with business logic and violates the single responsibility principle.

In today's Weblogs, Kohsuke

Thumbing through Filthy Rich Clients with a smile

My copy of Filthy Rich Clients arrived yesterday, and it's fun to just pop around in the book to see what Chet and Romain cover. projects are prominent throughout the book, particularly Aerith and the timing framework, which gets two whole chapters to itself. Both authors have a strong sense of humor, yet it doesn't get in the way of delivering the material -- Chet goofs on the Wikipedia definition of a convolution kernel in a footnote, but still delivers the goods on what the ConvolveOp is, what it does, and why it's the one BufferedImageOp from thejava.awt.image package that you should absolutely master.

Writers like Chet and Romain are pretty rare commodities, it seems: effective writers who write to be read, do so with an engaging and fun style, and have a wide-ranging set of interests. Anybody hoping to write articles and books would do well to pause a moment and think, "what is it about the stuff that I really like to read that makes it good?" It's usually not the topic, but rather the presentation. Good writers engage the reader's interest, develop their thoughts in a fashion that's easy to follow, occasionally remind the reader of where they're going with all this, and don't indulge in unneccessary sidetracks or details. We had one article the other week that was made dramatically better when the author simply moved the "how it works" section down to the bottom of the article -- it allowed the reader to start by learning about the topic in general and seeing what it did, and only then got into the details, even though the details are generally what's most interesting to the expert. It's the old novice-expert shift, and good writers help their readers make the move from one side of the scale to the other.

Over on TheServerSide, Joseph Ottinger recently posted some guidelines on submitting items to that site, starting with a set of tips, and then getting more deeply into the topic of the concepts of tech writing. Some of this guidance actually resembles items in the writer's guide, like writing for readers who don't already know everything about your topic (since that's, you know, kind of the point...). I Skype'd with Joseph yesterday, and we traded notes about how to help writers better reach their potential readership. He's got some great points in his two guideline articles, and would-be writers should check them out.

And then go read Filthy Rich Clients, because Chet and Romain are clearly enjoying what they're doing with the graphics APIs, and write in a way that shows they want you to come along for the ride.

In Java Today, the ME Application Developers project is becoming a treasure-trove of content for application developers. They report, "over the last couple of weeks and months we've added the Mobile Ajax sub-project, the phoneME UI Labs project, and the brand-new MobileAerith demo. The wiki has been updated with more good information and links to several JavaOne sessions on relevant topics have been added. The ME Application Developers project front page also has been updated to highlight the new content."

The latest edition, issue 138 , of the JavaTools Community Newsletter is out, with tool-related news from around the web, announcements of new projects in the community and a graduation from the incubator (AppTale), and a Tool Tip on using keyword expansion with Subversion.

InfoQ reports on modularity concerns in JSR 277 and JSR 291 Interoperability threatened by lack of a prototype. "The latest salvo in the discussion of JSR 277, JSR 291, and OSGiappeared last week in the form of a post by Glyn Normington, spec lead for JSR 291 and Expert Group member for JSR 277. He is concerned that the Expert Group has not been presented with a strawman yet and that the Expert Group will end up merely rubber stamping the strawman rather than discussing it in detail and making changes."

Today's Weblogs, starts with shout-outs from Terrence


You Can't Call Me, Al Blog

Posted by kfarnham Sep 13, 2007

Blu-Ray Java plays keep-away with its APIs

Remember "TV Day" at JavaOne back in May? A whole track on Thursday was dedicated to the use of Java in interactive technologies like MHP and OCAP. But of course, the flashiest and highest-profile use is in the Blu-Ray Disc standard, where Java can be used to provide a high level of interactivity, in the form of the ME-based Blu-Ray Disk Java (BD-J) spec.

It can... if you have hundreds of thousands of dollars to become a Blu-Ray Disc Association licensee and buy all the appropriate tools.

Lots of developers have expressed an interest in getting involved in Blu-Ray development, starting up projects such as theBlu-Dahlia Users' Group project to collect information. But they're thwarted by all the Blu-Ray APIs being kept secret. A Q&A session from JavaOne that I blogged repeatedly made the point that some of the Blu-Ray partners know that some sort of public overture needs to be made to outside developers, but after four months, nothing has happened.

As independent developers try to combine their resources, a thread in the forums announces a new site to collect publicly-available BD-J knowledge, and in response,stolsvik summarizes the situation, in Re: [BD-J-DEV] New online forum specifically for BD-J:

"Pity that the BD-J scene obviously isn't very big yet. I think Sun and the other players should try to get more information out about this exciting java-based "application platform", which hopefully will be available in "the thousand homes" in a few years time. It feels a bit like this is a rather closed community at the time being - much of the tools being proprietary and commercial and so on. or example: Where's the "Hello world" (and the Kitchen Sink-style "hello world mk 2") application, starting from step 0?"

In the thread, Mobile & Embedded community leader Roger Brinkley makes a good point about possibly dividing attention and knowledge across multiple sites and lists. But maybe there's a bigger risk: if it's easier to get into HD-DVD, or Flash video for that matter, aren't most media-savvy developers going to move into those fields where their skills are actually welcomed?

In today's Forums,hewagn00 has a TopLink feature request in Re: TopLink Essentials cannot handle large transactions, makes JVM run out of memory. "I would also greatly appreciate a feature in TopLink that would clean up/prune the ChangeSets after a EntityManager.flush() is performed. In my application semantics a large number of objects must be created in one transaction. I have to perform a flush operation during that process several times to get reasonably progress information/timing behavior. Opposing to what one could assume, that calling a flush writes all pending changes, clearing the "changes buffer", it does not reduce the memory consumption it actually increases it extremely. When I perform no flush the memory consumption drastically reduces, but I have no information about progress, since all is happening on transaction commit."

Pankaj Jairath explains GlassFish clustering and its limitations in Re: AW: Re: Glassfish and clustering... "Clustering binds the participating instances to a logical group - the backend; and the fronting component - HTTP load balancer facilitates in load balancing and failover of the HTTP requests over this group of instances. In a multi-tier deployment; WebServer is the fronting tier which receives the incoming network traffic; just like you seem to have Apache WebServer. GlassFish V2 provides HTTP Load Balancer component support only for Sun Java System WebServer 6.1 / 7.0."

In Java Today, the Java Standalone Application Service Bus, or Jsasb, project adds to Java an event-driven programming paradigm (Jsasb EDP) on top of Java's original object-oriented programming paradigm (Java OOP). One of its major goals is to make concurrent and/or distributed programming much easier. It's neither a new language nor middleware, but rather a pluggable Java framework which can run Jsasb applications on its own as standalone Java applications.

The latest video interview features an interview with Janice Campbell, the Globalization Program Manager at Sun. "That doesn't mean she's in a big office with a calculator and some Milt Friedman books -- she's in charge of facilitating and directing all of the language localization efforts for NetBeans. Find out how you can get involved with her team, and find out why the translation projects are so important to the growth of NetBeans." You can also check out the Translated Files Projector join mailing lists in your language.

Over on BEA's Dev2Dev site, editor Jon Mountjoy (with some input from his O'Reilly colleagues from has posted some Practical Advice for Becoming a Better Blogger. "Here's an 11-step process to becoming a better blogger. We're not promising fame and fortune. This is just a guide to improving the way in which you blog." As the BEA site uses the same Movable Type system as, we hope this will offer some useful guidance to the hundreds of bloggers on this site.

So how's that move to Mercurial for source-control of the OpenJDK project going? In today's Weblogs, Kelly


The Boy In The Bubble Blog

Posted by kfarnham Sep 12, 2007

A day of scripting languages and JavaFX Script

Apologies. This has turned into a sick day for your editor for reasons that are, frankly, pretty gross, and I'm only going to be out of bed and upright long enough to get a pretty basic blog out, largely meant for those of you who use the editor's blog as ade facto RSS feed of the front page. Then it's back to bed and the 160GB iPod Classic, duly loaded with 665 CD's and a smattering of anime.

In Java Today, the latest Java Mobility Podcast features a phoneME Advanced Update: "phoneME Advanced has just released the MR2 Development Release that includes a both source and binary releases. Hinkmond Wong, the project lead, says this release features Window CE and Mobile support with an MIDP stack. Hinkmond also discusses the ports currently going on with Linux GTK and phones where this can be run and future development directions. Don't forget to take the Topic for phoneME Advanced Web Seminar" poll in the phoneME Advanced Forum."

Interested in JavaFX Script? DevX has a case study of picking it up, as A Veteran JFC/Swing Developer Makes the Leap to JavaFX Script. In this article, Raghu Donepudi writes, "for seasoned Java programmers who heretofore have relied on Java Foundation Classes (JFC)/Swing for building GUIs and adding rich graphics functionality to their Java applications, learning JavaFX Script is a no-brainer. This article introduces JavaFX Script language fundamentals, making comparisons to JFC wherever applicable."

A new two-part series from Tom McQueeney looks at how to Invoke dynamic languages dynamically. "You don't need to compile dynamic languages into Java bytecode to use them with a Java application. Dozens of scripting languages can be called at run time from Java code in a simple, unified way using the scripting package added to Java Platform, Standard Edition 6 (Java SE) and backward compatible with Java SE 5. Part 1 of this two-part article introduces the Java scripting API's features. It uses a simple Hello World application to show how Java code can execute scripting code and how scripts can in turn execute Java code. Part 2 dives deeper into the power of the Java scripting API."

Ryan Shoemaker has been doing a great job summarizing the Java-related activity of this week's Sun Tech Days in Boston, the kick-off to a world tour for the conference, and we're grateful for his thorough coverage. In today's Weblogs, he summarizes Tuesday's activities in Day 1 - Sun Tech Days - Boston, MA. "The 2007/2008 Sun Tech Days season kicked off today in Boston, MA and even though the event is much smaller in scale than JavaOne, it still had the same atmosphere: People wandering around from booth to booth with giant backpacks and huge id badges trying to figure out where to go next!"

Are you a NetBeans 6 user asking What Happened to My Shortcuts? Gregg


Slip Sliding Away Blog

Posted by kfarnham Sep 11, 2007

Event handling getting out of hand?

It would be nice if you could count on a certain consistent level of latency from your users, but of course, that's unrealistic. If you're lucky enough to have a popular application, chances are you'll occasionally see bunches of incoming requests all coming in at the same time. Perhaps it'll be too much for your app to deal with at one time, but can you just block while you work through all the events? Can you use threading to help your app better adapt to the real-world ebb-and-flow of event processing?

In today's Feature Article, Lorenzo Puccetti as a few ideas for working Towards a Timely, Well-Balanced, Event-Driven Architecture:

It is often possible to design receivers in which dealing with one event or 100 events takes roughly the same time or, to be more accurate, in which the code does not scale linearly with the number of events. This is because whether it is one event or 100 events, the same number of calls to the database, the filesystem, or to a CPU-intensive mathematical library might still be required. And it is these operations in which the most time must be spent.

In this article, we discuss a simple framework that forms the basis for a powerful and flexible solution to decouple event production and consumption while supporting a pluggable "event-dispatching" policy.

This article took a long time to develop, with some helpful feedback from Brian Goetz to ensure thread-safety and eliminate unnecessary complications in the concurrent logic. We thank Brian for his feedback on this piece.

The latest Java Mobility Podcast is Java Mobility Podcast 18: Learn new UI techniques with phoneME UI Labs and Java ME . "phoneME UI Labs is the one stop resource for developers to learn about the advanced UI technologies in Java ME platform. Aastha Bhardwaj talks about scalable vector graphics (SVG) in JSR 226 and JSR 287 and the demos that developers can find in UI Labs."

We mentioned Sun Tech Days last week, and in today's Weblogs, Ryan Shoemaker has a look at the Boston event, which starts today. In Sun Tech Days - Boston, MA, he writes, "Sun is kicking off the 2007-2008 Tech Days season in Boston, MA this week on Sept 11 & 12. On the 11th, you can attend NetBeans Day(FREE), OpenSolaris Day(FREE), or University Day(FREE)."



Kodachrome Blog

Posted by kfarnham Sep 10, 2007

Making Swing colorful, beautiful, and scalable

Resolution independence has been sneaking up on us for a while, as monitors continue to run at higher and higher resolutions, thereby making purely pixel-based GUIs smaller and smaller on-screen, as the pixels themselves shrink. Josh Marinacci sounded the alarm to Java developers in his blog two years ago: "Every toolkit (Swing included) has certain assumptions about the size of a button or menu item. These assumptions start to break down as screens leave the range our toolkits were originally designed for."

The next version of Mac OS X, Leopard, will be completely resolution-independent, and Windows Vista is getting there, but what about your Swing apps? Are all the GIF-based window decorations and widget pieces doomed to shrink smaller and smaller on user windows?

Fortunately, this bullet may have been dodged. In his blog, Jasper Potts has an update on the Nimbus look-and-feel in Nimbus almost done:

All of Nimbus is rendered with 2D vector graphics, there is not one image even for all the icons. This means that the whole of Nimbus is just 56k as a packed jar which is pretty impressive for a whole rich look and feel.

As the whole of Nimbus is drawn with shapes and gradients it can be scaled to any resolution. You will not be able to control this yet but watch for it in the near future.

He also reports that Nimbus makes heavy use of Painters, and is highly customizable simply by changing values in the UiDefaults table.

Check out Jasper's blog; the screenshots show this is a look-and-feel that looks clean and classy, and the fact that it'll just gain pixels (rather than losing size) on a high-resolution monitor is a nice bonus.

Also in Java Today, A continuing SDN series introduces JavaFX programming by way of client-server examples. The third installment is Learning JavaFX Script, Part 3: Client-Server Communication With JAX-WS, which follows up on the RMI-based Part 2.. "RMI is a fantastic prototyping tool, but it has its limitations for real-world use. A more common solution for programmers creating client-server tools on the Internet is to use a service-oriented architecture (SOA) solution such as the Java API for XML Web Services (JAX-WS). This article will show you how to use JavaFX Script to access a web service using JAX-WS 2.1 in much the same way that the previous article in this series showed you how to use RMI."

The lastest edition, issue 137, of the JavaTools Community Newsletter is out, with tool news from around the web, a link to the community's newest project, guidance on how to graduate an incubated project, and a Tool Tip on making moderation of your project mailing list easier.

In today's Weblogs, Alexey


The Pretender Blog

Posted by kfarnham Sep 7, 2007

Imagining uses for multiple cores

Along with some other cleanup and infrastructure tasks, one of the things on my to-do list is to update the topics wish-list portion of the Writer's Guide. There are probably a few topics that were priorities for us in the past and that just haven't attracted interested writers (e.g., the gaming API's). And on the other hand it's naturally important to maintain a current, modern view of where computing and development trends are today and where they're going, and try to get ahead of them.

On this last point, I've been wondering about developing for the new multi-core era. Oh, I know, Java has great threading, so we're fine. Yeah, to a point, as long as what you're doing is handing off servlet handlePost() calls to whichever core has the most bandwidth, and you have at least a passing understanding of your resource contention issues and concurrent programming (and recent back-channel e-mails with Java concurrency gurus have convinced me that almost nobody truly handles concurrency correctly, myself included). But overall, yeah, the major server-side frameworks can be expected to benefit from more and more cores on more and more CPU's.

But what about the desktop? I can buy an eight-core Mac Pro (well, not on my budget, but I digress...), but what good is it going to do me? Artima recently ran an item based in large part on Jeff Atwood's assessment of desktop app performance running on 4 CPU cores. In many cases, he got no improvement at all in going from two to four cores: "Beyond encoding and rendering tasks which are naturally amenable to parallelization, the task manager CPU graphs tell the sad tale of software that simply isn't written to exploit more than two CPUs."

Think of this from the point-of-view of the Swing developer. In Swing, anything you do that touches your GUI -- repainting, changing data in the models -- must be done on the AWT event-dispatch thread. Lots of developers implicitly do all their work on this thread until and unless they manage to do something that takes just long enough to cause noticeable lag in their GUI, and only then do they consider threading off the work and calling back in with a SwingWorker. Swing apps probably aren't going to gain much from multi cores because parallelization goes against many of the natural inclinations of Swing programmers.

And this, I think, would make for a good article if someone is solving these problems. Are there new approaches that would make Java desktop apps more amenable to parallelization? Rather than putall your non-EDT work in one thread, is there maybe a way you could split that work into parallelizable tasks, and then coordinate their completion? On the other hand, are there really that many desktop tasks that are really that expensive? Is the wait-grind-wait cycle actually appropriate for user-facing software architectures?

If someone's deeply invested in this topic and would like to write about it, please send me a proposal. In the meantime, it spurred the latest Poll topic, which asks "How many processing cores are on the computer you're using right now?" Cast your vote on the front page, then visit the results page for current tallies and discussion.

In Java Today, the JDK community's incubated Java Native Access (JNA) projectgets a starring role in extending JRuby's reach to POSIX support and native extension support. InfoQ points out how in JNA brings native code to JRuby. "The (not so) secret ingredient here is the Java Native Access (JNA) library, not to be confused with Java's JNI. While JNI provides access to native C code, it requires extra effort and glue code, such as JNI header definitions that need to be compiled, to access it." JNA, by contrast, provides an automatic mapping from a Java interface to a native function.

The latest Java Mobility Podcast is Episode 18: Learn new UI techniques with phoneME UI Labs and Java ME. "phoneME UI Labs is the one stop resource for developers to learn about the advanced UI technologies in Java ME platform. Aastha Bhardwaj talks about scalable vector graphics (SVG) in JSR 226 and JSR 287 and the demos that developers can find in UI Labs."

In their latest video interview, Speaks with Rich Unger. Rich used to work for Nuance Communications, where he added quite a bit to the NetBeans platform early on. These days, he's taking a year-long dream sabbatical with his fiancee - seeing the world and dropping in on NetBeans users along the way. See what he has to say about the forthcoming 6.0 release, the GPL announcement and flying kites in Patagonia!



The Load Out Blog

Posted by kfarnham Sep 6, 2007

Beans Binding hops on this week's release bandwagon

For a holiday-shortened week (in the U.S.), this has been a busy week for releases for some of the desktop group's major projects. Yesterday, it was the Timing Framework, and tod ]]>Weblogs section begins with Evan


Nothing But Time Blog

Posted by kfarnham Sep 5, 2007

The timing framework hits 1.0

So many GUI's today use animation for a number of reasons, some practical, some vain. I've often said that animation is best used "to show a change of content or context," meaning that when your friend logs off of IM, it's a valid concept to show his or her icon moving from the online buddy list to the offline list. Or, when you switch desktops, it's ideal to actually animate the new desktop coming in, to reinforce the idea that the user's world-view has changed.

The thing with all this animation stuff is that it really helps to have an easy-to-use animation library, specifically a timing framework, which you can tell to update your GUI on a regular basis over a short time (say, every 10 ms over the course of one second). It's even nicer if you can tell the framework to alter some bound properties over the course of that interval, thereby saying "move the icon from point A to point B over the course of 1 second, with physics-based motion".

If this sounds familiar to you, then you've been here a while. Chet Haase addressed these issues in two feature articles, Timing is Everything and Time Again, in which he introduced the the Timing Frameworkproject.

Chet has a major announcement today: the release of version 1.0 of the Timing Framework. He writes, "there actually haven't been that many changes to the library of late. Partly, this was by design: I didn't want to cause too much contortion between fully documenting the library in Filthy Rich Clientsand actually releasing the book. But also, since a major refactoring of the code in late 2006, the library has been relatively stable (and useful)."

Also Java Today,The Aquarium has anupdateon JAX-RS (JSR-311), the Java API for RESTful web services. "If you're tracking the progress of Jersey, the JAX-RS Reference Implementation, you'll probably interested to hear that version 0.2.1 has been released today with a documented list of required JAR dependencies, illustrated in this demo showing how JAXB beans can be serialized as JSON or XML depending on theAccept HTTP header). At this point, installing in GlassFish is fairly easy with ajersey-on-glassfish.xml ANT script. It'll get even easier once Jersey is made available on the GlassFish Update Center."

A new SDN article looks at Achieving Interoperability with Ajax using Java and .NET Technologies. "While Ajax and the associated frameworks that allow rich internet applications to be created are growing in stature and power, it is highly recommended that you consider interoperability as a major factor in deciding how to build your applications and which techniques to use. That includes selecting a standards-based data interchange format such as XML or JSON, factoring out data transformation from the actual processing logic, deciding on a client- or a server-side proxy to overcome browser's cross-domain security scheme."

In today's Weblogs, Bruno


Running On Empty Blog

Posted by kfarnham Sep 4, 2007

Tim Boudreau's NetBeans tour faces an unforeseen delay

You might have gathered from yesterday's blog that I've driven much of the I-80 route that NetBeans Evangelist Tim Boudreau is taking for his informal NetBeans tour / personal relocation. I did the midwest-to-SF back and forth three times overall in the 80's and 90's. And on one of those trips, a leaking coolant hose led me to drop into neutral and coast down the slope of a foothill in Nevada, somewhere between Wendover and Winnemucca, in hopes of getting enough air through the front grill to keep the engine from overheating. Again. I finally made it to a tiny service station, where I paid $40 to a passer-by who fixed the leak with a pocket knife. Filling up with a jug of coolant, I was able to make it to San Francisco two days later.

Moral of story: it's not a great route to take a vehicle that's in a dubious state of repair.

Tim's latest update is that he's Almost mobile, explaining, "I got the NetBeans Mobile loaded, and picked up a slew of NetBeans t-shirts, books, USB drives and squishy balls. And got all of 3 miles."

Unfortunately, I'm having some alternator trouble - and it's probably my own doing (baf! baf!) - when I replaced the hot wire to the battery the other day, well the solenoid is above the transmission, in a tight spot where you pretty much do everything by feel. I suspect there is a wire I didn't reconnect :-( Driving by day you don't notice that all the electrical systems are running off the battery, and I'd assumed that the jump starting was simply the battery not having charged earlier. I knew I should have checked the current across the terminals with it running earlier!

Keep up with Tim's progress via Twitter and a rolling update page, and wish for good things or say a prayer for him or whatever... having smokily rolled to a breakdown at the base of a twilight foothill, that's not a route I'd want to take an old painter's truck on.

Also in today's Weblogs. David


On The Boulevard Blog

Posted by kfarnham Sep 3, 2007

The NetBeans truck hits the road

It's Labor Day in the U.S., giving Americans a three-day weekend for major projects, an end-of-Summer fling, or a full-blown relocation. That's what Tim Boudreau's doing, as part of a move back East. And he's bringing NetBeans along for the drive.

Tim originally laid out his plans for the move last week, showing off the truck that he's adorned with NetBeans logos, and has an update in The NetBeans Mobile is Alive:

Getting ready and loaded up is taking a little longer than I had hoped (I'm just a typical engineer underestimating how long work will take :-)) - so I expect to be on the road on Monday. I'll make it a short day/shakedown cruise, and plan to end up in Salt Lake City on Tuesday night. Two days later I'll be visiting some folks in Milwaukee.

So if you're driving along I-80 this week, you might want to keep an eye out for the NetBeans mobile as it passes through Winnemucca, NV, Little America, WY, Omaha, NB, and the other highlights of this long drive. You can also track Tim's exodus via his Twitter account, and see if he makes it to Milwaukee by Thursday night.

By the way, Tim, it's not clear from your blogs what your final destination is... just how far East are you going?

Also in today's Weblogs, those of you complaining about JavaFX tooling can relax, as one of the top Swing pros is on the case. Joshua

Filter Blog

By date: