Number 3 on my Juno Top 10 List, is: Xtext / Xtend. Xtext is a text-2-model and model-2-text framework. This means that using Xtext you can define how text can be transformed to models and how these models can be transformed back to text. Why is this interesting, because this is exactly the steps you need to design programming language. This is why Xtext classifies itself as a framework for developing programming languages and DSLs.