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
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
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 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
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.
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.
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.