Posso usare sul pc applicazione che ho sullo smartphone? Mi funziona così bene!
Eh! Questa è la domandona da un milione di dollari. Racchiude a monte una questione molto interessante, che i programmatori si stanno ponendo da anni (praticamente da quando esistono macchine computazionali elettroniche): come fare per far funzionare un programma su tutti i dispositivi a prescindere dal loro sistema operativo?
Ed ecco, intanto, una nuova parola chiave importante attorno alla quale ruota tutta la questione: cos’è un sistema operativo?
Affidiamoci a wikipedia per una definizione sintetica: “Un Sistema Operativo è un software di base, detto anche piattaforma operativa (composto normalmente da più sottosistemi o componenti software: kernel, scheduler, file system, gestore della memoria, gestore delle periferiche, interfaccia utente e spooler di stampa), che gestisce le risorse hardware e software della macchina, fornendo servizi di base ai software applicativi“.
Uhm… in effetti non è molto sintetica… Beh diciamo che il sistema operativo è una sorta di software che “sta sotto” a tutti gli altri software e che li fa parlare con ciò che sta ancora sotto, fino ad arrivare ai “famosi” bit e impulsi elettrici. Un interprete, insomma e ognuno di loro fa da interprete in un modo più o meno diverso dall’altro
Ma allora perché ci sono così tanti interpreti? Windows, Linux, Android, iOS (iPhone)… Per non parlare delle loro versioni che sono spesso, a loro volta, incompatibili fra loro! Avviene per vari motivi sia tecnici che commerciali che non andremo a indagare. Per ora accontentiamoci di rilevare che ci sono.
Dunque, abbiamo capito che a seconda di come viene costruito questo sistema operativo lui riceve dati e istruzioni da una applicazione e li trasmette al sottostante. Come fare per uniformare questo comportamento? E’ una domanda che si sono fatti in molti sviluppatori nella seppure breve storia dell’informatica.
L’idea di base è sempre quella di sovrapporre una “macchina” tra il software e il sistema operativo, unica per tutti, in modo che sia lei a doversi adattare (una per tutti i sistemi) e non il programma.
Allerta nerd: Java Virtual Machine (JVM). Mai sentita nominare? Ma sì! Comunque sia è stato il primo tentativo “strutturato” e organizzato per dare una risposta a questa domanda. Il motto degli sviluppatori era: “Scrivi una volta e gira dovunque”, poi velocemente cambiato dagli utenti in “Scrivi una volta e crasha ovunque”. Brutte cose. Va beh.
E ora? Ora esiste ancora la Java Virtual Machine, riveduta e corretta, ma ci si sta affidando sempre di più a un’altra macchina, ancora più comune della JVM, presente in tutti i nostri PC: Il browser. Altrove ne parleremo, comunque si tratta di Google Chrome per intenderci.
Al momento il sistema più comune per far girare una applicazione senza dover stare a pensare a dove questo avvenga è far collegare l’utente a una pagina tramite un browser dove si possono effettuare determinate attività. Molto spesso anche molte delle applicazioni che usate nel vostro PC e nel vostro smartphone non sono altro che pagine web “sotto mentite spoglie”.
Bello! Risolto tutto allora!
Sì e no. Purtroppo, come avrete capito, il sistema comporta la presenza di un “congegno” che gira nel mezzo e fa faticare il vostro PC usandone risorse aggiuntive. Questo significa che abbiamo guadagnato in termini di (allerta nerd!) “cross-platform”, ma abbiamo perso in termini di efficienza dell’uso delle risorse. Facciamo faticare di più i dispositivi e abbiamo applicazioni tendenzialmente più lente. Quindi come spesso accade si tratta di una questione di compromesso.
Una risposta