Introduzione
Dal primo speciale
dedicato a Java apparso su Computer Programming (era il giugno 1996), è
passato ormai diverso tempo (molte ere informatiche), e da uno speciale,
siamo passati ad articoli più o meno fissi, fino ad una rubrica
dedicata: questa evoluzione rispecchia fedelmente quella che è stata
la crescita di Java e dell’interesse ad esso associato.
Con i
vari articoli pubblicati fino ad oggi su questa rivista, si è cercato
di dare un’idea sulle possibilità offerte dalle varie soluzioni
tecnologiche, cercando di dare di volta in volta un esempio su come poter
utilizzare tali elementi.
Dopo tutto questo
tempo e dopo tutte le parole spese a mostrare i vari prodigi ma anche limitazioni
del linguaggio, questo mese invece vedremo quale sia lo stato attuale del
linguaggio e della tecnologia: si cercherà di fare una panoramica
su quelle che sono le varie soluzioni offerte, e dove invece ancora non
si dispone di strumenti sicuri.
Dare una visione
obiettiva e temporalmente valida della situazione è un compito piuttosto
difficile: l’evoluzione del settore infatti, è tale da rendere obsoleta
ogni considerazione appena fatta.
Inoltre il continuo
susseguirsi di cambiamenti nelle strategia e politiche aziendali,
con relativi strascichi, aumenta il clima di incertezza.
Spero che i
lettori perdoneranno certi inevitabili anacronismi presenti nell’articolo.
Lo stato della
tecnologia
Molti sono gli
aspetti di cui tener conto nel momento in cui si desidera fare una analisi
completa del settore: per cercare di mantenere una certa logicità,
utilizzeremo l’evoluzione storica del linguaggio come filo conduttore (a
tal proposito può risultare molto utile [5]).
Nato ormai quasi
tre anni fa, come ambiente di sviluppo di sistemi embedded, si è
immediatamente evoluto verso il settore delle applicazioni per la rete.
Internet in particolare, oltre ad aver mostrato di essere l’habitat naturale
per la sua crescita e sviluppo, ha dato un impulso ad un progetto che era
sul punto di fallire ancor prima di essere ufficialmente rilasciato.
La possibilità
di eseguire un programma Java (una applet) all’interno di una pagina
html, oltre ad aver scosso non poco l’allora statico mondo
della IT, è stato di fatto il trmapolino di lancio per
farlo conoscere a tutto il grande pubblico.
Questo è
stato ed è tutt’ora solo uno degli aspetti di Java, ovvero quello
del lato client: almeno all’inizio, erroneamente gli è stato attribuito
un ruolo più ampio di quello che non gli spetta realmente, valutazione
che ha portato ad un senso di sfiducia nella tecnologia in genere.
Solo successivamente
si è diffusa la convinzione che quando si parla di client,
si deve pensare ad una applicazione in grado di pilotare una serie di servizi
disponibili in un qualche modo su un server remoto.
Corrispondentemente
all’affermarsi di questa convinzione, abbiamo assistito alla seconda grossa
evoluzione di Java, corrispondente al JDK 1.1: con l’arrivo di strumenti
come RMI o JDBC si è stravolto completamente quella che, nell’immaginario
collettivo, era l’idea che associava Java a programmi dentro una pagina
html.
Riprendendo
il concetto di client server, si è affermata la logica delle
applicazioni distribuite su più strati di cui il cliente non ne
rappresenta che un controllore.
La realizzazione
del lato server di una struttura a più strati si è
resa più semplice grazie a tecnologie come RMI o JDBC, che permettono
di risolvere problemi prima insormontabili e densi di insidie: tale accoppiata
in particolare, è quella che sempre più spesso viene
utilizzata per visualizzare dati via web, in alternativa alla soluzione
solo-aplet, che ha mostrato le sue evidenti limitazioni.
Con l’arrivo
del JDK 1.2, questo scenario si è arricchito ulteriormente grazie
alla possibilità di interfacciarsi con quello che attualmente è
lo standard più potente e complesso d gestione di stutture distribuiti:
CORBA.
Ma la versione
1.2, non ha solo portato novità in tal senso: l’introduzione dei
servlet abbiamo infatti adesso la possiblità di realizzare strutture
client server basate su quello che nel mondo di internet è il protocollo
più diffuso, l’http. Con i servlet, è possibile infatti diffondere
dati e offrire, servizi in maniera molto semplice e veloce,
grazie alla capacità di estendere le funzionalità del web
server semplicemente installando una classe Java, ed utilizzando le pagine
html come mezzo di trasporto.
E’ stata una
delle novità più importanti dell’anno appena concluso, ed
ha introdotto una miriade di nuove possibilità che per certi versi
hanno tolto spazio a Java stesso, a vantaggio di strumenti come html
e tutti i suoi derivati.
Anche se maggiore
possibilità di scelta significa maggiore potenza, tutte queste possibili
alternative, possono inizialmente confondere nella scelta della migliore
configurazione per per la realizzazione di un sistema distribuito
interfacciato con il web (attualmente casistica piuttosto tipica).
Molto genericamente
la risposta ad un interrogativo del genere, è affidarsi alla struttura
più eterogenea possibile: ad esempio una applicazione a 3 strati
controllata via browser da una applet potrebbe essere il cuore di tutto,
mentre a lato la possibilità di utilizzare un sistema di servlet+html
potrebbe fornire tutti i servizi di monitarazione remota.
E’ questo uno
dei vantaggi di Java, ovvero la possibilità di scegliere in ogni
momento quali moduli utilizzare senza legare in maniera indissolubile ad
ogni scelta.
Non solo networking
Fin’ora ci siamo
concentrati sull’aspetto di Java legato al networking, che anche se ne
rappresenta il più importante, non è tutto. Java è
stato pensato anche come un linguaggio ed una piattaforma fortemente orientata
alla multimedialità: se questo ha significato inzialmente semplicemente
visualizzare immagini, riprodurre suoni o piccole animazioni (cose possibili
anche utilizzando un browser con dei plug-in installati), con l’arrivo
della versione 1.2 del JDK possiamo disporre adesso di una serie di funzionalità
avanzate come quelle date dalle Java 2D e 3D, JavaMultimedia e simili.
Anche il settore
dei device embedded, che come abbiamo detto rappresenta un po’ il punto
di partenza di Java, ultimamente ha avuto un nuovo impulso: grazie
alle nuove Java Card API è infatti possibile realizzare software
da installare in una smart card, con la stessa semplicità con cui
è possibile realizzare una applet da inserire in una pagina html.
Sulla base di
queste innovazioni, gli analisti del settore affermano che in un futuro
non molto lontano saremo letteralmente contornati da tali oggetti sempre
più potenti nelle funzionalità e semplici nell’uso. Si
ipotizza inoltre che l’elettrodomestico im maggiore crescita come diffusione
e innovazione tencologica del momento, il personal computer, subirà
un notevole ridimensionamento proprio a causa di tali oggetti. Quando un
semplice web phone palmare (il successore dell’attuale telefono cellulare)
permetterà di utilizzare internet in maniera semplice ed economica,
probabilmente masse di risorse e di persone abbandoneranno la piattaforma
pc troppo costosa e complessa.
Infine c’è
il caso del Network Computer, che ormai nella seconda versione ha mostrato
di poter essere una piattaforma stabile, potente, e soprattutto competiva
con quella del PC. Attualmente Sun ha rilasciato il suo NC versione
2, ma stà lavorando alacremente in stretta collaborazione con IBM
per la creazione di un modello definitivo di tale oggetto. Il sistema operativo
(il famoso JavaOs) è anche esso in fase di rilascio, per cui a breve
si dovrebbe poter disporre di una piattaforma ancora più stabile.
Il fatto che dopo i primi insuccessi, sia Sun che IBM non abbiano abbandonato
il progetto, ma anzi vi abbiano convogliato maggiori energie, dimostra
che l’idea è buona e tecnicamente realizzabile. Il problema principale
di oggetti come il NC, è la mancanza attuale di una struttura di
rete sufficiente per poter utilizzare in maniera seria queste tecnologie.
Le grosse manovre nel mondo della telefonia digitale dovrebbero pero’ eliminare
questo impedimento nell’arco di pochi anni, appena in tempo per permettere
la maturazione di quello che adesso sta uscendo dalla fase sperimentale.
Il JDK, I
browser
Fino ad ora si
è parlato esclusivamente del JDK e dei suoi vari componenti: anche
se esso è di fatto il punto di riferimento di Java, esistono altre
realtà altrettanto importanti. Una di queste è senza dubbio
quella dei browser, che per importanza deve essere considerata al
pari del Java Developement Kit.
Mentre all’inizio
dell’era internettiana si poteva scegliere fra varie soluzioni, adesso
lo scenario si è ridotto essenzialmente a due protagonisti: il Communicator
di Netscape Inc. e l’Internet Explorer di Microsoft.
Entrambi disponibili
nella versione 4, devono essere valutato da due punti
di vista: per quanto riguarda le funzionalità legate alla
normale navigazione in internet, sono entrambi due ottimi prodotti, mentre
relativamente alla compatibilità con lo standard Java, presentano
differenze anche notevoli.
Oltre che per
una minore stabilità e non prevedibilità dei risultati,
Internet Explorer, risulta essere più limitato rispetto
al concorrente: per precisa volontà di Microsoft, oltre a
non supportare le tecnologie RMI, CORBA e JNI, le alterazioni alla
JVM (seppur piccole) non permettono di garantire la compatibilità
con codice certificato 100%Pure Java.
Al contrario
invece il browser di Netscape, dalla versione 4.05 in poi, è l’unico
completamente compatibile con il JDK 1.1.
Naturalmente
esiste anche HotJava, il quale però deve essere pensato più
come un framework estendibile, che un browser vero e proprio.
Questi aspetti
legati alle prestazioni e compatibilità dei vari browser sono in
buona parte legate alle strategie politiche e di marketing, per cui non
basterebbe un solo articolo dedicato per poterne affrontare tutti gli aspetti:
questo conferma quanto quello dei browser sia diventato un campo di battaglia
così’ importante.
Il motivo di
questa situazione è legata al fatto che un programma di navigazione
è qualcosa di molto di più di un semplice strumento
con il quale muoversi fra un sito ed un altro. La scelta di supportare
una determinata tecnologia piuttosto che un’altra, può decretare
sia il successo dell’oggetto in se (il browser appunto), che della tecnologia
sottostante (Java).
La mossa di
Microsoft è stata proprio in tale direzione: il non supportare RMI
e CORBA ha lo scopo da un lato per dare maggiori possibilità ai
suoi standard (COM e DCOM) e dall’altro per limitare le possibilità
di Java (se una cosa non si può fare con Java perché il cliente
non ha il browser con RMI, allora facciamola in C/C++). Il browser attualmente
potrebbe giocare lo steso ruolo di monopolio che ha giocato in passato
il Dos o Windows 3.1.
Anche se complessivamente
sembra che si possa godere di una certa possibilità di scelta, nel
mondo dei pc WindowsXX (il vero terreno di scontro), la situazione
è piuttosto complessa e delicate.
Per chi si affida
infatti al Java versione MS, c’è da tener presente che in tal caso,
essendo JVM è diventata parte del sistema operativo,
si deve subire le scelte della casa. In alcuni casi questo fenomeno porta
a sgradevoli conseguenze: ad esempio l’installazione di software di aggiornamento
del sistema operativo (Services Pack) porta alla modifica di certe parti
della JVM cosa che a volte causa problemi di compatibilità con il
software già scritto.
Un po’ per motivi
politici (la famosa battaglia legale), un po’ per ovviare al problema delle
incompatibilità delle varie JVM, Sun ha rilasciato il cosiddetto
Java Plugin (ex Project Activator): si tratta di un ActiveX (si avete
capito bene) che inserito in una pagina html, è in grado di mandare
in esecuzione una qualsiasi JVM, sulla quale poi viene eseguita l’applet
inserita nella pagina.
Ad esempio si
può pensare di vedere in azione una applet client RMI su un browser
della terza generazione, cosa fin’ora impossibile.
Anche se può
apparire la panacea di tutti i mali, presenta alcune controindicazioni,
legate alla complessità di installazione: ad esempio la più
evidente è che, per installare al volo il plug in, si devono in
ogni caso scaricare circa 10 Mb di materiale, cosa non sempre possibile.
In una intranet è comunque una strada percorribile.
Il resto del
mondo
Abbiamo parlato
di JDK e di browser, ma a parte questi due casi particolari di cosa è
possibile disporre attualmente nel settore del software scritto in Java
o per Java?
Sicuramente
molto, soprattutto per quanto riguarda la prima categoria, anche se si
tratta nella maggior parte dei casi di applicazioni lato server per
cui agli occhi del pubblico Java può apparire come un linguaggio
molto utilizzato.
Anche le grandi
case hanno ormai abbracciato più o meno integralmente Java come
linguaggio di base. IBM è forse la ditta che sta investendo
oltre a Sun ovviamente, maggiori energie in tale direzione: oltre
ad un pieno supporto per la programmazione in Java dei sui prodotti per
wokgroup (Lotus Notes, eSute solo per citarne alcuni), ha pensato anche
allo sviluppo di software in Java. Visual Age (attualmente forse l’unico
ambiente di sviluppo in linea con la filosofia di programmazione per componenti
di JavaBeans), ed il progetto S.Francisco confermano questa tendenza.
Ma IBM non è
l’unica a credere in Java, e case come Imprise (Ex-Borland) con il suo
JBuilder, od Oracle con le JavaCartridge per il suo ambiente, sono gli
esempi più significativi di un mondo che sta letteralmente esplodendo.
In tutto questo
turbinio di novità e di prodotti sempre più innovativi e
Java-Oriented, si nota per la singolare politica perseguita, il caso di
Microsoft.
Più o
meno dichiaratamente contraria all’affermazione del linguaggio,
si muove in tale settore seguendo con interesse la sua evoluzione, introducendo
innovazioni che seppur valide dal punto di vista della tecnologia in se,
di fatto generano confusione agli occhi del pubblico [4].
L’ottimo ambiente
di sviluppo quale è il Visual J++ 6.0, è un esempio
di questa tendenza. Introduce alcune innovazioni veramente interessanti,
che però limitano la caratteristica principale di Java: la portabilità.
Maggiore potenza e funzionalità sono offerte allo sviluppatore con
la controindicazione di una maggiore dipendenza nella piattaforma Windows,
semmai ce ne fosse ulteriore bisogno.
Contemporaneamente
pero’ il tool di sviluppo per pagine web più utilizzato (Front Page),
induce ad inserire applet all’interno di pagine html piuttosto che controlli
ActiveX.
Sicuramente
questa è una situazione alquanto bizzarra, che denota come il settore
Java non sia solo tecnologia, ma anche un terreno dove dare spazio alla
lotta per il predominio del mercato.
Riquadro:
Il Java fatto in casa Microsoft |
La posizione
della casa leader mondiale è piuttosto particolare: in aperta battaglia
con Sun, battaglia vinta da quest’ultima, si muove in due direzioni
apparentemente contrastanti fra loro.
Ufficialmente
ha intrapreso una sua strada indipendente dal Java ufficiale nel tentativo
una volta di imporre la sua versione personalizzata. La JVM di corredo
ai vari prodotti non supporta certe particolari caratteristiche come la
Remote Method Invocation o CORBA, dato che Microsoft non le ritiene necessarie
o utili. Sono state eseguite delle modifiche minimali che di fatto
impediscono la portabilità del codice bytecode. Ma Microsoft
oltre a queste operazioni volte a tamponare la corsa si Java, si
è anche operata per ampliare la piattaforma Java offrendo
alcune interessanti novità tecnologiche.
E’ il caso del
Visual J++ 6.0 che introduce delle innovazioni veramente importanti: solo
per citare alcuni elementi possiamo ricordare il modello degli eventi dei
delegati, e le Windows Foundation Classes.
In particolare,
queste ultime, in abbinamento con la tecnologia JDirect, permettono lo
sviluppo di applicazioni eseguibili Windows ed oggetti COM/DCOM,
in maniera del tutto intuitiva e semplificata utilizzando Java come linguaggio
di base.
Sicuramente
questa nuova possibilità è estremamente utile per tutti coloro
che dopo aver speso molto tempo a studiare Java vogliono avvicinarsi a
Windows senza dover dimenticare tutto quello fatto in precedenza; soprattutto
è importante il fatto che non è necessario imparare i complessi
meccanismi di programmazione in ambiente Windows.
In questo senso
il VJ++ è un ottimo strumento di sviluppo ad oggetti, completamente
visuale, e potrebbe essere considerato una specie di compromesso fra semplicità
del Visual Basic, e potenza del Visual C++.
L’unico problema
è la inevitabile elminazione della caratteristica principale di
Java, la portabilità, limitata ai soli Windows 95/98 ed NT.
Sicuramente
la scelta di Microsoft di correre una sua corsa personale nello sviluppo
di Java, non risulta essere molto utile al linguaggio stesso.
Quella di Sun,
che viene indicata da Microsoft come una posizione monopolistica,
non è altro che lo sforzo di mantenere lo standard il più
aperto possibile e compatibile con tutte le piattaforme.
Sarebbe forse
auspicabile che l’enorme esperienza delle due case fosse messa al
servizio di un obiettivo comune, e non utilizzare Java come strumento per
raggiungere il dominio globale del mercato. |
Riquadro:
IBM Java oriented |
Oltre a Sun,
chi si è decisamente impegnato maggiormente nello sviluppo
su Java, è stata IBM, la quale ha definitivamente sceltoo
questo linguaggio come collante universale per unire tutte le ormai consolidate
tecnologie offerte. In una intervista fatta a Scott Hebner e Jason Woodard,
entrambi Program Manager di IBM, ho potuto scambiare chiacchere su
argomenti come programmazione in Java e commercio elettronico.
Quello che ne
è venuta fuori è una interessante panormica della attuale
posizione dell’aziende nei confronti di internet, commercio elettronico
e Java. Il grosso impegno ed interesse di IBM verso concetti come il commercio
elettronico e la sicurezza si sposano perfettamente con le naturali doti
di Java. Non è quindi un caso che prodotti come Lotus Notes o eSuite
per l’ampliamento e la personalizzazione offrano un sempre maggior
supporto per Java, al posto dell’ormai limitato lotusScript: in particolare,
il rilascio delle Notes Object Interface Java API permette, in maniera
molto semplice, di interfacciare un servlet in esecuzione su un web server
abilitato con un archvio Notes. Oltre alla possibilità di
“entrare” nei prodotti IBM con Java, la casa americana mette a disposizione
anche una serie di prodotti pensati per lo sviluppo di Java o per il suo
utilizzo. Visual Age for Java 2.0 è forse quello più famoso
( l’unico tool attualmente che si adatta alla filosofia di programmazione
per componenti dei JavaBeans), ma dobbiamo anche ricordare il progetto
S Francisco, immenso framework interamente basato sulla tecnologia JavaBeans,
ed il nuovissimo Web Sphere. S.Francisco, è stato adottato da numorose
grosse aziende per lo sviluppo di progetti medio-grandi: è costituito
da un set di circa 800 componenti per lo sviluppo general-purpose secondo
la filosofia dei componenti. Sicuramente si tratta di
progetto molto interessante, anche se può spaventare la sua vastità.
Web Sphere invece è un Application Server in grado di estendere
le funzionalità di un normale web server (Apache, FastTrack o IIS)
offrendo pieno supporto per i servlet, oltre alla possibilità di
effettuare gestione da remoto via web. Infine, a conferma di quanto IBM
creda in Java, troviamo i Toolkit For Java per le piattaforme AS400 e 390,
le quali hanno da offrire un substrato immenso di software installato. |
La situazione
reale
In tutto questo
mare di soluzioni proposte cosa effettivamente è alla portata di
tutti, e soprattutto cosa può essere utilizzato in maniera concreta
dal programmatore o dall’utente finale?
Ovviamente una
domanda del genere non ha molto senso se presa in assoluto: tutte le api,
tutte le librerie, i prodotti che funzionano o che risolvono determinati
problemi, rappresentano esempi di come Java possa essere utilizzato.
In pratica però
solo una ristretta percentuale di tutto ciò può essere considerato
“utilizzabile” concretamente. Ad esempio il JDK 1.2 introduce una mole
considerevole di novità per la realizzazione di applet, ma attualmente
non è disponibile nessun browser che supporta tale versione.
Da quello che
ho potuto osservare esistono tre tipologie di utilizzatori di Java,
e questa classificazione rispecchia anche quello che è la situazione
reale di Java.
-
Una prima categoria
è costituita dagli studiosi e sperimentatori sempre aggiornati sulle
recenti novità. Essi lavorano sulle frontiere del linguaggio per
verificarne le possibilità reali. In genere il loro scopo è
conoscere ogni aspetto di Java, per poi raccontarlo agli altri, o
contribuire alla sua evoluzione.
-
Secondariamente
troviamo gli utilizzatori-programmatori di Java, coloro che non possono
permettersi di perdere tempo nel sperimentare cose nuove, e quindi si devono
appoggiare a ciò che funziona.
-
Infine troviamo
coloro che utilizzano Java come utenti finali.
Forse molti criticheranno
questa affermazione, ma credo che solo ciò che interessa la terza
categoria, o al massimo la seconda, si possa considerare tecnologia utilizzabile.
Il resto, per
quanto bello è tecnologicamente all’avanguardia, è solo fantascienza.
Ebbene attualmente,
di tutto il mondo Java, ben poco arriva al terzo gruppo, mentre una parte
più consistente è utilizzato dal secondo.
Come accennato
in precedenza il 99% di ciò che riguarda il JDK 1.2 è ancora
inutilizzabile per la realizzazione di software di largo consumo per internet,
date le limitazioni dei browser. Addirittura, nel caso si debba realizzare
applet che debbano essere eseguite dal maggior numero di browser possibili,
ci si deve attendere allo standard del JDK 1.0, cosa che per certi versi
è piuttosto grottesca.
Ma senza essere
troppo riduttivi, di cosa la seconda categoria di uilizzatori può
disporre al momento?
Sicuramente
tutto ciò che è contenuto nel JDK 1.0, e buona parte della
versione 1.1: largo spazio allora a JDBC, RMI e Delegation Model, Serializzazione.
Dal JDK 1.2
invece possiamo utilizzare per la realizzazione di applicazioni per le
grandi masse, solo i servlet, dato che si tratta di una tecnologia lato
server, con la quale ci si interfaccia con html.
Per ovviare
a questa situazione alquanto riduttiva, viene in aiuto quella che è
attualmente la tendenza progettuale del momento, la stratificazione: questo
modo di concepire il software consiste nel mettere tutto ciò che
è avanzato e complesso sul lato server, e ridurre il
client al minimo.
E’ importate
infine notare che la soluzione Java non è l’unica disponibile
per perseguire determinati obiettivi. Esistono altre importanti alternative,
che a volte, in funzione dei singoli casi, possono rivelarsi migliori di
Java.
Il vantaggio
di Java è però quello di offrire una soluzione omogenea ed
uniforme per lo sviluppo di ogni singolo aspetto, senza dover comporre
porzioni di software differenti fra loro.
Che le soluzioni
offerte siano valide lo dimostra indirettamente il fatto che molte
delle novità introdotte sono state poi successivamente “copiate”
in altri ambiti. Il concetto di Virtual Machine e di astrazione che esso
offre, è molto simile a quanto è stato introdotto di recente
dalla Apple con il suo Progetto Carbon. I servlet come estensione
residente del web server hanno dato spunto per la creazione delle
cosiddette estensioni compilate disponibili da poco anche in Apache. La
gestione del layout di una gui per mezzo dei layout manager è stato
di recente introdotta anche in altri ambienti di sviluppo non legati a
Java.
La stessa programmazione
per delega, ripresa dal passato, ha avuto nuova vita proprio grazie al
Delegation Model.
Cosa ci riserva
il futuro
Dopo tutto ciò
probabilmente il lettore che non ha seguito l’evolversi graduale della
situazione, ma ha di colpo scoperto un nuovo mondo, si troverà sicuramente
spaesato, in preda ad una strana sensazione di nausea, con il dubbio di
quale direzione intraprendere.
In realtà
la situazione è meno caotica di quanto si possa immaginare: riprendendo
in considerazione l’esempio delle tre categorie di utenti, come si è
visto, ciò che è realmente utilizzabile è solo una
parte di tutto quello che il mercato mette a disposizione.
Attualmente
l’evoluzione è ancora piuttosto rallentata sia dalla mancanza di
infrastrutture (vedi browser e connessioni veloci), sia perché il
mercato non è ancora totalmente pronto a recepire il mare
di novità in arrivo, sia perché infine Java ha attualmente
delle limitazioni intrinseche che lo fanno guardare con sospetto da molti.
I due punti
deboli di Java sono ancora quello della lentezza, e della decompilazione.
Il primo aspetto lo si può considerare di minore importanza, dato
che le evoluzioni del software (introduzioni di tecniche di esecuzione
ottimizzate e JIT sempre più efficienti) e dell’hardware, unitamente
ad una migliore utilizzazione delle risorse distribuite (con conseguente
riduzione di tempi morti e colli di bottiglia), porteranno ad una
drastica riduzione del gap rispetto ad applicazioni native.
Per quanto riguarda
invece il problema della decompilazione, al momento non sembra esserci
soluzione, a parte l’offuscamento del bytecode. Per sdrammatizzare
il problema Sun afferma che il poter decompilare, e quindi copiare l’idea,
non implica che si possa riprodurre la mente che ha prodotto tale idea.
Oltre ad essere piuttosto pittoresca, questa posizione lascia intendere
che dovremo attendere ancora un bel po’ per poter avere codice compilato
a prova di pirata.
Molto probabilmente
questo è il periodo in cui Java sta vivendo la sua consacrazione
ufficiale come tecnologia vincente, ma sarà solo con il 2000 che
Java si integrerà completamente nella realtà di tutti i giorni.
Java, almeno
giurano gli analisti, contribuirà ad fare entrare definitivamente
nella vita di tutti i giorni l’informatica, scienza per adesso riservata
a pochi eletti.
Bibliografia
[1] “Il JDK 1.1,
le novità” di Massimo Carli - MokaByte 4 Gennaio 97.
[2] “Speciale
JDK 1.2” - Dev 55 Settembre 98.
[3] “Il progetto
100% Pure Java” di Giovanni Puliti - MokaByte 8, Maggio 97.
[4] “La piattaforma
Java secondo Microsoft” di Giovanni Puliti - MokaByte 13 Novembre
97.
[5] “C’era una
volta Java” di Roberto Palumbo – Mokabyte 23, Ottobre 98
|