Sunday 11 November 2007

Kijaro - for Java language changes

I'd like to announce the creation of a new project - kijaro. Kijaro is designed as a place where ideas for changes to the Java language can be implemented.


The kijaro project has been setup following various discussions on blogs, mailing lists and email. Its aim is to provide a very open place for those interested in implementing a change to javac to gather and code.

Kijaro is similar in its scope to the Kitchen Sink Language. The KSL project has been open for quite a while, but has yet to see any new features. KSL also aims to have code reviews and experienced compiler writers involved, which can be seen as quite formal.

Kijaro aims to be lightweight in rules:

  • Documentation. Each new language feature must have some form of associated document, even if its just a blog. It doesn't have to be much, but should have an outline of why the feature is needed and the syntax implications.
  • Backwards compatibility. On svn TRUNK all existing Java code must compile.
  • Comments. Each change must have a comment so we can find it later, such as 'FCM-MREF'.

So far, the proponents of three language enhancements have expressed an interest in working at kijaro:

In fact, the FCM and Properties code is already checked in.

So, do you have a favourite language change that you want to see implemented in Java 7? Or, would you like to download and try out one of these changes? Then, please join us at kijaro! The more ideas we get implemented the better!

After all, real working prototypes tend to produce good feedback and really encourage the decision makers that any change is practical.


  1. My favorite language change:
    deterministic object lifetime, stack objects and destructors like in C++. In sum, Java as a truly better C++.

  2. hmm - it seems that the worst fears on open sourcing the JVM now begin to materialize. Could you recommend .NET where I have at least the consistency of Microsoft

  3. I think u misunderstand the phrase "ideas for changes", Carsten

  4. Hi Stephen

    Thanks for setting this up. A couple of nice-to-haves:

    a) Notes on setting up the project (which are the source directories, how to build, how to test). Once I'm sure how to build I could submit IntelliJ project/module files.

    b) Some policy on synchronizing with javac versions. A "snapshot" of the javac trunk could be kept in a branch, for example.

    c) Maybe a directory per committer? To track features added and docs.

    Don't want to overcomplicate it--am glad you took this step.


  5. Hi Patrick,
    a) a project must be built using ant, like javac does, you can commit any IDE artifacts.
    b) yes, currently the trunk is something like that but that's because we haven't integrated ours changes.
    c) there is already one branch by language change.


  6. Stephen Colebourne12 November 2007 at 11:50

    I've updated the website with more details on the project subversion structure.

  7. Very good idea, truely buttom-up and makes you wanna go an play (please, operator overloading someone?). Questions though, how would this potentially make its way into Java? Sun has proven very slow/hostile/non-innovative when it comes to language improvements. In effect, could Kiajro be seen as the beginning of a fork pusing a strictly community driven "Java 3"?

  8. @Rémi: thanks for the clarifications.

    1) I didn't notice the Ant build.xml file under langtools/make. @Stephen, thanks for the update to the home page.

    2) It might be good if trunk was always some version of the javac development tree (synchronized regularly). Branches would then update if necessary or interested. But I can also understand not doing that.

    3) Ok.

    @Casper: maybe it's best not to pick a fight right now :). Any change proposed for Java, the language, has to go through a pretty rigorous specification and review process. I myself would like to think of kijaro as a very friendly room to experiment and show new ideas, without worrying about whether it will make it into (or even influence) Java. I think once someone has something more complete and ready for review, then it could be posted to the KSL project. IMO, of course.


  9. Also, this blog details a nice-to-have flag available in javac:

    I haven't tested it yet with your code, Stephen, just with an inner class.



Please be aware that by commenting you provide consent to associate your selected profile with your comment. Long comments or those with excessive links may be deleted by Blogger (not me!). All spam will be deleted.