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.
Kijaro
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:
- First Class Methods (FCM) - Stephen Colebourne and Stefan Schulz - method references and inner methods
- Properties - Remi Forax - new property keyword
- Abstract Enums - Frederic Simon - allowing Enums to have an abstract superclass
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.
My favorite language change:
ReplyDeletedeterministic object lifetime, stack objects and destructors like in C++. In sum, Java as a truly better C++.
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
ReplyDeleteI think u misunderstand the phrase "ideas for changes", Carsten
ReplyDeleteHi Stephen
ReplyDeleteThanks 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.
Regards
Patrick
Hi Patrick,
ReplyDeletea) 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.
Rémi
I've updated the website with more details on the project subversion structure.
ReplyDeleteVery 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"?
ReplyDelete@Rémi: thanks for the clarifications.
ReplyDelete1) 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.
Patrick
Also, this blog details a nice-to-have flag available in javac: http://blogs.sun.com/sundararajan/entry/javac_s_hidden_options
ReplyDeleteI haven't tested it yet with your code, Stephen, just with an inner class.
Patrick