Skip navigation
ANNOUNCEMENT: community.oracle.com 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.
kfarnham

Poor Unfortunate Souls Blog

Posted by kfarnham May 31, 2007

Mac Java developers keep waiting for JDK 6

It was hard not to notice all the Mac laptops at JavaOne, even in the general sessions, where the presentation stands often had three or four MacBooks lined up side by side for the demos. An uninformed observer might be inclined to think that the Mac was the best and most popular platform for Java development. They probably wouldn't suspect that the Mac is, in fact, nearly a year behind the Java mainstream, and not for the first time.

During JDK 6's development, Apple had been releasing Developer Preview releases of a JDK 6 implementation that were generally just a few betas behind Sun's official version. But when JDK 6 went final last fall, Mac users kept waiting, and are now still waiting, for a release-quality version for the Mac. The last drop, announced in September 2006, represents b88, a fairly late beta, but a beta nonetheless. While it's satisfactory for many, it still causes problems. For example, if you're working with JDK 6's programmatic access to javac, b88 still uses the class nameJavaCompilerTool, while the final JDK uses JavaCompiler and has a few other API changes. The result is that you can't easily write a cross-platform app that uses this feature if you want to support the Mac, something I found out the hard way when I developed a Glossitope desklet that used this API (I still need to formally fork my code into Mac and non-Mac versions... what's on Josh & Rob's site now usesJavaCompilerTool and thus is still Mac-only).

Problems like these, compounded by the complete absence of any guidance from Apple about the situation, has some people asking if it's worth it. In fact, it has JavaLobby's Matthew Schmidt askingIs the Mac really a good dev platform? He's kicked off a lengthy discussion by asking "besides having a slick command line and nice interface, is the Mac really worth it for Java development? Your JVM version will always be behind, you're paying a premium for the Mac hardware and Apple has always treated Java like a bit of a second class citizen. So, why do you keep sticking with your Mac?"


Also in Java Today, the 123rd issue of the JavaTools Community Newsletter is out, with tool news from around the web, a list of new projects in the tools community, and a Tool Tip on converting your CVS-based java.net project to use Subversion.

In Java Mobility Podcast #6: Vodafone Introduces Betavine Developer Portal, Roger and Terrence interview Steve Wolak and Peter Thompson from Vodafone about the new Betavine site, a research and development space that encourages collaboration in mobile and internet communications. As a Betavine user, you can download and test applications, create your own projects and blogs, and interact with other users.


Apropos of the earlier topic of Macs and Java, the latest java.net Poll asks "Is the Mac a good Java development platform?" Cast your vote on the front page, then visit the results page for current tallies and discussion.


Today's Forums have one more Mac-related item, in which pepe asks about Java3D's status on osx: "In the company i work for we are actually checking various platforms for one of our upcoming product (netbeans and java3d based). We are investigating the use of a mac pro (with 4 geforce so that we have 8 displays.. yay!!). Has anyone used java3d on macs? What is your experience?"

aberrant has deployment problems on a different platform, in Launching a java application under windows: "Our product uses a batch file to launch our swing app. We are running into a problem though because Windows 2000 has a command line limit of 2047 and our classpath is starting to hit this limit. Is there some other way to pass the classpath to the JVM?"

Kirk Turner has some help for getting started in Project Wonderland in Re: Create a sample world: "I'm sure Paul et al will be able to give more information about this, but in the mean time, I've spent some time over the last couple of days modifying the world to use my own models. The first point of call is to have a look at the (wikiat the section about the Extending the world and Content Creation. The useLocalArt flag wasn't working for me, so I had to serve the content from my local apache (I added a few more instructions to the wiki for this). You then need to create your content and get it into a j3s format (compile java3d stream)."


In today's Weblogs, Carol McDonald has a tutorial on Pagination of Data Sets in a Sample Application using JSF, Catalog Facade Stateless Session, and Java Persistence APIs: "This Sample Store Catalog app demonstrates the usage of JSF, the new Java Persistence APIs, an EJB Stateless Session Bean to implement pagination in a Java EE 5 application."

Arun Gupta checks in with a href="http://weblogs.java.net/blog/arungupta/archive/2007/05/google_develope_1.html">Google Developer Day Report: "All in all, it was a great crash course for different Google offerings. It's a very long entry, so feel free to skip around, look at the pictures or read notes from sections of your choice."

Finally, Kirill Grouchnikov reports on major Substance development in Listening to the users part III - theme transitions: "A very small request has resulted in the most significant rewrite that I have made in the last two years. Read inside on what has happened."


Current and upcoming Java Events :

Registered users can submit event listings for the java.net 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 java.net it will be archived along with other past issues in the java.net Archive.



Mac Java developers keep waiting for JDK 6  
kfarnham

Reflection Blog

Posted by kfarnham May 30, 2007

Contemplating the end of checked exceptions?

There's already been discussion of how to remove features from Java, most notably in a Mark Reinhold blog from last year and JSR 270, the JDK 6 release contents JSR. Thusfar, however, the discussion has primarily been around removing API's that are little-used or obsoleted by better successors. Surely nobody's talking about blowing away language features, especially ones that have been around since Java 1.0, right?

Well, actually...

Neal Gafter unintentionally happened across this course of action in the discussion of his closures proposal for JDK 7. As he writes in his blog Removing Language Features:

As a language grows by the addition of features, it necessarily gets more complex. After all, you can't remove existing language features because existing programs use those features, but each additional feature adds complexity. Right?

Fellow Googler Matt Shulman asked me a question about the Closures for Java specification. He observed that much of the complexity arises because of support for checked exceptions in the spec. Things like throws type parameters, disjunctive types, and throws clauses on function interfaces would be unnecessary without checked exceptions. Matt asked me if we had considered if things would be simpler without all that. [...]

Matt clarified that he was asking not just about removing support for checked exceptions from the Closures spec, but from the entire programming language.

This is a striking proposal when thought through all the way: could you horse-trade checked exceptions for a cleaner closures implementation? For those who don't like checked exceptions -- and there are a lot of them -- this has win-win written all over it. On the other hand, those who like checked exceptions and don't think closures are a good match for the language will see this as nothing short of a disaster. And there's also the problem of how such a radical change could even be kept compatible with existing Java implementations, or if this will necessarily lead to breakage, as discussed yesterday.

I am soooo staying out of this one. It's up to you guys and gals. Have at it...


Also Java Today, Builder.au interviews Bob Brewin in the article JavaFX Sends Sun Back to the Future? "Can Java's new eye candy engine -- JavaFX -- be the tonic to revive Java's flagging fortunes client-side? Sun's chief technology officer for software, Bob Brewin, certainly thinks so as he discusses the issues facing Sun with JavaFX, will it put Java back on the desktop and if the GPL licensing of Java warrants a re-license for CDDL projects. BuilderAU caught up with Brewin at the recent JavaOne conference."

With increasing number of features to support, growing code bases, and large teams to work with, developers naturally look to automation as a path to ensuring code quality. According to Matt Quail, a partner with Cenqua, however, some things about code quality are hard, and even impossible, to automate. In Artima's audio interview The Value of Code Reviews, Matt Quail of Cenqua talks about the role code reviews play in the development process.


The latest JavaOne Commmunity Corner Podcast is on Keaton: Calling QTKit from Java. "Want to play audio, video, or multimedia in a Java application? QuickTime for Java opened the door to Apple's extensive QuickTime library, but times are changing and QTJ seems headed for deprecation. In fact, Apple is pushing Mac developers away from the old procedural-C QuickTime API altogether. In its place is a new object-oriented, Cocoa-aligned framework called QTKit. Great for Objective-C programmers, but what about the Java crowd? The Keaton project, something of a successor to Lloyd, will create a one-to-one mapping of Java objects to Obj-C objects, so you can work with QTMovies and QTMovieViews directly in Java code. Come see this talk to see how it works and how you can use it in your Mac Java application."


In today's Weblogs, Gregg Sporar is still Talking About JavaOne 2007: "The topic for May's meeting of the Austin Java Users Group was JavaOne. Along with three others, I shared a few thoughts with the crowd. It was a very interesting discussion."

Jean-Francois Arcand has a Grizzly update in JRuby on Grizzly 1.5 now ready.....with asynchronous request processing support and soon Comet!: "The very tiny JRuby on Grizzly module is now shipping and will soon be part of the Grizzly official distribution. This release also support Asynchronous Request Processing, which is something new for the JRuby community."

Finally, Eamonn McManus has some new information on Custom types for MXBeans/ "MXBeans map between arbitrary Java types and a fixed set of types in javax.management.openmbean called the Open Types. Up until now the mapping rules were fixed. In the Java 7 platform, we're planning to allow customization of the rules."


In today's Forums,wilkinp wonders Can JPA cope with a dynamic schema?: "I just need a quick sanity check here please I suspect that if I had a database schema where the number of columns in a table changed at runtime (i.e. the table definition is controlled by the application user), there is no way to effectively annotate a collection (representing the columns) dynamically at runtime. I realize I could avoid the dynamic column definition by moving what would have been the columns into rows, and giving each row a "column id", but I'm reluctant to do this as I'll end up with a massive number of rows."

techwriter needs to swap JavaHelp implementations in Need an alternate Javahelp search engine: "I have been facing this problem with JavaHelp for a few months now. I have created a JavaHelp system for my application and it works absolutely fine. However, I am not happy with the way the search works. As the JavaHelp search engine uses relaxation ranking and morphing, it returns strings other then what is needed. For example: if i give a search for "Workflow Modeling" it returns "modelling" or "workflow" or "a weird string that has workflow and modelling separated by even 20 words". I want my search engine to provide exactly the word i have searched for."

Finally, ellingdr asks about Namespaces included in XML Response. "How does JAXWS determine what namespaces declarations to include in the xml response of a web service call? My WSDL imports a couple of additional namespaces used by the request, however, the data types that make up the response are from a single namespace. The XML response includes the declarations for the unused namespaces. Does the response simply include all namespaces that are declared within the wsdl?"


Current and upcoming Java Events :

Registered users can submit event listings for the java.net 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 java.net it will be archived along with other past issues in the java.net Archive.



Contemplating the end of checked exceptions?  

Should JDK 7 be allowed to break earlier Java code?

A few years ago, Elliotte Rusty Harold posted the article Ten Reasons We Need Java 3.0, in which he proposed a number of changes to Java that were big enough, and disruptive enough that they would require breaking backwards compatibility for Java code. Maintaining compatibility is one of the most consistent goals of Java, so this was obviously a controversial proposal. Nevertheless, it's hard to see how you get to something like, say, 4-byte chars to better support Unicode, without causing serious breakage.

The idea comes up again in today's Forums, in whichabu_abdulla_alhanbali raises the prospect of breaking compatibility with Java 7 for java 1.3: "I just want here to discuss the issue of breaking the compatibility for Java 7 to run application written in Java 1.3 or less. In addition what about breaking the compatibility for the OS (i.e. Windows 98, 2000 - Linux kernel 2.2 - Solaris 8) What we will gain for this in terms of memory, performance, size, enhance language architecture, ..."

What do you think? Are there needed changes worth breaking compatibility for? Is the need to break compatibility just illusory? Jump in the forum and tell us what you think.


Also in the forums, tsegaselassie is developing an ME app with NetBeans and needs direction on Loading Fonts in Netbeans 5.5: "Here's my deal, I'm trying to make a localized SMS message application using a certain font. Now when I was using the default J2ME toolkit provided by SUN, I knew how to load the file. I just changed the default font for the emulator and I worked like magic. However after sometime I can across Netbeans Mobility and I wanted to port my application to the IDE. The application works fine but since the font is not specified with in the application all I see are just hollow squares. So what I need is to know how to load the font in my application and bundle it in my application as a resource."

rah003 disputes a proposed SwingX painter-caching change in Re: Painters are no longer cached by default: "IMHO shouldUseCache() should by default return whatever isCacheable() returns whether there are any filters or not. This method should be protected so that overriding classes can implement their own caching policy following whatever business need they have. Or it could be externalized completely by having PainterCachingPolicy set in AbstractPainter and letting that (PCP) class to decide whether cache should be used or not."


The latest JavaOne Commmunity Corner Podcast is on Open Software Factory, an ongoing process to develop a set of tools and a corresponding set of methods for effective Model-Driven Software Development (MDSD). "This talk will begin with a quick overview of basic MDSD concepts. The remainder of the talk will discuss how the Open Software Factory supports MDSD. We will summarize our current achievements and briefly outline our plans for the future. The talk will share our project's experience in both developing Open Software Factory and applying it to develop to simple 2 Demonstration applications."


In Java Today: Charles Ditzel links to a video with a revelation of a suprising JavaFX feature, in JavaFX PDF Viewer: "I forgot all about this and I shouldn't have - at Chris Oliver's talk on JavaFX Script at JavaOne he showed a very elegant application for viewing PDF files. The way he showed it was quite interesting, he went through a number of slides and then showed a demo of the Swing PDF version - then everyone expected him to show the JavaFX Script version and he surprised everyone by pointing out that the elegant app he was using for his presentation was the JavaFX PDF viewer..."

In a blog linked from the JDK community, Alex Miller argues forMake static typing work for you: "Java is statically typed and this pervades the design and code written in it (regardless of whether you think that is a good thing). If you try to subvert this using reflection, you are working against the language and losing the major benefits of static typing, such as the ability to refactor, compile-time type checking, etc..."

Hot topics discussed in the 29th episode of the NetBeans podcast include the release of NetBeans 5.5.1; a Glassfish debate and demo; the goldmine of technical articles loaded into the third issue of NetBeans Magazine; and what happens to those who bet against NetBeans. And as always, the NetBeans Puzzler.


In today's Weblogs, David Herron considers the Badness of open source business models: "Dave Gilbert has an interesting blog entry, The Badness of JFree, quoting an email he received complaining about the business model he uses with JFreeChart. This points to a bigger issue of different ways to monetize work on an open source project."

Evan Summers has a tutorial blog on Java SSL Sockets: "We build a trivial client/server demo using SSLServerSocket and SSLSocket as provided by the Java Secure Socket Extension (JSSE). We create a self-signed public key certificate for the server using keytool, and install this on the client."


Current and upcoming Java Events :

Registered users can submit event listings for the java.net 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 java.net it will be archived along with other past issues in the java.net Archive.



Should JDK 7 be allowed to break earlier Java code?  
kfarnham

Topsy Turvy Blog

Posted by kfarnham May 28, 2007

When is an applet not an applet?

Everyone knows what an applet is, right? It's a dedicated part of the browser's rendered space, into which Java code can blit some pixels.

Except... what if there are no pixels? What if the applet's real purpose is to maintain client-side state for a web application? And what if it can do this by using an interesting classloader trick to allow that state to survive theApplet.destroy() method? Open up the definition of what an applet is, does, and can be, and you might find some surprising functionality.

This is the premise of today's Feature Article,Track Conversation State on the Client using Applets . In it, Ganesh Ram Santhanam shows how exploiting this trait of the Java Plug-In allows an applet to maintain client-side state and provide it to your webapp's JavaScript code.


In Java Today: the ME Application Developers Project within the Java Mobile & Embedded Community is solely dedicated to the business of application and content development on mobile and embedded Java platforms. It contains a gallery of ME applications, and popular links to help, and can help you find the resources you need -- demos, source code, tools, and tips -- and learn how to connect with the community.

A new article at Artima, Lexical Scope of Java Inner Classes and Closures, is comprised mostly of a big table, one which compares and contrasts an intresting and important concept in the debate over the various closure proposals for JDK 7. "One of the key differences between the different Java inner class and closure proposals is the lexical scope of names, this blog compares the scoping of the major proposals (CICE + ARM, C3S, FCM + JCA, and BGGA in both its forms). The order in the comparison table[....] from left to right, is how large a change is made to Java."

ONJava blogger Timothy M. O'Brien continues his series on digging into JavaFX with a pair of updates in JavaFX: New WYSIWYG Editor + Ramani Updates on License. "Think we have to wait a few years for good tool support in JavaFX? Think again, there

Anything to learn from JavaFX Mobile's early critics?

A friend pointed out a blog about JavaFX Mobile and the Java-based phone to run it: Sun Tries to Jump on iPhone Bandwagon with jPhone. Posted just after JavaOne, it's highly dismissive of the prospects of delivering a successful product in the mobile space and competing with Apple's iPhone. The site, Roughly Drafted, is a Mac evangelist online magazine with a wide-ranging view of the computer industry and an overwhelming inclination to smack down any who would criticize or compete with Apple. In their eagerness to slam Sun in support of Apple, they've uncorked a few claims with an utterly Dvorak-ian detachment from reality, like this one:

Of course, there's also the fact that Sun has offered its Java 2 Mobile Edition for years, a mobile platform that has done little to advance the state of the art in cell phones and really nothing for consumers at all.

Despite its promise to enable 'write once, run everywhere' mobile software for all phones, J2ME is really better described as 'write once, debug everywhere, sell nowhere.'

While ME developers do complain bitterly about inconsistent implementation across devices, the claim that the technology has done "nothing for consumers" is ridiculous bordering on obscene. Without ME, how would mobile applications be developed? As native binaries for each model? With Brew? The walled gardens of mobile providers may be pretty restrictive, but I can still get far more (and more interesting) games and other applications for my two-year-old ME phone than I can get, say, games for a video iPod (Apple offers only a sorry 14 titles after nine months in the market).

So, given that the author's affection for Apple has seemingly gotten the best of him, is there anything for the Java crowd to learn from this piece? I do think his core argument is actually pretty good, once he calms down and get to it. Using a somewhat tortured analogy of competition among sandwich shops, he notes that the iPhone enjoys an integrated system of proven pieces -- Apple's hardware manufacturing and software development prowess, its reputation, its retail stores for sales and support, its iTunes Store for media delivery, etc. By comparison, JavaFX Mobile is simply a mobile application development environment, in search of device vendors who can make use of it. By analogy, Apple is a chain of sandwich shops, while JavaFX Mobile is a single pickle that Sun hopes others will build a sandwich chain around.

This is, at least, an interesting point in understanding the context of JavaFX development. For the platform to succeed, we need to see where it will serve the self-interest of other relevant parties: device makers, network providers, etc., unless some or all of those parties are going to be Sun itself. JavaFX Mobile has the advantage of being developed by people who know what they're doing -- Roughly Drafted's insults aside, ME is on billions of devices because it works -- and will eventually enjoy the advantage of being open-source. Maybe that's enough to succeed, maybe it's not. The key will be in providing real value to outside parties, not just good demos for the home crowd.

That's why I read stuff like Roughly Drafted -- when we can win over the guys who currently don't like us, then we'll be unstoppable.


We continue the JavaFX theme in the Java Today section. Obligatory keynote demos notwithstanding, many conference attendees were baffled as to just what JavaFX meant. in a six-minute audio interview with Artima entitled Jacob Lehrbaum Explains JavaFX Mobile, Sun's client systems group product line manager describes the mobile version of JavaFX, and provides the big picture of where JavaFX fits in with other client-side Java technologies.

The SDN has posted an interview with JavaOne Rock Star Josh Bloch. In it, the Java Puzzlers co-author discusses promoting the use of Java at Google, the open-sourcing of the Java platform, attitudes and misconceptions about Java, his favorite API's, and his thoughts on the future of Java and other languages that might run on the JVM.

A JavaLobby discussion asks Is There a Consensus on Fixing Generics for Java 7? "Seeing as closures and properties are still quite disputed, I was wondering whether there was any consensus on introducing Reified Generics for Java7 instead."


Bhakti

kfarnham

Fumbling Towards Ecstasy Blog

Posted by kfarnham May 25, 2007

Let the OpenJDK forking race begin?!

Well, we knew there would have to be forks of the JDK once it went GPL; David Herron pointed out last month that this isn't a bad thing, because the risk of a hostile fork is low, due in part to the cost of maintaining a fork. So who's forking and why?

RedHat, for one, and for a good reason: they're launching an effort to package the OpenJDK for their distro, and further down the line, they'll try to incorporate parts of GNU Classpath to replace the "encumbrances" that prevent the OpenJDK class library from being 100% open-source. So it's a good thing... but it's still a fork. After all, there might be (heck, almost certainly are) other projects attempting using similar approaches to plug in parts of GNU Classpath to remove the encumbrances, and since they're derivatives of the original OpenJDK, and all different from one another, they're all OpenJDK forks.

We knew this was coming. It's OK. In fact, isn't this exactly what Sun asked for at JavaOne when they asked for help eliminating the encumbrances? Maybe they hoped that work would be done largely in the context of the OpenJDK project, but even if it's not, putting the GPL on OpenJDK means these derivatives must also go GPL. So long as the forks don't diverge too much from the original project, their work may still be mergeable back into OpenJDK.

I wonder when OpenJDK will be able, through their own work and what they can collect from the forks, to offer a completely open-sourced class library. With so many eyes on the effort, this is probably a question of "when", not "if". In fact, it would probably make a good poll question for next week...


Anyways, let me return to the posting that kicked off this editor's blog. Topping Java Today, a blog at fitzsim.org spells out RedHat's Plans for OpenJDK. "Our team at Red Hat has been doing some planning now that OpenJDK has been released..." After summarizing the post-JavaOne state of OpenJDK, the blog spells out RedHat's intermediate goals: package OpenJDK as "IcedTea", build it with free software, set up a related project on classpath.org, test without the encumbrances, try to replace encumbrances with parts from GNU Classpath, and more. "We're in an investigation stage right now, so precise timelines will have to wait until we've had more time to discuss the OpenJDK codebase and Sun's timelines."

The Mobile & Embedded community home page is featuring C. Enrique Ortiz's blog from the last day of the 2007 JavaOne conference, in which he discusses his participation in a debate during Motorola's keynote session, with Padmasree Warrior from Motorola and Ajit Jaokar from Open Gardens. You can also view thewebcast of the debate.

Issue 122 of the JavaTools Community Newsletter is available, with tool-related news from around the web, updates from community projects, announcements of new projects that have joined the community, and a Tool Tip on finding bugs on Web applications with FireBug.


Sliding into the Feature Articleslot is the latest mini-talk recorded at JavaOne 2007: j1-2k7-mtT03: Web continuations with RIFE and Terracotta, by Geert Bevin. "State management has always been a complex and tricky part of web application development. Continuations simplify this and automatically allow you to create a one-to-one conversation between users and a web application. State preservation and flow control no longer need to be handled manually, bringing you back to the simplicity of single user console applications. Remember 'scanf()'? This presentation will introduce continuations from general principles, followed by practical examples that explain how they benefit web application development and their frequent usage patterns. Finally, automatic fail-over and scalability will be demonstrated through the integration with Open Terracotta."


Chet

kfarnham

Train Wreck Blog

Posted by kfarnham May 24, 2007

Getting the editor back online

Apologies for the hastily-assembled front page and the copy-and-paste-only editor's blogs over the last few days. Let's just say that Keagan had the worst fifth birthday party ever, and that's why I spent most of the last three days at the hospital or helping care for him at home.

Normal editorial service will resume once I get back on my feet and dig through the 65 non-junk e-mails that have piled up since Monday.


In Java Today, the latest installment of the Java Mobility Podcast offers A Talk With Java ME Expert C. Enrique Ortiz, "a recognized mobility expert, renowned blogger, developer, and author, who touches on a range of mobility topics in this interview, including: moving to CDC; the latest JSRs that are important to mobile developers; mobile AJAX; and the issue of device fragmentation."

Presentations from JavaOne 2007 are now online at the JavaOne site, specifically the JavaOne Online Technical Sessions page. PDF's of technical sessions and hands-on labs are available now, while multimedia presentations will be made available over the next month.

Blogger David Chappell has a followup question following JavaOne's warm fuzzies: Supporting SCA's Java Component Model: Which Vendors Will Do It? "This year's JavaOne conference included a panel on Service Component Architecture (SCA), for which I was the moderator. Representatives from BEA, IBM, Oracle, SAP, Sun, and Tibco spent an hour answering questions posed by the audience and me. It quickly became apparent that even though all of these vendors supported SCA, they had quite different ideas about what this meant."


James Gosling begins today's Weblogs with his JavaOne wrap-up: "Back to the Toy Show... If you weren't there, you should watch the videos. The tail end of the session was devoted to devices that aren't important to many JavaOne attendees in their normal software development role, but they sure do stretch the mind."

Amy

Editor's Daily Blog for May 23, 2007

In Java Today:

Rethinking JSF - The Real Problem
"JSF - JavaServer Faces, JCP's component framework for the presentation layer - has had a long and fairly controversial road so far. There's still a lot of dislike floating around for it, as you can see on various TheServerSide threads that deal with it head on. The problem isn't JSF - not for the most part, at least. The real problem is the perception of JSF, as well as how it's being shown and taught." In an article on TheServerSide, Rethinking JSF - The Real Problem, Joseph Ottinger argues "The real problem is that JSF, for a component framework, has so fewcomponents."

Java Posse 121 & 122: JavaOne Retrospective from the SVJUG
The Java Posse hosted a JavaOne retrospective at the Silicon Valley JUG recently, and there was so much to cover, it took two podcast episodes to get it all out. Episode 121covers JavaFX Script, JavaFX Mobile, Project Wonderland, along with Microsoft's recent controvesial patent assertions in regards to open-source. Then in Episode 122, they offer brief comments on a number of topics: Curriki, Real-Time Java 2.0, NetBeans 6.0, Blu-Ray Disc Java, Iris, GlassFish v3, and more.


In today's Weblogs:

Amazingly good APIs
Paul Buchheit criticized Java imaging APIs as they require "closer to 100 lines of Java" just to do a simple image resizing, that in Python can be done in three lines...   Fabrizio Giudici

Those frustrating bits of API
Not everything about writing code in a programming language is easy and wonderful. Sometimes a particular API is hard to figure out, or it doesn't do quite what you want, or the documentation is obtuse, or nonexistant, or wrong, or...   David Herron

Mephisto on GlassFish V3
This blog shows how Mephisto, a web publishing system based on Ruby on Rails, can be deployed on GlassFish V3 with minimal changes. These detailed steps are derived from the original instructions. Here are the exact steps that I followed: Download Install...  Arun Gupta


In today's Forums:

Re: "Too many open files" problem
I am using JDK 1.5, and an application that ran on pre-b33 builds without problems, had the "Too many open files" problems after about 48 hours. On my Linux distribution, the max number of open files is 1024 by default (for root and non-root). Changing that to 2048 solves the problem (at least for 72 hours and counting ;)). wonder if something has changed in b33, causing more file descriptors to be used?   

Re: Building Wonderland on MacOS
I've just tried Wonderland on Mac OS X. Thanks to the information here, I could build it successfully on my Mac Mini (Intel Core Duo). I could also run the server (ant run-sgs). But when I run the client, org.jdesktop.lg3d.wonderland.Main crashes. Is this the same symptom? To compile the Wonderland, I had to modify org/jdesktop/lg3d/media/jmf/audio/joal/JOALSoundOutput.java because Apple's JDK 1.6 does not include the required constructor PipedInputStream(PipedOutputStream, int). Is this related to my problem?   

Re: Serialization RMI-IIOP performance problem
There was a problem in the RMI-IIOP implementation in this situation that caused very large requests to be sent in this situation. This was caused by the very long classpath in the app server being set as the codebase (from RMIClassLoader.getClassAnnotation, I think). Another error in the encoding caused this codebase to be sent on EVERY java object, rather than just the first. Effectively the IIOP compression was not working in this case, resulting in messages often 10x larger than required. If this is the problem, you should see a lot of repeated class path entries in the data that is sent. This problem was fixed in GlassFish version 2 several months ago (probably in build 30-something), but I can't find the exact build number right now. Can you try this with the most recent GlassFish v2 build?   


Current and upcoming Java Events :

  • May

Editor's Daily Blog for May 22, 2007

Java EE 5 achieves a high level of simplification over previous editions of the platform by using annotations for declarative programming. In our Feature Article,Using Annotations in the Java EE 5.0 Platform, Sangeetha S. and Subrahmanya S. V. look into this approach and its many uses.


In Java Today:

Augusto Sellhorn: JavaFX Clock
JSR 203 promises more new I/O APIs for Java, including several new I/O abstractions and a new I/O programming model. In the interviewMore New I/O APIs for Java, JSR 203 spec lead Alan Bateman explains how JSR 203's file API solves current shortcomings with java.io.File, the new Watchable interface, and asynchronous I/O programming. Bateman is an engineer in the SE Core Technologies team at Sun.

Neal Gafter: A Limitation of Super Type Tokens
I slightly modified the clock example Chris Oliver wrote, and added some artwork to it so it looks somewhat like one of the Google desktop gadgets I use. The gadget is very low res, so I decided to make the image files much bigger so users can resize it without it looking like a pixelated mess. I made the seconds hand jump every second instead of moving continuously, and like the gadget, it has a very quick animation that moves the hand back a bit to give it a "spring" feel...

Neal Gafter: A Limitation of Super Type Tokens
There was a coincidental adjacency between two slides in Josh Bloch's talk that made me think a bit more about the idea of Super Type Tokens. The last slide of his discussion of generics gave a complete implementation of the mind-expanding Typesafe Heterogenous Containers (THC) pattern using Super Type Tokens...


In today's Weblogs.

Adding Typed Support to the StAX API: A discussion has been started in the stax_builders@yahoogroups.com mailing list about typed extensions to the StAX API. We hope this discussion will serve as the basis for a proposal to be incorporated in the next release of the API. Subscribe to the mailing list (it is moderated) if you are interested in influecing this next-gen API.

kfarnham

Do What You Have To Do Blog

Posted by kfarnham May 20, 2007

A detailed road-map for consumer-side Java

So did you ever think you'd see something so frank from Sun?

The reality is, we have several outstanding issues with Java as a consumer desktop platform, which need to be fixed soon in order to make us competitive now and in the future.

If you did, did you think it would come with a compreshensive response like this:

The good news is that we are, in fact, aware of these issues. The better news is that we're working on the problems. The best news is that we are close to solutions and intend to delilver them as an update to the SE 6 release, in a release that we call the Consumer JRE.

We're starting off today's Weblogs section by highlighting Chet Haase's remarkably thorough desktop/client/consumer-side road-map, Consumer JRE: Leaner, Meaner Java, which covers a number of different technologies to launch in this SE 6 update: faster launching for applets and applications, the "Java Kernel" to optimize downloading just the parts of JRE to get an application up and running, a deployment toolkit to detect and install the JRE, a better cross-platform look-and-feel, and improved installation, Windows graphics.

It's highly encouraging to see these issues being addressed, and with a comprehensive approach. There's a lot to cover, and Chet's blog has already kicked off a long conversation in the comments.

I also find myself drawn to the term "consumer" in the sense of these user-facing SE technologies. "Desktop" Java never seemed right to me, since SE might be running on set-top boxes or high-end phones, and "client" Java implies a server that isn't necessarily there (not every task needs to be networked; in fact, I don't want to collaborate when I'm working my finances). We'll see if this term gains traction, or if it gets people to think differently about the role and possibilities of Java SE.


Also in today's Weblogs, Max  
kfarnham

My Heart Is An Apple Blog

Posted by kfarnham May 18, 2007

Of building, or wanting to build, OpenJDK

So, I wanted to do a poll question as a counter to last week's ("What was the most important announcement from the JavaOne 2007 general sessions?") that would get into the question of whatwasn't in the Tuesday keynotes at JavaOne. Something like "What was conspicuous by its absence at the JavaOne general sessions?" Of course, the problem of finding things that are missing is much harder than pounding on what's present. When editing feature articles, determining if something important is missing -- if there's been a jump in logic or a critical step left out -- is both vitally important and profoundly difficult. For the poll, I started coming up with a list of things that had been talked up in advance of JavaOne, or mentioned in previous keynotes, and asked some friends for help. But I don't feel like we ever came up with a really satisfactory list of options, and it was burdensome to go through the keynote videos to ensure that items from our list weren't covered. For example, there's been little talk this week about the invokedynamic bytecode to support dynamic languages on the JVM, but it looks like it's alluded to by a single slide at 21:12 (no, not a Rush reference, calm down) into the first segment of the Sun Technical Session.

For what it's worth, some of the things that got brought up as possible responses for this poll idea were a JDK 7 timeline, a new properties syntax, language-level XML support (mentioned as a possible JDK 7 feature way back at JavaOne 2005), multimedia, Java EE 6 re-proposal, JSF 2 with Facelets, and a response to Harmony's open letter. It's an interesting list, but I couldn't get past the thought that there were probably bigger things that people were expecting... so maybe that would be a good topic for the comment section.

So for today's poll, I went back to the previous question about the JavaOne 2007 announcements, and kept in mind Ethan Nicholas' complaint that the consumer JRE has been overlooked in all the JavaFX frenzy. The last poll had the consumer JRE as a choice (and the top vote-getter), along with two responses for Java FX (desktop and mobile). And that leaves one other interesting response from the previous poll: the announcement that, save for a few encumbered bits available only as binaries, OpenJDK has now been completely released. Maybe it didn't get talked up as much because it was fairly well expected, but the fact remains that the complete Java class library, runtime, and compiler are now available under the GPL.

And what are you going to do with it? That's where I found the inspiration for today's java.net Poll, which asks: "Have you downloaded and built OpenJDK yet?" So cast your vote on the front page, then check out the results page for current tallies and discussion.

Have I downloaded and built it? Well, that gets to the title of today's blog: it doesn't build on any of my four viable computers, because they're all Macs, which is not an OpenJDK target, and the ones that I could plausibly put Linux on are PowerPC, not Intel. Sigh. It would be nice to have an up-to-date Java, but that's another blog for another time...


Having mentioned it above, do have a look at Ethan

kfarnham

Rebellion Blog

Posted by kfarnham May 17, 2007

Speaking up about JavaOne

Truth be told, it would be easy to fill the front page every day this week with JavaOne-related blogs and feedback; there's been some, but I've wanted to move on with new topics.

Still, I did happen across one blog I wanted to mention just in this editor's blog, and that's Charlie Collins' JavaOne wrap up on Screaming-Penguin.com, a site he runs with GWT in Practice co-author Robert Cooper. Along with a gratuitous plug for my Glossitope plug-in (thanks!), he has pretty much the same impression of the variant quality of sessions as a lot of people have been expressing (though he may be the only one claiming that the Google-led sessions tend to be a cut above the rest), and says that the best part about the conference may be the ability to meet people you know only from their IM's and svn commit log messages. And he really nails a very common complaint regarding the management and movement of people between sessions:

The facility (Moscone), rooms, technical services, meals and so on were ultimately fine - but the coordination of getting people to places was s----y. The lines were really long, and they made you leave the room and line back up for the next session even if your next session was in the SAME room (sure they need you to sign in again, but just put a little badge reader IN the room, etc). Adding to the annoyance of the long lines was the fact that the lines were not maintained in any fashion - they would open up one line and wind people down hallways, and then when the room opened they would screw those who had been waiting by opening another door and letting other people walk right in (ending up with two lines, rather than just funneling the one line into two doors). Also the on site staff was very gruff. On several occasions they literally yelled at "all you people" for standing in the back of the room to catch a session and they generally barked orders about - overall pretty rude.

The whole thing with the advance reservations and the card readers came up a few years ago as a way of managing access to popular sessions, making people sign up in advance for the sessions they really care about. The motivation is good, but maybe it's time to ask if this system is really working or if it's time for a rethink. Coming out of one session in the Esplanade building, I saw the line for the next sessions there went all the way down the Esplanade, down some steps, past the bookstore and almost to the games area. A little further and they'd have had to either queue people up outside or down the steps.

As for other things Charlie thinks JavaOne should try to improve next year is the highly variant quality of the wi-fi access, as well as the scarcity of power strips to recharge laptops. The java.net Community Corner's hang space had a much-used power strip between the sofas, and I'm thinking next year, we might want to put strips under the rows of chairs in the mini-talk audience, so attendees can recharge for 20 minutes while listening to speakers.

And what did you think? What would you like to see done differently at JavaOne 2008? We'll probably have another forum next year like the Planning JavaOne 2007 discussion we ran earlier this year, but until then, you could always leave your comments here...


In our Feature Article, Régis Medina and Pascal Pratmarty introduceUISpec4J: Java GUI Testing Made Simple: GUI's are notoriously difficult to test, and the robot-based approach to automated testing makes agile development difficult, as you need finished GUIs before you can test. The UISpec4J project takes a different approach, and in this article Régis and Pascal show how it works.


In Java Today, a detailed new article on TheServerSide offers The Working Developer's Guide To Java Bytecode. Noting all the changes in the Java programming environment -- new languages atop the JVM, features like generics, etc. -- Ted Neward notes "one thing that hasn't changed, however, is the basic fact that all of these languages, despite all their interesting features or capabilities, eventually end up in the lingua franca of the Java Virtual Machine, the JVM bytecode set. In this article, we're going to examine the JVM bytecode set, disassemble some code to see how it works, and play with some tools that allow us to manipulate bytecode directly."

Artima's Frank Sommers asks What Are Your Java ME Pain Points, Really? "A billion Java-enabled devices in use, and the many more non-PC devices through which billions of people will experience the Internet, represent a potentially big opportunity for developers. Yet, relatively few developers work on Java ME applications today. What makes it hard to develop for mobile Java devices?"

At JavaOne, Sun Microsystems unveiled a new consumer-oriented product line called JavaFX, which among other things has a new language for interactive user interfaces (JavaFX Script). Sound a little like Flash? That's the idea, says Sun CTO of Software Bob Brewin, and a new streamlined runtime system will help make it a reality. In ZDNet's Sun CTO promises Flash-like experience from JavaFX and new runtime, Ed Burnette talks with Bob about how all this will work together to improve the experience for the user and developer.


Today's Forums start off with two messages about finding and fighting memory leaks. In Re: Memory management on "real-world" J2ME devices, Stefan Haustein points out device-specific leaks that ME developers have to deal with: "I think for pure Java objects, this is not an issue, but some devices are really messed up concerning freeing system resources. For instance, on a 6680, you will run into an OutOfMemoryException after creating a certain amount of Canvas objects, although they are no longer referenced anywhere (even when calling GC manually). I would not recommend pooling StringBuffers or similar, though."

On the SE side, kirillcool offers advice for tracking down these problems in Re: Memory leak question. "I'd say that a frame or even a text field will take much more than 24 bytes - or is it supposed to be 24KB? Any decent profiler can take a snapshot of the heap, filter out objects that can be garbage collected and then show paths to the GC roots. Then, you can see who exactly is holding a strong reference to that frame that can not be garbage collected. It might be some UI delegate tracking something in a static map, or some other internal Swing class doing something it's not supposed to."

trouby wonders about a persistent timer feature inRe: EJB3 Timers: "I was wondering, is there any way to stop the persistency of the timers? Sometimes it is critical that timeouts will be done by a constant intervals, and if there was some failures, when server is up again, all 'missed' timeouts being executed one after another, and in some situations it might be very risky."


Felipe

kfarnham

Ocean of Noise Blog

Posted by kfarnham May 16, 2007

Digging through the mini-talk podcast audio

I have copied to my computer all the audio captured from the Community Corner mini-talks at the java.net booth last week at JavaOne 2007. Most of it sounds pretty good, considering the conditions: noisy pavilion floor, mix coming from the speakers' monitor output jack, etc. But I already know there are some problems lurking. file0113.mp3 consists of 13 minutes, 22 seconds of nearly-silent line noise, which probably corresponds to a talk where we discovered at the very end that the input plug had been knocked out of the Microtrack recorder. We also know there are a few podcasts where speakers forgot or weren't told to press the record button, meaning those talks are lost. And the Thursday talks sound a little "hot", suggesting we turned up the speakers without lowering the Microtrack input levels enough.

By and large though, most of the audio made it back from San Francisco pretty well.

We're still fixing a few details on our improved publishing systems for podcasts. The first few went out with me as the "artist", and that seems really inappropriate, so we're now tagging the podcasts with the name of the speaker and creating an author page for him or her, even if they're not actually java.net authors. You may have also noticed my naming convention, like last week's j1-2k7-mtH03: Substance Look and Feel. The idea is to make the podcasts easier to use on devices like iPods, which only show the first few characters of a title. "java.net Java One Community Corner Podcast..." would fill the display, so every podcast would appear to be the same in the list of episodes. So I use the following scheme to number episodes:

  • j1-2k7 - JavaOne 2007. Some pre-show podcasts were titled pre-j1-2k7
  • mt - Mini talk
  • H - Day of the week the mini-talk was presented:T for Tuesday, W for Wednesday, orH for Thursday
  • 03 - The number of the talk for that day.

I've updated the Community Corner wiki page with these episode numbers, and will link the numbers to each podcast episode's article page as it is published. The current plan is to put out a mini-talk podcast every Wednesday. You can see the series of mini-talk podcasts at their home page, where you'll also find links to the feed and the series' entry in the iTunes store. I have no particular order in mind, though I'll try to get timely items out sooner, and will prefer to post shows where the presenter's slides have been uploaded and linked from the wiki (hint hint).


Today's mini-talk, presented as the latest Feature Article, is j1-2k7-mtW07: Closures Q and A . In a followup to his JavaOne 2007 technical session, Neal Gafter offers a 15-minute question-and answer session on a proposal to add closures to the Java programming language. He makes the case for Closures making Java programs easier to read, and handles questions about closure expression serializability, continuations, patterns and boilerplate that suggest the need for closures, and whether closures really fit into the language. by Neal Gafter


In a JavaFX-focused Java Today section, ONJava blogger Timothy M. O'Brien is working through introductory JavaFX code on his blog. The first entry, JavaFX: First Steps - "Hello OnJava" App, features "a very simple JavaFX application that parses the OnJava ATOM feed and just draws an array JavaFX Script Groups containing a Rect an two Text nodes." In a followup, JavaFX: First Steps - Correcting a Swing Mistake, he eliminates what appeared to be a bug by moving his script-execution code off the Swing event-dispatch thread.

JavaFX is a new family of Sun products based on Java technology and targeted at the high impact, rich content market and is initially comprised of JavaFX Script and JavaFX Mobile. Project OpenJFX is a project of the OpenJFX community for sharing early versions of the JavaFX Script language and for collaborating on its development. Plug-ins are already available through the Update Centers for both NetBeans 5.5 and NetBeans 6.0 Milestone 9, with install instructions available on the Project OpenJFX site.

In the Q&A article Sun's Gosling: Java Doing Just Fine, James Gosling, the father of Java, sits down for a candid interview with eWEEK about JavaFX and the open-sourcing of Java. A Part IIdiscusses future directions for Java and the competition with Microsoft's C#.


In today's Weblogs, Microsoft looks beyond the PC and sees Deja Vu, at least according to Airlan

kfarnham

Intervention Blog

Posted by kfarnham May 15, 2007

Fixing Java deployment

One of the JavaOne technical sessions I was lucky enough to get away from the pavilion floor to attend was TS-3290: Easy Deployment Is Finally Here. Slides aren't online yet, and not too many people have blogged it, but it did come up on the Java Posse Google Group, when some members were complaining about the lack of news on fixing Java's client-side user experience problems. As Josh Marinacci pointed out, this session offered a number of near-term approaches that hope to improve the end-user deployment story.

Rather than offering a single big-bang fix, the session showed a number of new features that can be used by themselves or combined. The first is a JavaScript library, which will be importable from a yet-to-be announced public address, that lets you check the currently-installed version of Java (if any), and drive the user to a download page if their version is too low. This works across all platforms, but has significant limitations, such as only reporting major versions, and not specific updates (e.g., 1.5instead of 1.5.0_07). Somewhat more ambitious is agetjava.exe command-line executable that can report all installed versions of java, down to the last sub-minor version, and download and install newer versions. As the .exeindicates, this is Windows-only -- the Mac deployment story is very different, as Apple generally couples its Java releases to a minimum version of the OS, and delivers Java updates via its usual "Software Update" mechanism. Linux is deliberately ignored, apparently because of its rarity as a desktop OS, the presumed tech-savvy of its users, or maybe because the open-source community is expected to figure out for itself how best to distribute Java updates on specific Linux distros.

Another announcement from this session was a set of efforts to improve start-up time for Java. Certain "cheap" options were dismissed out of hand. For example, loading the entire JVM into RAM early (e.g., at startup) was rejected because of its negative side-effects: increasing VM page-outs and consuming resources unnecessarily. The new plan will apparently get the essential Java bits into the disk cache, so that when Java's needed, it can be loaded more quickly.

The room was pretty full, so I'm sure other attendees can catch us up in the comments as to other interesting parts of this session. And what do you think? Will better end-user installability and maintainability of the JRE help Java regain its footing on the desktop? Will disk cache hackery make applets and applications load faster? And what am I supposed to do with all these .jnlpfiles? Comment section is below: have at it...


Feature Articles will be updated Thursday, but we updated that space today with some of the podcasts that went out during JavaOne week, in case you missed them: Java Mobility Podcast 3: JavaOne 2007 Activities and the most-recently fed Community Corner mini-talk, j1-2k7-mtH03: Substance Look and Feel with Kirill Grouchnikov.


In Java Today, Bryan Young's blog aspires to put JavaFX in Perspective: "The large number of discussion about JavaFX over the last few days seems be very polarized. So far I have only read two opinions repeated over and over: JavaFX is the competitor to Flash and SilverLight that we've all been waiting for, andJavaFX is a weak attempt to cash in on the recent SilverLight announcements and has no chance for success. What most people don't seem to get, is that JavaFX isn't even in the same market as Flash and SilverLight."

Sun today announcedthe immediate availability of the Milestone Release (MR2) of the phoneME Feature project in the open source Mobile & Embedded Community. MR2 also contains a high performance implementation of Java bindings for the OpenGL ES API, which provides access to high-end 3D graphic functionality on the device. These capabilities facilitate the creation of graphically rich and compelling entertainment, business, and social networking mobile applications.

ONJava editor David Bock managed to find time at JavaOne to conduct An Interview with Robert Brewin: "If you have been paying attention to any of the news from Sun lately, Robert Brewin is probably not a stranger to you. Robert has been strategically involved in if not outright responsible for some of the major announcements from Sun, from the open sourcing of the JDK, to the embracing of scripting languages like Ruby, and most recently this week's announcements of JavaFX Script and the JavaFX Mobile platform. I had the chance to sit down with Bob and talk to him about JavaFX Script, JavaFX Mobile, the announcement of the new consumer-focused JRE, and several other impressions and events from JavaOne."


In today's Weblogs, Ed

kfarnham

Keep the Car Running Blog

Posted by kfarnham May 14, 2007

Everybody home from JavaOne?

Another JavaOne is in the books, so presumably pretty much everyone has found his or her way home by now, with grand plans to follow up on cool projects, important contacts, and new inspiration.

Or, just as likely, to crash on the couch, catch up with family, and recover from the conference crunch. After all, it's a pretty hard four days: long schedules that start with 8:30 AM general sessions and end with 10 PM BoF's (or subsequent rounds of socializing at nearby bars, restaurants, and clubs), huge lines for sessions ("pre-registered on the left! standby on the right!") that snake down the Esplanade building and past the bookstore, and 15,000 people to meet (half of whom you should either give a card to or get a card from).

Traditionally, the end of JavaOne slides into a slow summer for the Java community. Developers who pulled 70-hour weeks to get stuff ready for the show go offline for comp-time, authors kick back after the book crunch and watch the reviews on Amazon, and open-source projects make promises to get together online and work, but between vacations and missed connections, sometimes it doesn't work out. For years, the editors of this site have argued that the ideal time to make a major Java announcement is in July or August, when you're not competing with anyone for attention, as opposed than getting buried in May's JavaOne PR hurricane. Two bits says that we'll hear from Harmony during the O'Reilly Open Source Convention in July.

Me, I've still got SE media and Blu-Ray blogs to write before all the details of the sessions slip from my mind. But let's focus on the day job and the return of our regular java.net format:


In Java Today, Dave Gilbert blogs about contributing to the now fully open-sourced OpenJDK in My First OpenJDK Bug Fix . "The sources for OpenJDK are available today, which is great news! Even better, the build process is relatively painless (I'm using Ubuntu Linux 6.10) and it didn't take long to have my own version of OpenJDK up and running. Sun have done a good job of making this "just work", so I can get on with other things...like fixing bug 6463712. This is a bug I uncovered (and reported to Sun last year) while working on the javax.swing implementation in GNU Classpath..."

To commemorate the largest NetBeans Day ever, the NetBeans community has put together a special issue of NetBeans Magazinewith a whopping 84 pages of in-depth technical articles. Issue Three showcases the flexibility and versatility of the IDE and Platform, and the upcoming features in NetBeans 6.0. You can view the magazine as a whole or as individual articles. And now you're also able to access simplified HTML versions of each article, or get the full visual experience from the PDF's.

Finally, a new white paper (PDF, 64 KB) introduces the Mobile & Embedded Community, describes the benefits of participating in it, suggests ways to get involved, and explains the differences between working with the open-source implementation and the commercial implementation of the Java ME platform.


In today's Weblogs, David

kfarnham

Blu-Ray Q&A Brain Dump Blog

Posted by kfarnham May 11, 2007

I'll have an opinionated blog later, but here's my notes from the Blu-Ray Q&A BOF. Missing is my question/comment at the end, which I'll blog later.


Talk to the Stars: A Discussion of Blu-Ray Java Technology

  • Phil Starner, Javelin Software (blond, glasses)
  • Mike Zink, Technicolor (red shirt, black jacket)
  • Kyle Prestinbock, Disney
  • Bill Foote, Sun (session lead)

[note to self: remember comments about compatibility problems from morning keynote]

First question: there's a real discrepency between timeline tool based thinking (Final Cut, Flash) versus programming (Java). Zink: for 70-80% of these titles, something timeline-based would be plenty.

Bill: Sun's future plans in this space. Did everyone see JavaFX thing in the keynote? It's a scripting environment that is intellectually rigorous. Predicts dooms of ECMAScript and personal-basis Java. Claims ScriptFX will solve the same problems as Flash, but speaks to a low-level spec that can be standardized and "gotten right". By comparison, HD-DVD builds all their effects into the low level, so if they miss something good, they can't add it back later. BD-J puts runtime on the disc, so it can be fixed later. Bill tells Kyle that having Java developers developing titles is crazy; need to get designers into the loop.

Bill: we expect tools to be created. Once those are out there, we can set up authors/designers with those tools. BD-J as a whole is much larger than that. With DVD, we ran out of new innovative things to do after about three years.

Audience member: BD-J doesn't exist in a vacuum. Consumers are blaming BD-J complexity for lack of titles. Yes, you're future proofing, but we've got a timeline here, and Blu-Ray needs to get its act together. Sun is saying "we've got JavaFX", but Sun can't just throw a switch and suddenly everything's fine.

Audience member 2: OK, how do I learn BD-J now if I don't work at a studio that has paid the license. I want to just download some Eclipse plugins.

Mike: What we're doing in large scale production is different from what a developer would do at home. We use authoring tools to do the multiplexing, Java's just an application on top that does the underlying interactivity. Blu-Print, Scenarist. Both have some kind of Java implementation, but they're both high-level solutions. To just do Java development without worrying about the video, check out the "HD production handbook", and upcoming "HD production cookbook" (sked'ed for September). Bill: answer right now is "some assembly required". To do it professionally, you need players with debuggers. Kyle: some authoring tools have emulators. We've found that developers who develop with MHP tools can be ported to Blu-Ray in about a week, so go the MHP route, use the community and the tools. It'll be easier to switch to Blu-Ray when those evolve to Blu-Ray tools. Bill: check out hdcookbook.com, join the forums, check out the BD-J discussions. It'll be good to see what people can do at different levels of spending. The guy who did "Dragon's Lair" took some discs, looked at what was in there, decompiled... didn't work with an authoring tool.

Audience 2: If Sony & Sun want BD-J to win, why don't they get SDK's and tools out there? Bill: Blu-Ray Disc Association, and their 19 companies, don't want it to happen. Sun comes from a "give tools to people" mindset. It's $100,000 to just buy the specs for Blu-Ray, a very different culture. Lots of stakeholders, coming from a different industry. It's not like the computer industry. Phil: if these tools were available, it would definitely help Blu-Ray. That kind of stuff is available for HD-DVD, and it helps them. Mike: remember that Blu-Ray is pretty complex, and it takes a lot of time to develop these tools. Nothing out there where you could throw it to the masses and make everyone happy. Throwing full-blown Flash-like tools out there doesn't make sense for the system. Microsoft-like approach is more appropriate: give people some docs, let them do it. Bill: we're not actively trying to deny people information, we need more time. Everyone agrees that this needs to happen, get some agreement on when.

Audience 3: I'm tired of writing EJB's. Sounds like Microsoft has the path of least resistance for developers right now. In enterprise, we have tons of information, free tools, etc. At what point in the future, do we get some docs and tools. Do the studios want many developers, or just a few people at a few studios. Bill: studio hopes that we can create as many Blu-Ray titles as DVD. Audience 3: Does HD-DVD make it easier to get started? Are Java developers at a disadvantage because they're waiting for the BDA to get its act together? Bill: we work with other vendors; startups help us with this. Some developers come to us with just some ME experience.

CD's of Blu-Ray SDK's (Sequence) somewhere in this room? No, just the Fox contest that's Windows-only (speeeeeewww...)

Audience 4: I'm from a company that makes a BD-J tool, and if you're interested in this kind of thing, there are a lot of opportunities. Not as a stay at home developer, but with companies. Lot of positions out there.

kfarnham

JavaOne 2007 Day Four Blog

Posted by kfarnham May 11, 2007

TV Day at JavaOne

Thursday, JavaOne had a track set aside just for Java-based TV technologies, offering the TV track as a stand-alone conference of its own for those not otherwise participating in JavaOne. Still, it seemed by a show of hands in one session that most of the attendees in these IPTV, OCAP, and Blu-Ray sessions were software developers, presumably regular JavaOne attendees, peering over the fence at a new and not widely discussed niche of Java development.

And boy is the grass greener over there. While Java SE media struggles to get its act together after a decade, the message from the TV side -- and specifically from spokespeople from Sun, Technicolor, Sony, Disney, etc. -- was "if you can write Java ME, and you have any interest in this stuff, there's a job waiting for you."

Key point here is that said jobs are with established, big companies. The barriers to entry to developing Blu-Ray and IPTV content remain exceptionally high to the independent developer: no public SDK, US$100,000 for a copy of the Blu-Ray spec, etc. But this year, in sharp contrast to previous years, the speakers had clearly gotten the message that there is a significant interest in this stuff among parts of the Java community, and they clearly need more developers to create compelling apps and toolkits to speed title development. This topic is one of my personal interests and pet peeves, so I'll have more to say on it later in my personal blog. For now, let's just say that JavaOne TV Day was real eye-opener for many involved, on both sides of the panel tables.

I've highlighted a few of the TV Day blogs at the top of today's page, but of course, there was much more going on at the show, as the broad variety of links illustrates:

Coming up today: James Gosling's toy show, the final sessions, and the end of JavaOne 2007.

TV Day at JavaOne  
kfarnham

JavaOne 2007 Day Three Blog

Posted by kfarnham May 10, 2007

Digging into the specifics

Oftentimes, the second full day of JavaOne is what I call "Dig In Day": it usually features technical sessions that expand on the major stuff introduced in the opening day's general session. Of course, this year's surprising announcement was JavaFX, and Wednesday featured a full-blown tech session on how JavaFX, F3, works.

Timothy M. O'Brien, a fixture at ONJava and a guest blogger for JavaOne, went to JavaFX creator's Chris Oliver's technical session, and came away thoroughly impressed:

So he starts showing us some slides, he gets to slide four - an example of a bad Java swing application - a PDF reader. He explains that Swing applications all look bad because they are Swing, etc. etc. We're all expecting the next slide to be an example of a slick looking JavaFX application, and he blew everyone's mind by saying, "Now for the Flex application... you are looking at it" So, he proceeded to show us this slick looking JavaFX application, zoom animations, a fancy animated view of pages ala itunes albums. I mean it was impressive, and I'm a skeptic.

We have a number of other blogs from the JavaFX and other technical sessions, so if you're not at the show, or went to other sessions, here's your chance to get a deep intro to what's up at the show.

Yesterday also featured a strong lineup of mini-talks at the JavaOne Community Corner. We had a hard time picking one to feed first, but Gary Thompson prevailed up on me to go with Geertjan Wielenga's Music Programming with Java (for dummies), which puts a graphic wrapper around the JFugue simplified MIDI API. Also, if you're subscribed to the feed, you may have noticed that we mistakenly re-fed the Project Darkstar interview yesterday as the MP3 file for the j1-2k7-mtT09: Teaching Java: from High School Student to Professional Developer podcast episode. The web page and its linked file are now correct, and we're working to get the right MP3 sent out on the feed. Sorry about that; we will fix it as soon as possible.

Here's the complete list of what's on today's java.net front page:

Digging into the specifics  
kfarnham

JavaOne 2007 Day Two Blog

Posted by kfarnham May 9, 2007

Surprised by JavaFX? Yesterday's general session was more surprising than these events often are. I was talking with someone earlier in the week and suggested that maybe one reason that JavaOne keynotes aren't as surprise-packed as, say, Apple's keynotes, is that Sun's everyday process is so open and forward-looking that they're usually not holding back any secrets. True, this leaves less rabbit-out-of-the-hat surprises for JavaOne keynotes, but on the other hand, it means that developers know what's going on and can make plans around it. Come to think of it, when is Apple's JDK 6 coming out?

But as I said, the JavaFX focus of this year's keynote was an unexpected surprise. There's a sense that a lot of people had heard of F3 -- the O'Reilly editors thought it well-known enough to put it in yesterday's crossword puzzle -- but didn't really know what it did or what value it provided. Perhaps the real novelty was getting this interactive environment onto the small device, which explains the recent acquisition of the SavaJe intellectual property.

A lot of our bloggers are talking about JavaFX, so I'll leave that to them, but I do want to point out the OpenJFX project on java.net, unveiled as part of yesterday's announcements. The alpha source code that Sun is demoing at the JavaOne Conference is available on the project site, and if it interests you, this project will give you an opportunity to get involved with the development and evolution of the JavaFX platform.

I spent most of yesterday in the java.net booth, meeting our members in the very comfy environs of the booth (did I mention we have couches and a power strip) and listening to the mini-talksfrom a variety of presenters. Keeping up with our promise to start getting some (but not all) of this material out quickly, we've posted one of yesterday's best talks, the BlueJ-themed Teaching Java: from High School Student to Professional Developer, as our first mini-talk podcast for 2007. Those of you subscribed viathe feed or with iTunes may already have it. Otherwise, check it out, and enjoy the rest of our mini-talks from the show.

Today, I'm representing the java.net side of the open-source world in the "Meet the Sausage Makers" panel, and hosting my angry little Java Media BoF late at night. But these are only two of dozens of sessions and activities at the show. If you're here, let us know what you're up to, and please stop by the booth when you get a chance (the pavilion's open from 11:30 to 4:30). If you're not at JavaOne, then enjoy our ongoing coverage of the show:

The surprising JavaFX, first mini-talks, and more  
kfarnham

Java One 2007 Day One Blog

Posted by kfarnham May 8, 2007

A famous quote, wrongly attributed to Mark Twain, is that "the coldest winter I ever spent was a summer in San Francisco." JavaOne attendees have been caught by this before, packing light for presumed California warmth, only to be surprised by the cold and the wind. So, of course, repeat JavaOne attendees learned from their mistakes and many of us packed warm for this year.

And got really surprised when it was a sunny 85F/29C yesterday, wildly above the average of 66F/19C for this time of year.

But then again, why be outside on a beautiful day when everything good is going on underground, in the lower-level conference halls of the Moscone Center? Monday was CommunityOne, a Sun-sponsored free event that in many ways was an outgrowth of NetBeans Day, just with a number of other tracks (GlassFish, OpenJDK and ME, OpenSolaris) folded in. For not officially being part of JavaOne, attendance was impressive, with a crowd of thousands on hand.

Your editor spent a good part of the day helping to set up the java.net booth for the Community Corner mini-talks, which start today (and for which there are still a few open slots, particularly on Thursday, for last minute speaker sign-ups). I also had to attend an O'Reilly meeting at an office up on Lombard, far away from the show.

One event I did attend was the Java Posse Podcast 119, presented live on stage as lunchtime entertainment for the CommunityOne crowd. Responding to feedback that they've tended to shy from controversy, they took on some topics head-on, by including in their wish lists and predictions, a list of things they'd like to see removed from Java in the next version, including a few sacred cows of a few people here and there, including CORBA and AWT. They also got a number of cheers (listen to the podcast, which is already up) when one of the things they said they wanted to get rid of is "paper architects", adding "if you can't code, retire." The colleague I was sitting next to said "man, we've got 16 of those where I work!"

Featured on today's front page:

kfarnham

JavaOne 2007 Day Zero Blog

Posted by kfarnham May 7, 2007

Of community leaders, dark interviews, and the annual backpack

Java must be growing, because JavaOne has long since passed the point where it can be contained by a mere four days. On Saturday, a full three days before the General Session that "opens" JavaOne (CommunityOne and the J1 University notwithstanding), we held the third annual Community Leaders weekend in a Sun office on Third Street, two blocks down the street from Moscone.

Having to hold the event this early is somewhat problematic for those of us coming from out of town, but any closer to the start of the conference and we'd lose others to booth setup duty. So it's still pretty impressive that we can consistently fill our meeting room with 15-20 people over the course of the event.

This is one opportunity for the community leaders to tell the infrastructure team -- represented by Sun, Collabnet, and O'Reilly -- what they want to see from the site. A big topic this year was statistics: people want to know if and how often their projects are being downloaded, how that stacks up relative to other projects, etc. For us, the challenge is in integrating information from many sources, including our own databases (Sun, O'Reilly, and Collab, which operate different parts of the site), along with publicly-available data from sources such as Cenqua. A presentation at the weekend allowed us to share where we are with this effort and get feedback on what kind of data will be really useful to projects.

We also had discussions about raising project visibility, Collab's new issue tracker, new editorial directions for the front page, and more. Some of these things we can act on now, others we'll take home and implement post-JavaOne.

At the end of the day, I had a chance to do a brief podcast interview (and try out my new conferencing mic) with Jeff Kesselman, creator of Project Darkstar, a high-performance, low-latency server for the MMO game industry. About three minutes into the interview, the conference room's robo-lights went out, and instead of stopping (and making me do an edit later), we continued the interview in near-total darkness. "Darkstar" indeed...

Sunday was an open day for those not setting up booths, so I headed downtown and met a number of friends between Union Square and Moscone Center: former java.net editor (and ME podcaster) Daniel Steinberg (who made me spend money at Rasputin Records... twist my arm...), ME developer and writer Jonathan Simon, Aerith/AB5k creator/blogger Joshua Marinacci, his AB5k cohort Robert Cooper, Java Posse buckaroo Tor Norbye, Swing developer Chet Haase, etc. Most of us were in line -- or more accurately several lines -- to get our conference badge and backpack. For those keeping track, this year's backpack is silver, has some interesting closed side pockets, but does not seem to have a dedicated hole for sneaking out your iPod headphones. Anyways, we can compare backpack notes later.

Today, it's CommunityOneand more booth setup. Say "hi" if you see me down there.

On today's special all-JavaOne front page: 
kfarnham

Shake the Disease Blog

Posted by kfarnham May 3, 2007

Are Silverlight and Apollo really the future of the web?

It's not on the front page (because it has little to do with Java), but there's an interesting theme going on in the web world that we'd be wise to pay attention to, and that's the emergence of several rich-client would-be successors to HTML and Ajax. The Dive Into Mark blog calls this the Silly Season, castigating Microsoft for trying to "recreate the web in their own image" with Silverlight , and Adobe for trying to do the same thing with Apollo. Both of them try to impose their proprietary runtimes, graphics and animations frameworks, video codecs, etc., and are tied up in restrictive licenses. Also, the clients only run on recent versions of Mac and Windows. And Elliotte Rusty Harold slaps Silverlight (actually, I've already switched to the disparaging term Silverfish; do join in the fun) for making the VRML mistake, meaning that they released a dev kit only for Windows and not for Mac (or Linux, or anything else). They apparently believe that the idea of developing for Silverfish is more appealing than the idea of developing on a Mac. As Elliotte writes, "Microsoft expects the creators and consumers to come to them." Yeah, good luck with that, guys.

Not that Java is entirely free of this line of thinking -- ME development is only just now being supported on Linux, and Mac is apparently off the radar. And yes, I did complain about that, almost four years ago.

But back to Mark's blog, there's an interesting hubris in assuming that HTML and Ajax are destined to hit the wall, and soon, and to start lining up proprietary successors now. Heck, didn't some of us look into applets 10 years ago based on similar assumptions about HTML's viability?

And speaking of Java, Mark also writes:

Not to be outdone, Sun is working on an "alternative" to AJAX, because"AJAX sort of deals with all of the old way of doing things. It makes it simpler, which is great, but underneath it

kfarnham

Enjoy the Silence Blog

Posted by kfarnham May 3, 2007

Awaiting a flood of audio from JavaOne

In 2005, we started using the java.net booth as a place to holdmini-talks: 20-minute presentations by members of the java.net community about their projects, their communities, or other things relevant to them. Last year, we hooked up a laptop to the sound system and started recording the mini-talks, sending them out as podcasts. We hoped to bring a little bit of the java.net booth to everyone who couldn't make it to JavaOne.

Last year's podcasting required a lot of manual effort -- I hand-edited the XML feed file from my laptop and wrote all the program descriptions -- so we knew we'd want to do a better job of getting our house in order for this year. Fortunately, O'Reilly was already adapting its publishing system to support podcasting, so we brought that code over to the java.net system, where we can use it for multiple podcast feeds, including the mini-talks, and the Mobile & Embedded podcast that started last week.

For the mini-talks, last year we made a decision to get the talks up as quickly as possible, to convey a sense of the immediacy of the JavaOne event. However, the practical upshot was that we clobbered listeners with over 40 episodes in the course of four days, and anyone who subscribed to the feed probably got shows overwritten before they could be listened to. So this year, we're going to send out the mini-talks at a less frantic pace, figuring that more of them will actually get heard this way. Still, we intend to get a few of them out before the end of JavaOne, so those of you attending the conference will have something to listen to on the way home -- after all, Josh Marinacci told me that he loaded up all of last year's talks on his iPod and listened to them on the drive from San Francisco to Oregon.

The feed for the mini-talks has changed, and we're trying to make it as easy as possible for listeners to keep up with this. If you're subscribed to last year's feed via iTunes, you'll be redirected to the new feed the next time you update. We've also updated our entry in the iTunes Store. Users of other podcatchers who don't pick up the changed feed may want to just manually update to the new feed. You can also check for shows manually on the Community Corner Podcast page.

To "seed the feed", we've posted a first episode for 2007, which also serves as today's Feature Article. This initial episode, JavaOne 2007 Community Corner Podcasts: Best of 2006 , features a 20-minute selection of clips from some of the most popular mini-talks from last year, including our panel of non-Sun JDK contributors, building Java-powered Lego robots, Ken Arnold talking about the Napkin look-and-feel, Roger Brinkley on community-driven JDK localizations, the Distro License for Java, and more. This tour should give you an idea of what will be on the podcast feed starting next week, and hopefully encourage you to subscribe. Also, if you're interested in hearing any of the 2006 talks in their entirety, they're archived in the legacy jnpodcasts project.

Also posted as a feature article (and mentioned yesterday) is the Mobile and Embedded Podcast 2: Report From Brazil . "In the second podcast in our Mobile and Embedded Community series, leader Roger Brinkley and tech evangelist Terrence Barr highlight the latest community technology news, and then report on the April events in Brazil at Sun Tech Days and the FISL conference. Don't miss Roger's interview with Bruno and Lucas, project owners of the Marge Project, a Java Bluetooth Framework that shows how to create Bluetooth-enabled applications in a simple way. Bruno and Lucas recently unveiled a video about their demos on YouTube."


Returning to the topic of JavaOne, James Gosling has another blog about fun conference activities in today's Weblogs. In Contests@JavaOne: a first look, he writes: "There are some programming contests at JavaOne this year that you might want to look at before you come. The details aren't all clear yet and the web sites aren't finished, but there's enough to get you started."

In another preview, Inderjeet

How Java and pointers cracked the Mac

So in a brief moment online Sunday, I got an IM from Dick Wall of the Java Posse podcast, fact checking what was known at that point about the Mac security crack that won the CanSecWest security challenge by gaining user-level access to the machine through use of a malicious web page. Since the initial reports indicated that QuickTime was the cause, and turning off Java in the browser was a defense, it seemed to imply that the cause was QuickTime for Java. I mentioned to Dick that it might not just be QuickTime, but any number of associated technologies that QTJ needs to import, and also reminded him of an earlier QTJ security hole that allowed an attacker to use a Mac's webcam and access its images(which is different from my much-cited blog that turns on your webcam but can't access the pixels).

Well, in less than two weeks since the discovery of the hole, Apple has plugged it with QuickTime 7.1.6 for Mac OS X and Windows. And now that a fix is out, security researchers are able to share Details on Dino's QuickTime Advisory. How the attack works is pretty interesting, and actually vindicates what we've said about Java security all these years.

Java's own actions are stringently checked by a security manager, of course, and the fine-grained security model makes it possible (if not particularly easy) to craft security policies that allow or restrict disk I/O, network access, etc. But of course, those guarantees can only be enforced within the realm of Java. You can't, for example, use the security manager to put careful limits on the use of Runtime.exec(), because the command passed to it could be fairly benign (pwd) or ruinous (rm -rf ~). Similarly, native code is resistent to the Java security model, because there's no way to know what's on the other end of your JNI call.

And that's where the problem lies in this case. One of the interesting (and scary) historical traits of QuickTime is theQuickTime Media Layer, which is to some degree a port of much of the classic Mac OS, representing all the parts of that OS that QuickTime depends on (or needed, circa QuickTime 3): Mac-style file and resource API's, QuickDraw, and, scarily, memory management. QTML is how QuickTime could be brought to Windows with all its functionality intact, but it ends up being why this attack works on Windows too.

Because some QuickTime API's require pointers to blocks of memory, such as when you're passing in an image to be compressed and added as a sample to a Movie's video media, there are classes to represent pointers and classic-Mac-style handlers (ie, pointers to relocatable pointers). And there's the rub. The attack uses theQTHandleRef.toQTPointer() method with an integer overflow to copy arbitrary byte arrays to memory. Apple's new fix apparently bounds-checks the arguments to this method so that passing huge negative values to the offset argument can't be used as a means of addressing arbitrary points in memory.

There doesn't seem to be anyone claiming that this crack invalidates Java's security concepts, and Apple has been praised for getting out a fix (with credit to the researchers who found the crack) in fairly short order. If anything, it does remind us that calls from Java to native code can never be assumed to be safe, and if you're using JNI, you may want to take a moment to think if there are opportunities in your code for overflows or other unintended uses of your native calls to go awry.


Also in Java Today, the second Mobile & Embedded Community Podcast,Report from Brazil, has been posted. In it, Community Leader Roger Brinkley and Tech Evangelist Terrence Barr highlight the latest community news and report on the April events in Brazil at Sun Tech Days and the FISL conference. Don't miss Roger's interview with Bruno and Lucas, project owners of the Marge Project, a Java Bluetooth Framework that shows how to create Bluetooth-enabled applications in a simple way.

Elliotte Rusty Harold's recent presentation to the NYC Study Group, Java 7 and Beyond, offers one of the most concise and thorough tours yet compiled of possible JDK 7 features. The HTML version of his slides covers proposed language changes like closures, property literals, and type inference, and possible library additions like a new date and time API, the Swing Application Framework, and long-awaited filesystem API's to expose and preserve file metadata.


David

Filter Blog

By date: