Evolving Embedded Domain Specific Languages in Java
Steve Freeman and Nat Pryce presented a paper on Evolving an Embedded Domain-Specific Language in Java at OOPSLA 2006. The paper describes the evolution of jMock from a framework to a domain specific language embedded in Java. They describe how it happened, lessons learned about EDSLs, their limits, and how Java and C# work as host languages for them.
Freeman and Pryce describe DSLs and their benefits and how EDSLs are common in lanugages with small syntaxes (Haskell, Lisp, Smalltalk) but are harder to hit into large syntax languages such as Java. They then describe the previous incarnations of jMock as it developed from mockobjects.com, dynamock, and now jMock. They detail their lessons learned from each step on the evolutionary ladder. Then there is a detailed discussion of jMock and many of the design decisions they made.
They list some conclusions at the end, including the need to make sure a framework always works well in a modern IDE, that scaling EDSLs into complex languages may not be a good idea as the complex cases make the code harder to read, and that for the most part, it is too hard to extend conventional host languages.