Internal DSL

0 views
Skip to first unread message

Gianluca Finocchiaro

unread,
Feb 19, 2008, 9:00:31 AM2/19/08
to jug...@googlegroups.com
Ciao a tutti

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

Gianluca Finocchiaro

unread,
Feb 19, 2008, 9:02:58 AM2/19/08
to jug...@googlegroups.com
Gianluca Finocchiaro ha scritto:

> Ciao a tutti
>
> 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).
[...]

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

Gianluca Finocchiaro

unread,
Apr 26, 2008, 9:53:59 AM4/26/08
to jug...@googlegroups.com
Gianluca Finocchiaro ha scritto:

>
> 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
>
> Saluti
>

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:

http://code.google.com/p/flu/

Buon divertimento!

Reply all
Reply to author
Forward
0 new messages