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

411 And A Joke Blog

Posted by kfarnham Aug 31, 2007

Vintage video of Duke, Gosling, and "Green"

While it's the topic-du-jour to mock Nokia's iPhone rip-off, as well as others, some of those doing the joking seem to assume that it was Apple that brought touchscreens and animation to the mobile communications device. As it turns out, the iPhone was a little late to the party.

Like, 15 years late.

In a new weblog, James Gosling takes us back to check out The Green UI:

I was having a conversation the other day with someone about touch screens, gesture languages, physics in UI actuators, transition animations, and all sorts of other cool stuff in the iPhone UI. It got me cranked up about a project we had done at Sun years ago. Fortunately, we had made a video of it in 1992 that I managed to find a copy of.

His blog embeds and links to a 1992 video that discusses and shows off the GUI. It's a 141 MB MPEG-1 file, so those of you with slow connections -- say, anyone trying to read it with an iPhone over the AT&T Edge network, ironically enough -- will have to do without (I also imagine that the IT department is going to have a coronary when they get the bandwidth bill for all these random blog readers pulling a 141 MB file, but I digress).

It's certainly novel to see the expressiveness of the Duke-centric GUI, and while the form factor they show isn't much better than that of a brick, it's clear they had some neat ideas in this project, whose development eventually produced what would become Java. More info on this in A Brief History of the Green Project, part of the open-source Duke project.

Also in today's Weblogs, Inderjeet


Can't Trust It Blog

Posted by kfarnham Aug 30, 2007

Unforseen hazards of the Swing event-dispatch thread

Care and feeding of the Swing event-dispatch thread is something that every new Swing developer hears about and reads about over and over again. And yet, mistakes with this are the cause of many subtle bugs and perceived slowdowns.

Why is it so hard to get this stuff right? Well, for one thing, it's easy to do. It's not always obvious what thread your code is running on -- an event handler sure, that's on EDT, but if you had a method that could be called via RMI, would you think of the threading implications of touching the GUI (or its underlying models) from there? And then there's the rule against not performing long-running actions on the event-dispatch thread. Something that runs nice and fast on your development machine or your internal network, fast enough that you don't realize you've done it on EDT, might behave very differently in the field, just because of different hardware, networking configuration, latency, etc.

Substance project owner Kirill Grouchnikov points out another reason this gets messed up so often: these rules of Swing threading, while so important,are not enforced in any way, neither by the compiler nor by the runtime. Given Java's usual philosophies of compile-time strictness and fail-early programming, letting this stuff just fall on its face at runtime could be seen as atypical of Java programming in general. And maybe that's why it's so easy to do: usually when we do stupid things, Java stops us, and does so early on. But a GUI-hosing race condition or a deadlock when two threads mess with a TableModel? What's going to stop you from doing that? Nothing, actually.

In our Feature Article, Kirill introduces some tools for Debugging Swing . Combining custom event-listeners with some JMX functionality to get thread information at runtime, Kirill shows how you can track down long-lasting actions on the EDT and figure out EDT deadlocks:

Swing is a very powerful UI toolkit. You can do pretty much anything you want with it, but it's very easy to abuse this power. Using the non-intrusive techniques described in this article, you can easily locate event listeners and other related code pieces that violate the EDT-related rules, making your application more responsive and robust.

In Java Today,Issue 306 of the NetBeans Weekly Newsletter is out. Contents include: relaunch of, NetCAT 6.0, registration opens for NB Day Boston, Wade Chandler profile, extending the NetBeans Tutorial JSF-JPA-Hibernate Application, native Ruby development on NetBeans 6.0, how to write a Groovy editor, a creative use of the NetBeans visual library and much more.

Wondering what's up with the Java 7 Closures proposals? InfoQ has an update in Catching Up With Closures for Java: "Neal Gafter recently gave a presentation at JavaOne and Jazoon '07 entitled "Closures for Java". The presentation is an accessible but thorough introduction to closures, the goals, the problem with existing solutions, all presented in a conversational style."

The latest SDN Java Technology Vodcast is "Deep Dive: Project Tango, An Interview With Arun Gupta". Host Ed Ort, from the team, interviews Arun Gupta, Sun Technology Evangelist for Web Services and Next Gen Web Apps (a.k.a, Web 2.0): "Get insights into Project Tango and its importance. Learn about the specifications that comprise WSIT and that are implemented in Project Tango. Most important, find out how easy it is to create and use interoperable web services through Project Tango."

In today's Weblogs, Elie


Rebel Without a Pause Blog

Posted by kfarnham Aug 29, 2007

Can kids raised on JavaScript and HTML handle Swing?

The last few times we heard from blogger Simon Morris, he was breaking down Rich Internet Application philosophies into browserism, neo-desktopism, and pragmatic neo-desktopism, then following up by decoupling the social and RIA aspects of "Web 2.0". He returns today with an interesting question about just who's going to be able to write any of this stuff going forward. He worries about The Lost Generation, which is:

an entire generation for whom the phrase "user interface" means HTML and Javascript. From a coding standpoint they know nothing outside the quaint little parallel-universe that is the web browser, with its own laws, customs and polytheist religion, whose gods (IE, Gecko, Opera, Safari...) must be placated for an application's success.

If this is the new world-view of the young programmer, then how well can they pick up on full-blown desktop GUI frameworks, like Swing? Simon says that Swing and JavaFX offer the best balance between traditional desktop richness and RIA cross-platform goodness, but the question is whether the next generation can hack it:

My only concern is this: will the 'lost generation' coming from the web to RIAs really want to join the Java camp, when offerings like AIR provide an environment which (superficially at least) seems closer to the environment from which they came? Swing is not like the simple form UIs they're used to, JavaFX Script is not like the JavaScript they're familiar with.

So what do you think? Do you agree that today's kids need to get right with GridBagLayout if they know what's good for them, or are they following a different path for a good reason?

Also in today's Weblogs, Andreas


Don't Believe The Hype Blog

Posted by kfarnham Aug 28, 2007

What will the Slashdot crowd think of OpenJDK and Java 7?

I wasn't sure what today's blog would be about while pulling together the front page this morning... I can't get the utter delight of Wil Wheaton's PAX 2007 keynote out of my head after listening to the MP3 last night, but it's not really relevant to anything on the page today.

So as I was working, I stopped by Slashdot and noticed the top item, State of the OpenJDK Project and Java 7:

LarsWestergren writes "David Flanagan, the author of Java in a Nutshell, has a nice writeup on the state of the open source development of the next version of Java. The article explains the difference between the JDK7 and the OpenJDK projects and how to join them. Furthermore, it has an overview of the release schedule, proposed language changes and projects of interest. A more technical and in-depth tracking of the language changes and proposed new features can be found at Alex Miller's blog. This is the first in a series, and 'each future installment will provide an update on what's currently happening in the latest builds from the project, along with a deep dive into a new feature or API that's tracking for inclusion in Java 7.'"

Well, cool, that's a link to David's new The Open Road column, and it's nice to see it get a wider notice (thanks also the the Java Posse, who mentioned it in a recent show). Granted, /.'s only noticing it like two or three weeks after it was published, but better late than never.

Now, this being /., we can pretty much sit back and watch all the usual troll comments get posted: "I used a Swing app 10 years ago and it was slow and crappy, so Java sucks." I swear that people are running scripts to post some of these comments. Specifically, I think people have perl scripts to post messages about how great PHP is. Or vice versa.

Or maybe we don't need to worry about what the crowd there thinks. If Java's the right tool for my work, do I care what some random person thinks, someone who may not even be a genuine developer, but just likes to throw out abuse? There's a certain webcomic's theory I might cite about internet behavior when combining normal people, anonymity, and audience, a theory cited in Wheaton's keynote, but it's seriously NSFW. And truthfully, some of the early commentary is quite good, including posts to clear up confusion about just what OpenJDK and the "GPL + Classpath Exception" license is, and a thread on the value/practicality of cleaning up old API's in Java SE.

Actually, the best thing that can happen is that some of the readers there will get an update and a fact-check from reading David's article, and become interested in where things are going for Java 7.

If you're just joining us, do stay a while. There's a lot going on here: 4,300+ projects, active forums and blogs, and good people.

The latest Java Mobility Podcast is JavaDB, a database implementation for all the Java plaftorms . Java DB is Sun's supported distribution of the open source Apache Derby 100% Java technology database. Rick Hillegas, Sun Senior Staff Engineer and Apache Derby developer, provides insights into uses of JavaDB, developing in a distributed environment and upcoming features in the next release of JavaDB.

In Java Today,Metro, the Web services stack in GlassFish, is making progress along with GlassFish schedule. Harold Carr announced the availability of Metro RC 1, while Vivek Pandey announced the availability of JAX-WS RI (core of Metro) 2.1.2 RC1. Both of these binaries are already integrated in GlassFish V2 b58b. A more recent version of Metro binaries is already integrated in GlassFish RC4.

The AppFuse team hasannounced the release of AppFuse 2.0 M5. They write, "this release marks a milestone in the features of AppFuse 2.x. This release adds CRUD code generation, full source support (just like 1.x) and XFire integration. In addition, we've fixed all the issues related to switching persistence frameworks, and you should now be able to easily switch from using Hibernate to to iBATIS or JPA."

The new "JavaFX City Weather" sample application has been published on NetBeans Milestone 10 update center. Note that the JavaFX plug-in must be already installed in the IDE to try this sample application. You may get the plug-in from NetBeans M10 update center. Please refer to the detailed installation instructions in case of any questions.

I just received an IM noting that Greg Stein, Director of the Apache Software Fondation was injured in a mugging outside his home and that a collection is underway to assist in his recovery. Our thoughts are with Greg and his family, and we hope he's up and hacking again soon. 



Harder Than You Think Blog

Posted by kfarnham Aug 27, 2007

Loading a program into your own memory

Interrupted too much to make progress on your code? I mean real progress, not the kind where you clear a P4/S4 bug by changing some link text or a background color. I mean the kind where to set things right, you have to be willing to take apart large sections of your code, change interfaces and break contracts, make the whole thing uncompilable (you might want to do this in your own local copy and not commit until it compiles again), and rewrite the sloppy stuff that you half-assed the first time, thereby eliminating all the lurking dangers that depend on it. This is the kind of thing where you need hours on end of uninterrupted focus and clarity, so you can keep in mind a vision of what you're trying to accomplish, as well as the details of everything you're having to muck with to get that all right.

OK, seriously, who has that kind of time? Hand me another cosmetic bug, Earl, the engine's gonna have to stay broken.

Paul Graham's latest essay is on the value of Holding a Program in One's Head and it's an interesting read, though you may have to hold your nose every now and then to work through the usual Paul Graham-isms sprinkled throughout (he doesn't bash Java directly this time, though he has a dubious claim that you need to use "succinct languages", such that lines of code are always inversely proportional to language goodness in Graham-land). Anyways, the key to his argument is that you have to fully immerse yourself in a program and a problem domain to really get anywhere with it, and that takes time and focus:

It's not easy to get a program into your head. If you leave a project for a few months, it can take days to really understand it again when you return to it. Even when you're actively working on a program it can take half an hour to load into your head when you start work each day. And that's in the best case.

From this, he infers that office situations are generally antithetical to achieving the necessary focus, given their high level of interruption, seemingly by design. In fact, he asserts that the random interruption may not be as bad as the regular interruption, like the useless meeting coming up at 12:30:

Oddly enough, scheduled distractions may be worse than unscheduled ones. If you know you have a meeting in an hour, you don't even start working on something hard.

Now, here's a thought... do you really think Graham's argument is true in all cases? I was talking with Substance creator and weblogger Kirill Grouchnikov in the booth at JavaOne, and I asked him how it was that he could keep cranking out new releases of Substance all the time, putting in significant new functionality on a regular basis. He said his approach was to always take an hour a day to hack on it. This is counter to Graham, obviously, who says you need a half-hour just to load your program into your own memory. But Kirill's approach has a huge advantage in consistency and familiarity: rather than trying to clear out huge blocks of time to work on your project, the frequent-but-short approach means it'll never go out of your memory, because you'll never go more than 23 hours without working on it.

Deep dives or frequent jams? Which works for you?

In Java Today,Sailfin, the (SIPServlet) communication application server based on GlassFish and Ericsson's contribution, has hit Milestone 1 (56Mb). This is built on top of GlassFish v2 and offers the following features: Grizzly integration in SIP container, Administration Backend, CLI, deployment, web container, load-balancing proxy. Milestone 2 is expected in October.

Thanks to all who participated in last week's Ask The Experts on Mobile Services Architecture (MSA). Questions and answers for this event are now available to view online. For more information about MSA and other ME-related projects, keep checking the Mobile & Embedded Community page, and the M&E forums for announcements of future Ask The Experts events.

Issue 135 of the JavaTools Community Newsletter is out, with tool news from around the web, an editorial on "why your new project hasn't been approved yet", announcements of new tools that have joined the community, and a Tool Tip on investigating the working copy status using Subversion.


"JAVA" comes to the stock tables

This week of entirely unexpected announcements wraps up with a doozy. It started Mondaywith NetBeans' low-key adoption of the GPLv2 with classpath exception license. Then Tuesday, we got word that Java Kernel is ready for JDK 6u4 (at least if we're reading the bug report right). And now today, we get word that Sun is changing its stock ticker symbol from "SUNW" to "JAVA".

Sun President and CEO Jonathan Schwartz announced the change in his blog entry, The Rise of JAVA - The Retirement of SUNW. The reason, he explains, is the ubiquity and value of the Java brand:

What's that distribution and awareness worth to us? It's hard to say - brands, like employees, aren't expenses, they're investments. Measuring their value is more art than science. But there's no doubt in my mind more people know Java than Sun Microsystems. There's similarly no doubt they know Java more than nearly any other brand on the internet.

I know that sounds audacious, but wherever I travel in the world, I'm reminded of just how broad the opportunity has become, and how pervasively the technology and brand have been deployed. Java truly is everywhere.

This is sure to be a much-discussed move, and bloggers near and far are already chiming in with their thoughts. So... what do you think? Let us know in the comments section below...

Java creator James Gosling certainly deserves a say, and in today's Weblogs, he notes his thoughts on SUNW=>JAVA. "In his blog this morning, Jonathan announced that Sun is changing its stock symbol from SUNW to JAVA. Totally bizarre from a geek vantage point, but totally sensible in terms of marketing and brand awareness."

Meanwhile, Petar


Mind Games Blog

Posted by kfarnham Aug 23, 2007

What are Java developers really interested in?

Our current Poll, which ends tomorrow, asks readers "How interested are you in learning JavaFX Script?". Javalobby's Michael Urban took a look at the results and concluded that since a majority was either disinterested or didn't even know what JavaFX Script is, that it's in trouble, a case he makes in JavaFX: How Much Interest Is There?

Despite the fact that JavaFX is receiving quite a bit of press in Java land, with how-to articles and such appearing on the Java desktop community site, actual developer interest, according to the poll (again, with standard disclaimers applied), seems fairly low. This raises a few interesting questions in my mind:

For my money, this is a massive mis-read of the poll results, something I banged out as a first post to the story. As I see it, the results show over 40% of respondents expressing some positive level of interest in JavaFX Script. And that's quite good for a number of reasons.

First, and probably most obviously, there's the fact that server-side Java developers outnumber client-side developers by a significant margin. Someone at JavaOne said the factor was around 10 to 1, and speaking subjectively, that sounds about right. Another way you could gauge this is job demand: lists159 hits for "j2ee" in Atlanta, while only 8 for "swing". So, given the massively disproportionate focus within the current Java community on server-side and enterprise technology, finding that 40% want to learn more about JavaFX Script is actually a remarkable expression of support and interest. If the sample pool is in any way representative of the overall Java community, then there must be some server-side guys and gals looking over the wall to the client, and JavaFX in particular, and being at least a little interested.

Secondly, how many topics of any kind are going to draw a lot of interest from the Java community? We had a wide-ranging discussion on the O'Reilly editors list earlier this week -- all of which sprang from the innocent question "when is Java in a Nutshell 6th Edition coming out" -- that got into the questions of what the Java community wants from media companies and publishers and what kinds of products and services are viable. One of our book editors wisely pointed out that the Java community has seen massive fragmentation, with many frameworks and products competing in each of many spaces. This is good for the community because of diversity and competition, though it's challenging for publishers; it was easy to do a book on Struts, but how do you address Struts' successors when there are so many of them, and none commands more than a 30% share?

Now take this fragmentation, and understand that it is not only fragmentation within topics (Struts vs. Spring vs. EJB, Swing vs. SWT, a million different approaches to Ajax, etc.), but that the topics themselves range from enterprise concerns (web apps, SOA's, persistence, etc.), desktop GUI's (widget frameworks, multimedia libraries), mobile software, etc. The Java world is huge, and given that, what topics could you ever find that would be relevant to a majority of developers? Cooper pointed out the other day that the most solid Java books he's seen recently are on a few topics that are relevant to nearly all developers: concurrency, collections, and I/O. But how many more topics are there out there like those?

Tim asked if he could use our discussion as the basis of a Radar post, which may appear at some point soon. But for our current purposes, let's look back to JavaFX Script. Almost 60% of our readers say they aren't interested in it... fine. Given the fragmentation of interests within the platform and the diversity of Java pursuits, I think it's remarkable that an emerging user-facing technology can potentially appeal to 40% of the readership, and we will be looking into ways we can meet that need for that audience, as well as continuing to find material of interest to the other 60%.

Speaking of server-side developers looking to go user-facing, today's Forums features a post from someone looking to do just that.titanicemerges asks How to Decide on Product(desktop appl) Architecture. "I am newbie here and also to desktop applications... All these time in my career been in the web services.Now in my company, we are trying to develop a product, clearly a desktop application .The main theme of the application is to MAINTAIN A LOCAL REPOSITORY AND A FRONT END FOR THIS... We thought about webserver for the local transactions and not able to decide on any thin web server. THE MAJOR PROBLEM IS MOST OF OUR TEAM ARE WELL VERSED IN JSP,SERVLETS AND OTHER WEB SERVICES AND NEW TO DESKTOP APPLICATIONS..... The fix we are in right now is what sort of architecture we need to stick to for our application. Could anyone help us out how to go about deciding a desktop architecture as a startup."

alanb has an update on some shutdown issues in the thread Re: Ordered shutdown actions. "I realize this is slightly off topic from your original post but there has been a number of attempts to resolve the deleteOnExit issues on Windows. The main issue, as you probably know, is that the have always (since jdk1.0) opened files without specifying the delete sharing option. It would be great, and trivial, to fix this but we always need to be careful about changing something that applications may be depending on. To avoid changing long-standing behavior, one of the prototype fixes involved a special shutdown hook that closed open streams before the deleteOnExit mechanism was invoked."

hgpimac explains ME security policies in the threadRe: Signing midlet. "The Sun Java Wireless Toolkit includes four protection domains: * untrusted - Provides a high level of security for applications whose origins and authenticity cannot be determined. The user is prompted frequently when the application attempts a sensitive operation. * trusted - All permissions are granted to MIDlets in this domain. * minimum - All permissions are denied to MIDlets in this domain * maximum - All permissions are granted to MIDlets in this domain (equivalent to trusted.). When you press the Run button to run your application in the emulator, your code runs in the untrusted protection domain by default."

In Java Today, a short JSF News item over on The Aquarium notes that Intuit has chosen Java and JSF for its landmark move to a web-based application. CNet's Intuit building Quicken Online reports that "Intuit is planning to release a Web-based edition of its leading personal finance application this winter, possibly early in 2008." Looking at a development version, they report that "the Java/JSF interface appears to mimic the desktop counterpart, highlighting current Money In, Money Out, and savings or debt by drawing from savings, checking, credit card, and investment accounts." Closed testing is underway and a limited public beta will begin September 10.

File upload is a basic function of today's Web portals. In the article Develop an Ajax-based file upload portlet using DWR, authors Xiaobo Yang and Rob Allan describe how to develop an Ajax-based file upload JSR 168-compliant portlet using DWR (Direct Web Remoting). DWR is an ideal Ajax framework for Java developers that dynamically generates JavaScript based on server-side deployed Java classes. You will learn how you can use DWR to retrieve file upload progress from the portal server.

A Government Computer News feature article looks at the March of the scripting languages on the JVM. "By giving Java programmers more options about what language to use, they can gain more flexibility within their preferred development environment. And by opening the JVM to other languages, non-Java developers can use the rich set of Java functions." A companion blog looks at scripting language performance on hte JVM and concludes that Ruby's easy but Java is quicker.

In today's WeblogsGregg

More Java podcasting for your listening pleasure

So, we're about a week away from podcasting the last of the community corner mini-talks we recorded in the booth at JavaOne 2007. But don't worry, there's new stuff coming up, which I'll announce in this space as soon as it's ready (why yes, I am going to be spending the next few days recording in Skype and editing my tail off in Soundtrack; thanks for asking).

For now, our latest JavaOne Community Corner Podcast is j1-2k7-mtT13: Legacy Integration Components Under Open JBI Components From a Partner by Fred Aabedi. In his abstract, he writes, "JBI is a specification for the integration, it provides a standard for building integration projects, just as EJB provides a standard for transactional projects. One of our open source partners who has contributed several JBI binding components is here to present their views about JBI and JBI components. We think that for JBI to have broad acceptance there must be a way first of all to build bridges with existing application and services. "

The Java Todaysection begins with another with a new Java podcast for you to check out. JavaWorld is kicking off a podcast series with Chet Haase on maximizing Swing and Java 2D. In this first episode, Daniel Steinberg interviews Chet about rich client development using Swing and Java 2D. Listen in as Chet, a Sun Microsystems client architect, makes the case for Java desktop applications, tackles the big issues facing Swing developers, and talks about the near future of Java development on the client side. And, of course,Filthy Rich Clients.

JSR-301, the Portlet Bridge Specification for JSF, is now in its second early draft review. This JSR defines the semantics of a JSR 168/JSR 286 portlet that proxies for JSF artifacts. Currently several open-source projects JSF/Portlet bridge functionality, and differ too much to offer interoperability. The purpose of this specification is to standardize the behavior of these bridge implementations to ensure true interoperability for JSF artifacts. The review closes on September 10.

Over at The Aquarium, Arun Gupta reports on a Windows Service for GlassFish: "GlassFish can be installed on a variety of platforms - Solaris Sparc, Solaris X86, Windows, Linux, and MacOS. The installer of the Sun's distribution of GlassFish -Sun Java System Application Server - can create a Windows Service but that installer is not part of the GlassFish distro, so Ryan created a simple command to do it."

In today's Weblogs, Fabrizio


Nobody Told Me Blog

Posted by kfarnham Aug 21, 2007

Wait, you mean Java Kernel is ready now?

So, yesterday I expressed my surprise that the GPL'ing of NetBeans had flown under almost everyone's radar and snuck out in the form of Joshua Marinacci's blog. And it was kind of weird, having something so important just sort of pop up and not be announced with a big press release or comments from Rich Green or Simon Phipps or something. But then again, not everything has to be a big huge extravagant launch, right? It's not like something major is going to get quietly announced the very next day too, right?

Riiight. So I log in this morning and there's this one-line blog from Rémi


Instant Karma Blog

Posted by kfarnham Aug 20, 2007

Surprise, NetBeans is going GPL too!

Usually news this big comes out with a big splash, so when I saw Joshua Marinacci's latest blog, my first thought was "dude, aren't you going to get in trouble for busting an embargo?" But then again, he linked to a public FAQ, so it's not like it was a secret anymore.

What's the non-secret you ask? How about NetBeans going GPL?

As Josh explains in his blog:

It hasn't happened yet as we are still working out the final plans, but it's official and it's definitely going to happen. This is great for three reasons. First, you'll be able to get NetBeans under the GPL, just like you can get so many other great open source products. Second, GPLv2 + classpath exception is the exact same license that the JDK uses. This means more harmony with the rest of Sun's Java products. Third, this encourages the use of the GPL over other licenses which I hope will one day reduce the number of licenses out there in the world.

There are already some good follow-ups on the blog, one asking why the APL wasn't used instead (robilad nails this one with his reply: "for the same reason Eclipse does not use it: it's not copyleft, while CDDL, GPL+classpath exception, CPL and EPL all are. Shared foundation, distributed innovation."), and another wondering whether this will pave the way to NetBeans being available in Ubuntu.

Getting back to the actual announcement, the Why GPL v2 Frequently Asked Questions explains the nature the proposed NetBeans license change, points out that NetBeans will be dual-licensed (with CDDL as an alternative license), and discusses why the "classpath exception" is necessary for this licensing change.

So, NetBeans joins Java SE and ME as GPL... what do you think of that?

Also in today's Weblogs, Marc


Go Insane Blog

Posted by kfarnham Aug 17, 2007

Ambitious projects can drive you nuts

OK, I'll admit it. Sometimes, I pick forum posts for the front page because what the developer's trying to do sounds impossible. Why? Because either someone will come up with some clever approach, and impress us all, or the issue really is impossible, which might point to a need that new or improved Java API's should address.

For example, consider pirategoose's message Transfering mp3 files from PC to smartphone...NEED HELP from today's Forums:

Fellow developer friends, i'm trying to develop a program in Java that allows someone to transfer mp3 files from his PC to his smartphone. My question is; - What Java technology can I use to do this? - Has such a thing been done before already, and if so, where can I go to see how it was done? - Is using JavaFX the answer and are there any tutorials pertaining exclusively to file transfer programs?

My first thought was "oh, dude, you are so hosed, and you wouldn't be if there were quality JSR-80 implementations for all platforms, so you could access the device over USB"

But then I got to thinking: well, what about other connection technologies? Maybe there's a Bluetooth story? After all, we ran afeature article on using Bluetooth with Java a few years ago, and checking it now, it lists a number of JSR-82 implementations for the various major desktop platforms. So maybe that's an option. Or maybe there's yet another valid approach, like with MMS messaging.

The community is creative; a clever solution may yet be out there. So don't pull out your hair just yet.

Furhter down in the forums, rasto1968 contributes to Linux L&F beautification in Re: swingx on Linux isn't very pretty: "Thanks Jan. I've had a quick go at getting things looking a little better this morning, I will raise an issue and attach my patches. Basically I have added a org.jdesktop.swingx.plaf.linux package and its associated look and feel setup class. I have then updated JXTaskPaneAddon and JXTitledPaneAddon to add defaults for Linux - all these do is make calls to the Metal add defaults so on Linux these components end up using the Metal Ocean look and feel which is much nicer than the Windows Classic look. I have had a quick look at the colours available from the look and feel defaults, but I can't see any that are particularly appropriate for the gradients used by these two components. I guess to do it properly it will really need 2 packages (linux gtk and linux kde), but until someone has the time to figure out how and where to get the relevant colours from this hack produces more pleasant visuals."

byhisdeeds is looking to improve a collection implementation in Best performing Least Used List. "I have a java application that requires me to sample hundereds of image files. To speed things up, I coded a Least Used List of a fixed size, of BufferedImages, that removed the least used entry when it required space for a new entry. I did this by using a priority queue to order a list of usage, as well as a hashmap to access the entries quickly. It works ok, but I'm looking to optimise it and was wondering if anybody could tell me whether a Least Recently Used alogoritim would serve my purpose just as well. This would probably be faster, as I just keep the most recently accessed entry at the head of the list, and remove the tail when I need space."

The latest Poll asks "How interested are you in learning JavaFX Script?" Cast your vote on the front page, then visit the results page for current tallies and discussion.

Our latest JavaOne Community Corner Podcast is j1-2k7-mtW04: Enterprise Data Mashup Service (EDMS) by Srinivasan Rengarajan. "The Enterprise Data Mashup Service Engine project aims at building a Open-Source JBI compliant Service Engine which features * Ability to create relational mapping for spreadsheets, flatfile, HTML table, xml sources (webrowset), XQuery Rowset, *Using Netbeans Database Explorer to browse source tables, * Drag-n-Drop these tables into the Mashup Editor to define the join conditions, * Ability to view the resultset using the Mashup editor * View Cache Management, * Transforming the response to various formats by composing the output with an XSLT Service Engine, * etc., and thus provides the mashed up views of enterprise data from heterogenous sources. These pre-canned, materialized views served by the EDM SE can be used by clients to build highly responsive and interactive Ajax powered web2.0 style enterprise applications using existing client-side frameworks."

In Java Today, the latest edition of the Java Tools Community Newsletter, issue 134, rounds up tool-related news from around the web, lists new projects in the community (NBString and ON), and offers a Tool Tip about web site optimization with YSlow.

The Roller Support Project provides themes, plugins and other add-ons for the Apache Roller blog server. Available resources include editor add-ins, themes,plug-ins(like JSPWiki plugin, Textile plugin, etc.), and JARs needed to run and/or compile Roller from source. Roller fans have much to look forward to, given the recent announcement of Roller 4.0 RC1.

Daniel Lopez has been busy in his series of blogs that compares scripting languages running on the JVM. In a previous Java Today blurb, we noted his initial entries, on Groovy, and JavaScript Rhino. In the subsequent weeks, he's taken a look atJython, JavaScript Rhino with E4X, PHP through Quercus, and JRuby.



You Do Or You Don't Blog

Posted by kfarnham Aug 16, 2007

Putting your method in lockdown

Usually, the "Not-So-Stupid Question" articles require a little back-and-forth with the readers who send them in. Some people send in a few paragraphs of thinking through the ideas, but in most cases I get a one-line question and need to follow-up to get more details.

Today's article is an example of that. The initial question was straightforward enough: how do you do something like theprivate access modifier, but reverse its effect, so that instead of preventing incoming calls, it forbids the method to make calls outside its own class.

It's not that I didn't understand the question, or have some thoughts about implementations (probably involving annotations), it's that I didn't see the point. My first reaction was "if you don't want to make an outside call, then, um, don't make any."

But the questioner made a case that this isn't as trivial as it might seem. What if you're on a team where you can't know (or trust) what others are doing with the code? What if you want to enforce a specific code hierarchy and eliminate cyclic references, and have too much code to permit auditing the contents of every method? I suspect that the context may speak to a broader need for static code analysis, but I'll leave that for the community to discuss in the comments on the article.

For now, I hope you'll take a look at this Feature Article,(Not So) Stupid Questions 18: Reverse Access Modifiers, which asks "What do you do when you want to avoid any calls from inside your own methods to outside classes," and offer some thoughts of your own.

In Java Today, a blog from Sun's Stefan Schneider offers A short Primer to Java Memory Pool Sizing and Garbage Collectors. He says the "Java SE 6.0 is doing a wonderful job in picking the right options for a system based on the available system resources." He explains the various HotSpot memory pools, their purposes, and their tuning, and then goes on to artificially misconfigure several pathological cases and show what problematic memory management looks like. But most users will never see cases like this, because 'the Java SE 6 Hotspot VM is doing an outstanding job to optimize its behaviour based on the existing hardware platform. The configuration of the maximum heap size ( -Xmx option) will be sufficient for most applications."

In the latest installment of the Java Mobility Podcast, MSpot brings the world of entertainment to the mobile phone. Derek Lyon of MSPOT shares their experience in using JavaME technologies on multiple phones, the custom frameworks the company developed, marketing, and how they identified the demographics of their target audience in delivering a whole host of entertainment products in both audio and video formats. For more information about MSPOT go to their website.

Daniel Spiewak feels he's got some explaining to do about a column in a recent Javalobby newsletter. In "Sun Open Sources JCK" Clarifications, he writes, "Almost immediately, I got several emails from people around the community, wanting to ensure that certain ambiguous or possibly misleading sections of my column weren't taken erroneously by the community at large. The two main points were as follows: Sun is not "open sourcing" the JCK, and Apache is interested in the JCK scholarship program, not the relicensing."

In today's Forums,ccvo wants to know How to automatically stop a Midlet when calling platformRequest(url). "I want to automatically exit my Midlet when calling platformRequest(url). So, I have tried the following ways, but the Midlet is still running after calling platformRequest():
The Midlet is likely to be re-invoked by AMS. Can anyone can help me?

Still in the ME forums, sschang123 is tracking down an native hang in Re: CVM hangs at CVMjniInvokeNative() on Montavista/Mips platform. "After tracing, I found it crashed at line 246 in invokeNative_mips.S. If I try to dump memory adress (a2), it will show "Can't access memory" in gdb. But a2 seems equal SWITCHBASE+SIGBYTE, and SWITCHBASE equals $arg_jumps in line 210. I have no idea about this. Is there any different in between one cvm executable and That's all I found now. Look forward to your suggestion."

Finally, wnast wonders about How to reuse a (un)marshaller without old data? "I want to reuse a marshaller and an unmarshaller in my program. Sometimes the methods marshall and unmarshall are called often of the (un)marshaller and the memory is OK. When I have a large XML-File that is used to marshall or unmarshall, I must remove(set the references to null) the marshaller or unmarshaller to free the large XML-File, or I can call the methode again with a small XML-File. Is it possible to clean the references of the marshaller/unmarshaller to the old data?"

In today's Weblogs, James Gosling reports on graphics innovation now that he's Back from Siggraph. "Siggraph has been a lot more interesting the last couple of years. For a while there it felt as though there was an algorithm for generating Siggraph papers: dig through 100 year old physics papers, then do the straight-forward brute force numerical evaluation. Moore's law creates magic."

In Temperature SPOT - Part 1, Manfred


Holiday Road Blog

Posted by kfarnham Aug 15, 2007

Spending the end of summer planning JavaOne 2008?

So yesterday, I'm dialed into the community leaders meeting and there's not much going on -- as evidenced by the fact that some of the community pages have gone a while without an update -- and as people are saying "hey, it's summer vacation" (in the Northern Hemisphere, anyways), kids are just going back to school in some parts (including mine, despite temperatures of 101F/38C), etc., I joke "hey, it's the usual post-JavaOne two-month lull."

To which someone replies: funny you should mention that, since we have our first JavaOne 2008 meeting later today.

If I were an RPG character, this would be the moment when I'd get a white word baloon over my head with a big ! symbol in it.

To be fair, he said that the first order of business was a recap/post-mortem/evaluation of J1 2007. But still, JavaOne 2008 is nine months away and some of us are already spending the summer planning for it? I asked if there were people at Sun for whom JavaOne prep is a full-time, year-round job, and it turns out there are (hmm... potential interview subjects?).

It's a big show, but do you suppose sometimes it becomes an end in itself, rather than a means to an end? That's something that's been scratching the back of my brain as I wonder if some of the initiatives from the show need to recapture their momentum. Has a pathology of "announce and walk away" developed in some parts? One project I work with, and that had its own BoF, has only had a handful of mailing list messages since J1, and some of those were already asking "is this project dead?" Yikes!

Put the waterskis back in the shed and come back to the keyboard a while, won't ya?

In Java Today, Arun Gupta has set up a wiki page collecting all the known screencasts about GlassFish. InYour Balcony in GlassFish Screencast Theater, he writes: "These screencasts range from Getting Started to Web services development, jMaki-enabled Mashups, JRuby, and Clustering feature." Readers are invited to edit the page and add their own GlassFish-related screencasts.

The JavaDesktop Community page is linking to a poll launched by Dieter Krachtus' blog AOT-CL and Democracy in Java - let's vote! The poll asks readers to "Tell us your 5 'Greatest Hits' for the future Consumer JRE", and includes choices relating to the JRE download and startup times, performance, modularity, self-updating behavior, and other proposed features. A good road-map to the current efforts may be found in Chet Haase's blog Consumer JRE: Leaner, Meaner Java.

The public review ballot begins next week for for JSR-286, Portlet Specification 2.0. The new version aligns with the standards introduced by J2EE 1.4, along with introducing access to CC/PP data (via JSR-188), portlet filters, inter-portlet communication and render parameters as defined by WSRP 2.0, enhancements to caching support and the portlet tag library, and more. Balloting begins Tuesday, August 21 and ends on August 27.

Our latest JavaOne Community Corner Podcast is j1-2k7-mtW10: Armenian E-Science Library Project by Barry Levine. "The E-Science Library Project is interersted in aggregating digital library services, as well as other digitized services, to make them available via a web-based server at American University of Armenia (AUA). We are seeking discounted digital library services from major scientific organizations (e.g., ACM, IEEE)."

Taking up a little-discussed topic, Igor


Wrong Blog

Posted by kfarnham Aug 14, 2007

How to describe the pro- and anti- language change camps?

I think you are doing a disservice to the cause of no language changes by labeling us as "conservative" in general and defining language changes as "innovation".

I wasn't sure if the term "conservative" would be too politically loaded to use to describe those who are generally against the proposed Java 7 language changes, but this comment onyesterday's editor's blog makes me think that the political baggage got dragged in where it wasn't wanted. Another said "I do not consider myself as being conservative. Not politically and not in daily life," while jwenting clarified "We aren't so much conservative as in "resisting change" [...] but conservative as in "cautious"."

My dictionary's definition of "conservative" (this is from theOxford American Dictionary that comes with the US version of Mac OS X, for what it's worth) didn't help matters by offering what is arguably a biased definition, saying that to be conservative is "cautious about change or innovation". Political conservatives probably don't consider the ideas they oppose to be "innovative" any more than this vocal part of the Java community feels that pining for closures ("just because Ruby has them", they say) is innovative.

In fact, my sense of the term goes way back to high school, when I did a presentation on the Greek comic poet Aristophanes. One of the sources I read made the claim that topical comedy is inherently conservative, in that it mocks the new, thereby implying the old ways were better. With this way of thinking, regardless of whether Arisophanes' favorite target, the Athenian Strategos Cleon, was "conservative" or "liberal" by any modern reckoning (if such reckoning even makes sense), there's a certain "conservative" sensibility in saying "the new leaders are asses and their stupid new ideas will lead us to ruin."

Then, compare that thought to this comment from the current poll feedback:

Give the generics, XML and closure fanboyz the boot. No, wait. Before you kick them out force them to clean up the mess they created during the last decade. And don't forget the hundreds of thousands of open bug reports in the dreaded bugparade.

But what do we call the relative camps proposing and resisting closures and the other language changes that have been suggested? And is it as simple as pro- and anti-change? Sure, some people write Java 1.4 code because they just like it better, but are there camps that just want to see Java's development take a different course, say, preferring to expose new functionality through new libraries rather than messing around with the language syntax?

Turning back to the Forums, which spurred yesterday's editor's blog, there's further discussion in the thread Re: Please stop promoting new frameworks and concentrate on Java stack, where the conservative cautiousjwenting, quoted above, goes on to write: "As said, there's a point in which it gets to be too much of a good thing Though it's slowing down a bit and there's some consolidation there was a time not too long ago when a new web framework for Java was released somewhere just about every day. The differences were often minimal, the bugs plenty. Had those people joined forces with an existing project rather than go their own way they could have had the same thing they coded themselves in the context of that project instead, making it better for everyone. Of course some concepts are irreconcilable with any existing "framework" and do warrant their own project. Things like Struts and Spring are too different at heart, shouldn't be one product."

krippa asks, Is it possible to use Glassfish as COSNaming service: "I am trying to bind a Remote RMI-IIOP stub in a naming service. Doing so by creating the default InitialContext doesn't seem to work. I read something in a thread saying that it is "because you are supposed to use the COSNaming service with IIOP". Isn't the default configuration in glassfish a cosnaming service (the one in Can I configure glassfish to provide one? How? Or do I have to bind my stubs with the naming service provided by orbd (<JDK_HOME>/bin/orbd.exe)?"

Finally, jsl123 needs some guidance on Calling WebService over Http. "Hi, i have an application that needs to talk to a web service that is implemented as a straight http get request and it is unlikely to change. If it was a "proper" web service, then i could use the java webservice client code to call it, however as it isn't i wondered if anyone could advise on the best cause of action. Firstly is it ok to make an external http call within a managed function (I was probably going to use a message queue around the calls as well to allow for timeouts, etc)? Are there any issues i should be aware of? Ideally the call would run in its own thread which is why i was thinking of wrapping it in a message queue. Secondly if the above isn't possible/advised, what would people suggest instead."

Danny Coward's thoughts about the Java 7 language proposals are a highlight of the Java Today section. "In light of some of the recent discussions about potential enhancements to the Java language, there has been general concern that the Java language will get too complicated and will be filled with esoteric features that only a few people want and will use." Danny looks at current proposals and the ideas behind them in Java Programming Language: Design Principles and Proposals. "As stewards of the Java Programming Language, we welcome such discussions and highlight some proposals here. " The article highlights the work being done in the Kitchen Sink Language project, and also links to some alternative views.

The JSR-291 (Dynamic Component Support for Java SE) expert group has posted their final release of the OSGi-based JSR. The spec defines a dynamic component framework for Java SE. "The dynamic component model supports assembly of applications from components and supports implementation detail hiding between components as well as lifecycle management of those components." An OSGI JSR-291 page hosts the spec, a reference implementation, and a TCK.

InfoQ's Niclas Nilsson takes note of the new multi-core era and asks Is Erlang the Java for the concurrent future, springing off of Ralph Johnson's blog Erlang, the Next Java. Niclas writes, "the Erlang take on concurrency differs from the mainstream languages by not having any shared state. The processes are very lightweight, and if a process wants to communicate with another process, it communicates by sending messages. This architecture makes it possible to scale and distribute systems in quite a different way than systems that uses shared memory for communication between processes or threads."

In today's Weblogs, Kohsuke


Shut Us Down Blog

Posted by kfarnham Aug 13, 2007

Are there too many Java frameworks?

There's a conservative streak running through Java advocacy lately. Not politically conservative, but in the dictionary definition of "holding to traditional attitudes and values and cautious about change or innovation". There seem to be a lot of developers in our community resistant to some of the proposals for changes in the Java 7 time-frame. This is something of a trend that followed the major changes of Java 5 (generics, annotations, enumerated types), though what initially appeared to be a reflexive "buyer's remorse" over generics seems to be more than that -- for every blogger saying generics should be torn out of the language, you can find another saying that Java needs to go further and have fully reified generics.

Still, the conservative voices are making themselves heard. Check out the current poll results. Asked "Which proposed language change would you most like to see in Java 7," the voters' current preference is "I don't want any language changes," ahead of all eight specific proposals. Of course, this could change by the time the poll closes on Friday. More importantly, there's a rollicking discussion on the poll results page. Some posts ask for language changes other than the options listed in the poll, while others say "leave well enough alone", such as jwenting, who writes:

For Java 7, lets just get rid of the marketing team that drives the language development and take the chance to actually get rid of a lot of garbage. Things like StringTokenizer, Vector, and everything deprecated.

And get rid of all the idiots proposing to add everything and the kitchen sink to the language "because Ruby has it" (or insert someone's favourite language) which is all the reason anyone's ever really come up with for such idiocies as closures, operator overloading, properties, multiple inheritance, embedded SOAP stacks and database servers, and just about everything else added since 1.4

There's a similar comment highlighted in today's Forums, in the Big Question forum (originally set up to discuss the possible open-sourcing of Java, and presumably superseded by The Big Answer). In a discussion of "What Developers Want",rjilani asks Please stop promoting new frameworks and concentrate on Java stack and tool. "I once learned Java not to "write once and run every where" but to "learn once and apply every where"; that spirit of Java has been gone long long time ago. The whole community has been robbed by shallow developers and shallow experts who doesn't know any thing better but to offer and promote a new framework every day. The sad part is that the whole community has no choice but to learn some one else stupid framework just because of the marketing hype and fear of not being left out from the herd. The life of most framework span is even shorter than the lifecycle of a decent project; and it give us nothing but yet another fail project with a bad name of Java being too complex."

Elsewhere in the forums, davjoh is trying to figure out Phone support for CDC/AGUI. "I've been looking at developing with the Netbeans Mobility pack for CDC, and it seems to only support AGUI. My current target devices are iPAQs running Jbed CDC/PP (which I currently have running J9 with stuff written on CLDC/MIDP). I know there are SDKs that you can integrate into Netbeans for Sony Ericsson CDC phones and Nokia Series 80, but is there not a generic(ish) one like the AGUI kit but for PP? Also, I've read that the only real devices that support AGUI are SavaJe-based (JavaFX Mobile now??) phones. Is this really the case? Because if so, it kind of limits the target audience. Does anyone know what, if any, devices support AGUI?"

Finally, there's the question which load balancers (web servers) can be used with Glassfish?"Along with sun java web server which has a plugin for glassfish, which other load balancers (hardware or web servers) can be used as load balancer? Can you please elaborate and give me some links to some resources about this?"

In Java Today,GlassFish's Eduardo Pelegri-Llopart has heard requests from JSP developers and is nowPreAnnouncing new GlassFish Subproject for JSP. "Separate projects encourate reuse and contributions but are more work and can create confusion so we wait before creating them. We have received several requests for a JSP project so we are going to create one. Please let me know (or just post here) if you are interested in this project."

Center Key Sofware has posted a tutorial on How to Create a Mac OS X Installer for a Java Application. "With some simple steps you can turn your Java Swing program into a proper Mac application with a native installer. The instructions below step you through the process from scratch with a sample program called "It's Showtime!", which simply displays the current time. Once you have successfully completed the tutorial with the sample Java program, modify the steps to work for your Java program."

The latest edition, issue 133, of the JavaTools Community newsletter is available, with tool news from around the web, new projects in the community and a graduation from the incubator (GAJET), and a Tool Tip on integrating Subversion with your Ant scripts.

In today's Weblogs, Greg


Check It Out Blog

Posted by kfarnham Aug 10, 2007

JCK license available for OpenJDK and derivatives

Compatibility testing has been one of the most contentious issues since the announcement of Sun's GPL release of its Java implementation. It's one thing to use the code, and quite another to be able to say that your runtime is "Java"-compatible. The assertion of compatibility has to be backed up to have credibility, yet some have complained that it's inconsistent to have the implementation open and the Technology Compatibility Kit (TCK) not be.

Yesterday, Sun announced the immediate availability of the OpenJDK Community Technology Compatibility Kit (TCK) License. In the announcement, they say:

The OpenJDK Community TCK License will enable developers to test the compatibility of their contributions to the OpenJDK project. It will also allow distributors to test complete implementations that are substantially derived from OpenJDK and distributed under GPLv2. Organizations or individual developers that use the OpenJDK Community TCK License and then successfully pass compatibility testing, will also have the option of branding their implementation with Sun's "Java Compatible" trademark and logo.

Rich Green's blog, Score Another for Clarity and Transparency, explains the value of this move:

So today we're taking the next step


Freedom's Road Blog

Posted by kfarnham Aug 9, 2007

Join us on the road to JDK 7

Is it enough that the GPL'ed open-source Java project is here on Maybe. But passing around plaudits for having the source out there is one thing, downloading and using the stuff is quite another. And we know that just saying "hey, there it is, go download it and hack on it or something" doesn't really do it for a lot of people.

As Java 7 comes together through this open-source process, we think that people could use a guide to what's new, what's going in, and how it all works. But who can show us the way?

How about Java in a Nutshell author David Flanagan?

We asked David if he'd be interested in a regular column that would feature human-readable highlights of what's new and important in the latest JDK 7 build, followed by a deep-dive into some new language feature, VM behavior, or library that's expected to be a part of Java 7. The result is The Open Road, a new column about the open-source development of Java 7. We plan to publish new installments monthly at first, and pick up the pace to bi-weekly as more new features start going into the JDK 7 project, probably around the end of the year.

David's first installment is today's Feature Article. In Looking Ahead to Java 7, he takes a high-level look at the OpenJDK and JDK7 projects and their processes, language changes that have been mentioned as possible candidates for Java 7, and major new APIs that are tracking for inclusion in the new version.

We hope you enjoy this first installment, and that over the course of the series, you'll be encouraged to download and try out JDK 7 and the various libraries that we'll be covering in future installments. David's current article surveys some of these libraries that are already in a fairly complete state, and these will probably be the subjects of the first few installments of The Open Road. If one or more of these topics is of particular interest to you, please post a comment about what you'd like to see in upcoming articles.

In Java Today, the GlassFish team has promoted their first release candidate of GlassFish v2. This promotion includes Clustering functionality and Microsoft Interoperability using WSIT. The downloadof RC1 (AKA "b58 Promoted Build") is available as source, and as binaries for Solaris on Sparc or Intel, Windows, Linux, and Mac.

Project jMaki is an AJAX framework that provides a lightweight model for creating AJAX-enabled web applications compatible with most server-side technologies, from Java to PHP. In Project jMaki: TheServerSide Video Tech Brief, Greg Murray, jMaki's project lead, discusses how to use it and participate in its development.

The debate over JSR-277 (Java Module System) and OSGi(JSR-291) is picking up steam again, with the JSR-316 (Java EE 6) submission restarting the previous debate about the overlap between OSGi and JSR 277. InfoQ's OSGi and JSR 277 debate continues to grow collects and summarizes several viewpoints and arguments around this debate.



Crumblin' Down Blog

Posted by kfarnham Aug 7, 2007

Learning from CORBA

Every few years -- or months, at the accelerating speed of tech marketing -- we're told a new silver bullet will allay all our problems, whether the topic at hand is GUI's, media, persistence, or what have you. For a while, CORBA was the way to do distributed systems. Yet today it seems all but replaced by newer technologies, such as web services (setting aside, for the moment, more exotic distributed technologies like Jini and Zeroconf). But does that make web services intrinsically better? Have web services magically rendered moot the Eight Fallacies of Distributed Computing identified by Peter Deutsch?

ACM Queue's post-mortem for CORBA, Corba: Gone But (Hopefully) Not Forgotten, cautions developers of web services and other distributed systems not to assume that all the Big Problems are already solved for them:

Using Web Services is no more a guarantee of building a good distributed system than using CORBA was a guarantee of building a bad one. Web Services cannot magically confer on a system design the ability to effectively deal with limitations in latency and bandwidth. It cannot remove the difficulties that arise from partial failures and dependencies on systems that may be temporarily inaccessible. Fortunately, people have been designing and building distributed systems for many years, often using technologies like CORBA, DCOM, and their predecessors. Don't assume that all that work has been superseded by the magic of Web Services, because there is no magic and the lessons of the past apply just as well today.

Also in the Java Today section, the latest Java Mobility Podcast takes a look at the Java Tools Community. Fabiane Nardon and Daniel Lopez, the Java Tools Community Leaders, talk about their community, mobile projects in the community, and how the Mobile and Embedded Community and Java Tools Community can work together. They also share their experiences in developing mobile applications.

In San Francisco and have the afternoon free? Sun Microsystems and Joyent are sponsoring a free JRuby on Rails Hack Day, from 2:30 to 8:00 PM, at the Axis Cafe. "August's Hack Day will introduce you to the benefits of including Java in your next Ruby app. We'll discuss how deploying JRuby on a open source JVM can scale your application and utilize the good aspects of Java EE - management, clustering, failover and monitoring. Additionally, you'll have the opportunity to code and deploy a JRuby on Rails application that harnesses the expansive collection of first-rate Java libraries."

James Gosling emerges from his annual multi-month post-JavaOne hibernation in today's Weblogs, saying It's been too long... "At work, life has been a good form of madness: working on the JavaFX plan, helping to make sure that all the pieces fit together and that everyone is building the right thing."



Hurts So Good Blog

Posted by kfarnham Aug 6, 2007

If Fake Steve hates Java, does his alter ego hate it too?

Ever called someone a "frigtard"? Or do you have a t-shirt that says "Dude, I invented the friggin' iPod, have you heard of it?" If so, you're presuamably a reader of The Secret Diary of Steve Jobs, a satirical pseudo-blog written by "Fake Steve", an hitherto-anonymous writer who assumed the Apple CEO's persona in a wide-ranging lampoon of the tech industry.

For months, people have been trying to figure out Fake Steve's identity, consistently getting it wrong, as when Business 2.0 surmised it was longtime Mac columnist Andy Ihnatko. But this week, theNew York Times finally unmasked Fake Steve as Forbes senior editor Daniel Lyons.

So, why am I writing about this on Because "Fake Steve" hates Java. Just query for "Java" on FSJ and you'll find a number of posts, all of them hostile. For example, reacting to a blog saying that Java needs its own Fake Steve, the real fake said "Guys I appreciate the imitation but, um, it's Java. Nobody cares about it. Bokay?" He claimed that the open-sourcing of Java made it officially worth zero. FSJ has also been generous in his abuse of Sun CEO Jonathan Schwartz, who he dubs My Little Pony, and Sun PR staffer he calls Java Gal.

Fake Steve's awareness of and interest in Java, even if hostile, is atypical of Mac people in general (the same could be said of his bashing of Linux "freetards"... Mac people generally think of Linux as "that OS that's good because it's not Windows, but bad because it's not Mac"). In fact, FSJ's Java-awareness was one reason I commented on the Business 2.0 article and said FSJ probably wasn't a prominent Mac writer, and might well be a funny Java or WebObjects developer (well, I was half right).

But here's the thing to think about... now that we know that Fake Steve is a Forbes senior editor, is it the Fake Steve character who's hating on Java, or the real Daniel Lyons? Because if it's the latter, then it's worth taking a step back and considering how Java's message is going over. Was Lyons just playing to Real Steve's famous iPhone quote that "Java's not worth building in. Nobody uses Java anymore. It's this big heavyweight ball and chain," or is Lyons himself resistant to the message that Sun and the Java community have been putting out?

If it's the latter, then this is a good time for us to have a perception-reality check.

In Java Today, the Early Draft Review is underway for JSR-297, the Mobile 3D Graphics API 2.0. "This new revision of M3G (JSR-184) will expose the latest graphics hardware features on high-end devices, while improving performance and memory usage on the low end." Among the JSR's goals are reducing the performance difference between Java and native apps, improving compression of 3D art assets, and maintaining the compactness and simplicity of the earlier version of the API. The Early Draft Review closes on August 25.

Web applications use HTTP to exchange data, which means that the HTTP-supporting Java ME is perfectly capable of using web apps. But what about the format of the data? In SOA Without SOAP: The Java ME Perspective, Eric Giguere argues that inconsistent support for the Web Services API's for Java ME (WSA) and the implicit overhead of SOAP should have pragmatic ME developers looking for alternatives, ultimately concluding that "the ideal web service for our purposes is one that uses a simple REST-like interface."

Now that real-time Java virtual machines support scoped memory, defining common patterns for scoped memory usage can improve developer productivity. These patterns reduce the need to understand or work with scopes directly by providing scopes' core functions with less complexity. The article Simplifying Real-Time Java Development introduces the Lifecycle Memory Managed Periodic Worker Threads pattern as a model for simplifying real-time Java development. It demonstrates the pattern's feasibility through a sample implementation and simple example application.

In today's Weblogs, David


Check It Out Blog

Posted by kfarnham Aug 5, 2007

Iris is finally ready for its close up

If you were at JavaOne, you might have crashed for a while on the bean-bag chairs in Moscone North at one point, watching a collection of Java demos, previews, and flashbacks up on the video wall. Some new projects created their own introductory videos for the video wall program, and one was Iris, a rather remarkable web-based photo management application. What's impressive about Iris is not only the application's functionality, but how it accomplishes it. The experienced web developer will notice the application permits dragging-and-dropping of photos to the Iris application's web page, along with full-screen viewing of photos, and the clueful observer may well wonder "how the heck did they do that?"

The secret sauce is Java 6, with enhanced functionality for applets, native desktop integration and more. So we're featuring Iris in this week's Spotlightsection. Among its significant features are interoperation with JavaScript on all major browsers, native desktop integration to support "drag and drop to the web", Java multithreading to hide network latency, advanced graphics handling, and dynamic extension of applets with technologies like OpenGL, OpenAL, and Java Media codecs.

In Java Today, the San Diego JUG is announcing an appearance by Java founder James Gosling, at a special meeting tomorrow, August 8. The meeting, held at 6PM at Intuit, has cleared out a two-hour block for "conversations with James", wrapped up with prize drawings and a mixer. Would-be guests are asked to RSVP in advance.

Yori Mihalakopoulos has released Public Preview 2 of MochaCode a Mac-only Java IDE. The new version improves syntax highlighting, error highlighting, code completion and editing in general, has a new look and feel for code completion, adds error and warning icons to the gutter and tabs, adds a crash reporter, and fixes a number of bugs. Version 2.1, released a day after 2.0, fixes a few more bugs.

InfoQ notes a Lifehacker blog about OpenOffice's adoption of Groovy and wonders about the prospects for Groovy as a business user language? "With its inclusion into OpenOffice as the VBA equivalent for that suite, Groovy has an opportunity to become something that Java will never be: a tool that business power users use to customize their office suite and build workgroup applications."

Today's Weblogssection begins with a blog from Kohsuke


Burn Your Life Down Blog

Posted by kfarnham Aug 3, 2007

Where's your career going?

For my 40th birthday, my wife got into my e-mail address book (yes, we know each other's passwords... no keeping secrets around here) and recruited some of my friends from high school, college, grad school, and work to send in pictures for a Shutterfly photo album. As we went over it here at my parents' house, they asked what each of my friends was up to, and one of the interesting recurrent themes is how wildly variant most of our careers have been.

One high school friend worked in Sony's legal department, built up a war chest, then left to go back to music/film school to switch careers to TV and film scoring (he's currently doing music biz consulting on the side while he tries to get a foothold in the scoring industry). My predecessor here at, Daniel Steinberg, has been a radio DJ, a college instructor, a contract programmer, an author and editor, and now has a hugely successful podcasting career going (among many other gigs, he produces the Java Mobility Podcast). Heck, exactly ten summers ago, I had just abandoned a writing/producing career on the CNN Headline News evening shift in favor of trying my luck in the market for Java programmers.

It seemed like there was only high school friend I could think of who was doing the old-fashioned career of going to a big company when you're 23 (General Motors, in this friend's case), with the anticipation of staying there until retirement.

So, given that change is the only constant, where's your career going? Specifically, what do you want to be doing in the future, and what are you doing to get there? Ours is an interesting industry in that the demand for highly skilled programmers is at least as well-compensated as management, if not more so (surely I wasn't the only one who noticed this while listening to last week'sJava Posse podcast, with Joe Nuxoll talking about his new sportscar, Carl Quinn talking about his on order, and Dick Wall boasting of a custom recording studio being built in his new house... "Filthy Rich Clients", indeed!). And because of the perpetual demand for developers, we have the option of sticking with development as long it suits us.

And all this career thinking and planning leads us to the Poll, which asks "What would you like to be doing in five years?" Cast your vote on the front page, then visit the results page for current tallies and discussion.

Our latest JavaOne Community Corner Podcast is j1-2k7-mtT06: The JENI Project by Frans Thamura. Codenamed JENI, JEDI Indonesia is an integrated service for University students to learn, share and develop solutions using Java. The project includes implementing JEDI as the default curriculum with the addition of other popular frameworks. JENI is a project of the Ministry of Education, and supported by Indonesia Go Open Source (IGOS) Team, the Indonesia JUG, and Sun Microsystems. For more information, visit

Rememeber the decision to put JavaDB in JDK 6? Cay


So Jealous Blog

Posted by kfarnham Aug 2, 2007

Imagine getting paid to hack on your open-source project

At the CommunityOne event that preceded this year's JavaOne, Rich Green brought up an argument that the use of open-source model is not compensating its value-creators properly. He called it "a worrisome social artifact", and made the analogy that it's "Robin Hood backwards", as quoted in a blog by Janice J. Heiss:

"We are stealing from the poor and making other people rich and this seems very bad. Humans will not do this, nor should they have to. We have to look closely at working with those who contribute to the open source but whose contributions generate revenue for Sun and share that wealth."

Granted, its not like many many developers can claim poverty -- their day jobs generally pay a lot better than other pursuits -- but many developers want a piece of the wealth that they create when the code they give away is used by others.

But imagine this: what if you had a project with enough value that someone building a project on you were to pay you to add new features? I actually had that happen with a project of mine once, and Joshua Marinacci reports the same thing happening with one of his projects, the very popular and successful Flying Saucer project. When he asked me what he should do with the request, I suggested he put it out to his project's community by way of a mailing list entry or blog entry, which he's done with the blog post Want to get paid to work Flying Saucer?

So in this case, there is an offer on the Flying Saucer mailing list to embed Flash SWF files into a PDF document produced by FS. This doesn't mean displaying the Flash file, just embedding using a particular PDF extension so that Acrobat can read it. If you are interested there are more details available on this mailing list thread.

Also in today's Weblogs, Billy


Back In Your Head Blog

Posted by kfarnham Aug 1, 2007

Voices that podcast listeners just can't get away from

It's a curious thing to know people primarily by the sound of their voice, as I imagine a lot of people know the Java Posse members by their voices and the banner picture atop their web page. Actually meeting these people in real life can be a little odd at first -- you're instantly familiar with the voice, but not so much the face, the body, the mannerisms, etc.

It's also funny when familiar voices move around your podcast client, like when someone you know shows up as a guest on a podcast, or when podcasters appear on each other's shows. The Posse did this earlier this year when they did a crossover episode withDrunk and Retired.

And if you're already listening to the Posse and the NetBeans Podcast, then get ready for some more cognitive dissonance. Episode 32 of the NetBeans Podcast is an all-Ruby session as Posse member and developer Tor Norbye joins evangelists Roman Strobl and Gregg Sporar. Listen in as Norbye discusses his work on Ruby support in the NetBeans IDE, features he wants to implement, why Java developers should consider Ruby, ways for the community to contribute to the project, and more.

Also in Java Today, InfoQ recalls the pre-JavaOne controversy over TCK licensing in their update article Apache JCK Request Hits 90 Days without Resolution. "More than three months have passed since Geir Magnusson Jr., VP of Apache Harmony, published an open letter to Sun Microsystems demanding that they should remove "unacceptable" restrictions in the Java Compatibility Kit (JCK) license. [...] At present 90 days have passed with no further response."

Have you ever wondered what it is like to lead a JSR through the JCP program? Or are you a current Spec Lead who is interested in tips based on the experience of others? Learn more as the JCP continues its profile of the JSR process in The Life of a Spec Lead: Part III, Cycling Through the Draft Reviews

Returning to the topic of podcasting for a moment, our latestJavaOne Community Corner Podcast is j1-2k7-mtH04: NetBeans tools for developing OpenESB composite applications by Tientien Li. This mini-talk will overview Netbeans based developer tools available for OpenESB composite application development. It consists of a quick tour of the IDE-based development workflow with demos of following topics using Netbeans 6.0 tools and OpenESB run-time

In today's Weblogs, Jayson

Filter Blog

By date: