• Moderatore

    Joomla 4: cosa cambia sotto il cofano? Novità e cambiamenti per sviluppatori

    Nel post di benvenuto a Joomla 4 abbiamo visto quali sono stati i maggiori cambiamenti e le novità che l'utente può trovare e usare.

    Ma cosa è davvero cambiato "dentro" Joomla 4? Solo funzionalità ed estetica... o c'è molto di più?

    Ebbene i cambiamenti sotto il cofano sono davvero molti e molto dei quali comprensibili solo dagli sviluppatori: ma la cosa interessante è che frutto di questi cambiamenti sono la velocità del CMS e la sua "gestibilità".

    Il team di Joomla ha cercato quindi di includere nel progetto le più recenti versioni e tecnologie come ad esempio:

    • Bootstrap 5
    • jQuery 3
    • PHPMailer 6.0
    • Vue.js (per il Media Manager)
    • SASS

    PHP

    Tutta la codebase di Joomla derivante dalla versione 3.x è stata pulita e "modernizzata":

    • È stato innalzato il requisito minimo di PHP alla 7.2 ed è già supportato PHP 8.
    • Tutto il PHP è stato riscritto con codice Namespaced,
    • Per aumentare le prestazioni il "Jfactory" è stato sostituito dai "Dependency Injection Containers"
    • Joomla (da sempre) è un vero e proprio framework (al contrario di altri famosi CMS) le cui parti compongo quello che era il CMS che utilizzavamo: con Joomla 4.0 il framework è stato completamente fuso all'interno, quindi completamente usato per le funzionalità del core, evitando poco performanti e fastidiose "personalizzazioni" o disallineamenti di codice tra Framework e necessità del CMS. Questo aumenta performance e manutenibilità.
    • È stato rimosso tutto il codice deprecato in Joomla 3.x, oltre 1000 classi!
    • Ora è richiesta l'estensione PHP GMP se si vuole usare l'innovativa autenticazione WebAuthn Passwordless Login
    • È richiesta l'estensione PHP mcrypt, per consentire l'uso della classe Joomla\CMS\Crypt\Cipher\CrytoCipher: a seguito di questo sono stati eliminati tutti i sistemi cifrati più deboli: JCryptCipher3Des, JCryptCipherBlowfish, JCryptCipherMcrypt, JCryptCipherRijndael256, JCryptCipherSimple
    • Migliorato drasticamente il sistema di Event Dispatching: ora è possibile leggere, generare e configurare qualsiasi tipo di evento, aumentando drasticamente la facilità di sviluppo di nuove funzioni grazie alla possibilità di far "comunicare" velocemente tra loro tutti i "pezzi" del CMS.
    • Migliorata ed espansa la Command Line Interface (CLI), ora si può davvero fare "tutto" da linea di comando
      351f8a85-11f6-4dad-9ad4-9c52f4b5bb73-image.png
      00858b1b-2715-47db-807c-c6c10ca61cac-image.png PS: a cosa serve una CLI per un CMS? Usando i comandi CLI, con pochi minuti di "focus" sulla programmazione e pochi secondi di esecuzione, si possono fare script ripetibili e automatizzabili all'infinito per effettuare qualsiasi operazione su centinaia di installazioni, dai backup, agli update, ai test, ecc, ecc.

    Database & MySql

    Anche in questo caso è stata fatta molta "pulizia".

    • E' stato implementato l'uso dei Prepared SQL Statement per migliorare sicurezza e manutenibilità
    • È stata abilitata la "Strict Mode" che aiuterà i devs con i futuri aggiornamenti della versione di MySQL, allineandosi ancora di più anche con PostgreSQL per consentire una più facile compatibilità con le query in entrambi i linguaggi.
    • Rimosso il supporto al driver ext/MySQL di PHP (che è stato rimosso in PHP 7.0), quindi il CMS cercherà automaticamente di usare l'estensione MySQLi (disponibile da PHP 5.3) o il driver PDO MySQL (disponibile da PHP 5.3).
    • Rimosso il supporto al driver ext/pgsql di PHP e cercherà automaticamente di usare il driver PDO di PostgreSQL (disponibile da PHP 5.3 e Joomla 3.9).
    • Dopo attenta analisi sulle statistiche di utilizzo in questi anni, è stato rimosso anche il supporto a SQL Server.

    Ad oggi quindi i requisiti minimi per il database sono:

    • MySQL 5.6
    • PostgreSQL 11.0

    Javascript

    Sempre più impattante per la gestione non solo della UI ma anche di diverse funzioni del core, vediamo che il vecchio framework Mootools è definitivamente scomparso e il core di Joomla non ha più nulla di basato su Jquery.
    Tutto il Javascript "necessario" ora è "vanilla" e segue la sintassi ECMAScript 6+ (ES 2015+), seguendo l'ottima coding style guide di Airbnb, con evidenti risultati di leggerezza, velocità di esecuzione, manutenibilità e pulizia del codice.
    È comunque disponibile l'uso di Jquery 3.x.

    Bootstrap 5

    In Joomla ci sono diverse interfacce grafiche, prima fra tutte quella del Backend di Amministrazione.
    Per uniformare l'estetica e dare agli sviluppatori un framework che permettesse di sviluppare velocemente le UI, è stato scelto (dopo una fase di Alpha con BS4) il nuovissimo ed appena rilasciato stabile Bootstrap 5.
    Perchè? Perché è innovativo, è molto leggero e soprattutto non dipende più da altri framework Javascript come Jquery, anch'esso quindi rispetta il core "pulito" di Joomla4 è ed tutto sviluppato in JS vanilla.
    Bootstrap 5 inoltre è predisposto nativamente al supporto di tutte le lingue RtL e LtR, alle icone SVG (al posto delle orribili font icons) e resta super leggero rimuovendo il supporto a IE10/11. Con BS5 si possono usare facilmente quindi anche componenti React e Vue.js.

    Miglioramenti al layer MVC

    Ora i componenti, i moduli e i plugin di Joomla! saranno usati solo per implementare le proprie funzioni peculiari, mentre tutte le funzionalità base saranno fornite dal sistema. Un "Command bus" potrà essere usato dagli sviluppatori per semplificare il proprio codice. In questo modo Joomla! 4 limita lo sforzo degli sviluppatori consentendo molta più stabilità e "aggiornabilità" al CMS.

    [Post in aggiornamento]