I'm the creator of Hibernate, a popular object/relational persistence solution for Java, and Seam, an application framework for enterprise Java. I've also contributed to the Java Community Process standards as Red Hat representative for the EJB and JPA specifications and as spec lead of the CDI specification. At Red Hat, I'm currently working on Ceylon, a new programming language for Java and JavaScript VMs.

I now blog at the Ceylon blog.

I also post stuff on G+.

Location: Barcelona, Spain
Occupation: Fellow at JBoss, a Division of Red Hat
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
12. Dec 2013, 14:32 CET, by Gavin King

To celebrate the recent release of Ceylon 1.0, we're putting on a one-day free conference in Paris on Friday, January 24.

The format of the conference is:

  • a morning of short presentations about different bits of the Ceylon ecosystem, followed by
  • a hands-on Ceylon programming workshop in the afternoon.

Almost the whole Ceylon team will be present, since we're having a four-day team meeting prior to the conference day. So if you have any questions about Ceylon, or if you want to bend our ears on some pet topic, this is your chance.

You can see the conference program, and sign up for the conference here.

P.S. If you're coming to the conference, or even if you're not, please feel very welcome to join the team for drinks on Thursday night.

25. Sep 2013, 00:10 CET, by Gavin King

It's been a long three years since my first posts on this site describing our ideas for the Ceylon language. Now, finally, Ceylon 1.0 is feature complete. From the announcement on

After more than three years of development, Ceylon is now feature-complete. Ceylon 1.0 beta implements the whole language specification, providing the capability to execute Ceylon programs on both Java and JavaScript virtual machines and to interoperate with native code written for those platforms. This release includes:
  • a complete formal language specification that defines the syntax and semantics of Ceylon in language accessible to the professional developer,
  • a command line toolset including compilers for Java and JavaScript, a documentation compiler, and support for executing modular programs on the JVM and Node.js,
  • a powerful module architecture for code organization, dependency management, and module isolation at runtime, and
  • the language module, our minimal, cross-platform foundation of the Ceylon SDK.
Simultaneously, we're releasing Ceylon IDE 1.0 beta, the latest iteration of our full-featured Eclipse-based development environment.

The team has now switched into bug-fix/performance-enhancement mode, as we prepare for a final release.

Yeah, yeah, three years is a long time, and it's taken longer than I had hoped to get to a 1.0 release. OTOH, we're releasing a lot more than I had expected to have for 1.0. I never imagined that we would have stuff like Ceylon Herd and the IDE ready for Ceylon 1.0.

We have a great little community working on Ceylon development, and I would like to welcome you guys to join us over there, now that we're ready for people to really start making use of Ceylon in their projects!

30. Oct 2012, 23:27 CET, by Gavin King

In case you missed it, we just released the fourth milestone of Ceylon and Ceylon IDE. The next release will be the feature-complete Ceylon 1.0 beta, now due in January. We've also pushed a major update to Ceylon Herd.

This is the first release of Ceylon IDE to include complete support for compilation to JavaScript and execution on Node.js.(Since M3, the Ceylon compiler has offered the option of compiling a Ceylon module to a CommonJS module) I personally love being able to write a snatch of Ceylon code and then watch it execute on both the JVM and Node, all from directly within Eclipse.

Another cool new features of the language is the assert statement. If assertions doesn't sound that cool or new to you, then I bet you have not yet seen Ceylon's unique spin on the concept. You can read more about it at the Ceylon blog.

(P.S. I'm now mostly blogging over at the Ceylon site, and on Google plus, but I'll still post items here from time to time.)

20. Mar 2012, 17:20 CET, by Gavin King

This is the second release of the Ceylon compiler and other command line tools.

You can read Stef's announcement here at the Ceylon blog. The major new features are:

  • Java interoperability
  • enumerated/algebraic types and switch/case
  • first-class and higher-order functions
  • support for remote module repositories and Maven repositories

Try it out!

A huge thanks to the Ceylon team for getting this release done on schedule while I've been taking a break from development! Thanks so much!

26. Feb 2012, 19:35 CET, by Gavin King

Great, I'm finally able to write, compile, and run Ceylon code that uses Java libraries from within Ceylon IDE:

import java.lang { System { sysprops=properties } }
import java.util { Date }

void greet() {
    value date = Date();
    print("Hello, " sysprops.getProperty("", "world") 
          ", the date is " "/" date.month "/" 1900+date.year ".");

This doesn't look like much, perhaps, but it's demonstrating some important features of the interoperability:

  1. the ability to map a Java static declaration to a toplevel declaration in Ceylon,
  2. the ability to resolve an invocation to the correct overloaded version,
  3. the equivalence between Java primitive types and java.lang.String and Ceylon types in ceylon.language, and
  4. the automatic mapping of JavaBeans properties to Ceylon attributes.

Here's a second working example:

import java.lang { System { sysprops=properties } }
import { File }

void listHomeDir() {
    for (file in File(sysprops.getProperty("user.home")).listFiles()) {

Java interop has been a somewhat tricky problem for us because Ceylon's type system is somewhat different to Java's, and because the design of Ceylon's language module isn't really based on the Java SDK. When running on the Java VM, the language module does make use of the Java SDK as part of its internal implementation. But when running on a JavaScript VM, it can't, of course. So we have to limit our dependence upon JVM-specific stuff.

We've still got a few things to finish off here. For example, our treatment of arrays and Java Iterables is not completely finished, and some IDE features still aren't working quite right, but I think most of the hard work is already done, ready for release as part of Ceylon M2.

Good work guys!

Showing 1 to 5 of 257 blog entries