Qi4j e la Composite Oriented Programming

Mercoledì 10 Febbraio 2010 - 08:58

di Giuseppe de Santis

Java

È notizia di qualche giorno fa il rilascio della prima versione stabile di Qi4j (pronuncia: chee for jay).

Sicuramente meno noto rispetto alle soluzioni Java EE di big del settore quali SpringSource, JBoss e Oracle, è un framework ispirato dai principi del Domain-Driven Design e in parte a quelli di Aspect Oriented Programming e Dependency Injection; ad evidenziare il lavoro svolto, gli ideatori di Qi4j, in gran parte sviluppatori della scandinava JayWay, hanno coniato una definizione ad hoc: Composite Oriented Programming (COP).

Tra i principi cardine della COP:

  • maggiore flessibilità degli oggetti, il cui comportamento dovrebbe essere più flessibile in relazione al contesto (tanto da rimproverare la classica programmazione OO di essere, nei fatti, più “Class-Oriented” che realmente “Object-Oriented”);
  • forte incoraggiamento al disaccoppiamento (decoupling) tra classi;
  • maggiore importanza alle business rules (a partire dal dominio applicativo);
  • utilizzo massivo di interfacce a discapito delle classi.

Per i curiosi, caldamente consigliati tutorial e manualistica sul sito di Qi4j, nonché il sito di riferimento per il Domain-Driven Design in cui è segnalato l’omonimo libro di Eric Evans, pietra miliare in ambito DDD.

In italiano, of course, c’è meno materiale, tra cui merita menzione un approfondimento sulla DDD dell’immancabile MokaByte.

Tags:

Categoria: Java | Permalink

Commenti

1

Mi ero interessato a questo progetto circa un anno fa e lo ritengo molto interessante per le idee che sono alla base.
Mi aveva particolarmente colpito l’idea di spostare modularità, riusabilità e decoupling oltre le classi.. ovvero fino ai singoli metodi!

Un progetto da seguire e mi chiedo se qualcuno ne conosca altri che approfondiscano metodologie simili.

# - postato da Andrea Zilio - 10 Febbraio 2010 - 16:29

Inserisci il tuo commento:





(puoi usare i seguenti tag HTML per formattare il testo -
a href, b, i, br/, p, strong, em, ul, ol, li, blockquote, pre):

 

Anteprima del commento