Skip navigation

Mayor of Simpleton Blog

Posted by kfarnham Aug 31, 2006

A keep-it-simple approach to managing transactions

The basics of the transaction problem -- the need for the steps of a transaction to either all succeed or to fail and make no changes -- are pretty well understood. What can be tricky is deciding now how to solve the problem, but where. One option is the bulky application server, which manages and coordinates transactions, as long as you code your applicaiton the way the appserver wants you to. Another is to use the Java Transcation API, but as authors Binildas C. A. and Sowmya Hubert point out, "if [...] you go for direct JTA API integration at the application code level, you don't need to pay for the additional server infrastructure, but you may end up with business logic mixed with infrastructure-level code."

In today's Feature Article, they offer a third way, combining the darlings of the "lightweight" enterprise Java world, Hibernate and Spring, with JOTM, the Java Open Transaction Manager. In JOTM Transactions In Spring And Hibernate, they consider the case of travel reservations involving separate systems for flights, hotels, and cars, and show a strategy that not only provides a lightweight approach to transactional integrity, but also is sufficiently component-based to allow each of the pieces to be used separately, e.g., to just make a car reservation.

Today's Forums, offer some significant contrarian views to two of the hottest recent topics: open sourcing Java and bringing closures to Java. In Re: Closures and Swing, Shai Almog argues for inner classes over closures: "Anonymous inner classes are a shorthand for class declarations, so they have very low impact... They have no ripple effect of complexity through the language since you don't have to add methods to support them or additional declarations. Closure usage is arguably simple but it introduces brand new constructs and concepts into the language that people have to understand... Closures hide some syntax from the user of the method while creating a unique syntax for the method implementer, it would require an overhaul of every API in Java to support this for advantages that are really trivial and unnecessary in most cases."

Meanwhile, weberjn asks if an open-source Java isn't just asking for a rival to fork the language, writing in Microsoft and a WFC killer app: "If Java were opensourced, Microsoft [would be] free to create a non-compatible Java (e.g. resurrect Windows Foundation Classes). None of the currently discussed licenses, not even the GPL, prohibits this. (And if Sun were to create a special license that would prohibit forking and creating non compatible versions, this wouldn't be a real open source license.) So, what if Microsoft put a swing-less, WFC-resurrected JVM into all Windows installations _and_ included some real killer apps written against this JVM? Then everybody would use the non-Sun-compatible MS JVM and nobody would bother to download the Sun JVM. With time even Eclipse would be written against this JVM. Imagine enough users complaining that Eclipse wouldn't run with the JVM on their machines."



Sacrificial Bonfire Blog

Posted by kfarnham Aug 30, 2006

Is stuff really going to be taken out of the JDK?

Nearly every proposal to add to the JDK gets poke-checked with a reply of "bloat" from some corner, which is probably appropriate to some degree. Everybody's copy of the JDK has bytes they don't use, which means more deadweight to download. It's just that each of us uses a different set of features, so your "bloat" might be my bread and butter.

But I think we're seeing the first instance of a serious intention to take something out of the JDK for everybody. Mark Reinhold talks up the proposal to do this in Removing features from the Java SE platform, in which he says "Perhaps the most significant recent change to the JSR 270 specification is the definition -- and first application -- of a policy for removing existing features." He goes on to discuss that while Java's history of only adding features has led to binary compatibility by not pulling the rug out from under an application when the JDK updates, it's a problem because "both the conceptual complexity of the platform and the size of minimal Java Runtime Environment (JRE) download bundles have, in turn, also grown monotonically."

The proposed removal process is targeted to large subsystems -- think packages, not classes -- and would turn no-longer-required features into optional components, meaning that a Java platform implementation could pass the TCK without containing the removed feature.

So who's toast first? Probably javax.sound.midi, which totes along a half-megabyte data file, and is thus a significant contributor to the size of JRE downloads while actually being used very infrequently in practice. Mark identifies CORBA support as another prime candidate for removal, but while unpopular, it appears to be fairly tightly coupled to the popular RMI-IIOP.

Mark closes by noting the Java Module System (JSR 277) proposal, which might make removals of stuff like CORBA easier, as it would allow removed packages to be downloaded, installed, and versioned fairly easily.

So what do you think? Personally, I'm the last one who'd cheer Java Media taking another step backwards, thoughjavax.sound.midi is admittedly a little-used white elephant, one with a pretty pathetic history -- despite having a API design that carefully managed the use of software synthesizers and external devices, it was years before the latter actually worked, and then only on Windows.

Maybe it is time to cut the fat from the Java platform, the API's that have either become obsolete or never worked out anyways. Or maybe that will lead to a compatibility nightmare of "yeah, you've got Java, but not all of it". What do you think? Is this the right idea, and the right approach? Maybe feature removal would be a good topic for discussion on the JDK forum.

Also in Java Today, a new version of the Sun Grid computeserverproject has been released and is available for download. With this release, developers can use standard Java logging APIs in their code, configure Java logging levels for both on-grid and debug execution from within NetBeans, and examine log output using a new log viewer, also within NetBeans. The UI has been improved through numerous enhancements, including the re-organization of some property sheets. A new Tree Search design pattern has been added to the documentation, and descriptive use-case examples have been added for most design patterns.

With its new, annotations-based framework, JUnit 4 has embraced some of the best features of TestNG, but does that mean it's rendered TestNG obsolete? In JUnit 4 vs. TestNG, Andrew Glover considers what's unique about each framework and reveals three high-level testing features you'll still find only in TestNG.

dimwight reconsiders the idea of Closures and Swing in today's Forums: "In a sense Patrick you are right, but I guess anyone visiting this forum will have a strong interest in the broader Swing issue of code clutter due to event listeners. Adding more syntactic sugar to Java in the form of closures is not going to resolve the deeper problem - that so much event handling code seems required to define useful functionality for a GUI."

Looking ahead at GlassFish development, jr158900seeks Feedback on proposed JDBC 4.0 support for GlassFish V2: "Please provide us comments/feedback on the proposed JDBC 4.0 support in JDBC-Resource Adapter for Glassfish V2. The document describing these features can be found at: JDBC-4.0-RA-OnePager.txt. Feedback/review period closes 2 weeks from today. Any comments received after that would not be considered for this release (GlassFish V2)"



Senses Working Overtime Blog

Posted by kfarnham Aug 29, 2006

Getting your mind into JSF

Legend has it that JSP was largely whipped up in one intense weekend of coding. I have no idea if this is true or not, but if so, it's only natural that some of those involved would have wanted to go back at some point and do it over, with a little more time and care. Clearly, JSF aspires to clean up some of the roughest edges of JSP.

Thing is, JSF is just different enough -- after all it's its own standard and not just a revision of JSP -- that you may have to get yourself into a different mindset to work with it. Bridging the two isn't always easy, as the struggle to unify their Expression Languages attests to.

Dr. Xinyu Liu takes on this issue in today's Feature Article,Developing applications with Facelets, JSF, and JSP. "This article introduces a rich list of useful tips to help developers smoothly transition from the old-fashioned JSP/servlet programming to the new JSF-style programming. It clarifies the issues and confusion developers may encounter, and promotes best practices and methodologies to simplify web development, improve code reuse, and make source code more designer-friendly, as well as easy-to-maintain."

David Herron reconsiders popoular awareness and understanding of Java in today's Weblogs, from the point of view of the convenience store employee who recognizes Java schwag and asks "Uh, is that the thing in my phone"? David writes: "If you're reading this you're probably a technologist, as am I. You know why Java is or is not important to you. You probably understand the pros and cons of it in great detail, and you can probably spec out the design of a device that uses Java to download and integrate new features on the fly. We are a small percentage of society."



Complicated Game Blog

Posted by kfarnham Aug 28, 2006

Could closures be generics all over again?

I was listening to the Java Posse this morning, and their choice of topics was interesting: they started with last week's white-hot back-and-forth over the idea of adding closures to the Java language in JDK 7, and then got into the much-linked weblog entryJava 5 Language changes were a bad idea.

Near the end of the latter discussion, they talked about what they thought were three typical stages of adoption of new language features, which go something like this:

  1. This is great!
  2. No, wait, this sucks!
  3. You know, this is pretty good after all.

Accurate? Maybe. I'm not sure if we had people changing their mind on generics and autoboxing so much as we had a lot of people not really paying attention to them until they were part of the language and everyone suddenly had to care. After all, even if you don't use generics, you might be responsible for someone else's code that does. And from this, we saw the backlash against some of these JDK 5 features, not just now in Shai's weblog, but last year in a number of places (for example, see last October 19th's Daily Editor's Blog Broken Hearts Are For...).

Yet the Posse say that by embracing generics, they've turned up a number of bugs that they might not have found otherwise. So they've moved on to the third stage of this progression.

Now, they didn't make this comparison explicit, but it's not hard at all to imagine being at step one of this process again, this time with closures. A lot of people (myself included) are excited about the potential to eliminate some ugly inner-class anti-patterns with the use of closures. The Posse also wondered aloud if the implicit state-save of a closure would then lead to support for continuations, which would be remarkable. But there are some already expressing a concern with the syntax of the Java closure proposal, and others asking if this is truly worth adding to the language, with the requisite increase in complexity of adding another programming metaphor.

Will we get closures in JDK 7? Will I be linking to bloggers who say that closures suck, only to then have everyone agree later that they're actually really useful and more than syntactic sugar?

The Java Todaysection kicks off with a new resource to foster understanding and discussion of the Java closures proposal. The wiki page Closures Syntax in Java 7 collects resources from around the web related to the new proposal to bring closures to the Java language in JDK 7. The page links to the original PDF proposal, blogs, and running discussions on the proposal, and also hosts its own "Discussion on Syntax" section for further debate over the specifics of the proposal.

The ninety-first issue of the JavaTools Community Newsletter is online, collecting tool-related news from around the web, welcoming two new projects to the community (Enuke and Source Code Mania), and featuring a tip of the hat to the Java Posse podcast.

Ed Burnette points out a surprising combination of projects inEoS - Eclipse on Swing: "In what has to be one of the most cleverly named projects of all time, EoS (named after Eos, the Greek goddess of the dawn) promises to bring Eclipse to Sun's Swing platform. EoS is the result of a collaboration between Dieter Krachtus and SWTSwing developer Chris Deckers. A download is available, but it's currently more a proof of concept than a usable system."

Back to the closures discussion Tom


This Time It's Real Blog

Posted by kfarnham Aug 25, 2006

Will closures finally make it into Java?

When I attended a session on Ruby at last year's ApacheCon, I came away not particuarly interested in Rails, but wildly jealous of Ruby's implementation of closures. Blame it on the desktop programmer in me, particularly all the times I've had to create one-off threads to get some action on to or off of the event-dispatch thread. The problem is when you need some inner thread to access a local variable. Consider the following scenario:

  String userInput = JOptionPane.showInputDialog (...);
  // let's say we need to do something with
  // userInput that takes a long time, like
  // looking up a network service or hitting a DB.
  // we'll thread the call so we don't block the GUI.
  Thread oneOffThread = new Thread() {
    public void run() {
      // do something with userInput
      // ...
      // make a SwingUtilities.invokeLater() call
      // to update GUI with results

To the casual reader, this seems just fine. The only problem is that it doesn't compile, because the Thread's run()method can't see the value of the local variableuserInput. The typical workaround is something of an ugly hack: declaring userInput to befinal. Of course, sometimes the variable can't be made final -- maybe you need to modify userInput before sending it to the thread -- so you have to create some other variable, a final that exists for the sole purpose of having userInput's value copied into it, making it visible to the Thread. Or make userInput an instance variable, even though it's only used in this method.

Can you say ugly? Heck, this is fugly.

This is a problem closures are well-suited to solve. Creating the thread inside a closure would give it access to all the local variables in the method, in their state at the exact moment the closure is created, with no need to create finals that exist only to expose the local values to the thread.

Interestingly, it's not like closures were just proposed last week out of a sudden bout of Ruby envy. In fact, Artima's Bill Venners has rounded up several previous calls to bring closures to Java. In Seeking the Joy in Java, he cites Bruce Tate, who called closures the number-one thing Java should steal from Ruby, and Gilad Bracha, who says he's been advocating closures in Java since 1997. In fact, Bill points out Patrick Naughton's The Long Strange Trip to Java, which recounts an "epic" argument in which Naughton and James Gosling battled with Bill Joy, who wanted closures in the Oak language, Java's predecessor, back in 1994.

With this topic on the minds of many, the latest Poll asks "Would you like JDK 7 to support closures?" Cast your vote on the front page, then visit the results page for current tallies and discussion.

Also in Java Today, according to a recent announcement, the NetBeans Mobility Pack has opened its code to the community. has detailed info about the Mobility Pack, including downloads of the latest builds, design documents, APIs, roadmaps and partner information. Further information is available in the news releaseSun Open Sources Java Mobile Edition Development Tool.

For those looking to get started with the JDK 6 sources, Ivan Tarasov has a step-by-step introduction in Try this at home: Building the JDK (on Debian). "One of my assignments here at Sun is to build the latest sources available at the Peabody site and provide some useful directions on how to do it. I use Debian Linux both at work and at home on my laptop, so I'll describe the building process on Debian. Probably some day I'll try to do it on another OS, say Windows or Mac OS X, when I get my hands on the computer with this OS installed. So, here we go..."

dgilbert argues that the GPL might be the best defense against bad forks of open-source Java. The Forum message Re: Copyleft, GPL, and Java says: "The GPL has worked well for Linux, and I think it can work well for the Java platform too. One of the nice features of the GPL is that it discourages 'bad' forking, because forks must be done out in the open (reducing the economic incentives of proprietary forks), and licensing barriers to recombining forked code are eliminated. Sun would have to make a lot of clarifying statements to allay people's GPL fears, but that's something they can handle. I'd be surprised if the GPL is not one of the top-ranked licences on Sun's list right now."

In Applet or Webstart...that is the question, mezmois dealing with a browser integration problem: "I've got a requirement to get Outlook Web access play nice with the rest of my portal. So, I've got a little button that pops up a window and loads owa and logs the user on. Well, a little problem popped up when the user logged out, its taking every browser session there is with it. So we work with M$ and they say that we have to force the other browser session into another process, that will take care of the problem. So I write a little applet that does a runtime.exec and that works least on my pc. So I look up the instructions on making it work in other browsers, including public average everyday computer users, and I'm seeing nightmare city! Import certificates and policy tools, OH MY!!! So, am I barking up the wrong tree trying to do this in an applet? Will a web start app work the same way, only just pop up a little dialog that will ask the user if its ok for me to run? Am I just wasting my time and I should just go find a friggin VB programmer to write an activeX to do this with? I'd really hate to have to do that."

Today's Weblogsalso touch on the question of closures in Java. In Closure and performance, Rémi


What Is Hip? Blog

Posted by kfarnham Aug 24, 2006

Iterating over successful habits

So how will you have your self-help: seven habits orsix pillars? Finding the common traits of success is a popular pursuit -- it's what patterns are all about after all.

In some ways this line of thinking is as old as philosophy itself: what do you believe, and how should you act in accordance with that? If you believe that software should be robust, stable, predictable, easy to understand, and easy to maintain, then you'll soon ask yourself, "OK, how exactly do I do that?" It's not enough to just want to write good software; you have to have a self-awareness of what practices do and don't result in good code.

Robert J. Miller has an answer in today's Feature Article. In fact, he has five answers, which he calls Five Habits of Highly Profitable Software Developers:

Following these five habits will help development teams create software that everyone on the team can read, understand, and modify. When software development teams create new value too quickly and without consideration for the future, they tend to create software with increasingly high implementation costs. Inevitably, bad practices will catch up to these teams when they have to revisit the software for future comprehension and modification. Adding new value to existing software can be very expensive if the software is difficult to comprehend. However, when development teams apply these best practices, they will provide new value at the lowest possible cost to their business team.

One thing you might notice about his list is that rather than being high-level meta-processes, his habits are specific strategies for the use of methods and constructors. That may be why the title doesn't claim that these are the five habits... perhaps there are others. Take a look at Robert's list and see if you agree and if you have some other ideas about strategies for creating consistent, maintainable code.

Topping off the Java Today section, we look a few weeks ahead to the annual Jini gathering. With the recent wiki-fication of the site, information for the 10th Jini Community Meeting is now collected as a wiki page. Those attending the Sept. 13-14 event in Brussels can use the page to learn more about the event, make plans, view schedules and session descriptions, and add themselves to the list of participants.

Will Java SE 7.0 have closures? In his blog entry Full Disclosure, Peter Ahé writes: " Some clever guys have written up a proposal on closures[PDF, 104KB] and been kind enough to put my name on it. I was just sitting in the room trying my best not to look too stupid." In a follow-up, Non-local return and lexical scope, he notes "i haven't seen any comments from people that understand closures saying they don't like them. So this makes you think if closures is just a matter of understanding them or not." ONJava blogger Dejan Bosanac also considers the proposal in Will we have closures in Java 1.7?

Shai's weblogis picking up links and commentary from around the Javasphere for arguing that Java 5 Language changes were a bad idea. "Don't get me wrong, I use Java 5 -- it is a great platform, but the language changes are a failure according to the criteria I care about and I think you should care about it too. Lets look at the features brought on by Java 5, with the exception of annotations none of them made Java any better and in fact made it more confusing with multiple syntaxes to accomplish the same thing"



So Very Hard to Go Blog

Posted by kfarnham Aug 23, 2006

Conference season kicks into high gear

I went through the events listings the other day, in order to update the template for the daily blog, and I was struck by how busy the next two months are in terms of Java conferences. With the Northern Hemisphere done with its summer vacations, it's time to get back to work and the events listing shows this. The first full week of September features bothEclipseWorld in Boston and NetBeans Day Seattle -- on the same day and on opposite coasts, ironically enough. Europe steps up the next week, with Norway's javaBin user group hosting JavaZone in Oslo, and the 10th Jini Community Meeting being held in Brussels.

Add in a number of other JUG-sponsored events, the perpetual No Fluff Just Stufftour, and some upstart Ajax gatherings, and you've got a busy couple of months before things cool for the December holidays.

It's remarkable that the Java conference scene is as lively as it is, considering that many large conferences and trade shows are disappearing, some of them obsoleted by the internet and online communities, others by outgrowing their usefulness. Consider that Comdex is now a thing of the past, and E3 is reverting to a low-key, insiders-only, corporate schmooze-fest.

So now, the trick is, how do you get to these events? Anecdotally, anyways, corporate travel budgets seem to be tightening, so it's not always easy to get a manager to sign off on plane tickets, hotel expenses, and a conference pass. Unless, of course, you're selling something, and if the potential buyers can't afford to attend, you're still stuck. With so much availble online, conferences will have to work harder and harder to provide a unique value that can't easily be duplicated. Curiously, a lot of these successful Java events are smaller, more focused events put on by user groups or smaller ad hoc communities. Do you think that's the secret of their resilience, or is there something else to it?

In Java Today, David Herron takes on the widely-repeated claim that taking an open-source Java implmeentation and forking it by adding non-JCP-approved classes couldn't then be called "Java". In Re: Irritation and Open Source Java, he says: "the purpose of the platform specification is so that an application can be taken to 'any' Java VM and run. The platform specification is a minimum set of features that are required. Features can be added to a JRE/JDK and still be compatible with the platform specification. But if features are removed from a JRE/JDK then it isn't conformant with the platform specification."

"In the web services world, REpresentational State Transfer (REST) is a key design idiom that embraces a stateless client-server architecture in which the web services are viewed as resources and can be identified by their URLs. Web service clients that want to use these resources access a particular representation by transferring application content using a small globally defined set of remote methods that describe the action to be performed on the resource." Sameer Tyagi's SDN article RESTful Web Services discusses when to use REST and how it's supported by JAX-WS.

Apache's JMeter performance-testing tool allows access via HTTP or FTP and supports extensive scripting features--highly appealing features for the web service developer. Dmitri Nevedrov takes a look at using JMeter in the dev2dev article Using JMeter to Performance Test Web Services. He writes, "JMeter is a flexible tool that not only allows you to test the HTTP servers but also to load-test Web services. A skilled developer can write his or her own scripts to simulate or customize the client requests or add a customized visualization of test results. Web service and SOAP samplers are new features of JMeter; hopefully they will evolve as Web services gets a wider acceptance in industry and among developers."

In today's Forums,kohsuke addresses complaints about JAX-WS' use of the JAXB reference implmentation in Re: Problem with New 2.0.1 M1 Release: "In the ideal world, a JAX-WS implementation should talk to a JAXB implementation only through the JCP-defined JAXB API. That would be nice for all the obvious reasons. However, in practice, there's a very high cost in defining a JCP API and maintaining compatibility forever after. So the reality often necessitates some private interactions, which is much cheaper to developm, maintain, and change. We do realize that such private interaction could potentially lead to a problem. One such ugly case would be for a newer version of the JAXB RI to stop working with the current version of the JAX-WS RI. This is ugly because someone might need the bug fix in the newer JAXB RI, yet the same person might also need to use the JAX-WS RI. We try hard to avoid this."

In Re: Derived Works: how much change info should the license require?, atripp examines the limits of licensing: "There's no way a license is going to force people to put meaningful 'change comments' in the code. Even the existing GPL requirement is pretty silly, arbitrary, and useless. So it requires me to say 'I changed this file on 1/1/2006'. That does no one any good. Just another GPL attempt to give the 'user' some 'freedom', at the expense of the original developer. I wouldn't worry about it. 

Lazy programming has Zarar Siddiqi angered at The shock of seeing your password in clear text in today's Weblogs. "A sick feeling encompasses my soul, a wretched sickness comes over me as I sit there staring at this violation of even the simplest of courtesies. I examine it closely and sure enough, it is there, in clear text mocking me, laughing at me, just as I had typed it - letter for letter, digit for digit."

John Reynolds has some Thoughts on "The Modular JRE" and Open Sourcing Java: "David Herron posted a clarification of what it means to be Java on his blog, and the examples that he used got me thinking..."

Finally, Kohsuke Kawaguchi goes over the Highlights of proposed JAXB 2.1 changes: "I posted an HTML document that go over some of the key proposed changes in JAXB 2.1 maintenance release."

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.

Late 2006 conference season kicks into high gear  

We Came to Play Blog

Posted by kfarnham Aug 22, 2006

Podcasting, mobile streaming, and more media

I think it's fair to say that media is not currently one of Java's strengths. I'm reminded of this by the fact that in another window, I have the Pandoramusic player running. This is a browser-based application that asks you to enter some artists or songs you like and then finds music it considers "similar" and builds a personalized music stream, right there in the web interface. This morning, it's dealing me an odder-than-usual mix (last five artists: Yoko Kanno, Heather Duby, Loudermilk, The Radar Bros., and Frank Zappa).

Maybe this application could done be an AWT/Swing applet with some sort of media API to handle the audio playback, but the HTML source reveals it to be Flash, specificallytuner_7_2_0_2_pandora.swf.

Sometimes when I see apps that could have been Java (or, in the case of the Windows-only manager app for the Sony Reader, should have been), I wonder if Java was considered and rejected for the implementation, or if it was simply not considered at all. Those are two dramatically different problems for Java Media to solve, and progress is impossible until the correct problem is determined.

Vikram Goyal has been giving the Mobile Media API a thorough going-over, writing an entire book on the topic: Pro Java ME MMAPI: Mobile Media API for Java Micro Edition. But sometimes, ambition gets the best of you, and you want to go farther than today's tools will take you. That's the case with today's Feature Article, Experiments in Streaming Content in Java ME, in which he tries to coax MMAPI to go beyond playing small files and instead support live streaming media. He writes that since publishing the book, this has been a hot topic:

I have been inundated with requests to help readers with streaming content via MMAPI for Java enabled mobile devices. This topic was an important omission from the book, but one that was simply not feasible to include because of the lack of support for it within various MMAPI implementations. In this article, I will show you the results of experiments I have conducted since the publication of the book to stream content via MMAPI using a custom datasource.

It's important to know before you memorize all the details that while MMAPI can handle a streaming DataSource, it's not currently able to play that media to the device. Instead, what Vikram has is the results of an experiment that shows how far MMAPI gets you today, what the devices and the API need to change to be able to play streaming media, and the steps that will get you there once they do.

David Herron also has media on the mind in in today's Weblogs. In Java posse #078 feedback / clarification, he responds to being misidentified as "The dude in charge of open sourcing Java", and proceeds to talk about Josh Marinacci's comment to the Posse that media formats don't matter for apps like YouTube and Google Video. David writes "video distribution is one of these issues where The Big Guys are trying to limit our choices. For example the Big Media companies don't want unprotected video widely available, because they earn their bucks over limiting the redistribution of video. For example Microsoft has for years been trying to steer Internet Video over to the Windows Media format, no doubt because it would increase sales of Windows systems."

Dru Devore digs deep into bytecode in Declare Variables Inside or Outside a Loop: "This blog walks through the byte code for different scenarios of putting variables inside and outside a loop. Describing what is happening from the byte code level and which method is better."

Finally, Tim Boudreau has some Continuation tooltips for JLists and JTrees: "A while back I wrote support for Outlook-style completion tooltips for JLists and JTrees for NetBeans' Explorer components - for cases where part of a tree cell is not visible in a JTree or JList without scrolling. It's not NB specific - you can use it in your own apps as well."

kirillcool looks at the challenges of Swing look-and-feel development in today's Forums. In Re: Alpha blended borders, he writes: "as far as Basic vs. Synth, you have to consider the availability of resources. You have about 5-6 open-source look-and-feels inheriting from Basic, and you have only one *and* close-sourced inheriting from Synth. Sun's strategy with Synth can be at best be described as strange - not a single good and *complete* tutorial on Synth, no visual tools to build a Synth-based LAF (Romain was working on that but it was never completed). So, for both short and long term, i'd advise going with Basic."

robogeek clears up the motivations behind dual-licensing in Re: Would more than one license be confusing?: "Dual-licensing is widely used .. e.g. MySQL is dual licensed. One thing it seems to allow is for a 3rd party to build a propriatary application based on the open source project. They would go to the "owner" of the open source project and do the licensing agreement for the closed version of the project in order to have the rights to redistribute a closed source application using the technology. e.g. someone bundling MySQL in a closed source application would to to the MySQL team for a license that lets them do so."

In Java Today, the JDK Community notes "the good folks at Java Posse have provided the full audio of the Java Open Source press conference," in Java Posse #077 - Special Open Source Java Update. You can click the "POD" link on the episode page to get the 23-minute MP3 directly, or subscribe to the show's RSS feed with your podcasting client of choice.

Issue 254 of the NetBeans Weekly Newsletter is out, with items on the updated NetBeans C/C++ Pack and Enterprise Pack, the release of NetBeans 6.0 Milestone 2, NetBeans in your language, a new article on building and deploying web services, the return of the NetBeans Podcast, WebFrameworkProvider and HyperlinkProvider, 10 Tips for Coding with NetBeans, NetBeans Plug-in: Janino Plugin, Tapestry support for NetBeans and more...

Apologies for the cliché, but it's clear that two paths diverge in the browser client woods, as Frank Sommers considers The Two Roads to Ajax: "Two distinct approaches to Ajax application development emerged in recent years, each extending previous architecture models. As the two seem incompatible, you will need to make a choice."

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.

Podcasting, mobile streaming, and more media  

Less B.S., more code

Tom Ball has an interesting blog today -- those of you behind filters may not be able to see it due to his brief and arguably appropriate use of a term meaning bovine excrement or statements meant to make listeners think well of the speaker, regardless of their truth or falsity -- and it's all about whether top Java minds should actually, you know, write Java code.

Depending on what kind of work experience you've had, you might find it remarkable that another side to this argument exists. If you work for scrappy little startups and adhere to an agile methodology, then chances are everybody you know writes code. Heck, the CEO and CTO might be writing code (they might even be the same person). On the other hand, in a big, established company with huge ornate projects that take years to finish (if they ever do), you might find it common practice to have some top-tier architects who hand down designs for the more junior staffers to go and implement.

It's this latter scneario that Tom considers in his blog Is Writing Code a Career Limiting Move?. He writes:

The top jobs these days are for "software architects", and architects aren't supposed to write code; instead they write specifications which us lowly programmers are to blindly follow. This was certainly true with the J2EE engineering team a couple of years ago, where the "spec lead" was not allowed to write any code; that was the job of the junior "implementation engineer" for that API. I got into a heated exchanged with one of their Distinguished Engineers over this issue, and of course arguing with DEs at Sun is yet another CLM!

So is the path to a better salary and nicer office to notwrite code at all? Check out the rest of Tom's blog and let us know what your experience tells you about advancing your career.

Also in today's Weblogs, Sun Chief Open Source Officer Simon Phipps collects his Thoughts on Open Sourcing Sun's Java Implementations: "I'm writing about open source and the Java platform over on my other blog - here are links in case you're interested."

Dominic Da Silva is Coming home to Struts (after life in the land of JSF) and in his latest blog he ansnwers the question "what's it like moving back to Struts after working with JSF for the past year?"

Simon Phipps, user webmink, also appears in the selections in today's Forums, adding an explanation on licensing policy in the thread Re: Flexibility (Licensing): "The Sun JDK has been licensed under a new license, the DLJ, specifically to overcome objections from Debian to the binary distribution license. While the source is not yet open, the binary can now at least be carried in the non-free repository which, while pedantically not a "part of Debian" as Dalibor explains, makes the Sun JDK available with simple and familiar commands to every Debian user who chooses to enable access to the non-free repository. On Ubuntu, it's become as simple as checking a box in Synaptic because of this."

zmonster is concerned about non-spec JAX-WS calls in Re: Problem with New 2.0.1 M1 Release: "I don't think that JAX-WS should be calling a method that is not present on the JAXB API. This makes JAX-WS incompatible with other implementations of JAXB. What if someone had their own JAXB implementation, or wanted to use a non-Sun solution? They would not be able to use JAX-WS without having to reference the jaxb jar included with JAX-WS, and that would cause all kinds of problems. Does anyone agree that JAX-WS should not reference non-standard JAXB API? I hope others agree because I would like to see a quick patch to JAX-WS that fixes the problem I outlined above."

This week's Spotlightis on partner Cenqua offers several helpful services in support of projects. If your source is hosted on, you can use the FishEye tool to get a web-based view of your code repository to analyze change sets, see diffs, search, and more. This feature works with both CVS- and Subversion-based repositories. Projects can also apply for a free license for Clover, a coprehensive code-coverage tool.

In Java Today, Evan Summers looks at the challenge of moving long-running calls in desktop applications off the AWT event-dispatch thread, in Swing and Roundabouts 1P: Epoxy DTs. "This is one approach to building some EDT-safe helper classes, which we can use from code running in SwingWorker background threads. We avoid the isEventDispatchThread() and invokeAndWait() boiler-plate code, using dynamic proxies."

Validation reports whether a document adheres to the rules specified by the schema. Different parsers and tools support different schema languages such as DTDs, the W3C XML Schema Language, RELAX NG, and Schematron. Java 5 adds a uniform validation Application Programming Interface (API) that can compare documents to schemas written in these and other languages. Elliotte Rusty Harold's article The Java XML Validation API looks at thejavax.xml.validation API and its uses.

Weiqi Gao says The First Thing I Would Do When I Get My Hands On Open Source Sun-Java will be "to kill the startup delay". "The Java start-up time is the number one ill of the whole Java phenomenon. This single fault killed the Java applet concept, and spawned the application server market: 'Hey, that Java thing starts so slowly, why don't we pre-start a Java process, and cramp all of our applications into that one instance.' It really is unforgivable that after ten years, we are still suffering from the slow-start-ness of Java."

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.

Less B.S., more code  

I Wish Blog

Posted by kfarnham Aug 18, 2006

What do you want from open-source Java?

Obviously, the big topic this week has been the concrete steps Sun has taken towards open-sourcing their JDK implementation. We now have a timeline -- javac and HotSpot this year, everything else by the end of 2007, oh, and CDC and CLDC too.

So, what are you going to do with it?

For a lot of people, that decision depends on what youcan do with it, under the terms of whatever license it eventually appears under. Obviously, there's a huge difference between releasing it under the GPL, which would require any derivatve products to also be GPL, versus something more permissive like the Apache license. If it's any hint as to Sun's eventual plans, both NetBeans and GlassFish (which is effectively the open-sourcing of Java EE 5), use CDDL.

This issue, of course, is the source of our latest Poll question, which asks "What license would you like Sun's open-source JDK to use?" Cast your vote on the front page, then check out the results page for results and discussion.

Having said, all that, it's still an open question just what people are going to do with an open-source Java. I used to think that the point of open-source anything was to "fix it or fork it", but the former's been possible for a long time as part of the JDK community here on, and the latter will surely be disallowed, at least if the fork is incompatible and wishes to use the Java name. And maybe even then it won't matter. As Bruno Souza has pointed out, Java is not one VM or one code-base, it's a standard goverened by the JCP, and any implementation of the standard is exactly that: an implementation of a standard. So maybe a "forked JVM" is as much a non-concept as any other software that declines or fails to implement a standard correctly, like a word processor that doesn't support OpenDocument or a music player that doesn't support MP3. Or maybe I'm wrong and we're headed for J# (90% pure Java, 10% meat by-products) all over again. What do you think?

In Java Today, Carla Mott updates the status of GlassFish in GlassFish V2 Milestone 1 available: " We are currently working on the V2 release which adds more enterprise level features. Today we promoted milestone 1 for the V2 release which contains JAXWS 2.0.1, clustering and many bug fixes. Check it out!" Also, in GlassFish V2, Transparency and Continuous Feedback, Eduardo Pelegri-Llopart notes the project's enhanced transparency: "you should have noticed the New Community Wiki that has all our plans and Milestone Roadmap. You may also have noticed a substantial increase in traffic in the DEV mailing list, including the recent messages from Dirhu, the GF V2 technical lead describing the public Review of New Features in GF V2 and Tracking New Features in GF V2."

The ninetieth issue of the JavaTools Community Newsletter is online, featuring tool news from around the web, announcements of two graduations from the incubator (UnitCover and Crawler), and a Tool Tip on how to find or fill a job with, via the JobsWiki.

Mark Reinhold's blog At Sixes and Sevens explains why the JDK 7 project (formerly "dolphin") is open before JDK 6 (formerly "mustang") is even out the door. "Now the world doesn't stop turning--and developers don't stop hacking--just because JDK 6 is in stabilization mode. Engineers both inside and outside of Sun are already working on fixes and features for JDK 7, so the question arises: Where should those changes go?"

Michael Nascimento Santos says he's been Bitten by the class literal change in Tiger, in today's Weblogs. "If you are not aware, the way expressions such as MyClass.class are handled by the compiler changed starting with Java 5. The collateral effects can cause working to code to fail in a hard to diagnose way, so read this entry for more info."

In The Big One, Joshua Marinacci offers the "first in a series of blogs about the new Java 6 improvements to the Windows Look and Feel (with pictures!)"

Finally Joerg Plewe explains Why I don't use Groovy: I just cannot. "Groovy is a cool language and I'd like to use it. But somehow it is very hard..."

In today's Forums,leouser wonders If Windows were allowed to be non-rectangular, should Components be as well? "I'm not sure if awt/swing will ever have non-rectangular windows, but if it did I was wondering how far it should go? Should the toplevels be the only target for trianglur, circular, ovalish, etc... shapes? Or should it be taken further, and allow odd shapped Components? I was reading about an X extension library a little while ago and it seemed to indicate that it allowd things like non-rectangular buttons and such. Which made me wonder how far can the non-rectangular go in Java?(and yes I understand you can create the appearance of non-rectangular components already but if it was baked in the cake it may just be easier)."

disciple285 argues that Java has fallen behind in a basic area, writing in Better String manipulation methods needed: "I have mentioned this once somewhere else... why is String class missing so many helpful methods. So that I have to import the jakarta commons stringUtils library?? This is so stupid, C# has methods in the string class lacking in Java. Java has essentials like substringBetween(vdvd,adsvfd) and others missing But then they have Regex expressions in string methods... but not simple methods to do things. My recommendation: put most of StringUtils into the string class and save developers from importing a library or being frustrated."

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.

What do you want from open-source Java?  

Higher Ground Blog

Posted by kfarnham Aug 17, 2006

Take time for an occasional high level look at your code

Do you ever sit down and look at your own code, or anyone else's? Code always looks so different on paper than it does in a text editor or an IDE, the desperation of copy-and-paste code, and too-busy methods with 60 or more characters of indentation becoming just that much more obvious.

Code reviews seem a little less popular in this test-happy era, but just because your code passes tests, does that mean it's well written? Horribly written, baffling code could pass its automated tests just fine... and yet be practically impossible to maintain or expand. A set of eyes on the code can keep a project on the rails.

Problem is, as Srivaths Sankaran points out:

Conducting a code review, however, can also be a costly proposition, due to the involvement (interruption) of several individuals and their loss of productivity. With the context switch and the cost to the project as a whole, code reviews can add a sizable lengthening of the project timeline. The purist may point to the benefits of identifying, diagnosing, and fixing problems early in the project lifecycle.

So when and how should you do a review? Sri's Feature Article,Code Reviews looks at the purpose and process of code reviews, and considers just how often you should do reviews and what you can hope to get out of them. Citing examples from published sources on software development and project management, this is a set of habits you might not initially be in a hurry to embrace, but that promises to improve the ultimate quality of your software.

In today's Weblogs. David Herron wonders whether Open sourcing leads to incompatible forks? "We have a lot of people reassuring us -- the market highly values the compatibility of Java, and that the market highly values compatibility even in the face of highly valuing the freedom granted by the OSI-compatible licenses."

In One Laptop Per Teacher, Evan Summers writes: "Barbara Kurshan's 'Philanthropy and GELC' got me to writing about my views on the wheres, whys and hows of computers in schools.

Finally, Mike Grogan offers WS-Reliable Messaging and Session Support (Part 2): "This is Part 2 in a series of articles on supporting sessions using WS-ReliableMessaging. In my talk at Java One, I showed a demo of a Web Service endpoint that needs Reliable Messaging to work properly."

In Java Today, the NetBeans Community is pleased to announce a release of NetBeans 6.0 (Dev version) Milestone 2. The new and noteworthy features include window system improvements that allow for full screen mode and floating windows, debugging improvements with method exit breakpoints and return values display, and integration of JMeter into the profiler.

Following Sun's announcements about their path to an open-source JDK, Harmonyproject leader Geir Magnusson has blogged extensively on the topic of Open Source Java. "Like Glassfish and OpenSolaris, Sun won't do it at once. Some Sun people think they can, but they can't. There has been 10 years of very fast, very competitive growth in that codebase, and I'm betting that Sun doesn't have a real clue what's in there." He follows up by noting the project renaming, and then suggesting that Sun could just join Harmony.

Joining the existing Java application frameworks, Qt Jambi brings Trolltech's Qt to Java . The developer blog entry Qt Jambi Preview Released spells out what's available in the preview: "What we have so far is most of the Qt core modules available, Core, Gui, OpenGL and Sql based on Qt 4.1.3. In addition to the Qt libraries we also have UIC for Java, called Juic so you can use Designer to design GUI's. We intend to base the final version on Qt 4.2 which means we;'ll have access to all the new things in Qt 4.2, such as the QGraphicsView."

The discussion of Sun's progress towards open-sourcing their JDK continus in today's Forums.aberrant starts out by dispelling concerns about Doomsday forking: "This just isn't going to be the case. While people could and probably will go and make some wacky J#GTK/QT$ version of the language it won't be Java. There has been no talk of freeing up the rights to the "Java" name. Anyone who is going to go threw the hassle of making a serious version is going to worry about compatibility. Anyone not making a serious version, well, why worry about that?"

In Re: Flexibility (Licensing), hubick describes the limitations of the CDDL and goes on to say "I think CDDL+GPL (w classpath exception, or LGPL) would give me most of what I want. CDDL+GPL+Apache might be good enough to not drive away Harmony folks and their customers, and thus make everyone happy. If you go GPL+Apache though, I don't know what CDDL offers in addition."

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.

Take time for an occasional high level look at your code  

The treachery of code names

Old Mustang Logo
This is not a Mustang

All you art school graduates who read the daily blog (yeah, both of you) and readers of Scott McCloud's Understanding Comics (hi, Josh) surely understand the reference to Magritte's The Treachery of Images. For everyone else, let me explain: Magritte's painting shows a photorealistic painting of a pipe, and under it, the phrase Ceci n'est pas une pipe, French for "This is not a pipe." The point is that it is not a pipe... it is an image of a pipe.

Accordingly, what you see above is not a "mustang" (specifically, a wild horse of the American West). It is a stylized drawing meant to evoke the idea of a mustang. More to the point for our purposes, "Mustang" is not the JDK6. It is a name for that release of the JDK.

Well, it was.

As Ray Gans explains in his blog, Mustang and Dolphin... we'll miss you, one of the side-effects of the move to open-source Java is the retiring of the previous code names "Mustang" and "Dolphin": "Yes, we must retire some old friends. Management says it's time to drop these code names and develop a new project naming system around our open source model. Better now than after Dolphin gets firmly entrenched -- and as for Mustang, well it's almost done anyway."

If you try to go to the mustang or dolphin projects, you'll find they already redirect to and, respectively.

Good idea, bad idea... does it matter? Some products do quite well with code names instead of version numbers -- recent and upcoming versions of Debian are more commonly (and more easily) thought of by their code nameswoody, sarge, and etch, than by versions 3.0, 3.1, and 4.0, respectively. And Apple's code names for the releases of Mac OS X -- Leopard, Tiger, and Panther -- are more commonly used than version numbers, even though the code names of the earlier versions (10.0 [Cheetah] and 10.1 [Puma]) were treated more like trade secrets. And what rolls off the tongue more easily: "Java EE 5 Open Source Reference Implementation", or GlassFish?

But this is all the treachery of names. It's not "Mustang', and it's not "JDK 6" either. Those are just linguistic pointers. What it is, is a really long run of bytes that does something specific when executed in a specific environment. Discuss amongst yourselves.

Also in Java Today, Artima's Bill Venners summarizes a conversation on distributed systems with Tangosol CEO Cameron Purdy in his blog entry Cameron Purdy on Dealing with Failure, saying "in his weblog, Cameron Purdy suggests that when a distributed system is designed as a multi-cellular organism rather than a collection of individual cells, an application need not deal with the potential for other servers to fail, but rather with its own potential for failure."

As announced on Deepak Gothe's blog entry Open Source Portlet Container on, "the Enterprise-class Portlet Container (i.e., Sun's implementation of JSR 168 spec) that is part of the Sun Java System Portal Server 7 has been open sourced. The open-source code artifacts of the Portlet Container from the Sun Portal's internal repository has been svn checked-in to" This new Enterprise-class Portlet Container Open Source Project features support for parallel render requests, a proprietary event scheme for inter-portlet communication, and integratability with identity management systems, behavior tracking and logging systems, and user profile systems.

Having seemingly not gotten the memo about the JDK 7 name change, Ed Burns makes The case for EL in Dolphin in today's Weblogs. "It is my hope, and the hope of several others, that the Java EE Unified EL will be moved into the core JDK in the Dolphin timeframe."

In a tutorial blog, Masoud Kalali shows you how to Develop a web application with NetBeans, Seam and GlassFish: "In this entry you will see how easily you can develop application based on Seam and jsf with netbeans. indeed i show you steps you need to follow to develop registration application with seam and netbeans."

Is the End of Tiered-Based Computing in Sight? John Reynolds thinks it might be. "Perhaps the most widely adopted component of software architecture is the N-Tier architecture... the separation of concerns based on stacked tiers of functionality. Is the emergence of Grids and Service-Oriented Architecture going to change the way most software architects approach their designs?"

With Sun's announcements this week about its approach and time table for open-sourcing its JDK implementation, it has kicked off a new Jive forum for discussing the process, which we feature in today's Forums.tmarble kicks things off in Welcome to the Open Source JDK Forum!: "We are pleased today to announce the primary website for discussing plans for open sourcing the JDK at As a first step to soliciting community feedback we are opening this forum and look forward to your feedback on such topics as: - The choice of license - The governance model - Operations issues: the bug tracking software (BTS), the version control software (VCS), etc. - The Java brand - Compatibility."

The discussions are already off and running, andchris_gray asks What about the specs, TCK, etc.?: "For me it should be a BSD- or MIT-style license; that's always best for a Reference Implementation (thinks TCP/IP or JPEG). But for me the code is not the real issue; it's the specs. Particularly in areas such as embedded and real-time we are confronted with specifications we we are free to download and read for purposes of 'evaluation', but not if we intend to implement them. Will this policy continue even after the RI of (say) JavaME CDC/FP is open source? And will the licensing terms for the TCK still involve royalties on every copy of the implementationn tested?"

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 treachery of code names  

A Java-based content management system

Certain applications are so ubiquitous they're easy to miss. Content Management Systems might be an example of this. Years ago when I was job searching, I found a lot of companies seeking developers with a mixed set of back-end and client-facing skills to build these kinds of systems. We're also having an internal discussion at O'Reilly about what we need in such systems for our own online publishing. Personally, I'll be happy when I get something that doesn't get tripped up over things that look like tags but aren't (as in Java Generics in forum posts, which messes up an internal RSS feed that I use). But I digress.

David Karam's been working on the problem of CMS for quite some time. In 1997, he was asked to develop a system for the California College of the Arts:

I decided on a project to develop a rudimentary content management system (CMS). It was written in Perl and used flat text files for storage. The primary user interface listed directory-grouped "pages." The rich text editor was developed using Shockwave Director. While the user interface was not terribly elegant, this system was very useful to the college. Many years later, we designed new templates for the site. CCA was still using the same Perl-based system.

In the meantime, I had transitioned fully to server-side Java. "Current CMS" became the focus of my work.

Almost nine years later, I have finally arrived at something that is worth sharing.

It's 2006, and the fruits of all this effort are now an open-source project here on David has an introduction to this system in today's In our Feature Article, Current CMS, he shows how to configure and use this system, and introduces its API and taglib. Along the way, he also shows where Current CMS is a work in progress, and could use some help from others with an interest in CMS to fill the gaps.

Sun's promise to open source Java at JavaOne left a lot of questions, and some of their plans are starting to come together. We've highlighted the most recent batch of announcements in the Java Today section, starting with the unveiling of a new Open Sourcing the JDK page for updates and discussion. A article summarizes a Sun press event about the ongoing effort, including the announcements that some components, including javac and HotSpot, will be open-sourced this year. Mark Reinhold's blog Yes, we really are going to open-source the JDK adds other interesting points, such as the Java ME CDC and CLDC platforms going open-source as well. Finally, Danny Coward's Open Source: Cutting the Java SE apron strings provides a historical context, and wonders aloud which pieces of the JDK will be open sourced first.

A recent DeveloperWorks article gives Seven simple reasons to use AppFuse: "AppFuse removes the pain of integrating open source projects. It also makes testing a first-class citizen, allows you to generate your entire UI from database tables, and supports Web services with XFire. Furthermore, AppFuse's community is healthy and happy -- and one of the few places where users of different Web frameworks actually get along."

Enterprise JavaBeans 3.0 is a substantial change from the earlier specifications in terms of both the change in enterprise bean implementation models and in the bean location and call paradigm. How can you migrate legacy EJB code to utilize improvements in the new specification? The article Migrating EJB 2.x applications to EJB 3.0 discusses the strategies, both from a design and implementation perspective, for migrating existing EJB applications to the new specification.

In today's Forums,pattyd19 would like to Programatically register mbean's: "I have servlet which contains a series of objects that represent "hardware systems", which I would like to instrument for JMX access while the app is runnning. Basically I want to register MBeans on the init of the servlet to the GF backend MBeanServer, if possible so I can inspect/modify my mbean in the JConsole. I don't know the "harware systems" name that a specific servlet will host until the init method runs, so I can't configure this manually is a config file. Is this possible?"

Meanwhile, in the Swing and AWT forums, leouserwonders Why couldn't there be a DragSourceMouseButtonListener? "It seems that the problem for these folks is that they don't want to do a data transfer until there is an actual drop. From observing the way the mechanism works on X11 it appears that for each Window entered the Transferable is queried for the transfer data and apparently converted to a form that can be stashed(like a byte array) in the Window. This appears to follow the XDND protocol (assuming the info is right here)"

Put on your headphones; Gregg Sporar is On The Air, as he explains in today's Weblogs. "It started out very innocently.... I just did some Flash demos - nothing fancy. But now Roumen has convinced me to take the next step - I am on his podcast!"

Kohsuke Kawaguchi has an update on the JAXB 2.1 maintenance review: "I've started working on the JAXB 2.1 maintenance review (I took over the spec work from Sekhar.) I'm still trying to get up to speed with the process and all, and I hate the UI of FrameMaker, but in the mean time, I posted all change proposals at"

In When you (and actually I) want to develop a Java application on a Windows PDA, Changshin Lee writes: "I have to admit that this combination, Windows PDA and Java ME, isn't that easy to approach in terms of both quality and quantity."

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.

A Java-based content management system  

Sir Duke Blog

Posted by kfarnham Aug 14, 2006

You can use the Duke logo, actually

While there's a little fear and loathing about legions of lawyers driving up to your house if you put the word "Java" in your product name -- see the feedback on Stupid Questions 12: What's in a Name -- it turns out you can use the Duke logo on your site or project. This was news to me when it came through the e-mail a few weeks ago, and got lost in the shuffle of article proposals and blog requests, so I wanted to point it out today.

Start by checking out, which hosts the Sun Developer Network's presence on Scan down the left column and you'll find the link Get the Duke Logo, which comes with straightforward and largely non-scary guidelines on use, which really amount to a few simple points: use it in relation to Java developer community or JCP affiliation or activity, don't modify the artwork, don't make it smaller than 85 pixels / 4.5 picas / 0.75 inches.

Granted, you might want to alter the logo to suit your project or product, but it's easy to imagine where allowing that could go wrong. And this really is a pretty lightweight process compared to the legalese of a few companies I could name (or just link to).

In Java Today, Enrique Lara offers a thorough introduction to Portlets in his article JSR-168 -- The Portlet Specification. "This article will focus on the Portlet side of things, by showing how to create a simple Portlet and deploying that into a Portal. We will then refactor and extend the Portlet to see how some of the patterns of Servlet development might be used. Along the way we will exercise different aspects of the API available to a JSR-168 Portlet developer."

Author Kev Jackson says antlibs are the best feature of the new Ant 1.7. "These are a better way for Java developers to create and distribute custom Ant tasks, types, and macros, and a much better way for the Ant developers to distribute the optional tasks included with the Ant distribution." In his overview article, Ant 1.7: Using Antlibs, he covers how to install and use antlibs for your build, and how to develop your own antlibs for custom tasks that you want to share with others.

Java SE 5.0 update 8 is available for download. Osvaldo Pinali Doederlein looks deep into its HotSpot-related changes in his blog Java SE 5.0 Update 8's cool performance fixes. A complete list of changes in this release is available in the release notes.

This week's Spotlightis on the SDN's latest week-long Ask the Experts online session, which focuses on JavaServer Faces, the poular technology for simplifying building user interfaces for server-side Java applications. If you have a question about JSF, stop by to get answers from Ed Burns and Roger Kitain, the co-leads of the JavaServer Faces 1.2 Specification (the version of JavaServer Faces technology in Java EE 5).

SwingX is refactoring again, as reported in today's Forums. Details are in the message DataBuffer: Quick Status Report which says: "as some of you have already noted, the DataSet API has been migrated to the DataBuffer project on DataBuffer is a SwingLabs sub-project, released under the GNU LGPL. As a SwingLabs project, you must have signed & submitted a copy of the Joint Copyright Agreement to be a contributor. The code in DataBuffer was extracted from the dataset_work branch on the DataBinding project. The consensus is that that should be the most recent stable work."

jeremygwa is wondering about using simple io to communicate between java and non-java applications: "I need to get java to talk to another application. I am considering using the basic stdin/stdout pipes and setting a non java app (win32) as a subprocess to a java app, therefore it would communicate with simple io. My question is, what are the pros and cons of this setup. when would such a setup fail or not be appropriate, in which I would have to resort to using network sockets (webservices etc)?, or having to communicate by disk file?"

Sun Microsystems, Inc. invites you to take this one-page survey for developers. Name and email are not required, unless you want to participate in the random drawing to win a six-month subscription to the Safari Bookshelf.

Santiago Pericas-Geertsen checks in with a discussion of Conditional Processing in Japex in today's Weblogs: "It has been a while since my last blog about Japex. I'm currently working on a couple of improvements: the first involves cleaning up and simplifying the Japex trend reporting tool (but more on this on a later installment) and the second is about conditional processing in configuration files, the topic I would like to talk about today."

In Intelligent != Diligent, Kohsuke Kawaguchi blogs about "Edit distance computation, or how the CS undergraduate education is sometimes actually useful. "

Finally, Satya Komatineni shares some Reflections on the importance of HTML prototyping for IT: "HTML prototypes can play a much more significant role in IT. They can aid faster development times. They can secure budgets. They can encourage good architecture. They can directly lead to a number of development artifacts such as data models, and business services. I think prototypes offer another important aspect to the modern development process along with the Extreme Programming and RUP."

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 can use the Duke logo, actually  

Tonight We Ride Blog

Posted by kfarnham Aug 11, 2006

How far does Java ME get you?

So, I discovered that I'm now using my mobile phone enough to move from a pre-paid plan to a regular subscription, and while I was doing so, I tacked on the data service for five dollars a month to see what I could do with it.

Mostly, of course, I've been pulling down MIDI files to assign to various callers -- my wife gets Dave Brubeck's Blue Rondo A La Turk [MIDI, 52 KB], which was the first dance at our wedding, while random and potentially hostile callers get battle music from Final Fantasy VII [MIDI, 32 KB].

But I did remember a while back when Google rolled out Google Maps as a Java ME application, Google Maps Mobile, and I got excited. "Hey! Useful Java ME application! I should go check this out!"

Well, after trying all morning, I can't say I've gotten it to work. The page identified my Motorola V300 and the jar downloaded and installed (albeit with a warning about potentially limited functionality), but it can't seem to load the terms and conditions, which might mean that it has no network access, which kind of makes the whole exercise pointless.

So, my whole enthusiasm about ME from two paragraphs ago? Back in the "good ideas gone wrong" drawer. Thanks for playing.

Curiously, it was before this whole misadventure that I posted the new Poll question, which asks "Have you ever used a Java ME app that wasn't a game?" Cast your vote on the front page, and then visit the results page for results and discussion.

In Java Today, Peter Ahé's blog HotSpot and other compilers considers the relationship of HotSpot and javac-generated code: "In a comment on a previous blog entry, Damon Hart-Davis asked if HotSpot is better with classes generated by javac and if it is true that some static transformations (optimization or obfuscation) can impact the performance of your application? The short answer is that HotSpot is not targeted to javac code but some static transformation can adversely affect the performance of your application. I'll give some more details below."

The eighty-ninth issue of the JavaTools Community Newsletter is online, featuring tool news from around the web, announcements of Simple Log's version 2.0 release and the AdvanceNative2ASCIITool project's graduation from the Tools Community incubator, and a Tool Tip on adding new roles to your project.

Calvin Austin looks at Java's would-be rival in C#: Is the Party Over? "Given that C# hasn't necessarily been the instant success that many thought it would have been, it hasn't been for lack of trying. The MSDN site has adopted many of the best practices used on other developer Web sites. [...] While C# has gained some traction in those years, why didn't it make the grade?"

In today's Forums, anilp1 wants to know Can my application know the location of the jnlp file that launched it? "Or, is there some workaround that will allow relative references? I have a folder on the client desktop that contains some data files and the jnlp file. The folder is not on the webserver, though the jars were originally downloaded from there When the user clicks on it, it launches the application, and passes in the tag, the relative path of the datafile. for example, ../mydata1.txt. Passing in the relative path is good because (like html), the folder can be moved to another location or emailed, and the application still work. Does anyone know how to do this?"

leouser is thinking about the Swing Application Framework in Re: JSR 296? "That does look interesting, Im hoping that the developer isn't 'stuck' having to use the whole framework to get benefits out of it. If I write a 300 line miniprogram Id probably like to skip subclassing Application and just use some of the annotations (Of course I haven't seen how many annotations there are or what they do, but the idea seems attractive). I'm going to guess that the blocking dialog is an option to use, being able to use the wait cursor would be a good alternative."

In today's Weblogs. Arun Gupta talks up wsmonitor (Web Services Monitor): A light-weight SOAP and HTTP Traffic Monitoring tool: "This tool, wsmonitor, is a light-weight, easy to use SOAP and HTTP traffic monitoring tool. This tool uses port forwarding to capture the SOAP messages and HTTP headers between a sender and a receiver and displays them nicely formatted in a graphical user interface."

Marina Sum points to Interesting Interviews with Sun's Tim Bray and Radia Perlman: "The World Wide Web just turned 15 years old! Two articles quote Sun's Tim Bray and Radia Perlman on the Web's past and future, also P2P."

Finally, Richard Bair offers a Varargs Puzzler: "This probably isn't up to Click 'n' Clack's standards, but here's a fun little Java 5 puzzler for a Thursday afternoon."

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.




How far does Java ME get you?


Looking at the Sun Blog

Posted by kfarnham Aug 10, 2006

Policy points for a hot Thursday

Maybe it's that massive incandescent ball of gas 90 million miles away (150 million km)... you know, the one that's making it so hot in the Northern Hemisphere lately... but I guess I have a little bit of Sun on the brain today. Either that, or there's a remarkable coincidence of the prominent items that were available to feature in the various sections of the front page.

Let's start with the Feature Article, the latest in our collection of not-so-stupid questions. This installment, (Not So) Stupid Questions 12: What's in a Name, asks "Can I use the 'Java' name in an open-source project?"

As I write up this daily blog, there's already been a response from user peterbecker, who writes:

As far as I understand, using the word "Java" in your product name is forbidden. IANAL, but that's how I read this document, esp. the part about re-logoing.

If Peter's right, that's pretty interesting considering the various products that use some variant of "Java Edition", such asBerkeley DB, Java Edition and Oracle Application Server 10g, Java Edition, etc., along with products that tack on a "for Java", like the GNU Compiler for the Java Programming Language (GCJ), or QuickTime for Java.

Gas up the lawyers, Marge, we're goin' fishin'!

Next, over in Java Today, Sun's Tim Bray offers his take on the new Terms of Use: "Sometimes we make progress. Way last year, I got email from Norbert Lindenberg, grousing about the Terms of Use on; they were full of scary language about how you and your employer had to indemnify Sun and 'its business partners' against anything bad that might happen with any connection to anything you did, and about how you were signing up for the similarly-scary terms of use. So I went poking around and asked the people why they sounded unfriendly, and they said, 'Hmm, let's talk to the lawyers', who said, more or less, 'If there are good business reasons to relax this a little, well OK then.'"

Robert Stephenson points out former Sun CEO Scott McNealy's interest in education and the Global Education and Learning Community in his blog Scott McNealy discusses the GELC: "McNealy, who recently stepped down after 22 years as Sun's CEO, developed an intense interest in improving education as he watched his own children go through school. He has been the driving force behind Sun's support and promotion of the GELC, and is expected to formally assume the role of GELC CEO sometime soon."

Matt Stephens updates the progress of the hardware-accelerated OpenGL Java2D pipeline in Mustang/ATI Graphics Freeze-Fest: "Mustang (the groovy codename for the upcoming Java 6) is looking more and more promising on the desktop. Sun has wisely opened up its development process - at least, to the extent that we can suffer the blog rollings of the increasingly excited programmers who are, as we speak, busily wrapping up Mustang ready for its fall 2006 release..."

James Gosling checks in with his first blog in a long while, as part of today's Weblogs. He's taking a look at the process of starting up a project, and notes Sun's analogy of overambitious projects as being like Boiling oceans. "For the last couple of months I've been involved with stuff at work that didn't make good blog material. I've done a lot of helping out on project reviews and kibbitzing on planning. At this point in the process, where we've got a pretty clear picture of the shape and direction of things, I'm pretty happy with how it's all turned out. A tough process, but an important one to go through."

David Herron reflects on Guido Van Rossum's recent comments about python and its community, and teases out some lessons in his blog Open source project beginnings: "It's the community aspect that's most appealing about open source projects. An open source project is often secondarily about the technology, and often mostly about the community that's built to handle the technology. I think it comes from the origins of the Python project and how it began. And it's interesting to contrast that sort of beginning with how Java SE is going to move into being open source."

Sergey Malenkov continues on the topic of How to encode Type-Safe Enums: "This is a sequel of my first article about Enums encoding. As you may know, Type-Safe Enums were proposed by Joshua Bloch in Effective Java, but they are not supported by XMLEncoder. This article describes how to encode them into XML properly."

In today's Forums,kohsuke points out an intriguing "gotcha" in Re: XML Schema parsing failure: "This is a very famous "feature" in the JAXP RI (or Xerces.) If your schema contains <xs:import> or <xs:includet> and if it fails to resolve -- whether because of network issue, proxy not set up, or some typo in the referenced document -- it simply ignores that error, without telling you anything! But since the declarations that are supposed to be in those files are not defined, you'll end up getting errors like "can't find xml:lang". A bug has been filed against the JAXP RI, so I hope we'll be able to fix it soon. I filed a similar bug against Xerces, but they refused to fix the bug, AFAIK. In the mean time, the workaround is to use the "-nv" option in XJC, which bypasses the JAXP RI completely."

Meanwhile, Patrick Wright points out a database gotcha of interest to databinding desktop developers in Re: DataBuffer's TableCommand fails with PostgreSQL schemas?"There are real differences in what databases allow, in particular what characters are allowed in column and table names. Some allow spaces (if quoted), some do not, etc. I've never made a list and haven't worked with them all myself. I'd say we have a decent base class and make it easy to extend and override if the DB is picky about some little iggly-piggly syntax issue. This problem came up before, one of the TODOs is to create a test suite we can run against a number of databases to find these sorts of problems."

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.

Policy points for a hot Thursday  

I Wanted to Tell You Blog

Posted by kfarnham Aug 9, 2006

Thinking out loud about article development

A couple of authors have me rethinking the process for doing the feature articles here on Let me tell you how it works now:

  1. The author sends in a proposal for an article. My guidelines for this are to send a simple e-mail of 5-10 lines that establish: 
    1. What the article is about
    2. Why it matters
    3. What specific things will be covered in a 2,000-word article that deliver on points 1 and 2
  2. If the proposal is good, I'll set up the author with our writer's guidelines, which describe our "do's" and "don'ts" (how to format code examples, how to cite figures, why you should almost never use the word "relatively", etc.).
  3. The author sends in a first draft.
  4. I edit the draft and (usually) send it back for some changes. Sometimes articles are ready to publish after a first edit, but usually not.
  5. Repeat steps 3 and 4 until a final draft is ready
  6. Load the draft into our publishing system. From here, our producer (hi Craig!) formats the article to add things like the images, page breaks, and table of contents, and ties into automated stuff like the link to the author's bio.
  7. A copy-editor (hi Jamie and Jill!) sweeps over the language and makes sure everything's grammatical.
  8. I click a button to publish the article, and do a few more steps to get it on the front page

This ends up being a very mail-intensive progress, with only as much structure as I am able to consciously enforce myself. For example, the screenshot below is a look at my "Editing" folder, with one folder for each (or ONJava... I edit both sites, though most of this is article. I've blurred the names of authors and articles for purposes of privacy and novelty.


Yes, I do have a lot of articles to work on right now! The orange labels on some of these folders means the article has been sent out for rewrites and has not returned. Clear means completely untouched (by me), yellow means "rewrite returned; needs re-edit", red means "waiting on author for something", and green means "ready to publish". Inside each of these folders, I keep a history of all the various drafts, from the first I received to the "final" that gets uploaded to, as folders named "edit 1", "edit 2", etc. Odd numbers are the authors' drafts, even numbers are my edits.

This scheme is adequate, but I have to be consistent to keep a history of all the versions. Also, all my communication with the author is in the form of e-mail, so if there's something I need to remember about an article or a specific draft, I need to go look it up there.

Mail is fun too, because of all the hazards of sending articles, images, and code back and forth in e-mail. Some authors' mail gets flagged as spam because their hosts are on O'Reilly's blacklists, and still others are flagged as spam for no discernable reason. Sometimes the HTML-formatted articles get inlined into a mail message, and I have to save it as raw source and clip out all the MIME headers and unrelated contents to get just the HTML. Every author needs the writer's guide to get started, but some sites (GMail in particular) reject my ZIP attachment (see Zip Considered Harmful?), so I have to keep atar.gz handy. And I've always meant to get those guidelines posted publicly, so I don't have to keep fighting that battle, and so I can get a "wish list" of article topics in a public place, where potential authors can see them before making a proposal.

Now look at the upper right, to the folder called "subverted-authors". That's where I'm working on an article from John Smart, who wants to work via Subversion.

That idea, plus the need to get the guidelines and wish list up where people can get to them via the web gave me an idea:

What if I moved the entire article development process to a project?

With the project's web space, I'd be able to post basic HTML docs like the writer's guide, topic wish list, and HTML template. Then the authors would basically be committers on the project. For each new article, I'd create a new folder within the project's source files, and the author would svn add his or her HTML, images, and sample-code zip's there. I'd be able to edit the file directly (instead of managing folders on my machine) and make comments in the HTML source, then svn commit the edit back to the author. I wouldn't have to manage the history, since Subversion would do it for me.

This would also be trivially easy for editing on the road, as opposed to my current pre-trip to-do of moving folders from G5 to PowerBook.

Writing and collaborating via subversion isn't a novel concept, of course. Josh and I wrote Swing Hackswith Subversion, with one folder for each hack's code, then folders for the chapters as we started writing everything up and swapping rewrites with our editor.

Are there downsides? Well, a project's source repository is public, so anyone would be able to see the works in process -- a lovely, open idea until and unless someone gets sensitive over strongly critical comments in an edit being public knowlege or, worse, some other publication grabs in-progress works and publishes them without permission (or finished editing). But then again, maybe we'd have a public project for hosting the introductory docs, and a private or invisible-to-non-committers project for the actual article development. Somehow this could be made to work.

Are there authors who wouldn't be comfortable using Subversion? Probably. Every now and then I get authors who write about writing webapps but can't or won't write HTML, so it's certainly possible I'd have to hold a few hands of first-time Subversion users.

Still, there's an appeal here. There's a lot you can do with a project, and I'm starting to think that the site's tools might do everything I need, even for developing something other than code.

So, authors and potential authors, what do you think? Would you be open to swapping drafts with Subversion instead of e-mail? Write a comment with your thoughts.

Lots of people complain about the huge size of the JRE download, but who's doing anything about it? Simon Morris gives the issue a thorough rethink in today's Weblogs. In Desktop Deployment Ideas, he says: "I've spent a fair amount of time over the last few years writing Java desktop applications, and I've quite a collection of scars to prove it. I know Sun are looking to improve SE JRE deployment in upcoming releases, so here's a few uneducated ramblings to add into the ideas pot."

Kohsuke Kawaguchi shares some JSP frustrations in Hudson 1.40 and why I eventually said bye bye to JSP in favor of Jelly: "A little rant about why I don't like some aspects of JSPs. I've never been truly happy with JSP (and consequently any technologies built on top of it, including JSF and things like that.) It felt very anti object-oriented, because in JSP and their siblings, pages are always the king and the data is the servant."

In Plumber's Hack 1: Highlighting Sourcy, Evan Summers writes: "You wanna highlight your code samples for your blog, using Netbeans? Here's some triviawarez to help." 

In Java Today,Issue 252 of the NetBeans Weekly Newsletter is out, with items on how to migrate your JBuilder Project to NetBeans, Visual Mobile Designer tutorials, an interview with the xDesign team, a tutorial on creating a simple Spring MVC webapp in NetBeans 5.0, and more.

Service-oriented architecture (SOA) allows businesses to enable legacy systems and new software products as a service to a wider audience by way of the Internet. Web services technology is the cornerstone of SOA implementation, which involves complex business transactions between various business entities. The article Implementing High Performance Web Services Using JAX-WS 2.0shows how to implement high performance web services using the Java API for XML Web Services (JAX-WS) 2.0 and provides feature and performance comparisons with the Java API for XML-Based RPC (JAX-RPC) 1.1.

The ONJava blog Mustang for Mac PPC... any point now? says "This blog is about Mustang for the Mac, which is being developed for both PowerPC- and Intel-based Macs. That's kind of interesting when you consider one thing: As of yesterday, Apple doesn't make PowerPC Macs anymore."

In today's Forums,sbalmos is looking for the EJB3 equivalent of Handle?: "Yet another question... Hopefully one of my last. What is generally the equivalent of a Handle for an EJB3 stateful session bean? I'm using the well-known trick of using a stateful bean to maintain server-side state in SOAP, and using a String representation of the bean's Handle as a session ID of sorts. However, casting to EJBObject creates a runtime ClassCastException, so there's no way I can get to the getHandle() method."

Cleanup time for SwingX! In Incubator .. started lib/build cleanup, Kleopatra writes: "Hi folks, with all those exciting new components/demos I thought it's time to move a bit ahead with the overall cleanup - in the end it should be poop-easy to build a web-startable demo under ther www/demos by simply running an ant task. As a side-effect, I would love to have all the demos point to a shared swingx.jar which should be kept roughly current (naturally, contributors should still be able to decide if they prefer a per-demo custom swingx.jar)."

Things are slow on the news front. News editor Steve Mallett suggests checking out the Register's list of Top 10 technoculture books for the beach. At any rate, today's News Headlines are:

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.

Thinking out loud about article development  

Time Capsule Blog

Posted by kfarnham Aug 8, 2006

Journeys in time and space with Flying Saucer

I remember when Josh Marinacci first got going on Flying Saucer... this was before Swing Hacks and his joining the Swing team at Sun team, mind you... and this was one of several projects that seemed to come and go from, like a webmail viewer he wrote a while before that.

If you look at Flying Saucer's announcements, you'll see the initial check in from two years ago, a nonchalant item saying "I'm just getting started with the project. First up is to check in the code (that always helps). If you stumble across this project and want to contribute, please sign up to the mailing lists and start talking."

Did it ever.

It turns out a lot of people were interested in putting together a 100% Java, standards-compliant XHTML and CSS renderer. They joined the project and over the course of two years, they've built it into a very capable renderer. At first you had to spoon-feed it carefully crafted HTML, but each version has brought in more and more of CSS2, something that this project team seems more capable of and interested in than the Internet Explorer team.

We're noting Release 6 of Flying Saucer on the front page today. The team writes: "Release 6 includes major improvements in performance and stability--plus we've taken big strides in our CSS 2.1 support." A feature list shows what's available in the new version, while online demosshow off its rendering abilities.

Also in Java Today, the early draft review of JCP 286, Portlet Specification 2.0 is now available. "The main goal of this version is to align the Java Portlet Specification with J2EE 1.4, other JSRs relevant for portlet programming, like JSR 188, the next version of Web Services for Remote Portlets (WSRP)." New features include portlet filters, inter-portlet communication, enhanced portlet tag library, and more.

The new Mobile Service Architecture (MSA) specifications (JSRs 248 and 249) define the next-generation Java platform for mobile handsets. The first part of the MSA specifications were recently completed, with the JCP's final approval vote slated for this month. In the interview The Future of Mobile Java, MSA spec lead Asko Komsi, who is also Nokia's Director of Industry Relations, talks about the future of mobile Java, and how the MSA standard will help make it easier to develop for mobile handsets

Today's Feature Articlelooks at Contract-First Web Services with Apache Axis2. It's tempting to throw down your business logic and expose it as a web service later, but this "code first" approach is fraught with peril. In this article, Ajith Ranabahu argues for a "contract first" in which you use code generation to create server-side code.

Scott Violet has a desktop Java tutorial on Cut, Copy and Paste in today's Weblogs: "After a long hiatus I'm returning to a series of blogs on architecting applications. This time around I'm covering a simple way to provide rich cut, copy and paste behavior in an application."

Malcolm Davis identifies Redmond's One Big Vista Mistake: "On the eve of WWDC, more of Microsofts problems become apparent. It is more than just another delay in an operating system."

Do you know How to encode Enums? Sergey Malenkov, writes: "As you know, Enums were introduced in Tiger, but they are not supported by XMLEncoder. This article describes how to encode them into XML properly."

Is it because it's WWDC week, or is there some other reason Mac topics have popped up in today's Forums? In Autocomplete combobox usability under Aqua look and feel, Jesse Wilson reports: "there's a problem with editable JComboBoxes on the Mac. When the list of options is small (ie. less than 10), the popup obscures the editor so you can't see the text being typed. This also happens for any number of options when the combo box is near the bottom of the screen. Although this problem applies to all JComboBoxes, it's particularly annoying for those with AutoComplete because then the popup is opened automatically. I've created a tiny webstart app that demonstrates the problem, plus a fix!"

In Re: Java3D JOGL & Mac OS X, yottzumm writes: "Okay, I haven't tried this yet, but is it possible to get Java3D 1.5 JOGL working on a mac through applets/Java Web Start? I have gotten JOGL working before, just wondering if Java3D 1.5 will throw a kink in it. I'd like our users to be able to use VisAD, and I think this combination may be critical to our success until Apple comes out with a better 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 :

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.

Journeys in time and space with Flying Saucer  

Superdeformed Blog

Posted by kfarnham Aug 7, 2006

You do NOT want to see what I've been doing with threads lately...

OK, so last Monday, I came back Violently Happy from the weekend, having solved one of my QuickTime for Java threading problems that was causing crashing problems on Intel Macs. Only problem was that it locked up hard on Windows XP.

So I looked into it. And it's crazy bizarre. Here's the deal: when you use QTJ's capture manager, theSequenceGrabber, you periodically need to manually give it some CPU time. Yes, it's a holdover from the bad old days of MacOS 1 through 9 and "co-operative multi-tasking". But it's so so simple in Java: it takes five lines to kick off a thread that repeatedly calls SequenceGrabber.idle() and thenThread.sleep()'s for a while. You just need to be sure you don't do that from AWT-Event-Dispatch(i.e., don't use a javax.swing.Timer) because on the Mac, the AWT-Event-Dispatch and the Cocoa AppKit'sRunLoop thread are really keen on either deadlocking or crashing each other (AppKit usually wins that fight).

So I've got my own Thread giving time to theSequenceGrabber. And I'm getting callbacks every time there's new capture data, so I can decompress the image and blit it to an AWT/Swing canvas. Of course, these callbacks are on my thread that's giving time to the SequenceGrabber.

Well, they are on the Mac, anyways.

Somehow, on Windows, my idler thread is completely ignored, and SequenceGrabber.idle() is repeatedly called by the AWT-Windows thread... which happily deadlocks itself on a call to decompress the captured image.

So I found a workaround... and it's pretty nasty. Basically, the problem is what thread's calling the image decompressor. So, the solution is to call that from another thread. So, in my callback, I look at the current thread and check to see if it's the idler thread. If it's not, then I kick off a new thread that goes right back into the same block of code, while back onAWT-Windows, I return immediately and unblock the GUI. There are a few checks for safety (not running two of these ad hoc threads at once, making sure the repaints are properly put back on event-dispatch with a SwingUtilities.invokeLater(), etc.), but that's the gist of it. Woo hoo, a capture preview that works on all three of my target platforms.

So that's how I spent part of my weekend... a crazy workaround, but I'm fortunate that Java threads are fairly easy to create and use. There was an Artima thread the other day about how programmers are going to need to think more aggressively multithreaded to behave well in a multi-core CPU world, and while this might not be a big concern for some server-side developers (if the app server is making the decisions about how to thread requests), it's critical for desktop developers to really get threads, something that's easy to overlook when Swing generally wants you to do everything GUI-related on its event-dispatch thread.

Speaking of QuickTime for Java, this week's Spotlightis on Elliotte Rusty Harold's Amateur, a free, open-source clone of Apple's QuickTime Player Pro written in Java, without the feature crippling and registration fees. Started as a reaction to another upgrade fee to QuickTime Pro, the application uses QuickTime for Java and its most recent version, 1.0d6, implements most of the playback and editing features of Apple's player app. The current version is tested only on Mac, though a Windows version is thought to need just a few hours' work.

In Java Today, the Web Services Policy Working Group has released First Public Working Drafts of the Web Services Policy 1.5. The Policy Framework defines a model for expressing the nature of Web services in order to convey conditions for their interaction. An attachment defines how to associate policies, for example within WSDL or UDDI, with subjects to which they apply.

Srini Penchikala offers a thorough overview of the database changes in Mustang in JDBC 4.0 Enhancements in Java SE 6. He writes: "The main objectives of the new JDBC features are to provide a simpler design and better developer experience. This article provides an overview of the JDBC 4.0 enhancements and what benefits they offer to enterprise Java developers." Among the topics he covers: auto-loading of JDBC driver classes, connection management enhancements, support for the RowId SQL type, DataSet implementation of SQL using Annotations, and more.

The Grid Institute announced that Sun Microsystems is collaborating with the open standards group to advance international standards for storing, delivering and processing digital media in Grid computing environments. A key component of the collaboration is the seamless connection of Sun Microsystems' on-demand Sun Grid compute utility to the public Media Grid network, enabling Media Grid service requests and jobs to be handled by Sun Grid. In addition to increasing the quality of service and overall performance of the Media Grid network, "gatewaying" to Sun Grid will also have a direct and positive influence on related standards.

Now that Ethan Nicholas is at Sun, he's the one in the hot seat to start implementing some of the features he's been calling for. In today's Weblogs, he checks in with the blog entry Welcome to the Deployment team: My first week at Sun It turns out that I joined Sun at a fortuitous moment -- just in time to get involved in the Dolphin (Java 7) planning process. Read on for a sneak peek at what's in store for Deployment.

Tim Boudreau introduces some NetBeans Modules for HTML Authoring: "I write tutorials and articles quite a bit. NetBeans is an excellent editor for HTML, but there were a few things missing. So I wrote some modules to plug the gaps."

Brian Repko says he Ain't gettin' no rest with REST: "After alot of reading, some thoughts on REST and the whole 'are 4 verbs enough' question..."

mikeazzi asks A Quick JTable Drag n Drop Question In today's Forums: "I am trying to write a small Drag n Drop example that involves draging a text string from a text field to a JTable. So I installed a very simple TransferHandler on JTable which pretty much implemented the canImport() method to accept drops. The drag gestures seem to work fine between the text field and the JTable. But the one thing that's bothering me is that when the drag cursor is above a row in the JTable, ONLY ONE cell in that row is highlighted, not the entire row. I would have expected the whole to be highlighted, and I couldn't figure out why, or how to tell it to do that. I have tried playing with the setDropMode() method, with no luck."

It's not clear whether demi123 is having a problem with Eclipse or with GlassFish in the discussion of How does one install/use the Eclipse plugin? I have Eclipse 3.2 and the milestone 0.3 Eclipse plugin for Glassfish. I installed it by unzipping the zip file to the eclipse directory, and it seems to have been the right place, because the plugin shows up in the Eclipse plugin list (two entries from Still, I can't see the Glassfish server entries in the New server dialog. In fact, the contents didn't change at all. I have successfully used a JBoss server before with their respective plugin, in Eclipse 3.2 of course. What am I doing wrong?

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 do NOT want to see what I've been doing with threads lately...  

Possibly Maybe Blog

Posted by kfarnham Aug 4, 2006

A little less legalese

Our new Terms of Use went public last night, and in a move not particularly typical of this industry, it does not try to take more of your rights away. Quite the opposite. Compare it with the old verison via the Internet Archive and you'll find that the new version is actually about 20% shorter than the old version.

The gist of the new terms is in sections 3 and 4, and these have been rewritten to be easier to read and, franky, "less scary". Their subsections begin with subtitles that explain what the item is about: "use at your own risk", "copyright infringement", "don't blame the messenger", etc.

One particularly important change is that the terms no longer bind you to the terms of use, as the old ones did. Another item that we think will be well-received is that the default license is no longer a custom license spelled out in the terms, but instead the widely-understood and respectedApache License, version 2.0. Of course, that's only the default; you can and should choose from several OSI-approved licenses when you create your project. For more information, see our Choose a License page.

While we're on the topic of legalese, I just wanted to mention something about the spam talkbacks that have shown up on a few blogs on the site. While we hope that our bloggers will take the opportunity to delete these comments via the Movable Type interface, we're also asking that they report these to us (send me e-mail: cadamson [at] oreilly [dot] com). We interpret these spam talkbacks as a violation of the terms of use (specifically section 4.a) and starting this week, we are deleting the accounts of anyone who posts spam, with no warning and no appeal, as these are clearly and obviously a violation of the terms of use.

Also in Java Today, Issue 251 of the NetBeans Newsletter collects recent NetBeans-related announcements, including the release of NetBeans IDE 5.0 BlueJ edition, NetBeans 5.5 Beta 2 with Application Server 9.0, the last call for a free 10-week online Ajax programming course, a guide to creating GUI's on Mac OS X, and more.

Offering a musical equivalent of the simple Note Pad application, the JFugue Music NotePad project combines the NetBeans API with the recently-updated JFugue, to create a simple drag-and-drop music editor. When you drag notes to the staff, it adds a corresponding note to an editor pane, and the entire composition can be played with a single menu item.

Sun Microsystems, Inc. invites you to take this one-page survey for developers. Name and email are not required, unless you want to participate in the random drawing to WIN a six-month subscription to the Safari Bookshelf.

So, how many of your Windows apps use the native Windows UI? That's the question about GUI's that David Herron poses in today's Weblogs. "Here's an interesting question: How many of your Windows apps use the native Windows UI?... Prashant Devi asks that question, in a moment of realization that almost none of the applications he uses daily use the standard Windows UI. To me this begs the question ... what value is the standard Windows UI if almost no application uses it?"

In Trip and Tick 3: Setting up a new project using CVS.exe, Evan Summers writes: "Say you got some code you wanna put up as a project. You create a project, you create a Netbeans project by the same name, but you run into some show-stopping CVS snags marrying the two... Here's one shotgun way to make it all happen fast... using the command-line cvs.exe of all people!"

Finally, John Reynolds expresses his desire for Disconnected Browser-Centric Clients: "I might be the only person on the planet who wants all of his applications to be browser-based... but then again maybe there are a lot of other odd people out there with the same desire."

The latest Poll asks "How often do you listen to music while coding?" Cast your vote on the front page, then check out the results page for vote totals and discussion.

Technically, you shouldn't build your GUI on themain() thread, which is why leouserproposes a new @StartSwing annotation in today's Forums: "I pondered this idea a couple weeks ago and thought I toss it out here. Usually when you start a Swing application up, you have to define the code in the run method of a Runnable or have the run method invoke a method(s) to safely start up a Swing app. I do this alot and sometimes I get annoyed with it. One idea I have to get rid of this would be to introduce a Swing annotation that would allow the user to target a method to start swing up... that would allow the user to simply start Swing up by passing it into a SwingUtilities method."

cayhorstmann expresses his support for a file chooser with autocompletion in Re: FastFileChooser: "I really hope that this capability can be integrated into JFileChooser. My pet peeve about Swing on GTK is that the file chooser has no autocompletion. In the native dialog, you hit Ctrl+L, and you get an autocompleting text field. (There is also a clumsier autocompletion right in the dialog that probably isn't worth emulating until Gnome gets it right.) I haven't used Windows for a while, so I don't know what JFileChooser does in the Windows LaF. The Windows native file dialog had autocompletion since at least Windows 98."

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.

A little less legalese  

Unravel Blog

Posted by kfarnham Aug 2, 2006

Digging into complex objects with JXPath

Surely you've got data structures like these: industries have companies, companies have departments, departments have employees, employees have all kinds of personal data (name, phone number, title, salary, etc.). In an OO program, it makes plenty of sense to pass around an object of some level of this hierarchy -- oneDeparment, an Employee, etc. -- in method calls and return values. Sometimes, though, digging for low-level members from high-level structures can be a real hassle. Imagine the nested loops or method calls you'd need to find all the employees in a certain area code.

JXPathmay offer a solution to simplify your code, saving you a few bugs and a lot of intendentation. In our Feature Article,Java Object Querying Using JXPath, author Brian Agnew writes:

JXPath is a library that makes use of simple expressions to query hierarchies of Java objects. The expression syntax is based on the XML standard XPath, and allows us to concisely express complex queries and to easily iterate across sets of objects. JXPath works on plain ol' Java objects (POJO's) and doesn't require objects to implement any JXPath-specific interfaces.

It's an interesting approach. Do you think it's broadly useful enough to make it a part of your application? Check out the article and then let us know in the talkbacks.

In Java Today,SimpleLog, which describes itself as a "logging anti-framework", has announced version 2.0, "the most significant upgrade to Simple Log since its initial release." New features include log rolling (by time, day, or custom strategy), more flexibility, better organization of the properties files, new documentation, and various fixes. SimpleLog is also available in the ibiblio Maven 2 repository.

Ajax4JSFis a new open-source JSF component framework hosted on The project recently reached its 1.0 milestone release. In the interview Ajax4JSF Reaches 1.0 Milestone, Frank Sommers speaks with Ajax4JSF committer Max Katz, who is also a senior engineer with Exadel, the project's main sponsor and contributor.

A recent New York Times article asks All the Internet's a Stage. Why Don't C.E.O.'s Use It? It highlights Johnathan Schwartz's blog and says "When Mr. Schwartz was promoted to the top job at Sun this spring, he automatically became a member of an elite group: Fortune 500 C.E.O. bloggers. He is the only active member. Where is everyone else? Capital markets function as they should when the flow of information is strong and unimpeded. Mr. Schwartz has shown ably that for the chief executive sincerely interested in increasing information flow to the fullest range of stakeholders, a blog is a hydraulic wonder."

Bhakti Mehta kicks off a set of tutorial blogs in today's Weblogs. In WS Reliable Messaging and Session Support (Part1), she writes: "Sessions are unique ids used to identify a client. They would help maintain state for each client. In this sample you will see how sessions can be supported with WS Reliable Messaging (WS RM)."

Scott Schram details an annoyance of internet service bundling in - You *will* pay, visit or not: "The Wall Street Journal is reporting that if you're using Verizon Communications or Charter Communications as your ISP, you're paying for whether you use it or not."

In Restricting Access to your AJAX Services, Greg Murray writes: "There are cases where you want to restict access to the services for your AJAX clients. You may want to track usage, limit access, or prevent cross domain access. This entry details some common techniques used by Google and Yahoo and suggests further techniques."

Today's Forums open with the announcement by weebib of a nifty JDNC incubator project called FastFileChooser: "I created a new little project. It's an alternate file chooser based on auto-completion. Basically it's just a JTextField into which the user can type a file path and, at any time, press Ctrl+SPACE to make an auto-completion dialog appear. As it uses methods such as File.list(), I couldn't make it a Java Web Start because I don't have a certificate to sign my jar."

nserfontein is looking for help with Throwing exceptions from webservice: "I'm a beginner to webservices trying to throw an exception from a webservice but it doesn't work. I can't find an example on how to do this, I've read through all the posts on the forum regarding this problem but didn't find a clear solution. What am I doing wrong?"

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.

Digging into complex objects with JXPath  

One Day Blog

Posted by kfarnham Aug 2, 2006

One of Swing's "rock stars" gets highlighted for a day

Fortunately, he doesn't have too much of an ego to inflate, so it's no risk featuring two items on the front page that involve Josh Marinacci. He's done a lot to gain prominence within the Java Desktop community, from writing blogs on Swing, to writing a column on Swing, to writing a book on Swing, to ultimately writing Swing itself, as an member of the Swing team at Sun.

It's funny that I often forget that we used to work at the same company -- he interviewed me and wanted to see what I was running on my iBook (it was Mac OS X Developer Preview 4... I know, total NDA violation). We were on different teams, so we tended to primarily see each other over games of Soul Calibur andNHL 2001 in the break room. But I was always impressed by the fact that he was always determined to do something new with Java, even outside of work. He usually had some project he was hosting at, open source of course, so he's sort of been in perpetual develpoment mode all this time... which ultimately is how Flying Saucergot started, I think.

So, please don't mind the two Josh's on the page today. He's contributed a lot to Desktop Java, and he's got a lot of value to say. Which is probably why he and fellow Swing Team member Richard Bair will be making a couple JUG appearances soon, as noted in theJava Today section, which links to Matt Ingenthron's blog entry Swing Labs in Los Angeles and OC: "It's official. We have Joshua Marinacci andRichard Baircoming in September to talk with not one, but two Java User Groups, the OC JUG. They'll come in and give us an idea of what's going on over in Swing Labs and Swing technologies in general. "

Speaking of Josh, the latest SDN developer profile gives you a chance to Meet Josh Marinacci of the Swing Toolkit Team at Sun Microsystems. In it, Josh talks about Swing Hacks, the Flying Saucer and Aerith projects, the future of Java Desktop applications, scripting support in Mustang, and how he won a dollar from James Gosling.

So, anyways, moving to topics more general in the Java Today section... do you think you've invented or discovered a new software pattern? Are you wondering how to present it in a form others will understand and appreciate? Martin Fowler reveals some of his pattern-brewing secrets in Writing Software Patterns. " For me a pattern is primarily a way to chunk up advice about a topic. Chunking is important because there's such a huge amount of knowledge you need to write software. As a result there needs be ways to divide knowledge up so you don't need to remember it all - what you need is to be able to get at a particular chunk of knowledge when you need it. Only then do you need details."

Rémi Forax show syou how to Create or Drop a table using JDBC 4.0 in today's Weblogs, pointing out "the way JDBC 4 defined how to create a table using a query interface introduces a meta protocol mix."

Felipe Leme sets a naming issue straight in The name is bound, Java EE bound: "The previous weblog says JEE is The Official Acronym for Java Enterprise Edition. That's not true - the new name for the is - and always have been - Java EE. If you don't believe me (after all, I'm not a Sun employee :-(, keep reading..."

Marina Sum follows up with Correction: Java EE is the Official Nomenclature: "My previous blog on the official acronym for Java Platform, Enterprise Edition was a blunder. The acronym should be Java EE, not JEE."

In today's Forums,miyako considers contributing to an image application effort in Re: Photoshop In Java: "I've been working on something that is sort of along the same lines as a photoshop/lightroom/picasa application in Java as well. I think that there is definitely a desire for something like this. Gimp is alright, but it's too heavyweight for quick things. I've been focusing on creating a nice UI for plugins, and a robust set of tools for writing plugins, and I've been working on an implementation of a few Texture Synthesis algorithms for making textures for 3D artwork. It seems like a lot of people are intersted in creating these sorts of applications, perhaps we should put our heads together and try to make a Gimp killer"

xristina seems to be having path problems in how to extract jar files????: "Hi, I'm trying to extract a jar file without luck...any ideas??? More specific i have write at the path ...C:\...\...\tools.jar but at command line there is chaos...when i write jar xf jarfilename.jar i take the message C:\Program Files\Java\jdk1.5.0_02\lib>jar xf wizard.jar, 'jar' is not recognized...etc. What i have to do..."

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.

One of Swing's "rock stars" gets highlighted for a day  

It's Oh So Quiet Blog

Posted by kfarnham Aug 1, 2006

Life's not fun when you can't get the answers you need

You've got your forums, your forums, project mailing lists, wiki's, feature articles, websites, and pretty much any other venue for sharing Java development information you could think of.

So why is it sometimes so hard to get a good answer?

Surely for every time each of us has had to endure someone posting a question in the obviously wrong place (we get basic Java language questions submitted as news items at least once a week), there's probably also been a time when you had a question for which you couldn't find anyone to give you a right answer.

This is the topic addressed by today's Feature Article, the latest in our series of "not-so-stupid" questions. (Not So) Stupid Questions 11: Guidance asks "I have a question about a Java feature. Who do I ask?". It's not as simple as you might think. The author writes: "I have been asking this question [about JPA] on several forums for some time, and each time I get the response, 'Good question, go ask...' Is there a place I can ask questions and not get redirected? Is there a place where the buck stops?"

Do you think there's an ideal place to get answers? Does it depend on the topic? Does it concern you that it's so hard to find the right place to ask? Please visit this not-so-stupid question and contribute your thoughts on the matter.

David Van Couvering covers Security, AJAX, and Java in today's Weblogs. "Another serious security hole is found with JavaScript. Maybe there is value in running Java in the browser environment after all?"

John O'Conner isn't impressed with a recent feature article, which prompted him to blog AOP and I18n: Why would I want to do that? "After reading the 'Aspect Oriented Programming and Internationalization' article on, I'm still wondering why I would want to do that..."

In Evenly Divided?, Masood Mortazavi writes: "The poll results on Java DB inclusion in Mustang edge slightly in favor of the inclusion."

In Java Today,Version 1.0.1 of the JAudiotagger project fixes 15 issues with the audio-file tagging library. JAudiotagger's goal is to provide thorough support for metadata in multiple audio file formats, including but not limited to the ID3 standard used in most MP3's, though ID3 is the focus of current development. In the long run, the use of a "virtual intermediate format" will allow the mappging of any format to any other format.

Over on Artima, Frank Sommers has kicked off a discussion of The Impact of Multi-Core CPUs on Developers: "Advances in compiler design have insulated most developers from changes in CPU architectures, and Java developers enjoyed the additional benefit of a fairly homogeneous execution environment offered by the JVM. Multi-core CPUs, however, will make parallelism explicit, presenting three challenges that few developers have experience with, according to James Reinders, a director with Intel's software development program."

Mustang's support for using scripting languages, as defined by JSR 223, is one of the Java platform's most intriguing new features. In the SDN article Scripting for the Java Platform, John O'Conner looks at how to embed scripting environments within Java applications: "Using scripting from the Java platform is easy because the API is relatively small. You can quickly add scripting support to your application using only a handful of interfaces and classes in the javax.script package."

rbair reveals a SwingX evaltuation in JXErrorDialog Review notes posted part of today's Forums. "The first review notes for JXErrorDialog have been posted: have some more API work to do, and then another internal review. If you have any input on the last review notes, please let me know in this thread. I'll try to incorporate all feedback into another round of review."

rtiernay has an interesting JAXB request in XmlAdapter and xjc:javaType: "Using an of the current JAXB releases, is there any way for one to generate an XmlAdapter from an XSD or bindings customization file so that modifying the source code isn't a requirment? For instance, in my XSD I have an type that should best be represented as a map in java. In order to acheive this effect, I would have thought that the following proprietary vendor customization should work..."

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.

Life's not fun when you can't get the answers you need  

Filter Blog

By date: