4 ms·
You are not the only one arguing about the project's lack of maturity and the existence of better, more mature alternatives (which ones?). I can understand thi
by eneveu 16y ago
You are not the only one arguing about the project's lack of maturity and the existence of better, more mature alternatives (which ones?).
I can understand this sentiment, and I'd love to be able to add a Maven dependency on this project and start using it on production code tomorrow (well, monday actually).
But I am also glad Google followed the "ship early, ship often" mantra . Better alternatives may or may not exist, but I'm pretty sure I had never heard of them before, and never really cared for "contract programming" until now. I knew about JSR 305 and used the @Nonnull annotation when it made sense, but that's about it (I guess doing this already puts me ahead of 80% of Java programmers in this regard...).
Some might say that it's sad people waited for a Google-branded project to be interested in this subject. I choose to view it as an opportunity for the field as a whole. The interesting discussions it sparked (here and on other websites) are worth it by themselves. Some developers might even compare options and start using one of the "better alternatives" you hint about.
The project may be young, but it seems to generate a lot of interest, and I'm sure many people will contribute and improve it.
- rz0 16y agoAlternatives include: JML, C4J, Contract4J, JASS, and Modern Jass. The most popular and well-known solution is probably JML. I'd like to mention though that Cofoja itself is not so "new", in a sense; it is a rewrite of Modern Jass, which itself was a rewrite of JASS. Though the code may be mostly new, we've borrowed many concepts, ideas, and implementation techniques from our predecessors, and hopefully learnt a bit from their experience. One could then ask "why pick Modern Jass as a basis while there are other more <whatever> framework available?" but that's another question. Links: C4J. http://c4j.sourceforge.net/ http://c4j.sourceforge.net/ Contrac4J. http://www.contract4j.org/ http://www.contract4j.org/ Java with Assertions (JASS). http://csd.informatik.uni-oldenburg.de/~jass/ http://csd.informatik.uni-oldenburg.de/~jass/ Java Modeling Language (JML). http://www.jmlspecs.org/ http://www.jmlspecs.org/ Modern Jass. http://modernjass.sourceforge.net/ http://modernjass.sourceforge.net/ And if you're interested in the fine details of the internal differences between Cofoja and other frameworks, you may want to read my technical report: http://cofoja.googlecode.com/files/cofoja-20110112.pdf http://cofoja.googlecode.com/files/cofoja-20110112.pdf
- eneveu 16y agoThanks for these links. Sounds like there are indeed alternatives, but they were considered before creating Cofoja. I noticed in your report that you studied at Ensimag. That's funny: I almost went there! (I added it to my list of choices of Grandes Écoles, but finally opted for a generalist engineering school)