Sei sulla pagina 1di 16

CMS

2013

Fondamentali

Single sign ON (Java CAS, OpenLDAP, Kerberos, OpenID, Spring Security) User CRUD (user, role, permissio) Configurazione (es. JCR browser) Content type builder (CCK) Query / Filltered list builder (VIEWS)

Wysiwyg block manager (Portlet)


Content versioning (revisions) / Authoring (workflow) (JCR) Content publish (intranet to extranet, JCR import) Search (facets, full text) (Lucene, Solr)

Menu / Navigation manager (JCR browser)


Themes (templating engine / language) Multisite Multilanguage

Clustering / Scalability

Drupal Pro

Interfaccia di amministrazione e CRUD dei contenuti Custom Content Types (CCK) List / Query builder (VIEWS, nessun equivalente esistente) FORM framework CMS pi utilizzato dopo Wordpress Documentazione chiara ed esaustiva Leggero (funziona su qualsiasi hosting) e "Agile" (PHP) Possibilit di sovrascrivere quasi qualsiasi vista tramite override del tema Moduli: commenti, blog, forum, etc. Probabilmente il miglior CMS esistente...

... dopo Adobe CQ5

Apache Jackrabbit (JCR RI) Apache Sling (Rest JCR) Apache CFX (Webservice) Apache Felix (OSGi) ExtJS $$$

Drupal CONS

sistema di hook limitato (l'impossibilit di intercettare metodi a differenza che in altri linguaggi) scarso supporto alla pubblicazione remota dei contenuti sistema di content type poco flessibile poich "schematizzato" i metadati necessari all gestione dei content type rendono complesse e poco performanti le query distinzione superflua tra nodi / utenti / tassonomie / menu / etc (rende necessaria integrarla con moduli) pi tempo speso a sovrascrivere funzionalit (es. views) piuttosto che a utilizzare ci che esistente

drupal 8 sar completamente diverso dai precedenti, basato su Symfony2

Symfony CMF

BlockBundle ContentBundle (CCK) CreateBundle MenuBundle SearchBundle SimpleCmsBundle SonataDoctrinePhpcrAdminBundle TreeBrowserBundle (JCR browser)

Symfony CMF Cons

no CCK, no VIEWS (tuttavia ha un admin generator) bundle sviluppati dalla community (non nel core) codice dei bundle complesso e poco documentato interfaccia utente attualmente inutilizzabile out of the box lascia fuori molte delle funzionalit di un CMS (es. publishing / workflow)

JCR

Java Content Repository Utilizzato dalla quasi totalit dei CMS Java Uno schema flessibile / gerarchico per la gestione di documenti (file) e contenuti (content types) Sistema di query simile a SQL Apache Jackrabbit implementazione di riferimento (JCR 2.0) JBOSS Modeshape (JCR 2.0) Alfresco (JCR 1.0 + jBPM per worlflow)

CMS JCR

Liferay Hippo CMS Magnolia Adobe CRX (CQ5) JBOSS eXo platform (GateIn)

Liferay

Sistema per portali Portlet Container Basato su repository JCR Probabilmente il "CMS" JAVA pi diffuso Utilizzato dalla PA, Enti, grandi aziende Interfaccia gradevole 500 MB unzipped Requisiti minimi alti Ricco di features (forum, blog, calendario etc)

Lightweight Portlet containers

Apache Pluto (RI) Apache Jetspeed (basato su Pluto) JBOSS GateIn (ex JBOSS Portal)

Magnolia CMS

Praticamente l'equivalente di Symfony CMF in Java... ...a cui unisce alcuni vantaggi di Drupal (commenti, forum, etc) CCK limitato, no VIEWS Intranet to extranet publishing Integrato con Spring MVC tramite Blossom JCR browser 2.0 User manager Menu / page manager tramite templating Integrabile con prodotti CMIS (Alfresco) Probabimlente la miglior soluzione CMS Java (FREE!) Poco diffuso in italia (NO Enterprise) Versione 4 a fine vita, 5 in alpha (rilascio previsto a luglio 2013) La versione 5 integra Vaadin7 per la GUI del backend

Liferay vs Magnolia

Liferay relativamente diffuso, Magnolia no Liferay richiede decisamente pi risorse Liferay un Portlet container, Magnolia ha un sistema custom per la gestione dei blocchi Magnolia meno complesso, curva di apprendimento pi rapida Magnolia 5 integra un sistema (Vaadin) per costruire webapp Entrambi sono in qualche modo integrabili

Conclusione 1/2

Magnolia 5 con Vaadin 7 si configura come una soluzione allettante In alternativa o usare un framework JSF esistente (es Primefaces) o Spring MVC + dojo client side per riscrivere sostanzialmente Adobe CQ5

Si tratta di implementare o User CRUD (JCR browser) e management Spring security, Apache Shiro) o Wysiwyg page / block / menu manager (JCR browser, valutando l'utilizzo di un portlet container) o Configuration manager (JCR browser) o Workflow, content authoring, versioning e remote publishing (JCR import / export) o Custom content type manager (CCK) e CRUD (edit / view form) o Query / list builder (admin generator, VIEWS)

JSF vs MVC

Implementano in maniera simile i concetti di conversione e validazione dei valori in input Spring MVC pi diffuso in generale. JSF lo standard de facto per JAVA EE su EJB container quali JBOSS AS / Glassfish / Websphere Spring MVC request based (un metodo del controller per ogni richiesta esegue il mapping parametri url o form a un oggetto bussiness) JSF component based (utilizzo un qualsiasi oggetto bussiness in un qualsiasi template JSF) Spring MVC molto pi performante essendo stateless, JSF stateful (viewstate) JSF possiende librerie di componenti (Primefaces, Richfaces) che astraggono la comunicazione client (javascript) / server (bussiness object) Spring MVC necessario che sia integrato con qualche framework javascript (dojo) E' pi semplice scrivere componenti riutilizzabili con JSF piuttosto che con Spring MVC JSF ha un helper ajax integrato (possibilit di gestire gli eventi server side, come in GWT o Vaadin)

Spring MVC di base si appoggia su Apache Tiles, JSF ha un sistema integrato per il templating a componenti (Facelets)
Spring MVC utilizza di base per il templaing JSP (inutilizzabile). Tuttavia esistono altri sistemi pi developer friendly (Thymeleaf, Freemaker, Velocity) JSF pensato per essere utilizzato con EJB in un contenitore JAVAEE, tuttavia possibile utilizzarlo anche senza, appoggiandosi a Spring JSF programmabile (es. add(new TextField()))

Conclusione 2/2
Forse meglio attenersi a Drupal ?

con le problematiche note (poco performante, poco flessibile, no remote delivering) senza i vantaggi di un sistema come JCR tuttavia posso integrare Alfresco tramite CMIS (TODO: valutare la soluzione) in ogni caso non aiuta per widget e webapp