JSF is too hot.

Today's JSF talk was so jam packed that I could not get in and now I'm sitting in a talk about the Netbeans rich client platform, which is less than half full. Oh well. I've seen three talks on JSF from David Geary in the past couple of months, so I probably know more than I need to know about JSF, especially since I am not using at work on in Roller (yet).

JavaOne 2004 opening session

Still being on east coast time, I couldn't sleep past about 5:30AM this mornning. I headed down to Moscone early to finish planning my JavaOne session schedule. By 8AM, the people started streaming in an the wireless network went to hell in a hurry. I joined the crowd in the main session hall. I guess I have never really been to a big conference because the number of people here, the endless ocean of Java developers, is just overwhelming. Despite that, when I sat down in the hall, I found that I was sitting directly in front of Simon Brown and Sam Dalton.

The opening session was better than I expected because I was expecting marking fluff. The Jonathan Schwartz and the other execs did dish out the fluff and the goofy marketing humor, but it was pretty high-quality and well thought-out fluff. The theme was the ubiquity of Java, with a focus on the non-traditional platforms like smart cards, mobile phones, and automobiles. The message was that, if you want the code that you write to make the most impact, to run on the greatest number of devices, then you've got to be coding to the Java platform. I think they did a good job getting this message accross.

At one point, they started talking about appealing to the Visual Basic type developers and making Java easier to use. They put the word FREE up on the wall in giant letters and they started talking about Java Studio Creator. Turns out, only the 30 day trial is free and on the next slide the word FREE was replaced with $49.95. If you buy a one year subscription to the Sun Developer Network (SDN), then you'll get Creator. During JavaOne you can buy SDN for a special price of $49.95 for one year. I think these prices are fair, but I absolutely hate it when a company proclaims that a product is FREE, but then turns around and tells you that freedom only lasts 30 days. I've heard it a million times, but still, it never fails to piss me off.

Graham Hamilton's Bill Shannon's overview of the J2SE 1.5 Tiger release and Tiger's children was the best part of the morning session. After some markeing inspired goofiness involving a tiny toger cub, he gave a great overview of Tiger. He covered the Shared VM concept, the new look and feels, language ease-of-use features, and annotations. It struck me during this talk, that annotations could make a really major difference in the ways that we develop with Java. Before, we used marker interfaces and method naming patterns (getXXX, setXXX, etc.) to convey information to tools and runtime reflections, but now we'll start using attributes instead. New Java specs will define new attributes and individual Java developers can define new attributes as well. I wasn't planning on attending any of the Tiger talks this week, but Bill changed my mind about that.

That's all for now. I'm about to learn about "Using jvmstat and visualgc to Solve Memory Management Problems."

somethingme.com - Post to your blog via Instant Messenger

David Czarnecki: Good morning folks. Mark and I are pleased to announce somethingme.com. Just in time for Apple's Worldwide Developer's Conference and JavaOne.

somethingme is a set of services for information creation, aggregation and exchange across devices, protocols, and services. The first available service allows you to interact with your blog via AOL(TM) Instant Messenger.

They say that a weblog is a personal, instant, and world-wide publishing system. David and Mark are putting the emphasis on instant with the new somethingme.com service. Very cool! It should work with Roller as Roller supports XML-RPC and Metaweblog API, but I have not had a chance to try it yet. Congratulations to David and Mark!

I made it to JavaONE.

It took just about all day to get here and the last hour of the trip was the worst because I had to spend it in a hot airport shuttle, at the mercy of driver with questionable driving skills and the inability to remember fare that we had agreed upon. I checked into the hotel only to find that that internet access is an additional $14.95 per day. Don't they understand? Internet access wants to be free, or at least I want internet access to be free, unless, of course, I am selling internet access in which case I want it to be expensive. Anyhow, I guess I won't be spending much time in the room anyway. The conference goes all day everyday, the birds of a feather sessions don't end until almost midnight, and there is the whole city of San Francisco to be explored.

I'm in Moscone now, waiting to hook up with my co-workers. I haven't seen any familiar faces quite yet. I've got my laptop hooked up to a wall outlet and a nice JAVAONE wireless connection going. I will attempt to keep up this oh so fine quality blogging throughout the event, but I am not making any promises.


Tiger and Tiger, something big brewing?

Elliot Rusty Harold: I just realized something: Java 1.5, being covered at JavaOne, is code named Tiger. Mac OS X 10.4, being announced across the hall in Moscone is code named Tiger. And I've heard a couple of hints that there's something big and unexpected being announced by Sun next week with regard to Java. Could there be some as yet unreleased big news about a Sun-Apple collaboration?

Open source Java libraries for Weblogs, Wikis, and Newsfeeds.

Prompted by the news of the Rome effort, I started taking a serious look at the various Java based Weblog and Wiki libraries last night. Starting with the list compiled by the Rome guys in What's wrong with other existing RSS parsing libraries, I started to build my own list. I expanded my list to include not only newsfeed parsing libraries, but also blog/wiki API server and client libraries. I also added a couple of clarifications and a couple of categories: 1) newsfeed parsing and producing, 2) server-side libraries, 3) client-side libraries.

It is interesting that there are two Atom API server libraries, but no Atom API client library (except for Gilmore which is just getting started). This illustrates the fact that the Atom API is new, still in flux, and interesting only to server developers at this point. Also interesting: all of the newsfeed parsing libraries parse news feeds as XML, there is no Java equavalent to Mark Pilgrim's Universal Feed Parser.

One question that crossed my mind: should Rome include a blogging client library? Posting, updating, and deleting posts via the XML-RPC based Blogger API or the REST-based Atom API is not exactly easy to do. Wouldn't it be nice to have a client library with an easy-to-use set of interfaces for this.

Here is my list of Open source Java libraries for Weblogs, Wikis, and Newsfeeds.:

Newsfeed parsers and generators
  • Informa - library for parsing and producing RSS, RDF, and very soon, Atom. Also includes database persistence layer. Established May 2002, under active development, latest release 0.5.
  • Rome - library for parsing and producing all flavors of RSS and Atom. New effort started June 2004, latest release 0.2.
  • RSSLibJ - primarily for generating RSS. Development stalled?
  • RSS Utilities - JSP tags for parsing and displaying RSS presented in a java.net article.
  • RSS4J - parser for RSS and RDF. Development stalled?
  • FeedParser - Kevin Burton's parser, drives Newsmonster.
Server libraries
  • Sandler - toolkit for implementing Atom API in a web application, includes an Atom parser. Used by Blojsom.
  • Atom4J - toolkit for implementing Atom API in a web application, includes an Atom parser. Used by Roller.
Client libraries
  • Gilmore - soon to be a full function Atom API client library, under development. Sister project to Sandler.
  • Hula - client library for programming Wikis that implement WikiRPCInterface. Associated with JSPWiki
  • Apache XML-RPC - good do-it-yourself starting point for implementing a Blogger API or a WikiRPCInterface client.

BlogLines - #1 for News and Information

- according to Time Magazine

Eclipse goes native

- Redhat frees Eclipse from the VM, via Scott Delap

Rome - Yet Another RSS Java API

- Sam Newman's take on Rome

ASP.Net Webforms vs. Java Server Faces

- via Oleg Proudnikov

rome.dev.java.net

- ending syndication feed hell, at least for Java developers

Where .Net shines

- The Global Assembly Cache

RSS feed for TODOs in code

- from Ben Hammersley

JavaOne 2004 - Java blogger meetup

- Thirsty Bear. Be there and/or be square.

EZ rollin HSQLDB

I'm messing around with HSQLDB because I need to create an easy-to-install demo-only version of Roller. I want to bundle everything needed to run Roller and make it drop-dead simple to try Roller on your own machine. All that you, the potential Roller user, will have to do is to unzip the distribution file and run a startup script.

To make this work I need Roller, a database, and a Web app server, all bundled together into one downloadable file. That is easy to do: I start with a Tomcat distribution and drop Roller into the webapps directory. When Tomcat starts, Roller will start. Roller won't function without a database, so I need to add the tiny pure-Java HSQLDB database to the mix. I need to get HSQLDB started before Roller starts. This part is not so easy: after looking at the HSQLDB docs I found that I have at least three options:

  1. Use the "in-memory" version of HSQLDB. With this approach, no HSQLDB starter is necessary. If you use a JDBC connect string of the form jdbc:hsqldb:filepath instead of the normal jdbc:hsqldb:hsql://host:port form, then HSQLDB will start itself inside your process (is that cool - or what!). The problem with this approach is that it requires the person who installs my demo to edit a file - they have to set the path to the HSQLDB, or I have to rely on an unreliable relative path. Another problem is that, in this mode, HSQLDB will not accept JDBC connections from other clients - such as the HSQLDB database manager.

  2. Add a ServletContextListener to Roller that starts the "standalone" server version of HSQLDB on it's own thread when my Web app starts, on contextInitialized(), and shuts down when my Web app stops, on contextDestroyed(). There are a couple of problems with this approach. First, I don't want to add anything to Roller. Second, I want the database to be available for other Web apps - like JSPWiki which I will include in the demo - to do authentication. Finally, after some experimentation I could not get HSQLDB starting ServletContextListener to start before the other parts of Roller that need a database connection.

  3. Add a LifecycleListener to the Tomcat server.xml to start the "standalone" server verion of HSQL on it's own thread when Tomcat starts. To enable this, I also add some -D startup parameters to catalina.sh to tell my listener where the database file is and what port to use.

Approach #3 seems to be the best option for the Roller Demo and it's working for me. Here is the code for the lifecycle listener that starts and stops HSQLDB:

import org.apache.catalina.Lifecycle;
import org.apache.catalina.LifecycleEvent;
import org.apache.catalina.LifecycleListener;
import org.roller.util.HSQLDBUtility;

public class TomcatHSQLDBPlugin implements LifecycleListener {
   public void lifecycleEvent(LifecycleEvent event) {		
      if (event.getType().equals(Lifecycle.START_EVENT)) {
         HSQLDBUtility.start();
      }
      else if (event.getType().equals(Lifecycle.STOP_EVENT)) {
         HSQLDBUtility.stop();
      }
      else {
         System.out.println(getClass().getName()+": Not handling LifecycleEvent: "+event.getType());
      }
   }
}

To plug-in to the Tomcat startup and shutdown process, I had to do two things. First, I placed a jar with my TomcatHSQLDBPlugin and HSQLDBUtility classes in a jar in tomcat/server/lib. Second, I added the following XML to the tomcat/conf/server.xml file along side the listeners already in the file:

    <Listener className="org.roller.tomcat.TomcatHSQLDBPlugin" debug="0"/>

That's that. I've got this stuff working now. Next up: JSPWiki integration and then I'll make Roller-Demo available for download on SourceForge.


JavaOne!

I'll be at JavaOne this year, my first time ever. I haven't been to a real conference or to San Franciso in a couple of years, so I am pretty excited about the whole deal. I'm looking forward to meeting the Java bloggers, too. For example, I've never met Matt Raible or Russell Beattie or Simon Brown, or any of the other Java bloggers and I hope to change that next week. I also hope to hook up with some of the Sun Bloggers to talk about Roller at Sun. Along those lines: Atlassian is organizing a meetup that looks to be interesting.

Eclipse 3.0 on Mac OS X

I noticed that MyEclipse now supports Eclipse 3.0 RC1, so I downloaded both last night. I must say, I'm impressed. Eclipse looks and feels much better than before on the Mac. Font sizes are reasonable and the theme looks better in some way, but I can't quite put my finger on exactly what it is. Code folding is sweet!

FindBugs

- A Bug Pattern Detector for Java (via Rusty)

« Previous page | Main | Next page »