Skip navigation
ANNOUNCEMENT: is currently Read only due to planned upgrade until 29-Sep-2020 9:30 AM Pacific Time. Any changes made during Read only mode will be lost and will need to be re-entered when the application is back read/write.

Ding Dong Blog

Posted by kfarnham Oct 31, 2006

The sound of nothing happening in the editor's project

Switching hats from editor to project owner for a second... yes, I suck: I have done absolutely nothing for months with Lloyd, a project to develop new functionality beyond what's already in QuickTime for Java. Well, not quite nothing... I still need to re-implement something that I recently did on a consulting gig, but rewrite it fresh, from scratch, and from memory, so it can go into such an open source project. I also got help from Apple working around some crazy crashing bugs (really exotic, like crashers related to inadvertently interfering with the focus cycle by bringing up a Carbon dialog, but only on one model of Mac), so I need to be sure it's OK with them if I apply their knowledge in an MIT-licensed project, or if I have to leave things broken on purpose. So work has been done, but Lloyd currently has nothing to show for it.

Oh, and then there's the native stuff that I haven't touched in months, because I use C so infrequently, that it's not something I can just bang out in 20 minutes like with Java. I need hours to commit to working through all the gcc errors, trying to reconnect to the neurons that once knew or cared how pointer-pointers work. So support for QuickTime 7's metadata is halfway there: Lloyd can discover and iterate over keys, but isn't returning values from native to Java yet. And there's a wholedealloc thing there that I haven't even begun to think about.

So, why am I bringing this up? Because a discussion of sound format conversion in the forums has brought up the many dead-ends that developers face working with media in Java. In Re: Java Sound Changing Encondind PCM to GSM,mspetrovic writes:

I have programmed JMF many times in the past, taking it deep into the realm for which it was designed. And every time, it left me at the altar. While I love the idea that is JMF, it is, alas, not well-supported, despite a JMF-INTEREST list that just keeps on going, and hasn't been upgraded in years. This entire area of Java media *and* RTP stacks is a sad one. So much potential, but so little support. Reading over the documentation for JMF would suggest that it solves these problems, but its implementation does not.

The part where I kind of get called out is near the end:

There is a group working on a cleanroom implementation of JMF, called FMJ. I'm on their mailing list, and see little traffic. Chris Adamson is also doing Lloyd, which is Quicktime for Java (does Lloyd seek to do audio? dunno.). Beyond this, Java media is still very much "roll your own".

I followed up with a post about what Lloyd was meant to accomplish, but the proof of it will be actually getting out a release someday that's of use to someone. For example, I'd like Lloyd to be able to help Elliotte Rusty Harold with Amateur.

I've got three pages of notes started on a Java Media talk I'd like to give someday -- maybe at the Java Posse Conference next year -- depending on how keen I am on getting fired. Yes, it's that far out there. So... maybe not. We'll see. Suffice to say that we need more of a vision than "Java should be able to play stuff." That's a dead-end, me-too, wannabe vision. And we can't even dothat with today's libraries.

Also in today's Forums, SwingX'ers need to be aware of API changes pointed out in diod's message Re: A question to Chet's TimingFramework: "Chet recently made an upgrade to the project (October 27) that changed a lot of things within the API. For instance KeySplines has been replaced with a new Interpolator interface. TimingController has been renamed Animator, etc.. You can review all changes made at the bottom of this page (search for "Change Log").."

dstaelen has a question about combining JMX and EJB: "Can a Session bean also be a NotifcationListener for a Glassfish Management Rule? I tried, but the app server gave an error about it not being a MBean. If not, can a MBean use @EJB annotation injections instead of doing a full lookup? I tried creating an MBean in Netbeans as part of an Enterprise Application so that the classpath, etc., was happy, when trying to add the MBean, I said to skip the jar file since it was already deployed, but the app server couldn't find the class."

In Java Today, the next JXTA Kitchenstarts Thursday morning on Sun's Santa Clara campus. RSVP on that page if you want to get updates on JXTA for Java SE, C/C++, and Java ME, security, sockets, and rendezvous, and Friday one-on-one time with JXTA engineers and marketing / community management staff. The event will also feature social time on Thursday afternoon and breakfast and lunch both days.

A recent SDN article has an introduction to New Technologies for Ajax and Web Application Development: Project jMaki, Project Dynamic Faces, and Project Phobos: "Project jMaki and Project Dynamic Faces make it easier to add Ajax functionality -- a technology that includes but is not limited to Asynchronous JavaScript and XML -- to your web applications. The Phobos project allows you to develop web applications using a scripting language, which can allow for more rapid development."

With an eye to the upcoming Web 2.0 Conference, Dion Hinchcliffe has compiled what he thinks are The Habits of Highly Effective Web 2.0 Sites: "I'm often asked, particularly after one of my presentations on Web 2.0, to articulate the most important and effective actions a site designer can take to realize the benefits of Web 2.0. As a result, I've created the list below in a attempt to catpure a good, general purpose overview of what these steps are." An Artima discussion of Hinchcliffe's blog is also underway.

John Reynolds kicks off today's Weblogs with some Business Process Musings: "For the past few months I've been working with a very polished Business Process Management (BPM) suite from Lombardi Software , and I have to say that I am as happy as a clam. I feel like I have discovered a tool that I've been missing for at least 20 years, maybe longer, and I'm delighted."

Kohsuke Kawaguchi has an update on the release of Hudson 1.59: "I posted a new version of Hudson, 1.59, today. Hudson is an extensible continuous integration engine."

Finally, in XMLDecoder improvements, Sergey Malenkov writes: "I would like to start a discussion about XMLDecoder improvements. Some requests can be found in RFE 4864117. I don't want to discuss improvements of persistence delegation (XMLEncoder) here."

In today's News Headlines :

Registered users can submit news items for the News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the News RSS feed.

Current and upcoming Java Events :

Registered users can submit event listings for the Events Page using our events submission form. All submissions go through an editorial review before being posted to the site.

Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of it will be archived along with other past issues in the Archive.

The sound of nothing happening in the editor's project  

Clonie Blog

Posted by kfarnham Oct 31, 2006

Copy and convert your web content into PDF, SVG, and more

One of the design decisions implicit in the Flying Saucer project is that it only deals with well-formed XHTML with proper CSS... not the ill-formed HTML nonsense that makes up most web pages, which works only because so many browsers are so forgiving. Insisting on proper syntax spares the Flying Saucer developers from having to spend all their time figuring out what web page authors "really meant", but it would seem to limit the usefulness of the project.

At least that's what you'd think until you realize that you can easily put a step in front of Flying Saucer to generate XHTML from various sources. Whether you're tidy'ing real world HTML, or generating XHTML from your own data, there are plenty of ways to provide Flying Saucer with XHTML content that it can parse and render.


And from there, it gets interesting, as you'll see in today's Feature Article, in which Jacobus Steenkamp shows you how to Combine JSF Facelets and the Flying Saucer XHTML Renderer:

Facelets and the Flying Saucer Renderer have a symbiotic relationship: one produces XHTML content while the other "parses" it and lays it out into an object graph in memory. While this object graph is then usually translated into Graphics2DAPI calls to render the document in Swing/AWT, it can also be transformed into various other formats such as PDF, a selection of image formats, or as a Scalable Vector Graphics (SVG) document.

Today's Weblogsstart off with a question you might never have thought to ask: Is Java Sexy? Simon Morris asks: "Does Java suffer from an image problem? Is it time we ditched the coffee cup for something new? This looks like a job for... JAVA DUKE!"

On the verge of a major change, Roger Brinkley says 500 Projects is Enough: "The JavaDesktop community has just hit 500 projects. That's an awesome accomplishment for any community and a milestone worthy of a change."

Finally, Tom White checks in with a new project in Lift Off: "Introducing LiFT - a Literate Functional Testing framework for making your web application tests more readable."

In Java Today, Jini developer Gregg Wonderly recently worked through a challenging synchronization problem while handling class-loading in the Jini Technology Starter Kit, and shares his discoveries in Distributing synchronization across threads. "The Java keywordsynchronized is the simplest form of concurrency control in Java. With the advent of the work by Doug Lea and notible others on the new java.util.concurrent package, there are more tools. When dealing with highly contested resources, distributing the locking is key."

Derrick Harris, the editor at Grid Today, takes a look into ISVs (Independent Software Vendors) and their use of "on-demand" computing in the article ISV Takes Road Less Traveled with Grid, On-Demand Solutions. In it, Callidus president and CEO Robert Youngjohns discusses his thoughts on Sun Grid and getting his company's software up and running on Sun Grid. Youngjohns is also a former Sun employee, and as such has a very realistic perspective on Sun Grid.

A recent issue of ACM Queue argues for Breaking The Major Release Habit, by switching to agile methodologies. "Adopting an agile methodology poses its own set of challenges. It is used mostly by early adopters with small colocated teams, it has little tool support, and though the adoption can be done in phases, getting the full benefits of agile development requires sweeping changes to all phases of the project lifecycle."

In today's Forums,lynggaard seeks the Best strategy for handling configuration parameters outside EAR file: "In the old J2EE 1.4 days I would create a directory on the server and place that on the classpath. All configuration files would then go in there and the operator/administrator could then change the config there without opening the EAR file. Now I am moving to the brave new world of Java EE 5, and would like to revisit that strategy... What is the best way to create configuration parameters that are to be administered outdside the EAR file? Is the configuration dir still the way to go, or are there better approaches?"

finder seems to be pushing thejavax.sound API pretty far in Java Sound Changing Encondind PCM to GSM" "I want to send sound over the network. i have already an application, which captures sound from a microphone, sends raw sound data (byte array) over the network and plays this sound on an other computer. How can I change the encoding from pcm to gsm? I have read that i must use an audioInputStream to do this, but I dont know how."

In today's News Headlines :

Registered users can submit news items for the News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the News RSS feed.

Current and upcoming Java Events :

Registered users can submit event listings for the Events Page using our events submission form. All submissions go through an editorial review before being posted to the site.

Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of it will be archived along with other past issues in the Archive.

Copy and convert your web content into PDF, SVG, and more  

Change the World Blog

Posted by kfarnham Oct 30, 2006

Deeper into the JSR-277 debate

Consciously or not, I've been going back and forth with positive and negative front page items relating to JSR-277, the Java Module System, which aims to offer a radically overhauled vision of distribution and versioning of Java applications, in the Java SE 7 timeframe. During this public comment period, you can download and read the public spec, but it's a sufficiently big document that it can be easy to miss the forest for the trees. Moreover, just reading the spec misses the context that JSR-277 is being developed in -- some of the criticism is not so much about what JSR-277 proposes to do, but how and why it differs from extant systems with similar goals, and in how the expert group conducted its business while developing the spec.

Stanley Ho's blog JSR-277 Early Draft Specification offers a good overview about some of the key features of the proposed spec, and more importantly, why they're there. One key point is why JSR-277 doesn't currently address more sophisticated problems that other systems tackle. Stanley says that JSR-277 is simpler by design:

We deliberately made the design simpler by following this principle - make simple things simple, and make complex things possible. Because JSR-277 is targeted for Java SE 7, we have flexibility to update the JVM and classes libraries in the SE platform to better support JSR-277, thus reducing the overall design complexities. Also, the JSR-277 architecture is very extensible - 3rd parties may plug custom implementations to address complex or unforeseeable cases when these cases arise, so the core architecture can be kept simple.

Note: It is also fair to say that the module system described in the early draft is relatively simple because the early draft is by no means complete.

He also points up a design goal of extensibility, which has not been a major point of 277 discussions thusfar:

A trademark of many Java platform APIs is extensibility and allows 3rd parties to deliver innovations that plug into the JRE. For example, ClassLoaders, service providers, etc. JSR-277 is not only a module system by itself, but it is also an architecture that is extensible by other module systems (e.g. OSGi, NetBeans, etc.). Although the details still need to be worked out, the goal is to allow some degrees of interoperability between JSR-277 and other module systems. By providing custom module and repository implementations, other module systems may expose their modules through the repository for other JSR-277 modules to import. Similarly, through the powerful JSR-277 reflective APIs, other module systems may also allow their modules to import JSR-277 modules.

Some of the feedback is already asking questions about the early criticisms of 277, and Stanley says he'll talk to some of those points in a future blog.

At any rate, the early draft review closes in two weeks, and it promises to continue to be an interesting discussion. Do join in...

Also in today's Weblogs Sahoo has a tutorial on Persistence Context propagation: "While using Java Persistence API in an enterprise application, there is often a need to access access entities in the same persistence context in different components involved in a particular request. Using a very simple Java EE application, this article shows how to achieve this in an elegant and portable way. The technique described here is completely portable across any Java EE 5 compatible application server because it uses a standard feature called persistence context propagation."

Finally, Hans Muller realizes a few holes in the Swing spec make it hard to show a dialog appropriately, which led him to post a Dialog Diatribe: "A menu item whose action creates and shows a new dialog which is centered over (and owned by) the menu item's frame, should be a no-brainer. I found the some quirks in the process, they made me cranky, and so I wrote about it." 

In Java Today, the Spring Web Flow team has released version 1.0 after 20 months of active development. The release comes after 11 milestone releases and 50k early access downloads. Spring Web Flow allows developers to build reusable, self-contained controller modules called flows. These flows can then be used with the developer's web framework of choice. In Keith Donald on Reuseable UI Flows with Spring Web Flow 1.0, Scott Delap interviews Keith Donald, Spring Web Flow Lead about the project and how it compares to other Java web application frameworks.

Those who've been waiting fort the next version of NetBeans and its various companion projects can jump over to the products page: " is pleased to announce the release of NetBeans IDE 5.5 FCS together with Mobility Pack FCS, Profiler Pack FCS, Enterprise Pack FCS, C/C++ Pack (Beta 3) and Visual Web Pack (Technology Preview). This NetBeans release supports the Java Enterprise Edition 5 platform, and most notably the Java Persistence, EJB 3 and JAX-WS 2.0 specifications."

The Java Desktop Community home page recently highlighted Prefuse, a Java-based toolkit for building interactive information visualization applications, supporting a rich set of features for data modeling, visualization, and interaction. It provides optimized data structures for tables, graphs, and trees, a host of layout and visual encoding techniques, and support for animation, dynamic queries, integrated search, and database connectivity. Written in Java, using the Java 2D graphics library, Prefuse is easily integrated into Java Swing applications or web applets.

In today's Forums,neilfraser could use some advice about Changing the URL of the target web service: "I have a WSIT client to a WCF hosted Web Service and have the two ends communicating. When it comes to deployments, the address of the target Web Service will be different per installation and so this needs to be made configurable. Again I found this to be quite straightforward. However, for my generated web service client, the constructor I need to use to dynamically specify the location of the target Web Service takes the address of the WSDL as a parameter. Once we deploy our Web Services we don't want a client or browser to be able to query the WSDL. Is it possible to create a Web Service client instance without needing to specify the address of the WSDL? Does the underlying Service class use the WSDL to update it's definition each time? If it does, is this so that it can pick up configuration changes to the service on the fly?"

kleopatra passes along a little nugget of Swing wisdom in Re: Resizing strangeness in MultiSplitPane: "I can't say anything about the MultiSplitPanes as such - but as a general rule it's a no-no-never to call setPreferredSize in client code anywhere. If that appears to be necessary, than something is wrong somewhere ..."

Heavyweight/lightweight issues? trader_stuart Cannot use dropdown or menu above WebBrowser: "I have tried to use a combobox above the WebBrowser instead of the textfield that is used in the demo code. Only problem is that when you select the dropdown it disappears behind the WebBrowser object. Same thing happens if a menu is placed above the WebBrowser Is there some way to avoid this happening or is this a bug?"

In today's News Headlines :

Registered users can submit news items for the News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the News RSS feed.

Current and upcoming Java Events :

Registered users can submit event listings for the Events Page using our events submission form. All submissions go through an editorial review before being posted to the site.

Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of it will be archived along with other past issues in the Archive.

Deeper into the JSR-277 debate  

The Laws Have Changed Blog

Posted by kfarnham Oct 27, 2006

Setting the clock for open-source Java

The announcement of Sun's intention to open-source its JDK was applauded by many... and immediately followed by two key questions:

  • How?
  • When?

The second of these questions is getting clearer. According to the InfoWorld story Sun CEO sets open source Java time frame, "Sun Microsystems is set to announce the open-sourcing of the core Java platform within 30 to 60 days, Sun President and CEO Jonathan Schwartz said at the Oracle OpenWorld conference on Wednesday morning." The article also says the release will be under an OSI-approved license, "likely the same one used for Sun's open source Solaris OS". That would presumably mean CDDL, but this point obviously remains speculative.

So that puts some bounds on the "when", and the license is a little bit of the "how". If you've been following some of the Sun bloggers on the site, the people who actually have to pull off this open-source release, you'll know that there are a lot of decisions to be made and work to be done to make this work, such as figuring out source code management for the JDK.

So what other concerns do you have about open-source Java? I've heard a couple people say that a too-free Java (ie, GPL) would actually be incompatible with their work. But the whole process seems like it should win over others who won't touch Java under its current terms. So what's it to be, then?

Also in Java Today, LiveJournal blogger robilad (Dalibor Topic?) surveys the initial reception to the early draft review of JSR-277 in The JSR 277 early draft catches the worm, and has some strongly-worded suggestions for how the Expert Group should reach out to the community: "I think that JSR 277 is too important to let the institutionalized distaste for open communication with the actual Java community at the JCP kill it off. In particular given that the competing, existing, presumably equivalent-or-better technologies, like OSGi, Maven, Ivy etc. don't suffer from that social problem."

Author (and owner of the Amateur project) Elliotte Rusty Harold has posted a provocative new essay on Why REST Failed: "Representational State Transfer (REST) is the explicit architecture of HTTP and the World Wide Web. It is a well-designed, well thought out system that enables scalable applications that service millions of users. It is also a simpler system that enables developers who understand it to bring applications to market faster that perform better. Well, actually, no, it's not. And therein lies a story."

Joshua Marinacci has a major life update in today's Weblogs. Cramming more than you might think would fit in a blog title, he says: I'm getting married, leaving the Swing Team, and flying to Prague: "It's true. I'm leaving the Swing team. But don't worry, I'm not leaving Sun. I'm joining the Netbeans team, flying to Prague, moving to Oregon; oh, and I'm getting married!"

Tim Boudreau is looking for examples of Poetic commit messages: "Since I published my friend Jarda's 'most poetic CVS commit message of the year' I seem to have become a collector. So here's another..."

In Pulp Diction 2: Top Ten Reasons to Choose Java Over C/C++, Evan Summers writes: "I'm so irritated with all these Top Ten bookmarks. If you can't squish 'em then join 'em."

The latest Poll asks "What form does most of your Java development take?". Click your response on the front page, then visit the results page for current tallies and discussion.

In today's Forums,pedrejun would like to know, Is it possible to use WSIT in another application server than Glassfish? I would want to know if it is possible to use WSIT in another application servers like WebLogic or JBoss. If it is possible I would want to know also what are the modifications that an application originally made to Glassfish have to suffer in order to make it run in a Weblogic server (for instance).

pintler points out an interesting AWT/Swing issue involving Multiple desktops: "When using a window manager that supports multiple desktops, is there a way to control on which virtual desktop a new window (e.g. JFrame) appears? I have a system monitoring app that pops up windows for alerts. I want the new windows to popup in the currently active desktop. They do that with KDE, but I have people reporting that under JSPager the popup windows appear in the same virtual desktop as the base application window, whether that's the currently active window or not."

rbair reports that he's been Hacking on the Website and invites other project members to do the same: "I've spent the better part of the last 2 days working on the website. I'm guessing, by fact that it appears I'm the only one to work on it, that I need to do a better job of describing how to go about updating the website. It is probably a little known fact, but the entire website is stored in CVS for the project."

In today's News Headlines :

Registered users can submit news items for the News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the News RSS feed.

Current and upcoming Java Events :

Registered users can submit event listings for the Events Page using our events submission form. All submissions go through an editorial review before being posted to the site.

Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of it will be archived along with other past issues in the Archive.

Setting the clock for open-source Java  

Twin Cinema Blog

Posted by kfarnham Oct 26, 2006

You're hiring for what?

As I was wondering how to get into today's blog, I received what has to be the strangest, most other-worldy recruiter call I've gotten in a long time. Maybe ever. Weirder than last month when I got a call looking for Cocoa developers.

Today's recruiter was looking for QuickTime developers... and I had to be really sure she was talking about application developers using the QuickTime media API's, and not just content authors creating QuickTime content. But no, she was clear on that: looking for QuickTime developers. Since I'm not looking to take on any more work (laughing wildly at the very thought), I didn't dig in to find out if the client was fixed on developing native QuickTime apps (she did mention they wanted someone Mac based, thereby scoring another weird-recruiter-call point) or if they were looking for QuickTime for Java.

I bring up the latter point because when asking me to just keep in mind anyone I knew, she said they were also looking for J2ME developers. After I pointed out that the name is changing to "Java ME", I realized that there must be one very interesting company in Atlanta, doing media work and targeting phones (or perhaps other ME devices... but, c'mon, it's probably phones). Seriously, I thought all Java jobs were on the server.

One thing I find interesting is that both the micro and media programming markets are so small, I know of very few people who really specialize in either, since neither pursuit promises the kind of steady employment you could expect to realize by just body-renting yourself in the Java EE market. In fact, I'm not sure you could accurately specify a "going rate" for QuickTime or ME developers, because there are so few of them.

At least I think there are. Actually, it wouldn't surprise me for a second if I get a couple dozen replies to this blog asking to send along resumes. You know, from all the small-device-oriented media developers in Atlanta, who aren't already named "Sam", "Kelly", "Chris", or "Anthony" (you guys know who you are... how y'all doing anyways?).

Or maybe things are changing and there are more coding opportunities in the micro and media fields? That would make life interesting, wouldn't it?

In our Feature Article, John Ferguson Smart helps your website show reader around by Integrating Maps into Your Java Web Application with Google Maps and Ajax: "Two relatively recent technologies, Google Maps and Ajax, can make life considerably easier in this area. In this article, we will discuss how you can easily implement dynamic interactive maps on your Java web application, using the Google Maps API for the web interface, and Ajax to provide real-time interaction with the server. This article is designed to give you a rapid introduction to both Google Maps and Ajax, and to let you get your own interactive maps up and running quickly and easily."

In Java Today, the Portlet Repository Protocol (PRP) project seeks to define a common Web Service API used to communicate with portlet repositories like's own Open Source Portlet Repository Project. It will also establish the format and meta-data to be included when defining a specific portlet within a repository. This is a free and open standards project, that any portlet repository may implement, and any portal vendor may leverage, as well. Input from those respective parties is welcomed and encouraged.

The new Swing Application Framework JSR (JSR 296) aims to do for client-side Java applications what many successful Web frameworks have done for server-side code: Abstract out common application patterns with the goal of making development easier and less error-prone. In the interview A Framework for Swing: An Interview with Hans Muller, JSR 296 spec lead Hans Muller discusses patterns and issues common to Swing-based desktop applications, and describes how the new framework addresses those issues.

GASP bills itself as "pure Java middleware under LGPL license for mobile multiplayer online games and implements the OMA GS (Open Mobile Alliance Games Services working group) specifications, enabling multiplayer games on J2ME mobile phones, profiles MIDP and Doja, over 2/2.5/3G phone networks. This middleware implements the Open Mobile Alliance (OMA) v 1.0 specifications in Java and is able to handle basic services for building and handling interactions between players such as session management, [and] communications."

John O'Conner kicked off a battle royale among LayoutManagers in recent blogs and survey's the responses in today's Weblogs. In Layout Manager Showdown: We have results, he writes: "Several weeks ago, I tried to solve a form layout problem with NetBeans GUI Builder, sometimes known as Matisse. I shared that experience, and many of you had comments. The result was a layout manager showdown."

Evan Summers is working on an article about event dispatch thread handling, and has a preview in Enhanced DTs Extract 1: Progress Dialog Worker Preview: "Inspired by Richard Bair's BackgroundWorker, i wrote a ProgressWorker with builtin in ProgressDialog. Here is a preview by way of a WebStart demo."

Cay Horstmann considers the applicability of JUnit to teaching Java in The World's Simplest Unit Testing Framework, in which he "describes 'the world's simplest Unit testing framework' for teaching Java to beginners."

GlassFish concerns top today's Forums,jupiter_steve wants to make sure it supports his Implementation Strategy: "Will the Glassfish/Persistance API combination support the use of database generated primary keys. I am exploring what combination to use in the future and have been looking at Sun App Server/Derby/Persistance API/JSF, via NetBeans 5.5. But App Server does not support database generated primary keys. (Or am I missing something here?). I have a number of legacy databases to bring into the new apps (probably Derby) and I am looking for the best combination to go forward, would Hibernate solve the problem or do I have to go to JBoss etc or does Glassfish resolve it?"

Meanwhile, dipukm has a Problem with character encoding and web services: "I am using a JSP client for the web service I had deployed in my Glassfish 9.0 build. The client is also running on the same server. For exception handling, I am using ResourceBundle and the web service will throw SOAPFault exception with the localized message. So far is fine. Now the problem is that, my client JSP is not able to display those characters properly. When I see the view source, I am getting the Japanese display itself, but on the screen it is showing something else. Now, if I change the view encoding option of my browser to Unicode, I am getting the proper display."

In today's News Headlines :

Registered users can submit news items for the News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the News RSS feed.

Current and upcoming Java Events :

Registered users can submit event listings for the Events Page using our events submission form. All submissions go through an editorial review before being posted to the site.

Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of it will be archived along with other past issues in the Archive.

You're hiring for what?  

The Bleeding Heart Show Blog

Posted by kfarnham Oct 25, 2006

"Surprising and vigorous" reactions to JSR-277

JSR-277, the Java Module System, has been in public draft review for just two weeks and is already attracting profound attention. Not just that a lot of people are commenting on it, but they're doing so in significant depth. This is a tremendously important thing of course, as the JSR attempts to resolve a number of issues -- versioning, dependency management, etc. -- that have long nagged Java developers, and that the existing JAR format has proven incapable of managing in its current form.

It's a hot topic on this week's Java Posse podcast, which picks up on a debate in their forums over the proposal. Some of the posters there have pointed out the work done by OSGi in this space, most typified by Peter Kriens' JSR 277 Review, which we featured on the site on Monday. Posse member Dick Wall sees the discussion turning into another "Spring versus Java EE 5" thing, with some accusing Sun of having a "not invented here mindset" and ignoring a similar, possibly superior, and already-available standard established outside of the heliosphere. Wall's reply is that 277 has been developed through the JCP, a more open process than you typically (if ever) find for successful products the size of Java, and criticizes some of the anti-277 rhetoric:

What I've been reading is things like, "well, JSR 277"... there's a lot of kitschy or cliquey terms being bandied around like... "JSR 277 is OSGi without the eight years of experience that we've got." And my response to that would be, well, you know, you could bring that experience and help out the JSR if you wanted to. That experience, I'm sure, would be welcomed. But at the same time, I don't see that just because you got there first, you can dictate terms. This is going to affect a lot of people in the Java space, and I think they should all have their voices heard. I don't think it should be forced into being from one company's viewpoint or one organization's viewpoint.

Of course, it's still fair game to consider JSR-277 on its merits, or lack thereof, as blogger Patrik Beno does in his JSR 277 Review. He writes: "This document is an attempt to review and comment work of the expert group presented in the initial early draft of the specification published on October 11, 2005 [...] My impressions are three-fold: There is some great stuff in this JSR, some stuff is missing, and finally, I see some design flaws, some of them real hard showstoppers. Now if you're ready, read on."

Also in today's Weblogs, Jody Garnett has an update on OOPSLA Part I: "The only real reason to attend a mad scene like OOPSLA is for that wack to the side of the head that shakes lose some of your preconceptions, and hopefully allows you some room for those ideas that seem to gravitate to such occasions."

Richard Bair has some help to offer with SSL and Self Signed Certs: "Connecting to web servers over https that have self signed certificates has always been a hassle in Swing applications. Hopefully, with some recently added code and API in the SwingX-WS project this is no longer the case."

In today's Forums,gcsaba2 asks How can an unsigned applet certify itself?: "I have a graphics design applet which is not signed. With this applet the user can draw lines, circles etc. and may add regular images. There's a set of pre-made images, so the chances that the user will use his own are low. However, there is an option for this, so if the user wants to insert his own images, an open dialog must show up and allow the user to select a file from his computer. Unfortunately, to use an open dialog the applet must be signed, otherwise a security exception will be thrown. Because in most cases the user will not use his own images, it is stupid for me to sign the entire applet, and have the certificate window appear each time. The confirmation window should only appear when the user clicks on the Open button, in which case the applet should use the keystore which I'd provide and it should "sign itself", ie. certify itself with the browser's security manager. How can I do this?"

mcacker has some class resolution problems in Shared client package: "hi, i have a scenario where i have a web service with multiple endpoints (SEIs). using client customizations, i can put the client bindings in separate packages, which works fine. however, i have some shared classes that are used by all the SEIs, and client bindings for these shared classes are created in each of the packages for the same classes, thus there are duplicate classes in each package. this becomes a problem when sharing instances of these classes, as on the client they are not instances of the same classes, and the code will not compile"

In Java Today, NetBeans 6.0 Milestone 4 is now available, and the Milestone 4 report details some of its new features: Java EE 5 support from NetBeans 5.5 was merged into 6.0, Mobility Pack made its firsst milestone release, and Profiler added 'a bunch of features". This Milestone build is available from the Trunk Milestones Index.

Emil Sit, a graduate student in parallel computing at MIT recently began working with the Sun Grid. In his blog post First steps with the SunGrid, he describes the concepts and organization of the grid, shares his experience working with it, and offers some suggestions for possible improvements.

The incubated Java Desktop project JIL (Java Islamic Library) is a project to provide a plethora of useful Islamic tools and applications as well as a comprehensive feature-full Islam-centric library. The JIL project includes Hijri date, Muslim prayer times, and Qibla etc.

In today's News Headlines :

Registered users can submit news items for the News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the News RSS feed.

Current and upcoming Java Events :

Registered users can submit event listings for the Events Page using our events submission form. All submissions go through an editorial review before being posted to the site.

Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of it will be archived along with other past issues in the Archive.

"Surprising and vigorous" reactions to JSR-277  

Letter from an Occupant Blog

Posted by kfarnham Oct 24, 2006

Someone in Java-ville wonders why useless statements compile

One of the key traits of Java is its philosophy of "failing early". Strong typing, among other things, allows the compiler to catch problems that could otherwise linger at runtime. So maybe Java developers invest a certain level of trust in the compiler, thinking that once your code compiles, you've reached a certain threshold. It may still misbehave, but at least the obviously broken stuff has been accounted for. Right?

Maybe not. Today's Feature Article, looks at the curious case of the statement:

 if (condition);

This compiles, but it is always meaningless, since the semicolon implicitly creates an empty "then" block. And that begs the question, or more to the point, the not-so-stupid question. (Not So) Stupid Questions 14: Why Do Pointless if Statements Even Compile? opens up for discussion the idea of whether the compiler should be responsible for catching things that, though they may be syntactically legal, are meaningless, useless, and probably unintentional.

We hope you'll join in the conversation, and think about the big picture. To wit, maybe a semicolon after the ifstatement is syntactically legal, so it makes sense that it should compile without complaint. If that's your position, then consider the following code:

public class EarlyReturn {
    public static void main (String[] arrrImAPirate) {
        int i = 0;

Does this compile? Why or why not? Should it or shouldn't it?

See you in the not-so-stupid question discussion...

In Java Today, the Java Desktop Communitynotes a fun game applet posted as part of a Japanese-language blog:NekoZori. The Desktop Community page comments: "the page probably makes more sense in the Japanese locale. Cat flying around in a boat. There's something strangely appealing here. The game was included in a roll-up of physics simulation games, more about this particular game here. Also, be sure not to miss the author's zombie gameand variations."

Java 3D 1.5 beta-1 has been released, and adds support for two new platforms -- Mac OS X (via the JOGL pipeline) and Windows/XP 64-bit -- as well as a few new features and most of the planned bug fixes, including JOGL Rendering Pipeline, non-power-of-two textures, NIO image buffer support for textures, by-reference support for geometry indices, rendering error listeners, and vecmath accessors/mutators

The transcript of last week's Ask the Experts session on Swing has been posted. "In this session, Swing Architect, Scott Violet, Swing Technical Lead, Shannon Hickey, Java 2D Engineer, Chris Campbell, and AWT Technical Lead, Oleg Sukhodolsky answered a variety of questions about building graphical interfaces using Swing."

Kohsuke Kawaguchi has an administrative update on some of his projects in System-level projects moved under the java-net projectin today's Weblogs: "Over the last few years, I've been involved in many of the 'system-level' projects, which provide tools and services for any project owner. Gary kindly moved them under the java-net project to show the authenticity."

Ben Galbraith is trying to figure out how to deal with Heaps of Memory: "Is there a way to determine the largest set of strongly referenced heap data a process creates at any one time?"

Kirill Grouchnikov long-running series on scalable graphics pays off with striking examples in SVG and Java UIs part 6: transcoding SVG to pure Java2D code: "This entry on using SVG in Java UIs describes the utility to convert SVG to pure Java2D painting code."

Joshua Marinacci has more to say about SwingX's design philosophy in today's Forums. In Re: Painter Refactoring: Solving the Layering problem, he writes: "I've looked through the original thread and come up with a new proposal. In the six months since we originally discussed this I've written a lot more painters and started figuring out what I will really want to do with them in practice. I think that having a layering ability is important, though I want to preserve a simple API. I've also come to realize that there is absolutely no reliable way to separate a normal component's foreground and background. The Windows Look and Feel implementation of a button, for example, does not provide a way to draw the text separate from the background without making specific hacks just for this look and feel. This means we need to figure out how our layering system will address these issues."

robross has some JDIC work to contributes and asks how to do so in Re: how do I add to cvs so I create a patch for submission?: "I am trying to upload all my changes for the Mac implementation of the TrayIcon service. I have re-read the instructions for submitting a patch, and after following them, (as I expected) none of the NEW files I have created are in the patch file. This is because I am not able to do a "cvs add" on the new files, since I don't have add permission. Since these files are not added to the cvs meta-data on my local repository, when I do the diff and patch, cvs doesn't know anything about the new files so they don't get picked up and put in the patch."

In today's News Headlines :

Registered users can submit news items for the News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the News RSS feed.

Current and upcoming Java Events :

Registered users can submit event listings for the Events Page using our events submission form. All submissions go through an editorial review before being posted to the site.

Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of it will be archived along with other past issues in the Archive.

Someone in Java-ville wonders why useless statements compile  

The Bones of an Idol Blog

Posted by kfarnham Oct 23, 2006

Picking through the JSR-277 draft

Well, the public review period is supposed to be just that: a time to present an early draft of a JSR to the public for review, commentary, and criticism. Writing for, Peter Kriens has put together a fairly thorough shakedown of the early draft of Java Module Systemin a lengthy blog timply titled JSR 277 Review.

Summarizing the draft proposal, Kriens calls it unambitious, saying the ambition level is lower than when OSGi started work on similar problems in 1998, and furthermore, it doesn't learn from OSGi's experience:

The Expert Group took a simplistic module loading model and ignored many of the lessons that we learned over the past 8 years. No built in consistency, no unloading, no package based sharing. Maybe we wasted a lot of time or solved unimportant problems, but I really do not think so. It would be ok if they had found a much cleaner model, well supported by the VM, but it is clearly not. Their model is based on delegated class loaders, just like the OSGi framework minus 8 years of experience.

Kriens' commentary is significantly involved with class-loading, which he says should be the responsibility of the module framework. He points out that when your dependencies have their own dependencies on different and incompatible versions of other modules, these will show up as hard-to-traceClassCastExceptions. He also notes that there is a "fan out" problem which results in importing hundreds of barely-related or even unrelated modules, as a result of dependencies of dependencies of dependencies being resolved.

His critique closes with a pretty harsh conclusion:

JSR 277 takes a simplistic view of the world, ignoring many real life problems: consistency, optionality, split packages, etc. The only way this EG can pass its final review is lack of attention for detail of the Executive Committee or alternatively, serious muscle power of SUN. JSR 277 is a missed opportunity for Java. I do not doubt that this specification will end up in Java 7, but it will further fragment the Java world for no technical reason. Not only is this specification impossible to implement on J2ME any time soon, it will also leave the many OSGi adopters out in the cold. Why?

Wow. That's a pretty thorough denunciation. But is it accurate, and fair? What do you think? The JSR-277 review runs through November 13, so this is the time to read the spec and figure out if it's the right solution to the right problem.

Also in Java Today, Dr. Dobbs' Journal takes a look at support for Java EE 5 among various vendors in App Server Powers Race To Embed Java EE 5 Support, reporting that "top vendors are moving quickly on Java EE 5 support. By early next year most will have compatible updates shipping." The article also notes how GlassFish not only offered an implementation concurrent with the release of the EE 5 spec, but may also be helping other app servers to get their EE 5 implementations out sooner.

Meet Scott Violet, Architect for the Swing Toolkit Team at Sun Microsystems is the latest in the SDN series of interviews with key Java platform engineers. In the interview, Scott talks about developing visual effects with Swing, the beans binding effort that he's heading up as the JSR-295 expert group lead, new desktop features in Java SE 6, and more.

This week's Spotlightis on the Current CMS project, which offers a content management system (CMS) that is the product of nine years of development, originally developed with flat files and perl, but later migrated to Java. Current CMS is a multi-user CMS with workflow, versioning and publishing capabilities. It includes a generator that prepares scaffolding including Java model and view classes, JSP, SQL create and alters... all based on simple XML configuration files. The project was also the subject of a recent feature article.

James Gosling talks up his multilingual documentation project in today's Weblogs. InTranslation segmentation, he writes: "I've been hacking furiously on, the community translation site for java documentation (even if you're not interested in translation, it's still an interesting way to read javadoc). There's been a pile of bug fixing. The biggest change that people using the site will notice is that when you volunteer to do translations, it breaks large chunks of text down into more manageable segments.



All I Want Blog

Posted by kfarnham Oct 20, 2006

Why isn't there a prototypical Java desktop demo app?

One of the things that curious about AWT and Swing development is that you don't subclass some kind of Applicationobject or otherwise work in some kind of framework that expresses the common elements of a desktop application. Instead, like any other application, public static void main (String[])is the beginning of the universe, as far as your app is concerned. Not that this doesn't have its benefits -- many desktop classes should work equally well in an application, applet, or some other visual SE environment, and don't need to be aware of the context in which they run.

Still, particularly for the beginner, it's hard to see the best way to really get started with a Java desktop app.majeric makes note of this in today's Forums, in the message Simple Client Applications:

What surprises me about Java on the desktop is that there are very few simple clean example of it in use that are fundamental. I've taken it upon myself to write a Java application like Mac OS X's TextEdit. I thought it functionally is a nice simple example of an application where Swing would support all the necessary elements that I would need to put into my code. I have to admit, that I learn best by example. I went looking for code snippets here and there that cover all the aspects of development that I would need: Undo/Redo features. RTF/HTML/Text management. Document save/dirty/save as/untitled management. Other than some exceptionally complex examples like Eclipse's editors or JEdit or the like. There are very few *simple* examples. You'd think University students would be churning these things out by the boat load. Simple Paint Programs. Simple Text Editors. Simple Spreadsheet Programs. Vector Graphic Editors etc....Yet... Really, there isn't that much....Anyone care to prove me wrong?


Keep 'Em Separated Blog

Posted by kfarnham Oct 19, 2006

Will the JAM bring order to JAR chaos?

So, back at JavaOne 2005 -- yes, "5", not "6" -- I think the single thing in the keynote roadmap that interested me the most was a short bit of what almost seemed like thinking aloud about the limitations of the JAR file as a distribution format. The reality, particularly for desktop devleopment, is that JAR versioning is haphazard or nonexistent, so developers tend to bundle the specific versions of the libraries they need and use classpath trickery (or OS-specific configurations) to ensure that the rightversions of the right libraries get loaded. And even this isn't foolproof -- ask me about the time another team at a former employer put a year-old version of one of my team's JARs in thelib/ext folder.

So, it's fascinating to see that an Early Draft Review is now available for JSR 277 - Java Module System, which aims to rein in all of this nonsense and create a JVM-supported mechanism for deploying Java applications and expressing their dependencies, versioning, what they export for other applications to use, etc. The draft is big -- 87 pages for the main body of the proposal, plus another 75 of appendicies and related documents -- so it's too much to summarize in this space (surely some other bloggers will be posting their opinions and ideas). The central deployment story (there's a separate development module story) is that a JAM file (meaning "JAva Module") will be the basis of future deployment, and that it will contain a metadata file much like the current manifest file, describing its unique name, version, dependencies on other modules, exported classes (ie, what it makes visible to other modules, etc.).

A brief note in section 1.6 points out that the module format is designed to be language-agnostic. This might make the JAM broadly useful for all end-users -- JVM-based versioning and deployment of any language on any operating system could make the JVM an absolute must-have for all users, which would eliminate Java's worst deployment problem today: getting a JVM installed for users who don't already have one. As an aside, this is one thing that Bruce Tate got very right in Beyond Java: by solving difficult problems of security and cross-platform execution, the JVM has become so valuable that any would-be successor to Java would have to run on it.

There are probably some compelling server-side uses for JSR-277 too. Surely you know of companies where the developers count on Joe (or Jill) in IT to put the right JARs and the rightscripts in the right places on the deployment servers. So what happens when when Joe or Jill is gone in the next mass-layoff? A works-the-same-everywhere deployment scheme has a lot of appeal here.

Anyways, if the topic interests you, check out the draft. The draft review period runs through November 13, and a vigorous discussion can only help improve the spec.

Also in Java Today, the new Glyph project aims to provide a set of utilities and annotations to speed up development for Jini-enabled applications. "J2SE5.0 annotations are used for automatic service creation and creation of smart proxies for remote objects, and generation of associated Jini configuration files. A number of utilities have been written to help manage exported objects, and ease service initialization. In development, there are other helpful classes such as service filters, and Pack200 URL handlers that can significantly reduce the size of a downloaded jar file when working with mobile code." The project already has downloads and a tutorial.

The JOGL-Demosproject contains Java demonstrations utilizing OpenGL through theJOGL API. They exhibit advanced functionality such as vertex and fragment programs, shadow maps and hardware-accelerated offscreen rendering via pbuffers. Most of the demos were ported from C or C++, in which case a link to the original sources is provided. Check out the project's home page for Java Web Start versions of each demo.

Today's Feature Articlelooks at Invoking Assembly Language Programs from Java. After all, nearly everything written about Java Native Interface (JNI) assumes that your native code will be written in C or an offshoot like C++ or Objective-C. But this isn't the only option. For high performance and close-to-the-metal coding, you can call assembly language from JNI. Biswajit Sarkar shows how to do it.

Today's Weblogskick off with a look at What's New for JavaOne in 2007, in which Annette


Conspiracy of One Blog

Posted by kfarnham Oct 18, 2006

Are you going to run for the JCP executive committee?

OK, everyone who complains about corporate dominance of the Java Community Process, here's your chance. For the next two weeks, nominations are open for the Java Community Process executive committee elections. If your a JCP member who's signed the JSPA 2, you're eligible to nominate yourself.

So who should be on the committee that oversees the Java Community Process? Well, last year, Hani Suleiman of OpenSymphony and the infamous "Bile Blog" nominated himself and was elected. In an interview with TheServerSide last February, he talked about why he ran:

I ran because anyone can, and I thought it'd be interesting to try to attack some of the problems that I felt plagued the JCP from the inside. I don't think I'm particularly qualified for the job, all I have is a keen love of all things Java, and a willingness to think through the issues. I do like to think though that I bring in a certain 'from the trenches' perspective, which I hope in time with the right nudging will make the JCP more accessible.

So, we've got one Hani on the JCP EC. Why not two? You, maybe?

Also in Java Today, Robert Stephenson has announced the results of theGELC's search for a new name in his blog GELC => Curriki. "A few months ago we ran a contest to suggest a new name for the GELC's new Website. Today the GELC Advisory Board's decision is officially out: the new name is Curriki. The new Website, still under development, is and will support the GELC's new mission of providing "open source curricula" to teachers and students around the world. The new name fuses the terms "curriculum" and "wiki," symbolizing this aim to use technology to provide universal access to free curricula and instructional materials."

Last week, the Grameen Bank and founder Muhammad Yunus won the Nobel Peace Prize for microcredit finance programs to help the world's poor. Grameen is also a sponsor of the Microfinance Open Source(Mifos) project, an incubated JavaTools community project to provide source software for running operations at a Microfinance institution, "to provide loan provisioning and savings products to the poorest people on the planet."

On today's Weblogs, Kohsuke Kawaguchi considers object state as it relates to JAX-WS in Bringing state back to web services: HttpSession-scope: "Traditionally JAX-WS has never taken advantage of object state, just like servlet. That is, the container creates only one instance of your service class, and then have it serve all the requests concurrently. This makes it impossible to set values to instance fields, as you'll experience concurrency problem as soon as multiple threads hit your service."

In My most-used utility methods, Ethan Nicholas offers "a brief look at some utility methods I seem to need in every program I ever write."

Evan Summers stirs over a grab-bag of ideas in Mmmm... Java: "I'm so bored... Oooo i know, i'll write a blog article. About things that Java doesn't have (yet): 'What We Might Get', 'What C# Has Got That We Want', and 'What I Really Want'."

In today's Forums,kcr details the current Java 3D 1.5.x release plans: "As you all know, we are in the beta testing phase of Java 3D version 1.5.0. We plan to have one more beta release next month and then deliver a final version of Java 3D 1.5.0 in mid-December. Java 3D 1.5.0 adds support for two new platforms -- Mac OS X (via the JOGL pipeline) and Windows/XP 64-bit -- as well as a few new features and most of the planned bug fixes. However, it will not support Windows/Vista, which will ship early next year (although it may run, it will not have been adequately tested). Also, there were a few planned bug fixes that won't make this release. For these reasons we are considering a quick 1.5.1 release to add Windows/Vista support and fix the most important of those bugs that missed the 1.5.0 release. We expect that this will take about 4 months to complete, so we would target late-April for the 1.5.1 release. This will necessarily delay 1.6.0 by about 4 months, but we feel that this is a good trade-off."

drewmca describes platform-specific security gotchas with GlassFish in Re: [Feedback]: Officially supporting Apache in GlassFish? "I think one of the biggest reasons for supporting Apache is that without it, on Linux you can't run the glassfish user as a non-root user if you want to run on standard ports. Non-root users in Linux don't have access to ports like 443 and 80, so the only way to get glassfish to run on those ports is to run as root, which is a big security risk. The only solution we had was to run Apache as a front end. Apache can somehow manage to run on those ports by doing some native level trickery but as far as I can tell there's no way to set that up in glassfish (or JSAS). Therefore I'd consider this a highly important feature."

In today's News Headlines :

Registered users can submit news items for the News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the News RSS feed.

Current and upcoming Java Events :


No Brakes Blog

Posted by kfarnham Oct 16, 2006

What will emerge as the Blogapps book code evolves?

The Blogappsproject might just have the ideal approach for putting a book's example code online. It'd be easy enough to put a zip up on the publisher's website -- actually, I can tell you from experience that managing lots of samples, ensuring that they work and reflect what's in the book isn't as simple as it looks -- but there's another, more ambitious approach, and that's to check the code into a public repository and let it grow.

This is what Dave Johnson (creator of Roller) has done with Blogapps, which is the example code for his book RSS and Atom in Action. It helps that the sample code provides a useful purpose beyond illustrating the book's tips and techniques -- the code is effectively a complete RSS and Atom development kit -- but Dave has done something particularly interesting in regards to the future of the project. There is, after all, a tension between the inherent desire to improve the code base, and the need for it to continue to reflect the book's contents accurately. So what did he do? He forked:

In the Blogapps 1.0 branch, which is supposed to remain true to the code in the book, I will only make changes to fix bugs and to update the code for the final Atom Publishing Protocol specification and for the final release of IE7.

But the Blogapps 2.0 branch can run wild and free. It can deviate from the code in the book. So I (and maybe someday, we) can release new versions of the Blogapps Examples with completely new features and new versions of the Blogapps Server that use newer versions of Roller an JSPWiki.

In our Feature Article, Dave introduces The Blogapps Project, showing you how to get the examples up and running, and touring the various parts of the code to indicate how you might be able to reuse them in your own projects.

In Java Today, the NetBeans team has announcedthat the second release candidate for the NetBeans IDE 5.5 is nowavailable. NetBeans 5.5 supports the Java EE 5 platform, and the Java Persistence, EJB 3 and JAX-WS 2.0 specifications. Also available are updated versions of the Profiler and Mobility Pack. NetBeans 5.5 RC2 Downloads. The final NetBeans IDE 5.5 release is planned for October 30, 2006.

The ninety-eighth issue of the JavaTools Community Newsletter is online. There's only one new project and no graduations this time, but the newsletter continues to round up tool news from around the web, offers useful links to interested community members, and has a tool tip on where to find more tips, namely the Java Tipspage.

Got porting nightmares? If you're considering automating the porting your J2ME applications, you may want to think about using a preprocessor. The article Automate Your J2ME Application Porting with Preprocessing argues it's the only technique open-ended enough to handle porting to multiple device models.

In today's Forums,tbee hopes SwingX will be a little less aggressive in assuming painting responsibilities, which has led to the battle of the highlighters: "I used to extend FTable, but nowadays I extend JXTable, since that seems to be where the development is. Aside from the easy-entry part, "my" JTable also was extended with the "usual" stuff like alternating colors, etc, plus some business related renderers like "show values < 0 in red". All these components date back to Java 1.2. So far for the intro. Now, JXTable does a great job at fixing the bugs, but I keep having to fight some of the extentions, especially the highlighters seem very persistant in wanting to set the foreground color of the renderers - even if highlighting is not configured. I just had to implement a NoActionResetDTCRColorHighlighter class, just to keep JXTable from setting the foreground."

ylzhao wants to know Is the Java Compiler Framework available to Mac OS X?: "I have tested the Java Compiler Framework on windows successfully, but after I installed JDK 6.0 beta on Mac OS X, it seems that the Java Compiler Framework is not available. It looks like that Apple has not yet added support for the JavaCompiler interface or is it not part of the standard installation?"

mohank needs platform-specific GlassFish advice forRunning on port 80 (Linux): "I know this has been asked before, is there any way to run glassfish on port 80 as a non-root user on linux? I have seen the blogs for Solaris 10 and Mac OS on how to do it. I really don't want to front it with Apache, if possible. I have been running Tomcat 5.5 by using the bundled 'jsvc' and it has really worked great? Is it possible that glassfish could maybe use jsvc sometime?


Why Don't You Get a Job? Blog

Posted by kfarnham Oct 16, 2006

Yes, there's a place for job listings

There's a minor change to our navigation bar that I forgot to mention a while back when it was added. If you look on the front page's left nav, under "Get Connected", you'll see "People, Projects, and Jobs". It's the "Jobs" part that's new. Actually, it's not new; we've had a JobsWikipage for some time. We just realized that a lot of people weren't finding it, and were putting job listings or resumes in places where they probably weren't going to get found (the Project Help Wantedpage, the forums, etc.).

It's a simple Wiki page because that seems an easy to use choice for both employers and job-seekers, easier than developing our own backend for job listings and resume postings and having to manage it. The big sites like Monster and can do that. We just wanted something small and lightweight for use by the community. We hope you find it useful.

In Java Today, Romain Guy's blog Rich Internet Applications with SwingX-WS has a little more to say about SwingX-WS, following the recent publication of Richard Bair's article Web Swinging: "Richard's article did not talk about a very interesting component that sits in the source repository, JXForm. This component can be compared to the form tag in XHTML pages as it sends an HTTP request which parameters are obtained from the form's children. This means that in Swing, you can simply put text fields in your GUI and JXForm will take care of creating an HTTP request for you and hand you back the result."

"After talking with JUG-Leaders all over the world, and with the support and ideas of Aaron Houston, the Sun JUG program coordinator, we reached the keys of the success of every java user group." In How to make a Successful Java User Group, Ahmed Hashim shares 16 steps you can take to help your JUG succeed.

Over at Artima, Frank Sommers has kicked off a discussion of Closures without Complexity , looking at the more relaxed closure syntax in the latest proposal by Josh Bloch, Doug Lea, and Bob Lee. "Of all the recent proposals to add true closure support to Java, Block and Lea's sounds rather reasonable, because it would actually simplify current syntax by making a set of assumptions based on current practice. What do you think of the Bloch and Lea's proposal?"

This week's Spotlightis on the latest Ask the Experts session, which centers around Swing, the popular toolkit for building GUI's for Java desktop applications. Post your questions and you'll get answers from key members of Sun's Swing, Java2D, and AWT teams, namely Scott Violet (Swing Architect), Shannon Hickey (Swing Technical Lead), Chris Campbell (Java 2D Engineer), and Oleg Sukhodolsky (AWT Technical Lead). This Ask the Experts session runs from Monday, October 16 through Friday, October 20.

In today's Forums,snies00 is apparently trying to do a lot of GlassFish hosting on one box. The story continues in Re: How to configure GlassFish to support virtual servers with separate JVM: "Last night I ran across a blog that might shed some light on this issue. Another requirement that I failed to mention is the need to start/stop each customer's virtual host separately. Based on the info in the blog it seems that I need to create multiple standalone (non-clustered) server instances. That makes sense to me in that each instance then runs within its own JVM. This is important also to maintain separate class-loader spaces since each host's servlet is configured with different parameters. Given this new info my question is - does either GlassFish or SJS AS 9.0 (platform edition) support the ability to define multiple server instances? If so, could someone tell me how to accomplish it (or point me to some additional reading)?"

kohsuke explains calendar concerns in Re: Why does the JAX-WS client code use XMLGregorianCalendar?"XMLGregorianCalendar is thought to be necessary because Java's standard Date/Calendar types cannot represent all the possible values allowed in XML Schema date-related types. Such difference is often small --- for example, whether you can correctly represent 0.0001sec, or year 9999999999999, etc. So I kind of agree that it was a poor choice to make that a default. Then there's a fact that XMLGregorianCalendar is awfully hard to use. The factory class, as you pointed out, then the checked exception it throws. There are a few RFEs filed around this, so it should become better in the next revision of JAXP. The good news is that you can tell JAXB to use Calendar instead of XMLGregorianCalendar. Check the archive with XMLGregorianCalendar and you'll find how."

James Gosling introduces a Community translation experiment in today's Weblogs: "My spare-time fun hacking project for the past couple of months has been a web site for community tranlation of documentation. It's currently live at When you first look at it, you see what looks like the output of javadoc, which is roughly what it is: javadoc run inside a servlet container."

David Herron addresses the difficulty of testing GUI's, and covers the JComboBox regression noted last week on the forums, inVisual comparison in GUI testing, and a recent "horrible" regression: "Saw Is Sun's Bug Fixing Policy a Failure or Success? which refers to Horrible JComboBox regression in b99 with WindowsXP L&F;... There's a whole lot to this discussion to consider. What I want to talk about is the difficulty of finding bugs in rendering graphics (like a GUI)."

William C. Wake filed a series of conference reports late last week and over the weeken, starting with NASAGA '06 conference, day 1 of 4: "NASAGA - the North American Simulation and Games Association - is a group consisting mostly of trainers and facilitators who use games and simulations in their training. They're having their conference in Vancouver BC this week - and it's lovely here. (The only problem is - the conference has been so busy I've only been outside 2 hours.)"

In today's News Headlines :

Registered users can submit news items for the News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the News RSS feed.

Current and upcoming Java Events :


Easy Money Blog

Posted by kfarnham Oct 13, 2006

More just-pick-it-up-and-use-it Java stories

On Wednesday, I talked up a couple of Java apps -- the Podcast-smoothing Levelator and the work-in-progress game Freetar Hero -- where the point was not that they were written in Java, but that they solved a problem for someone. This is a tremendously good sign because these apps are gaining attention for what they do, and the fact that they're in Java is a little-noticed implementation detail. The developers used Java because it was a good tool for the job (even if they did have to go native for the media stuff), which more or less confirms what a lot of us have known for a long time: Java's plenty fast, and gets you plenty far.

Interesting side-note: I heard from a Levelator developer who said that that Levelator is basically a Java GUI wrapped around an existing command-line app, a project undertaken to make it more palatable to more users. Remarkably, the Java GUI was written in a single weekend. And remember, they ship for multiple platforms this way.

Today, we have another interesting story, which comes to us by way of the Wall Street Journal. The story The Nights of Networking talks up a massively-multiplayer online game called "RuneScape". The game is free at its introductory levels, and charges a small fee for advanced levels and better customer support. The article suggests the company is making $50 million a year from RuneScape, and that the company's executives believe the company to be worth $500 million. And a big part of that is thanks to Java and its ability to deliver a strong end-user experience. As the article points out:

RuneScape's achievement has been to win over more casual game players. Many of them don't play other MMOGs, some of which carry subscription fees of as much as $15 a month. One of RuneScape's attractions is that it's written in Java, a programming language that allows games and other software to be run through ordinary Web browsers. Players can also start playing within seconds after registering and downloading the game over a high-speed Internet connection, even on older PCs. By contrast, the rich graphics and sophisticated software behind World of Warcraft come on multiple CDs that users must purchase and install.

The simplicity-of-installation story is something I blogged about back in March, noting how ThinkFree Online's launcher (and JVM caching) got you up and running with an office suite much faster than installing Microsoft Office or from CD. Again, more functionality, less hassle. Why isn't this story getting out?

Personally, big ol' swords and sorcery isn't quite my bag, but I soooo wish Maple Storyhad taken the Java approach instead of being IE-for-Windows-only (blech, barf, wretch). Maybe the next casual MMOG will follow RuneScape's lead. 850,000 paying users and $50 million a year is nothing to sneeze at!

Also in Java Today, JSR-202, the Java Class File Specification Update, has issued its proposed final draft. This JSR describes the changed class file format of Java SE 6, including both a revised description of the format and a diff file showing the specific changes. "The main difference is the introduction of a new verification scheme based on type checking rather than type inference. This scheme has inherent advantages in performance (both space (on the order of 90% savings) and time (approximately 2x)) over the previous approach. It is also simpler and more robust, and helps pave the way for future evolution of the platform."

The Free Java Lectures page bills itself as "two semesters of College-Level Java--for free", offering a comprehensive introduction to Java over the course of 28 sessions, from basic language concepts up through commonly-used libraries like servlets, JSP's, and Struts. Each lecture is a presentation file in .pps format, which can be opened with

Chris Campbell shows off techniques for Easy 2D/3D Mixing in Swing in today's Weblogs. Specifically, he covers "how to use Swing, Java2D, JOGL, and Timing Framework together in your applications... Silly demo included: source code, webstart links, and all..."

Joshua Marinacci peels back the covers on SwingX-WS's mapping component in NASA Maps in your Swing App: "In addition to the photo demo we created in Aerith, there are lots of cool things you can do with easy to use geo-mapping. The overlay API lets you draw anything you want on top of the map, including waypoints and geo-polygons."

Jacob Hookom sees a possible need for a RJS API For Java: "I've been knee deep in development, using AJAX here and there when necessary. One thing that I found lacking was what Rails users call "RJS" in the Java API for JavaScript generation over AJAX."

The latest Poll asks "How many open-source Java projects have you contributed code to?" Cast your vote on the front page, then visit the results page for current tallies and discussion.

In today's Forums,swpalmer argues for the seriousness of JComboBox bug in Re: Horrible JComboBox regression in b99 with WindowsXP L&F: "Is EVERYONE going to work around this issue by writing thier own renderer? What about applications that are already deployed that will simply start running with a new JRE? This breaks ALL Swing apps with a JCombobox running the Windows Look and Feel. It's a big deal. I consider it a show stopper without the slightest hesitation... but I've done my part... I reported it, watched it get fixed, watched it get broken again in the very next build (though I wasn't testing frequently enough with JDK6 to notice until it was already reported again here)... and now I've voted for the bug and added my comments"

zambizzi would like to see a more authoritative guide to SSL use in GlassFish, writing in the thread Re: Problems w/ SSL for https:// access: "Now that Glassfish has a Wiki, is there any chance of a Sun engineer or someone else "in the know" of posting some very _complete_ and simple instructions on getting a Verisign cert working? You'll notice throughout this thread that there are three or four external resources referenced which, I'd assume would be working instructions (if I could get it to actually work.) A mixture of blogs, forums posts, and 3rd. party hacks is not, IMO, a very good set of instructions for a task such as this." 

In today's News Headlines :

Registered users can submit news items for the News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the News RSS feed.

Current and upcoming Java Events :

Where does the web app end and the Swing app begin

It's too easy to get hung up on the "web" part of "web apps" and "web services". So something generates HTML... so what? That doesn't mean you have to throw it as-is into a browser window. After all, HTML is structured data (better still if it's XHTML), and there's no reason that a client can't just pick through that structure (with iteration, XPath, whatever) to pull out the pieces of data it needs, and then use them in whatever way is most apporpriate for the client.

Such as, say, putting that data into a Swing GUI? Take some data from a couple different sources, mix them together and you have a mashup. Or, this being Swing, a smashup.

In the Feature Article, Web Swinging, Richard Bair introduces API's and techniques from theSwingX-WS project to help you load and use HTML and XML data in your rich Swing application. "Working with HTML and XML content in Java rich clients can be very productive. [...] Using XPath and SimpleDocument, you can easily extract data from XML documents and use this data in your Swing applications."

In Java Today, the Commons project is an effort to provide helper classes, interfaces and implementations to make working in Java simpler, combining various common utilities that have been used in other open source projects including Savant and Verge. Its tools include a type converter library (String to/from Object, String to/from Array, etc.), a type validation library, JavaBean conveniences, and more.

The 261st issue of the NetBeans Weekly Newsletter is out, with features and contests to commemorate NetBeans' eighth birthday, an announcement of NetBeans IDE 5.5 RC 1 and a poll on RC 1, results from the NetBeans debugger survey, a Flash presentation from Roumen Strobl on NetBeans' best features, and much more.

Would-be Ajax creators can get up and running with the articleIntroducing the Google Web Toolkit. "The Google Web Toolkit (GWT) is a unique entry among Ajax toolkits in that it is built for Java developers who may not know the latest web coding standards, but want to harness the power of Ajax. Until now, Ajax toolkits or frameworks have consisted of Javascript widget libraries and implementing them involved detailed knowledge of Javascript, HTML and CSS. With GWT's Java-centric approach, much of the pain has been removed with Swing-like creation of the front-end code, real debugging from within your favorite IDE and guaranteed cross-browser support."

Evan Summers considers closures' access to non-final local variables in today's Weblogs, and wonders if that's really what all the fuss is about. His blog Better than Good is "a follow up to The Good, The Bad and The Ugly, where i got taught that closures are more than a short-hand notation for anonymous classes, and i explore how this might be useful in Swing EDT related programming."

Vikram Goyal wonders Why are Sun's code examples such bad examples of coding?, and after illustrating some lowlights, surmises that "there is no quality control applied to Sun's code examples."

Inderjeet Singh considers the problem of How to do black-box testing for AJAX Applications? "Web developers are rushing to use AJAX in their Web applications to enhance user-experience. However, testing is a pre-requisite for creating production-quality applications. In this blog, I share my attempts on writing automated blackbox tests for the popular Web 2.0 petstore application."

In today's Forums,sbalmos wonders whether GlassFish's SOAP implementation is too eager, in Lazy fetching useless with SOAP? "This is more of an architectural question... Apparently lazy fetching of an entity's relationships and collections is completely useless with SOAP, because the JAXB XML marshaller touches each of the entity's properties, and thus causing a lazy fetch. I was somewhat hoping that entities with lazy-fetching properties or collections would, somehow, just return the entity IDs of the entity / collection member entities. I have other explicit methods for retrieving those other member entities, given entity IDs. But since every property is touched, it's like everything is eagerly fetched. This can *easily* get out of control in my envisioned system, where hundreds of collection members can have parents that have hundreds of other members, etc etc etc. The classic parent/child tree problem which lazy fetching was supposed to solve."

Joshua Marinacci got an answer about shaped windows, which he reports in the thread Re: Is There A BalloonTip Component In Java?: "I just got a message back from Scott at Apple on the OSX stuff: 'Check out this example code RoundTransparentWindow/index.html. I believe what you're basically doing is creating a clear window that has a view in the shape you want.'"

In today's News Headlines :

Registered users can submit news items for the News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the News RSS feed.

Current and upcoming Java Events :


Radio (Part 1) Blog

Posted by kfarnham Oct 11, 2006

Remarkable new Java Media apps

The podcasting world is rushing to embrace a new tool. And it's written in Java.

The Gigavox Levelator is an application which takes audio files and adjusts the sound levels to reduce volume (level) differences from one source to another. The obvious application is in interview and group-discussion podcasts, where different participants may naturally speak at different volumes, have better or worse microphones, be amplified more or less than one another, etc.

I first heard of it from Editor Emeritus and O'Reilly Network podcaster Daniel Steinberg (check out his Distributing the Future), and quickly saw references to it on other podcasts' pages, such asAnime World Order. And if you check out Levelator's support threads, you'll see the Java Posse's Dick Wall offering to help with a Linux version.

From reading around the various threads, it seems like Java is used primarily for the GUI, with native libraries to do the heavy lifting of working with the audio media. That's an interesting approach -- not unlike how Neo Office uses Java to provide Mac OS X integration to -- and answers the question of how you write a Java Media application given the lousy state of the platform's multimedia support. The answer is: you don't. You use cross-platform Java to get you as far as you can, and use another solution for the rest. It might seem more natural for some to just do everything as a platform-specific binary, but this approach has allowed Levelator to work on Mac and Windows, and with the interest level in porting the native bits to Linux, that version can't be far off.

In a similar vein, Cooper sent me a link to Freetar Hero, an early-in-development open-source clone of the music-action game Guitar Hero. While the requirements specify Java 5.0, it's a Windows-only game at this point. Again, it looks like the author went as far as Java could go, and then went native after that. In a section on Mac/Linux support he (I'm assuming Antonie is a man?) writes "As far as I know, the libraries required ARE available for these platforms, but I have no way of trying them out. If you are a Java programmer that is familiar with these platforms, and are willing to help me find and link the required libraries, please don't hesitate to contact me." Until it's open-sourced, I guess we won't know what those libraries are, but again, it might just be a matter of a recompile.

Of course, with better Java media libraries, we wouldn't even need a JNI step. For example, it would be fairly straightforward for a Levelator-like application to access and manipulate raw audio samples with something like QuickTime for Java, though this is just a wrapper around the native QuickTime library and thus wouldn't help with Linux. Freetar needs not only audio playback but access to the guitar controller, which is presumably a PlayStation device connected to the PC via a PlayStation-to-USB adapter. Again, the official libraries don't get us far enough in Java -- the Java USB API (JSR 80) lacks meaningful cross-platform implementations, and JInput is a mixed bag at best (I can tell you from experience that JInput has broken Ant build scripts and is effectively a no-op on Mac OS X anyways). For my own game controller needs, Cooper has suggested I look at sdljava, a wrapper around the native Simple DirectMedia Layer (SDL) framework. I haven't had time to check it out yet, but since it provides low-level access to game controllers, maybe that's one option that could speed up Freetar's cross-platform develpoment.

Speaking of Java Media, how can we leave out the server side (that's what Java's all about, right?). In Java Today, notes the recently-posted IBM Web Service Streaming Engine, a multimedia streaming server that serves audio, video, images, and text over standards-based protocols such as RTSP. The engine is a plug-in for a web service host, and the download includes fully-configured versions of Apache Axis and Tomcat for Windows and Linux, which expose the streaming engine as a web service. The package also includes administrative and viewer "Web service client" Web pages and servlets that reside and run on the included Tomcat.

Save the date... the JXTA team is holding a JXTA Kitchen on November 2nd and 3rd in Santa Clara, CA. Events will include updates on the Sun JXTA team's latest activities, opportunities to meet and work with JXTA experts from around the world, and one-on-one time with JXTA team members. The first day will feature an all-day group event, track sessions, and a group dinner, while the second will be based around more sessions and one-on-one time with staff.

The wiseman project "is an implementation of the WS-Management specification for the Java SE platform. The project scope includes the WS-Management specification and its dependent specifications." Its first binary release, 0.5, "provides good coverage of the DMTF 1.0 Version of the WS Management specification. This release features a tutorial on creating and exposing resources starting from your schema though generating a Java web application. It also contains sample client and server applications."

David Van Couvering covers Tutorial days at ApacheCon in today's Weblogs. "The first two days of ApacheCon are over, and it's been a lot of fun so far. On Monday I gave a tutorial on embedding a database in a browser. Man, what I lot of work I put into that tutorial, but it was worth it - I learned a lot and I think so did the attendees."

Changshin Lee describes What I found during struggling for REST on GlassFish: "Maybe I need to post these issues to GF or JAX-WS projects, but would like to share first with this blog. I simply wanted to demonstrate a service exposed as both SOAP and REST."

Finally, John O'Conner calls for a Layout Manager Showdown: "Several UI power thinkers have agreed to present their arguments for their favorite layout manager. I'm announcing a Layout Manager Showdown, and you're invited."

In today's Forums,bmesserer seeks a more practical way to seal with glassfish JPA (Toplink Essentials) with large ResultSets: "I have the problem that I want to display a large ResultSet within a JTable - I already figured out I can 'paginate' it via Query.setFirstResult() and Query.setMaxResults(). I just don't understand why I can't configure glassfish-persistence/TopLink Essentials in a way so I can simply use a normal query ('select c from Customer c') and TopLink will instantiate JPA-entity objects 'on demand', say in pages of 100, why does it insist mapping the complete result into entities at once instead of only retrieving the objects I requested? Why do I need to implement pagination myself for such a simple case? - since this means putting an abstraction layer above JPA-Queries, first testing whether there are a lot of results via 'select COUNT()...' and then using either a 'normal' or paginated query. I think that it is quite common to display large resultsets in tables showing only the first X rows, isn't it?"

stitzl is trying to extend a Swing look-and-feel but otherwise maintain platform fidelity, a tall order, in Re: Synth PLAF: How to define a fallback Look and Feel? "Hi Scott, thanks for your concise reply which means, as I take it, that -- when using Synth -- it is impossible to slightly modify the look of existing applications that use the system L&F without reverse engineering that L&F first and reimplementing it as a Synth XML file. Sadly, as our application uses the Windows L&F (to "fit in"), simply extending the existing look and feel classes is out of question. Using the Multiplexing Look and Feel does not seem to be working either, as I need to override (and not only extend) certain look elements -- see my second post. Do you have other suggestions on how to modify an look of an existing L&F?"

In today's News Headlines :

Registered users can submit news items for the News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the News RSS feed.

Current and upcoming Java Events :


Frame By Frame Blog

Posted by kfarnham Oct 10, 2006

The many pieces of a video game

In its own way, game programming is like enterprise development, in that both are defined not by the programming techniques and API's used so much as what the final result is. Moreover, each of them is such a broad and deep endeavor, that significant work requires touching on many different programming concerns. Consider how Java EE involves persistence, business logic, management, messaging, handling XML, etc. Well, a game is similar in that the game developer needs to master 2D and 3D graphics, sound, GUI, input devices, in-game physics, possibly networking and concurrency... and generally with an extreme attention to performance. After all, most people don't sit with stopwatches to see how fast your webapp is, but lots of people turn on the frame-rate display of their favorite first-person shooter to see how fast their hardware is running the game.

Today's Feature Article, is not so much a "how to make a game in Java" article as it is a presentation of how the various pieces of one such project were put together. Evangelos Pournaras created a car racing game for his undergraduate thesis, using JOGL, JOAL, and java.nio. In Development of a 3D Multiplayer Racing Game, he describes how the pieces fit together, what he learned along the way, and what might come next.

JautOGL's technologies seem to make an interesting solution for games development. Although there is difficulty in object-oriented expression between Java and the procedural OpenGL and OpenAL, well written applications and deep knowledge of the technologies can overcome the difficulties. JautOGL can be improved and integrated.

linuxhippy praises JDK 6's performance and questions the accuracy and utility of benchmarks in Re: Java SE Out-of-Box Performance Comparision , featured in today's Forums. "I saw quite the same figures from every company creating their own JVM, with the difference that their particular JVM took the lead. Mustang/JDK6 is a great JVM and I really can recommend it since it provides quite good performance everywhere and has almost no weaknesses. It _scales_, performs good and is rock-solid. No other VM I came across is so highly tuned and optimized ... its just a beautiful piece of software However benchmarks like the above one ... well ... "

Reprising an all-too-familiar question, in_monuwould like to start developing a Swing Application and doesn't know where to begin: "I am a JavaEE developer and new to desktop java. I am looking to develop a small library management application using swing/jfc and looking for the best practice to develop desktop applications using java. Can some one please tell me the good desktop-framework to start with, or is there is any tutorial available for building a complete swing based application from scratch. Thanks in advance.."

In Java Today, ONJava writer Sunil Patel answers the question What is Java Content Repository? by looking at the JSR that supports it: "JSR-170 defines itself as 'a standard, implementation-independent way to access content bidirectionally on a granular level within a content repository.' He goes on to define a content repository as 'a high-level information management system that is a superset of traditional data repositories, [which] implements content services such as author-based versioning, full textual searching, fine-grained access control, content categorization, and content event monitoring.'"

Many printers use Printer Command Language (PCL) to communicate between the driver and the printer. The drawback of using PCL files is that they are packaged as preset files, meaning you are unable to simply open, edit and select individual pieces of a document to be printed. The PCL-Parser is an easy to use application that quickly parses large PCL files into separated pages allowing you to print specific pieces of a document.

Fuzz testing is a simple technique that can have a profound effect on your code quality. In the article Fuzz testing, Elliotte Rusty Harold shows what happens when he deliberately injects random bad data into an application to see what breaks. He also explains how to use defensive coding techniques such as checksums, XML data storage, and code verification to harden your programs against random data. He concludes with an exercise in thinking like a code cracker -- a crucial technique for defending your code.

Kelly O'Hair considers issues for Build Machines and Test Machines in today's Weblogs: "Just thought I'd touch on a subject that some people forget about when having to build products that will run on many different machines. Building and testing on a single machine is easy, building bits that need to run on dozens of different machines is the hard part."

In Languages Evolution: introduction of new keywords, Rémi Forax says: "When you want to add features to a language without breaking backward compatibility, a widespread idea that you can't add new keywords. I prefer advocating to change the way lexer works."

On a personal note, David Herron shares some Lessons in living from a quadrapalegic friend: "Recently my friend Ed Bennett died. I'd lost track of him, and it was interesting that I learned about his death because of a comment left for me on this blog. He and I had in the 1980's led an open source project which I've written about before. Over the weekend a memorial service was held for him, and I learned something which is intriguing me."

In today's News Headlines :

Registered users can submit news items for the News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the News RSS feed.

Current and upcoming Java Events :

Adventures in licensing

It's hard to keep track of all the projects on the site, but one way to catch up is to actually need to use one in my work. That happened the other day when I got a feature request to add some sort of a licensing scheme to a desktop application.

After looking at proprietary solutions, I decided to give True License Collection (TLC) a try. I can't give a final report on it, because I'm still in mid-implementation -- I'm able to generate license files from and to specific X500Principals, namely the company developing the application (the issuer) and the end-user (the consumer), but I'm still working through installing the license into the end-user's prefs (currently stuck on some sort of crypto exception).

Still, as you can see from the project javadoc, it's a pretty hefty API. Its idea of licenses is pretty flexible: you grant a license to some subject (which could be an application, a document or set of documents, a network connection, etc.) and can optionally set a maximum number of uses, expiration dates, etc. It also has a facility for creating "free trial period" licenses. Fortunately, it has multiple tutorials that help with navigating the complex API.

In short, a pretty attractive package, and Apache-licensed to boot. So since it's fresh on my mind, I've made it this week's Spotlightproject. If you have licensing needs, do take a look.

So, there's one project I've really dug into. Only 3273 to go.

In Java Today, Hans Muller has written a Java Developer's Journal article on Swing: Its Past, Present, and Future. "New software fashions tend to have a half-life of about 18 months. After that the books start to move to the discount bin, the conferences go quiet, and developers move on to the next big thing. Swing has not suffered that fate. As the software has stabilized and improved over the years, it has attracted a loyal and growing community of developers who've built tens of thousands of applications deployed to millions of users. No less of an authority that Evan's Data Corporation has reported that 'Java Swing with 47% use, has surpassed WinForms as the dominant GUI development toolkit.' Not bad for a (nearly) 10 year old."

The O'Reilly Radar notes the emergence of a "widgets" platform for Java ME in Mobile 2.0: Nokia launches WidSets: "Nokia today announced the release of WidSets, a mobile widget platform available for Java MIDP 2.0 phones, including of course non-Nokia phones. Put short, WidSets is for the mobile whatNetvibes is for the browser. I've played around with WidSets for an hour on both my SonyEricsson K750i as well as a more recent - and higher resolution - Nokia N80, and I must say that I am impressed. Even at the 176 x 220 pixels on the K750i navigation is a charm."

The ninety-seventh issue of the JavaTools Community Newsletter is online, featuring tool news from around the web, a welcome to new community projects, a news item on the release of version 1.0 of the Maven 2 XML Validation Plugin, and a Tool Tip on separating fact from fiction with the JavaPedia Java Misconceptions page.

Chet Haase wants to clear up some curiously popular micsonceptions in today's Weblogs. The fact-check is inJava on Vista: Yes, it Works: "Let's dispel some odd rumors of late: Java works great on Vista. But let's not stop there; let's also dive into some of the challenges that Vista presented for us to make Java work well."

Also on FUD-busting duty, Ethan Nicholas spells out What you should know about Secure Static Versioning: "Lately there has been some scary-sounding misinformation spread about Java's security. Read on for the truth."

And since Business Week seems to believe Sun is backpedaling on Java in favor of JavaScirpt, Greg Murray offers a look at Sun and Scripting: "Sun's path to embrace scripting including JavaScript has been a long one which started in 2003. There have been claims that we are reacting to the AJAX phenomenon I want to set the record straight on how Sun helped create the phenomenon and where we are going."

In today's Forums,kellyohair spells out the status of the JDK 6 and 7 projects in the thread Re: Just a bit confused about JDK 6 and JDK 7 progress.... As a JDK release finishes up (like JDK 6 or Mustang), there is a great deal of energy that still needs to go into finializing the product. JDK 6 is a pretty done deal as far as the engineering team goes, but it will take some time for us to get moving on JDK 7 (Dolphin) which isn't any where near a beta, not sure where you are seeing a JDK 7 beta 1. The JDK 7 at is just Build 1 or 2 of JDK 7. Also, with all the changes coming like changing the Source Code Management system we use, and the open source activity, we are a bit busy around here. I don't think there is any intention of having a Media blackout. Is there something in particular you want to hear about in JDK 7?


vorgi would like to know what's up with the Mac version of JDIC in Re: [JDIC] JDIC Browser Crashing in Mac when loading Applet: "This may sound utterly stupid, but where did you get the Mac OS Version of the JDIC? I searched everywhere and even tried to build the CVS files but everything I got was a blank panel and loads of error messages. Sorry to post it here, but this is the only trace of a Mac OS Version I found so far that is not from 2004."

In today's News Headlines :

Registered users can submit news items for the News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the News RSS feed.

Current and upcoming Java Events :

Registered users can submit event listings for the Events Page using our events submission form. All submissions go through an editorial review before being posted to the site.

Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of it will be archived along with other past issues in the Archive.

Adventures in licensing  

Angry about plagiarism and spam

I think we run some pretty good feature articles on, which is a tribute to the skill and expressiveness of the many writers that choose to work with us. A lot of the readers think we run good articles too, as they're often cross-posted with commentary on other sites.

And apparently, someone named Mohamed Elgazar liked Vikram Goyal's J2ME Tutorial, Part 1: Creating MIDlets so much, he chose to pass it off as his own work. Check out his blog -- after an initial post that reads "Hellow this is my 1st post to mu new blog", he proceeds to post the entire article in a series of blog posts, original figures and everything. In case it disappears by the time you read this, I grabbed a PDF (352 KB) of his page last week, so you can see this bit of plagiarism for yourself.

Vikram and I have both tried to contact the blogger and have not gotten a response, nor has he taken the article down. Maybe getting the phrase "Mohamed Elgazar is a plagiarist" into Google, as I'm doing by posting this blog, will help.

Mohamed, if you're reading this, you still owe Vikram an apology. We're waiting.

Of course, the shoe can fit the other foot. I recently had to offer an apology on behalf of a author for some plagiarism that slipped past us. In August, we received a complaint that a article had two paragraphs that appeared to have been plagiarized almost word-for-word from an Oracle Technology Network article. I conducted an investigation and contacted the author of the piece for an explanation. He never replied. So, we took down the article and apologized to Oracle on the author's behalf and for not catching it ourselves.

As if plagiarism isn't annoying enough, we have a few users who are spamming weblog talkbacks. Having to be registered slows down the spam attacks, but some people are still determined to screw things up for everyone else, I guess. Still, blog authors can delete spam posts from their blogs pretty easily, and when they forward spam reports to me or anyone else on the infrastructure team (Marla Parker or Helen Chen, for example), we will be happy to delete the offending user immediately, without warning or probation.

In Java Today, the 2006 JCP Elections have begun. From now until October 16, JCP members can vote on ratifyingnominees for both the Standard/Enterprise and the Micro Edition Executive Committees. Once ratification is concluded, the process moves on to a two-week open nominations period, followed by the two-week balloting period for the two executive committees.

The idea of the spring-annotation project is to enable the development of applications using the spring-framework with less XML, using annotations for the application code instead of XML. This approach allows spring-annotation to "keep all the behavior of a bean within itself, and free the developer from having to look in 3 or 4 different files to know what a class really does." Spring-annotation will run within any EE container, and the future versions will enable the use of the same EE 5 annotations without an EE 5 server.

The latest Core Java Tech Tips offer some Java 2D Trickery from Sun Engineer Chris Campbell. The first shows how to achieve soft clipping and eliminate jaggies by using an intermediate image and some AlphaComposite trickery. The second trick uses light and shadow to give a 3D appearance to otherwise flat shapes.

The JCP elections bring to mind the recently formation of the expert group JSR-306, which aims to update and reform the JCP itself. With this in mind, the latest Poll asks "Which proposed JCP change is most important to you?" Cast your vote on the front page, then visit the results page for current tallies and discussion.

David Van Couvering talks up a novel Derby demo in today's Weblogs. In Google Calendar Offline Talk and Demo, he writes: "OK, I didn't want to over-promise and under-deliver, but now that it's working, I thought I'd be a little more explicit about what I'm presenting and demonstrating at ApacheCon next week."

The JDBC ease-of-development improvements are going to miss Java SE 6, and Lance Andersen has the story in JDBC EoD API Deferred: "We will not be releasing the JDBC EoD API as part of Java SE 6. I do believe that the proposed features in the JDBC EoD API are useful and we will work toward including an improved version of the API in Java SE 7."

Pete Morgan takes on the critics in Java is on its way out? Not from where I'm standing!: "A bit of Java 'Flag Waving' from a guy that doesn't know a servlet from a glass fish."

In today's Forums,jebrie is looking for some advice for persisting BPEL / JBI long running processes: "I am looking into the BPEL / JBI integration in GF with the intent to implement some businessprocesses that are long running, i.e. wait days to receive messages. I tried a small process based on the SynchronousSampleApp (in NB EntPack) that calls a Webservice after a delay - which works fine except that running processes do not survive AppServer restarts. I did not find any information on if/how running processes are persisted so I would be grateful for a short explanation /pointers to relevant Documentation."

On the desktop side, Joshua Marinacci thinks about what the underlying platform can and can't be counted on to provide, in the thread Re: Is There A BalloonTip Component In Java?: "It's true that you need a full compositing window manager for translucency of child windows (as OS X) but it's coming for Vista and new versions of X. However, I don't this that transparent child windows is the problem we are trying to solve here. Swing apps can already make translucent and shaped internal frames and buttons/ labels/etc. The beauty of lightweight components is that we can already do whatever we want with Java2D. It's the shaped frames, not heavyweight internal components, that are the real concern right now for most app developers. I'd rather build something that works but doesn't cover every use case than wait for the perfect solution."

In today's News Headlines :

Registered users can submit news items for the News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the News RSS feed.

Current and upcoming Java Events :


My Ride's Here Blog

Posted by kfarnham Oct 5, 2006

Be your own Instant Messenger

So what about Jabber? While the companies with money (Microsoft, Yahoo, AOL) fall over themselves to lure users to their IM services, Jabber has lurked under the radar of many, pleasing its core audience of geeks with its openness, distributed nature, and security. It's telling that Google chose Jabber for the basic instant messaging functionality of its Google Talk product, rather than reinventing the wheel (granted, they did that, in a single-platform way, with their audio chat service, but I digress). Jabber has some nice advantages in that you can set up your own in-house server for a closed IM community within your company, or connect to the world at large.

It also doesn't hurt that the standard is open and well supported, meaning that you don't have to implement it yourself, because someone else probably already has. To wit, today's Feature Article,Instant Messaging in Java Made Easy: The Smack API looks at an open-source Java implementation of the Jabber protocol. As author John Ferguson Smart points out:

If you need to work with a Jabber IM service, the Smack API has a lot going for it. It is free and open source; the code is clean, simple, and readable; and the API is well documented. Its high-level classes let you code simple functions quickly and efficiently, without hiding the details if you need to get down to the nitty-gritty. And it's comprehensive coverage of the Jabber protocol mean that you will be able to do pretty much anything you want.

In Java Today, the Sun Research article Search Inside the Music looks into how "a research project at Sun Labs is exploring new methods of searching music by its acoustic content and context." This project run by researcher Paul Lamere "is aimed at helping people find and organize their music based on the properties of the music itself: lyrics, musical theme, melody, tempo, rhythm, and instrumentation." The project is run on Sun Grid. Lamere succinctly explains his use of Sun Grid in that, "a desktop system would take over six years to analyze a 2,000,000-song collection, whereas the same task on a 1000-node compute grid could be completed over a weekend."

The blog entry Transition Effects shows off what can be done with new features in the SwingX project. "A couple months ago I started playing around with the TimingFramework and Painters. Since there has been a little more discussion on the SwingLabs forum about Painters and animation, I checked in some code I had for TransitionEffects. TransitionEffects are just simple wrappers around Painters ImageEffects and the TimingFramework." This blog entry has the details, including code and a Web Start demo.

Just because Java Micro Edition lacks reflective capabilities doesn't mean Java Micro Edition developers miss out on the advantages of JUnit styled testing. According to the DevX articleJUnit Testing Using Java ME JUnit Frameworks, JUnit-styled frameworks and tools can still improve ME application quality.

In today's Forums,tjquinn's message Re: Inaccuracies in Glassfish EJB FAQ? discusses a tool to help diagnose problems with Windows and locked JAR files: "I built a simple but very useful tool that helps diagnose why JARs become locked. If you could download the tool and run it with your example that does not declare ejb-ref-type (that is, the example that does give the errors) that will give us valuable information to understand exactly what is happening in this case and address it. [The blog] Tool for Diagnosing Failed GlassFish Redeployments / Undeployments on Windows due to Locked JARs tells where to download the tool and how to use it. The instructions may seem long, but the tool is pretty easy to use and the description is long because I tried to make it really clear how to use it!"

stefanselariu could use some WSIT assistance in send principal to webservice: "I have a simple webservice (annotated POJO) in which I must take actions depending on the principal. I understand that in order to retrieve the principal I must use the WebServerContext.getUserPrincipal(). What I don't understand, and found no docs about it, is how to pass/create the user principal from a client application. Right now the client invokes the webservice with no authentifiation (I don't know how to do it), and the webservice returns null as the user principal. Has anyone some hints for me, or some useful links?"

Rémi Forax is thinking About iterative control abstraction in today's Weblogs: "Neal Gafter has posted another thought about a way to differentiate between synchronous and asynchronous closure. Neal proposes to use for to tag methods that take a synchronous closure as parameter and to call this new kind of method."

In Better GUIs are one step closer, John O'Conner recalls an important point: "Powerful tools don't solve problems on their own. They do require someone to use them skillfully."

Fabiano Cruz looks at automated bug detection tools in Java Static Analysis made easy with Apache Maven 2: "In this short article, I'm gonna present some tools to support the development process in the static analysis and bug detection field, showing how they fit together in the build process using Apache Maven 2."

In today's News Headlines :

Registered users can submit news items for the News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the News RSS feed.

Current and upcoming Java Events :

Popularity aside, why would you want to be like Ajax?

"All you guys care about anymore is Ajax." This is a comment I heard a couple times at JavaOne 2006, the "you guys" being a reference to O'Reilly. Realistically, of course, with so many people so interested in Ajax, a publisher like O'Reilly would naturally want to stay on top of it. But we may have passed from hype into craziness when people are asking Why Can't Java EE Be More AJAX -Like? This JDJ article is largely based on Brandon Werner's blog How to Save JEE, And It

Sign up for Swing extensibility

It's easy enough to mistake the idea of a Swing look-and-feel for a "skin" in customizable end-user applications like WinAmp. What's surprising is that this isn't a particularly apt metaphor. For one thing, L&F addresses issues that a "skin" might not care about, like the order of buttons in a dialog (which is totally different on the Mac and Windows). L&F's are large and fairly intense pieces of work whose scale and scope exceed those of skins.

That leaves open the idea of extending an L&F, not just cosmetically, but by adding some functionality that might be appropriate in a given context. This turns out to be hard because the L&F's weren't really built to be extended, leaving you with several bad options: subclass a component (at which point you're extending Swing, not the L&F), extend its UI delegate (which won't work across multiple L&F's), or do something crazy like hack the event queue.

Kirill Grouchnikov has been there, and in our Feature Article,Enhancing Swing Applications, he introduces a solution, in the form of the laf-widget project:

The laf-widgetproject aims to address the issues outlined above, providing a common layer that is used in third-party look-and-feel implementations that:

  • Allows the UI delegate implementation of the specific look-and-feel to get the list of all extensions (widgets) available for the specific component, and subsequently instantiate and register them.
  • Allows the extension writer to write the widget targeted at a specific component (such as context edit menu for the text components), without worrying about how it will be found and registered at runtime and without targeting a specific look-and-feel implementation.

The interfaces defined by laf-widget have already been implemented by several look and feels, so read along to learn how to bring new functionality to Swing at this level of the API.

In Java Today, the JavaPosse podcast has posted the final installment of Dick Wall's lengthy interview withComputeCyclesproject leader Van Simmons. In the interview, Van talks extensively about the goals and concepts and uses of Jini, the proposal to make it an Apache project, and low-level details like security, Jini's configuration language, JERI, and more. The interview has been split into three parts and released as JavaPosse podcasts #82, #84, and #86.

The JavaToolsincubated project NET2Java is "a new technology that helps you take an application written in Visual Basic or C# to the .NET platform, and translate it into a program written in Java source code." NET2Java translates .NET calls into corresponding Java calls, flagging calls it doesn't currently know how to translate. The process produces readable source code, preserving class names, method names and code comments.

A new SDK article takes an in-depth look at web services support in JDK 6. In Introducing JAX-WS 2.0 With the Java SE 6 Platform, Part 1, Robert Eckstein and Rajiv Mordani write "one of the most exciting new features of the Java Platform, Standard Edition 6 (Java SE 6) is support for the Java API for XML Web Services (JAX-WS), version 2.0. JAX-WS 2.0 is the center of a newly rearchitected API stack for web services, which also includes Java Architecture for XML Binding (JAXB) 2.0 and SOAP with Attachments API for Java (SAAJ) 1.3."

In today's Forums, Patrick Wright provides and update and jargon-check on Swing data-binding and data-buffering projects in Re: JSR 295 & DataBuffer status: "No idea about 295. DataBuffer hasn't had any big edits yet (tho Dave checked in a few things, I think). I split it off from DataBinding in order to allow it to keep developing on its own since DataBinding isn't being actively pursued anymore. DataBuffer is buildable, has tests, had demos written against it (which need to be dusted off), etc."

Joshua Marinacci considers cross-platform drawing concerns in Re: Is There A BalloonTip Component In Java? "This sounds great. Yes, definitely post a screenshot. How are you doing this? Using JNI to call the native method and JAWT to get a handle to the toplevel window/container handle? It would definitely need an isTranslucencySupported() method of some kind. I don't know if we should distinguish transparency and translucency at the API level. I suppose it depends on what the native platform supports. OSX and Vista should be no problem. I don't know about XP or earlier. And it seems that X is a crapshoot, depending on what the user has configured"


The upside of bad news

Cooper was seriously psyched when he finally got his SavaJe phone, which you might remember was that red phone hawked in some of the JavaOne 2006 keynotes because it had a much more substantial Java runtime on the phone than you find on most mobiles. Most phones, after all, don't have Swing. Or 3D, crypto, reflection, etc.

Unfortunately, I was scanning that site that has the blurbs about troubled companies -- you know the one with the obscene name, which I'm not going to link to it from the day job -- and they reported last week that "Rumor has it the VC funding fell through for SavaJe, and that all employees are now on forced vacation."


So, cue someone to write another "Java is doomed" blog. Or, if they have a little more depth, they'll write something like "first Java lost the desktop, and now they're losing mobile."

And then after that, we'll have the "why would ever have negative stories about Java" complaint too. Well, that one I can handle. There are a couple reasons I'll occasionally pick a story about Java not doing well. The first, frankly, is that we should all have a realistic understanding of how Java is doing in our field: it wins a lot of battles, but it loses some. Reality is what it is, and wishing otherwise won't make it so. A is A.

For example, sometimes you'll see developers decide not to use Java for their next project and blog about it. One of the Java Today stories on the page is from a developer who worked on Swing-based games for two years and, looking back, thinks he might choose Flash next time. Responding to blogs like this with a whole bunch of evangelism is not nearly as useful as understanding why some developers might choose not to use Java again. Maybe they've discovered genuine problems with the platform that should be addressed, maybe they're in a field that just isn't a strength or priority for Java right now, and maybe they're just plain wrong. But let's take the time to hear them out and decide for ourselves.

The other reason is to spur discussion amongst ourselves as Java developers. Frankly, many of those who would throw dirt on Java's grave reveal themselves to not know what they're talking about -- for example, taking the failure of applets as proof that enterprise Java is doomed -- and it's valuable in these cases to call out the nonsense for what it is. Fernando Lozano steps up in this case withThe real motives why industry analysts love to predict Java fall... and why they will spend another 10+ years being proven wrong.Replying to the commentary Java's Momentum Is Running Low, he writes "I wonder why, after so many years of failed predictions, the so-called 'industry experts' still insist that Java is doomed. My conclusion is that they are being mislead by parallels with technologies that are from both a marketing and from a technology point of view radically different from Java."

So what do you think? Do you see criticism of Java and immediately rush to pack your resume with wishful-thinking references to Ruby, Python, or .NET, do you flame the author, or do you take it in, think about it, and consider it on its merits or lack thereof?

Also in today's Weblogs, Rich Unger works a scary bug in debugging PermGen OutOfMemoryError problems in windows. "Recently, a bug showed up in my stack: 'java.lang.OutOfMemoryError: PermGen space'. I loathe these kinds of bugs. They're notoriously difficult to reproduce, and tough to isolate.Coincidentally, around that time Gregg Sporar posted about this very type of memory leak...

In Listening to the users part II - pixel pushing, Kirill Grouchnikov reports, "Romain's feedback following my previous entries was invaluable. See inside for details."

In Java Today, after a few years in the industry, Gojko Adzic sums up The Joys and Perils of Mass-Market Java Games: "From summer of 2004 to summer of 2006 I worked on an on-line casino with a Swing-based GUI. The project was a great development adventure -- filled both with incredible joy of creation and terrible agony of support. Here is a list of my positive and negative experiences from using Java/Swing for on-line games"

The ninety-sixth issue of the JavaTools Community Newsletter is online, featuring tool news from around the web, congratulating the Sorcerer and Jets3t projects on their graduation from the incubator, and offering a Tool Tip on redirecting issue tracker e-mails to another mailing list.

GELC Executive Director Barbara Kurshan asks GELC - Are we ready for the buzz?: "GELC has been getting a significant share of attention. It is really exciting to hear the conversations around the mission and vision for GELC. Check out the following events where GELC was discussed."

This week's Spotlightis on the Timing Framework project, a library to simplify Java animation and timing-based control. Introduced by the articles Timing is Everything and Time Again, it offers fundamental timing classes, interpolation facilities, and a set of trigger classes to facilitate starting and stopping animation based on events.

In today's Forums,malm has a JAXB question: Are client side objects thread safe? "I am using wsimport to generate client side code from WSDL and am wondering if the client side service and port objects are thread safe and can therefore be cached and used concurrently? I am especially interested in the port object as that seems to be very expensive to create. That is can I do private static MyPort port = new MyService().getMyPort(); and then use the port static variable concurrently?"

In Re: TransitionEffects, Romain Guy says that profiling your application when it starts up and depending on that performance for timing decisions is a bad idea. "It cannot work in this case because we would like the animations to degrade gracefully whenever the CPU gets busy (for instance another app kicks in and eats up many CPU cycles.) Games don't need to do that realtime, just at startup indeed."

In today's News Headlines :

Registered users can submit news items for the News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the News RSS feed.

Current and upcoming Java Events :

Registered users can submit event listings for the Events Page using our events submission form. All submissions go through an editorial review before being posted to the site.

Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of it will be archived along with other past issues in the Archive.

The upside of bad news  

Filter Blog

By date: