Newsgroup: it.comp.java
Titolo: applet e variabili statiche

Ho notato che dichiarando delle variabili statiche in un'applet e
inizializzandole attraverso dei parametri caricati dalla pagina web che la
richiama, se visualizzo contemporaneamente diverse pagine html che
contengono la stessa applet ma con parametri diversi per ognuna (non
utilizzo un web server ma le carico direttamente dal disco rigido) le
variabili statiche mi assumono gli stessi valori come se le varie istanze
dell'applet fossero create all'interno della stessa JVM; é normale questo
comportamento oppure mi sfugge qualcosa?
Dovendo utilizzare tale applet in un sito WEB posso utilizzare tali
variabili statiche oppure mi creeranno dei problemi?
Ciao Angelo





Pensa un po', il concetto di variabili statiche e' proprio che queste non
siano legate ad una istanza della classe ma siano condivise fra tutte le
istanze della classe, e che quindi siano UNICHE, condivise fra tutte in
lettura e scrittura. E' quidi naturale che il problema che tu nomini si
presenti, visto che e' il comportamento naturale.
Per quel che riguarda il comportamento su Web, comunque, ti devo dire che in
linea di massima dipende da come il browser associa le istanze di JVM alle
pagine.
Mi spiego, ho costruito degli applet che usavano una connessione ad un db
dichiarandola statica, e quindi tutti gli applet condividevano una sola
connessione.
Se avevo due frames nello stesso browser e ogni frame aveva un applet che
usava quella connessione, il DB registrava una sola connessione attiva. Se col
tasto destro del mouse selezionavo uno dei frame e dicevo "open in new
window", avevo 2 browser con un totale di 3 applet in esecuzione, e una sola
connesione.
Se invece aprivo una nuova istanza del browser e andavo su quella pagina, ecco
che mi ricompariva il dialogo di login e il DB registrava 2 connessioni
attive.
Scusami se sono stato logorroico, spero di essere stato chiaro.
Carlo Emanuele Demontis

 lettura e scrittura.
Anche se sono in esecuzione su JVM diverse come nel caso di due pagine web
aperte con due sessioni di netscape? (questo è quello che sembra succeda
sulla mia macchina).
Grazie comunque per la risposta precedente?

La cosa e' interessante: in effetti quando facevo le prove di cui ti ho scritto
mi sono accorto che Netscape aveva un altro comportamento, e cioe' sembrava che
netscape istanziasse una unica JVM indippendentemente dalle finestre di Browser
aperte.
In pratica, mentre se aprivo con doppio click sull'icona il MSIE quando un
altro era gia' aperto, sembrava che l'intero ambiente venisse reistanziato come
un nuovo processo, e quindi anche una nuova JVM venisse avviata.
Netscape invece sembrava aprire solo una nuova finestra dello stesso processo,
e quindi avesse solo un nuovo thread di JVM, piuttosto che un nuovo processo.
Non ci posso mettere le mani sul fuoco ma da quel che so sui S.O., sul
multithreading e sul concetto di variabili statiche mi sembrava che 2 + 2 fosse
abbastanza vicino a 4.
Ma come si sa, la matematica e' un opinione che a volte e' diversa dalla mia.
Ciao
    Carlo Emanuele Demontis


 Ho notato che dichiarando delle variabili statiche in un'applet e
Pare che l'unico modo di utilizzare variabilit statiche per la
comunicazione inter-applet sia quello di usare diverse finestre di
Netscape. Instanze diverse di NS e IE non funzionano.
Ciao,
-- 
Massimiliano Bigatti
Java Consulting (Open Consulting)
http://members.xoom.com/bigmax74