questo articolo descrive davvero molto bene come sia possibile
utilizzare Java per realizzare un DSL interno, cioe' un Domain Specific
Language costruito direttamente utilizzando java stesso come linguaggio
(a differenza dei DSL esterni, che invece utilizzando linguaggi diversi,
come ad esempio xml in Ant).
Gli autori dimostrano perche' concetti come fluent interface (introdotti
per la prima volta da Martni Flower), method chainings e static import
costituiscano gli elementi base per ottenere un simile scopo.
http://www.infoq.com/articles/internal-dsls-java
Saluti
--
Gianluca Finocchiaro
www.jugsiracusa.it
groups.google.com/group/jug-sr
Ecco subito un esempio di utilizzo del pattern fluent interface (che non
necessariamente significa creazione di un DSL):
http://fest.easytesting.org/assert/index.html
Si sarebbe piaciuto scrivere codice del genere?
Person p = new Person();
List<Tuple3><String, Integer, Date>> persons =
new QueryBuilder(datasource)
.from(p)
.select(p.name, p.height, p.birthday)
.where(gt(p.height, 170))
.find();
In pratica avreste la possiblità di scrivere quasi delle normali query
sql, sfruttando tutta la potenza dei costrutti type-save di Java,
piuttosto che inserirle all'interno di statement jdbc.
Ora e' possibile grazie a questo progetto, ancora in fase sperimentale:
Buon divertimento!