Posted by Patrick Kik at 21:23 on Wednesday 15 April
Vandaag was ik aanwezig op NLJUG’s J-Spring 2009. Naast andere interessante presentaties gaf Jos Warmer van Ordina een inleiding in Mod4j. Mod4j is een Open Source-project dat door Ordina begonnen is.
Jos noemt zichzelf een evangelist voor Model Driven Development (MDD). Hij is tevens een van de mede-auteurs van de bekende modelleertaal UML.
De enterprise-applicaties van tegenwoordig zijn te complex om op de traditionele manier van MDD te modelleren. Tussen UML-diagrammen en Java-source code zit een groot gat. Hoewel veel tools het doen, is UML nooit bedoeld geweest om code uit te genereren.
De moderne MDD doet het anders. In plaats van één complexe modelleertaal zijn er vele kleine domeinspecifieke modelleertalen. Binnen Mod4j kennen ze vier Domain Specific Languages (DSL’s): Presentation Model, Service Model, BusinessDomain Model en de DataContract Model.
Het meest opvallende van de DSL’s is dat ze text-based zijn. Geen mooie grafische diagrammen maar plaintext. Voordeel is dat de diagrammen heel makkelijk in elk versiebeheer tool opgenomen kunnen worden. Ook verschillen kunnen makkelijk opgespoord worden door te diffen. Met diagrammen is dit een stuk lastiger. Bij Mod4j zijn ze wel bezig om tooling te ontwikkelen om de text grafisch weer te geven. Dan blijven alleen de voordelen maar over.
Voor de DSL’s zijn uitgebreide Eclipse-plug-ins te verkrijgen. Uitgebreide syntax highlighting en code completion. Ook aan de interactie met de compiler van Eclipse is gedacht. Wanneer een (deel van) een model aangepast wordt, worden alleen die Java-files opnieuw gegenereerd die verversing nodig hebben. Dus geen volledige rebuild van de applicatie.
Mod4j is volledig ‘Mavenized’ zodat integratie in het build-proces geen probleem mag zijn.
Het is niet de bedoeling dat uit de modellen in Mod4j eenmaal Java wordt gegenereerd en dat daarna alle code een eigen leven gaat leiden. De modellen en de gegenereerde code blijven samen bestaan. Het is ook niet de bedoeling dat mensen aan gegenereerde code gaan knutselen. De gegenereerde code biedt voldoende mogelijkheid om eigen code aan toe te voegen zonder de koppeling met de modellen te verbreken.
Zelf ben ik behoorlijk enthousiast over de mogelijkheden van Mod4j. Vergeet niet om de projectsite te bezoeken.











