Help

I'm the creator of Hibernate, a popular object/relational persistence solution for Java, and Seam, an application framework for enterprise Java. I'm also contributing to the Java Community Process standards as Red Hat representative for the EJB, JPA, JSF specifications and spec lead of the Web Beans specification. At Red Hat, I'm leading the effort to build a Unified development platform of programming model, frameworks and tooling.

Location: Wherever the Sun is
Occupation: Fellow at JBoss, a Division of Red Hat
Archive
My Books
Java Persistence with Hibernate
with Christian Bauer
November 2006
Manning Publications
841 pages (English), PDF ebook
Hibernate in Action
with Christian Bauer
August 2004
Manning Publications
408 pages (English), PDF ebook
RichFaces 3.2 released
01. Apr 2008, 16:26 CET, by Gavin King

RichFaces 3.2.0.GA is out!

This release introduces the following new components:

  • Combo Box
  • Inplace Input
  • Inplace Select
  • Progress Bar
  • File Upload
  • Columns
  • Pick List

Along with these enhancements:

  • DataTable Sorting
  • DataTable Filtering
  • Calendar month and year manual selection
  • Objects selection for suggestion box
  • Standard component skinning
  • Client-side EL functions: rich:clientId(Id), rich:element(Id), rich:component(Id)

RichFaces 3.2 requires JSF 1.2 and JDK 5.0 or above.

You can try out a demo of the new components here.

Congratulations to the RichFaces team!

JBoss Tool 2.0.1
18. Mar 2008, 07:31 CET, by Gavin King

Congratulations to the JBoss Tools team at JBoss and Exadel for getting 2.0.1 out the door!

1000 registered users in the first month
12. Mar 2008, 09:29 CET, by Gavin King

The seam community site went live exactly one month ago, and already boasts more than 1000 registered members, with twenty-something people signing up every day. The new forum is buzzing, and we're starting to get lots of useful information up on the wiki.

Meanwhile, I've just got back from a long trip to Japan and Australia, where I met with a bunch of big companies who are either using Seam, considering using Seam, or just curious. And a lot of people have been asking about Web Beans...

seamframework.org goes live!
12. Feb 2008, 22:05 CET, by Gavin King

The Seam community finally has a new home. Yes, everyone's been begging for this for, like, forever, but we wanted the Seam website to run entirely on Seam, which meant we had to build the infrastructure first.

seamframework.org was created using Seam Wiki, a brand new wiki/forum/blog/FAQ engine implemented using Seam, Hibernate, RichFaces and JQuery. (Seam Wiki also powers this blog.)

A huge thanks to Christian for all his hard work on Seam Wiki, seamframework.org and in.relation.to. And thanks to James Cobb for the design of seamframework.org.

Let us know what you think in the forum!

Do interfaces have semantics?
16. Dec 2007, 03:23 CET, by Gavin King

Several times, I've encountered the following view:

Interfaces in Java don't have any semantics attached. Only a concrete class can define the semantics of a method.

I've always thought that this was a very strange thing to believe. The /semantics/ of an object or operation are whatever a human user understands the object or operation to represent. The /implementation/ of an operation is primarily a set of instructions to the machine - and of course the machine has no use for semantics.

So if the semantics of an object or operation do not reside in the implementation of the object or method, exactly where are the semantics defined?

Well, I would argue that the semantics are declared in two places:

  1. The names of things
  2. The JavaDoc

These are the places where we find /English/ words in our code; therefore, they are meant for /human/ consumption, not machine consumption. The machine is every bit as confortable with a method called A$_128__() of a class named a$aaBxw as it is with the submit() method of Order. Only semantics need to be expressed in English.

And when we look at a Java interface, we see that it contains very little extra information beyond a list of names and JavaDoc. So, in fact, an interface is as close to a pure declaration of semantics as you're ever going to find in Java source code! If interfaces don't have semantics:

  1. How would we know what to call them?
  2. What would we write in the JavaDoc?

Of course, an implementation of an interface can add additional semantics - indeed, any subtype of an abstract type /must/, by definition, add additional semantics. But that doesn't mean that the most abstract type in a type heirarchy has /no/ semantics.

Well, except, perhaps, for Object. Does Object have semantics? It's operations certainly do, but what about the class itself? Let's pretend for a second that Java's type system is not completely broken: there are no primitive types, so all types extend Object. Then does it /mean/ anything to know that something is an Object? I'm not sure. Let's leave that as an exercise for the comment thread ;-)

But one thing I /am/ certain about: when we declare that our object implements an interface, we're definitely saying something /meaningful/ about what kind of thing it is.

Showing 1 to 5 of 121 blog entries