Il termine applet  è un diminuitivo. Come "booklet" è diminuitivo di "book" e significa "libretto", così "applet" è il diminuitivo di "application" e potremmo tradurla in italiano come "applicazioncella" ovvero "programmino". 

Sul piano tecnico è una delle più intelligenti soluzioni degli autori del linguaggio Java. Di cosa si tratta?
 

Una applicazione Internet comprende di regola una parte client ed una server. Gli esperti hanno osservato come i due sono apertamente sbilanciati perché le maggiori risorse, i maggiori problemi di sicurezza, le più impegnative elaborazioni sono sul server. Di conseguenza hanno deciso di curare la parte che gira nel server che chiamiamo "applicazione" Java ed hanno ridotto all'osso la parte client. La seguente figura inserisce le due nell'architettura a strati della rete (vedi risposta 15).

 L'applet è dunque un piccolo programma, dell'ordine delle decine o al più delle centinaia di kbytes, pressappoco è la dimensione di una pagina html. L'applet si trova catalogato su un hard disco del server da cui il browser la preleva. Per ridurre al minimo i volumi che aggravano la spedizione in rete, l'applet X sul server viene compressa con un algoritmo speciale e diventa il file X.jar. Il browser lo riceve, lo decomprime e poi lancia l'applet X. 

Una applet esegue una elaborazione non impegnativa. In caso di e-commerce l'applet formatta i dati immessi dall'acquirente, ed esegue qualche controllo. Quando si devono svolgere elaborazioni più complesse, si mantiene piccina l'applet, mentre si crea un codice corrispondente sul server che completa il lavoro e che infatti viene chiamato servlet. In questo modo si mantiene leggera la gestione dell'applet sul lato client. Si evitano rallentamenti e si assicura l'agilità della realizzazione complessiva. 

Come esempio, supponiamo che il cliente di una banca voglia conoscere il saldo del proprio conto. Egli comincia con l'inserire il suo codice identificativo e la password. L'applet fa i relativi controlli ed invia i dati alla servlet.

 

 

Questa completa i controlli e smista i dati ai programmi (ad esempio in Cobol-SQL) che consultano il data base dei conti correnti. Infine la risposta torna all'utente.

 

L'applicazione Java che si incarica di una elaborazione completa (dunque non è una servlet), è stata fortemente curata dagli autori del linguaggio Java poiché costituisce un punto molto critico. L'hacker si interessa molto più all'applicazione che gira sul server piuttosto che al lato client. Questo ultimo ha pochi dati sensibili e li gestisce per poco tempo, al contrario l'altro nodo ne ha tanti ed in maniera stabile.
Per proteggere una applicazione Java da eventuali effrazioni sono state messe in atto due importanti contromisure.

 

 

1)  - Gli autori del linguaggio Java hanno osservato che la stessa compilazione del software è un grosso punto debole. Secondo il sistema tradizionale dello stesso programma si conservano almeno tre versioni : il programma simbolico, il programma compilato e quello eseguibile (ad esempio del programma Pgm in Cobol si archiviano: Pgm.cbl, Pgm.obj, Pgm.exe). Ogni versione offre l'occasione di essere fraudolatamente manipolata e lanciata, in specie l'ultima.
 

Gli autori di Java hanno drasticamente semplificato il processo di preparazione del programma in questo modo. Dal simbolico (= Pgm.class), che è inevitabile, si ottiene direttamente l'eseguibile (= Pgm.java). Se il compilatore è del tipo Just-in-Time (JIT), addirittura l'eseguibile viene lanciato immediatamente e non è copiato da nessuna parte.
Grazie a questo metodo il browser (es. Mozzilla o Internet Explorer) eseguono immediatamente l'applet Java.



II)  - L'eseguibile non lavora in una partizione qualsiasi (come il programma Cobol) su cui gli hackers potrebbero interferire. Opera invece nella Java Virtual Machine (JVM) la quale è una macchina virtuale che gira sotto il sistema operativo ospite (Unix o Windows o altro). JVM gestisce in proprio le sue risorse. Ha un suo proprio apparato di controllo, indipendente dal supervisore del sistema operativo ospite. Per tali motivi costituisce un ambiente "blindato" e difficilmente attaccabile. Inoltre, qualora intervenisse una effrazione, la JVM viene facilmente distrutta semplicemente spegnendo il computer. Essendo una struttura software che opera esclusivamente nella ram, basta riavviare il computer per ricominciare. Una soluzione davvero geniale!

 

 

 

 

anno 2003

64.
Cos'è
una applet
Java?

65. Vorrei un commento
sulla figura dell'analista.
Qual'è il percorso
ottimale per la
sua preparazione
professionale?

Analista è il nome, ormai diffuso in tutto il mondo, del professionista che riceve le richieste dal committente, le discute, prepara il progetto software che passa ai programmatori ed ai sistemisti per la sua realizzazione.

Dovremmo chiamarlo propriamente ingegnere software perché, come tutti gli ingegneri, opera tra il committente (esterno oppure interno alla stessa azienda) e gli operativi.

 

 

Sulla carta le competenze e le responsabilità dell'analista sono completamente chiare, invece nella pratica si ha uno scenario ben lungi dall'essere chiaro. Nel passato la confusione è stata tale che le aziende non riuscendo a controllare il lavoro dei propri analisti, hanno cominciato ad appaltare i progetti all'esterno. In questo modo hanno tentano di sopperire alle difficoltà con un controllo finanziario più efficace di quello esercitabile sui progettisti interni. L'assegnazione dei lavori all'esterno va sotto il nome di "autsourcing", oggi molto di moda. 

Sfortunatamente anche con questo metodo, le lamentele non sono mancate. Se ne discute, ma senza trovare una via d'uscita, perché il problema vero e principale è la preparazione professionale dell'analista  stesso.

Come mai ? Perché in un periodo in cui è difficile trovare lavoro, non è semplice trovare un capo-progetto preparato sia sul piano tecnico sia sul piano dei rapporti con il committente ? 

L'Informatica è una scienza giovane che ha molto progredito sul piano pratico ma assai di meno sul piano della cultura. 

Tale ingegnere software non può uscire dalla scuola media superiore, anche se molti insegnanti di Informatica forniscono ottime introduzioni all'analisi nell'ITC e nell'ITI. Per definizione dovrebbe uscire dall'Università, ad esempio con una laurea di Informatica o di Ingegneria Informatica. Invece questo non succede.

I corsi di laurea danno una ottima preparazione tecnica che però non basta. Parlando in generale un ingegnere non è un tecnico puro ma è una figura professionale completa. Oltre alla tecnologia deve conoscere molto bene i problemi del suo committente, interpretarli e risolverli. Purtroppo lacune molto ampie sussistono in questa direzione nel settore informatico perché mancano corsi di appropriati ed una completa cultura scientifica. I piani di studio si concentrano sul tecnicismo di dettaglio. I neulaureati, ad esempio, sanno tutto sulle reti ma molto poco sulla loro attinenza agli affari, ai commerci ecc. E' come se un ingegnere civile sapesse tutto sul cemento armato, ma avesse un idea vaga di cosa sia l'abitare ed il convivere in una abitazione, quali sono i gusti e gli stili attuali, quali le norme di legge.

Di conseguenza le aziende erano e sono tuttora costrette ad arrangiarsi nel trovarsi un analista. Spesso scelgono qualcuno con alle spalle esperienze di programmazione o di gestione aziendale, e dopo qualche corso professionale, lo promuovono alla guida di un progetto. Lo preferiscono al neulaureato informatico perché in qualche misura conosce la vita d'azienda.


Va da sé che gli insuccessi fioccano. Un improvvisatore, un "ruba-mestieri" magari con molta buona volontà non ce la fà ad affrontare le responsabilità di un progetto software che prevede compenze tecniche, responsabilità finanziarie, capacità di gestione del personale ecc.

Ma c'è di più. La stessa preparazione tecnica universitaria è discutibile. Ignora quasi completamente alcuni aspetti basilari del software gestionale come: 

  • La manutenzione del software.
  • Il valore qualitativo e non quantitativo della progettualità.
  • La duplice funzione documentale e comunicativa degli schemi. 
  • La continuità dello sviluppo software che rende problematica la saldatura tra l'analisi e la programmazione specie nei subappalti. 
  • I criteri di cernita delle organizzazione dei dati: file, data base ecc.
  • I confronti e le valutazioni tra le diverse tecnologie software: batch, o-o, ecc.

I corsi universitari si attardano su aspetti roboanti quanto inutili. Riempono la testa col modello di Turing e con nozioni di logica astratta che non serviranno in alcun modo all'analista che lavora in azienda. Di conseguenza il neolaureato ha scarse idee dei problemi che il cliente gli porrà, e quel che è peggio ha una concezione eterea del suo stesso mestiere. Talora ha una supponenza che lo allontana definitivamente dal successo professionale. 

Dunque la sua domanda coglie proprio nel segno, potremmo dire che mette il dito nella piaga, anzi nella più dolorosa piaga del software. E' tanto viva che chiudo con una nota personale.

I Fondamenti dell'Informatica che occupano i miei corsi, i libri, gli articoli ed anche questa rubrica, tendono a chiarire i principi di questa giovane scienza e fornire una conoscenza completa. Furono proprio le pesanti difficoltà che vedevo nel mondo del lavoro a spingermi in questa direzione già tanti anni fa.

 

 

 

anno 2003