This week's giveaway is in the EJB and other Java EE Technologies forum. We're giving away four copies of EJB 3 in Action and have Debu Panda, Reza Rahman, Ryan Cuprak, and Michael Remijan on-line! See this thread for details.
A DSL is just an internal or external language used to express and solve a problem. Metaprogramming is a programming tool. DSLs do not rely on metaprogramming (but metaprogramming may be used to implement a DSL).
subject: What is the difference between a DSL and Metaprogramming