About C4J

The first generation of C4J (version 1.0 up to 2.7.5) - the non-agile generation - was developed by Jonas Bergström in 2006 and published on sourceforge.net. Starting from april 2009 Hagen Buchwald used this first generation C4J at the Karlsruhe Institute of Technology (KIT) for the eduction of over 1.800 students in object oriented programming with Java. Hagen was supported by Roland Küstermann who integrated C4J in EJE (Editing Java Easily), a Java IDE used at the Karlsruhe Institute of Technology (KIT) for eduction purposes. Hagen has a well-founded background with Design by Contract as he was educated in Eiffel when he was a student at the University of Karlsruhe (now the Karlsruhe Institute of Technology (KIT)) in the early 1990s and worked as an Eiffel tutor. Hagen visited Jonas in 2010 in Stockholm and proposed a whole slew of improvements as a result of his past experiences with Eiffel and contemporary feedback of his students. As a result Jonas developed C4J 2.7.5 which was even able to deal with the equals contract. At the same time Hagen coached at KIT the bachelor thesis of Fabian Rigterink and the diploma thesis of Yana Stoeva which led to the D3-Explorer, a Java tool to easily create and maintain contracts and to create the basis of the enrichment of JCL with C4J contracts (The C4JCL Project).
The D3-Explorer and the idea of the C4JCL project was presented in 2011 on the Agile Day of the Karlsruher Entwicklertag 2011 at Karlsruhe, Germany by Yana and Hagen. On the same event Jonas Bergström gave a speech about C4J and his experiences with Testing by Contract at bwin, Stockholm.
Ben Romberg, an agile software engineer of andrena objects, Germany, was one of the 600 participants of this conference and realized the classiness of contracts for Java to overcome the object oriented flaws of Java.

The idea of a second generation of C4J (starting from version 6.0) - the agile generation - was explored by Ben Romberg in summer 2011 to overcome the non-agile characteristics of C4J 2.7.5. When Hagen Buchwald entered andrena objects in Oktober 2011, Ben and Hagen started the C4J next generation project on github.com. Several agile software engineers of andrena (Frank Adler, Lars Alvincz, Stefan Dürrfeld, Urs Metz, Marc Philipp, Timm Reinstorf and Yana Stoeva) supported the C4J team with valuable insights and feedback on early draft versions of C4J next generation. They also contributed hundreds of fully automated tests to ensure that all requirements of agile software engineering were met.

In July 2012 the board of VKSI, an association of software engineers at Karslruhe, Germany, accepted a proposal of andrena objects to support hosting and maintenance of the agile generation of C4J. In October 2012 C4J 6.0 was released by VKSI.

Jonas Bergström has a master of computer sciences and lives in Stockholm, Sweden. Jonas is the author and product owner of the first generation C4J. He previously worked in the telecom and finance sectors and the internet gaming industry. He is now the CTO of a swedish crowd sourcing company. C4J came about when he 2006 realized that the Design by Contract framework he had written for his employer (using Java's dynamic proxies) could be significantly improved using Java 5's javaagent option and byte code instrumentation. When he looked around for other DbC libraries for Java and realized that none existed that follows basic object orientation principles, he decided to implement one himself - and C4J was born.

Ben Romberg is a software engineer at andrena objects and the author of the second generation C4J. In 2011 he was a participant of the Karlsruher Entwicklertag 2011 and listened to the speech of Jonas Bergström about C4J and the speech of Yana Stoeva and Hagen Buchwald about their experiences with C4J at the Karlsruhe Institute of Technology (KIT). Ben realized at once the elegance of contracts for Java to overcome the object oriented flaws of Java. He started exploring ways to enhance C4J adhering to the requirements of agile software engineering.
In summer 2011 he contacted Hagen to discuss a draft version of a second generation C4J which could overcome the non-agile characteristics of the first generation C4J. When Hagen joined andrena objects in October 2011 both started to work as a team on the idea of an agile C4J.

Hagen Buchwald accomplished his diploma of industrial engineering and managemenet at the University of Karlsruhe (now the Karlsruhe Institute of Technology (KIT)). He lives in Karlsruhe, Germany. Hagen is the product owner of the second generation C4J and author of this second generation C4J website, which was evolutionary developed from the first generation C4J website of Jonas Bergström.
Hagen is in the IT industry since 1994. In 2008 he returned to the Karlsruhe Institute of Technology (KIT) to start a three years lectureship educating about 1.800 students in object oriented programming. As an thoroughly educated Eiffel software engineer, he did a systematic research to find an open source framework to overcome the object oriented flaws of Java. C4J by Jonas Bergström was the best open source famework for Java he could find.
In winter 2008/2009 he convinced Roland Küstermann to add C4J to the KIT Java IDE, called EJE (Editing Java Easily). Starting from April 2009 contracts were a central part of the object oriented part of the programming course.
Especially programming exercises benefited from contracts. Non-ambigious contracts written in Java helped to overcome the inevitable ambiguity of colloquial paper specifications by rendering them more precisely.
As contracts can be checked at runtime, they give immediate feedback to the software developer. Hagen showed with a series of experiments with about 1.000 participants that the probability that a software developer could successfully finish a given developing task in a given time of 60 minutes was increased by factors when using contracts.
Compared to a control group adhering to the colloquial paper based approach without contracts there was an increase of about 500 percent.
Compared to a control group adhering to the test driven development (TDD) approach without contracts there was still an increase of about 50 percent.
In October 2011 he returned from the KIT to the IT industry as member of the executive board of andrena objects.

Roland Küstermann has a diploma of industrial engineering and managemenet and lives in Karlsruhe, Germany. Roland is the author of the EJE (Editing Java Easily). Since 2010 he is a professor of computer science at the DHBW Karlsruhe.