Links to DSL desing/writting in Java:
Domain specific languages are powerful, yet to be used-with-care, tools. They can provide new ways of interacting or configuring a system, and greatly increase its productivity and flexibility. New modern (and mostly interpreted) languages like Ruby or Groovy are better suited for DSL implementation than classic languages (Java, C++,...). However Java or C++ can still be used, accepting some verbosity overhead.
The following article offers a fantastic introduction to DSLs, their core concepts, desing and implementation, using both modern and more classical languages. Only one piece is missing; nothing is mentioned about the testability of "ultra-expresive" code. Besides, the redundant information that languages like Java forces us to write, and that the author call "ceremony", help other engineers to understand (and thus maintain) our code. We do not just write code to be executed, but also to be maintained (let's not be selfish please).
As I said these links provide just introductory information. I'll add more links in the following days or weeks as I continue with my own learning adventure.
Enjoy life to the full!!!!!!!!!!
Edit:
I have found one of those sentences that Guru wannabes (you know, they will look at you and say "We have designed a DSL to....... you know what a DSL is, don't you?") definitely hate:
"Internal DSL" is more or less a fancy name for an API that has been created thinking in terms of readability and focusing on a particular problem of a specific domain.
I have found this in an interesting artical called "An aproach to Internal Domain Specific Languages in Java"