Chiaramente non parliamo di utenti alle prime armi per quanto riguarda la programmazione, le differenze tra Scala e Java riguardano infatti aspetti che per essere analizzati richiedono alcune competenze di base. Uno di questi attiene per esempio la serializzazione e il parsing JSON, in Java abbiamo la libraria Jackson che utilizza la reflection API per il mapping ma supportando il ricorso alle Annotation. Scala prevede l'impiego di diverse librerie per questo formato, in molti casi esse non sono però incentrate sulla reflection.

Java-Logo

La reflection è uno dei punti di forza di Java, essa consente ad un'applicazione di analizzare le classi che sono state utilizzare per la sua implementazione così come i nomi dei metodi, e qui troviamo un'importante differenza con Scala nella manipolazione di JSON.

Ma troviamo impostazioni differenti anche in un altro aspetto come quello relativo alla gestione delle dipendenze, infatti in Scala i parametri del costruttore sono accessibili dai metodi non-static (o regular methods) privilegiando servizi senza stato, in cui le comunicazioni sono tra loro indipendenti o, per meglio dire, non relazionate. Si tratta di un meccanismo spesso ricercato anche nello sviluppo Java based, ma non con gli stessi esiti di Scala.

scala-logo

Un ultimo fattore di distanza tra le due soluzioni riguarda l'accesso ai database e il ricorso agli ORM; in Java si tratta di un approccio diffuso, ma esiste una parte di sviluppatori che trovano meno problematico e più sicuro scrivere manualmente le istruzioni SQL, in Scala si preferisce invece affidarsi a librerie che supportano funzionalità come i parametri impliciti o l'interpolazione delle stringhe non disponibili in Java.

In conclusione siamo di fronte a due soluzioni differenti, lo sviluppo in Scala si affida meno a strumenti complementari come invece accade in Java con Spring o Hibernate privilegiando librerie compatibili con feature esclusive di un linguaggio. Trattandosi di due linguaggi per alcuni versi distanti prevedono stili di programmazione diversi e questa caratteristica non li rende completamente intercambiabili.

Per approfondire Denis Kalinin

CommentaDi' la tua

Il tuo indirizzo email non sarà mostrato pubblicamente. I campi obbligatori sono contrassegnati da *