PDA

View Full Version : Applets vs Web 2.0


nucarote
27-03-2009, 16:10
Ho trovato questa riflessione IMHO molto interessante, benchè abbia presente i problemi delle Applets (JRE da scaricare, policy, etc) mi pongo lo stesso la seguente riflessione.
Cosa ha determinato il disuso delle Applet Java?

Se ciò che si pone il modello attuale Web 2.0 non è che quello di rendere la navigazione web sempre più simile ad un normale programma residente su un pc, allora perchè le applet sono cos' poco usate?Vediamo un confronto

Applicazione RIA Web 2.0 (Ajax etc...)
Pro:
-Interfaccia ormai molto ricca
-Se ben studiate minimizzano la mole di dati trasferita
-Funzionano senza nessun tipo di installazione aggiuntiva sui browser recenti

Contro:
-C'è da scriveere molto Javascript, e può risulatare poco manutenibile.
-Per quanto esistano librerie quali JQuery che promettono una astrazione dal tipo di browser, i problemi di compatibilità si incontrano comunque.
-Il codice Javascript assieme al contorno html possono diventare incredibilemente difficili da mantenere soprattutto su browser differenti

Applet Java:
Pro:
-Custom data streaming
-Elaborazione grafica (2D/3D)
-Threading
-Una GUI molto avanzata
-Funzionano indipendentemente dal tipo di browser

Contro:
-E' necessario scaricare la Sun JRE (come per visualizzare i filmati Flash avete bisogno di scaricare il Flash player)

Sostanzialemente le mie considerazioni sono queste: se avete bisogno di un interfaccia utente particolarmente complessa usate le Applet Java, altrimenti se i requisiti in termini di interfaccia non sono così spinti usate Ajax. Solo la pratica vi farà discernere tra le due tecnologie e quando sia meglio l'una o l'altra...Tenete presente che voler realizzare in Ajax un'interfaccia estremamente complessa potrebbe portarvi a perdere la ragione:)

Dite la vostra.

Tommo
27-03-2009, 16:56
Ci mettono secoli a scaricare, non permettono un buon livello di pulizia perchè la grafica rimane pixellosa, scattosa e quant'altro...

In più devi metterci che mentre Flash e Silverlight e quant'altro sono parte integrante del resto del sito, una applet o è la pagina intera o è un quadrato all'interno della stessa.
Il che unito alla gestione quantomeno triste della grafica lo rende perfettamente inutile per fare un sito moderno...

nucarote
27-03-2009, 17:44
Ci mettono secoli a scaricare, non permettono un buon livello di pulizia perchè la grafica rimane pixellosa, scattosa e quant'altro...

In più devi metterci che mentre Flash e Silverlight e quant'altro sono parte integrante del resto del sito, una applet o è la pagina intera o è un quadrato all'interno della stessa.
Il che unito alla gestione quantomeno triste della grafica lo rende perfettamente inutile per fare un sito moderno...

A parte il costo del dowload della JRE, non credo che una Applet ben fatta sia molto pesante eppoi con le connessioni sempre più veloci, oggi scaricare 20kb o 200kb non credo che sia più un grossissimo problema.
Inoltre siti web, tendono sempre più a diventare delle vere e proprie applicazioni distribuite sul web e per tanto una volta realizzata l'applicazione, con cosa più devi integrarti all'interno del tuo sito?
Per le capacità di animazione concordo, AWT/Swing non sono mai stati dei granchè, già per quanto riguardo i controlli GUI più comuni e credo che questo alla fine abbia decretato la "morte" delle Applets oltre al fatto che sono uscite in un periodo in cui si viaggiava a 56K e non c'era la necessità delle RIA. Ad ogni modo SUN ci riprova ogni tanto rilanciando l'idea "cambiando" un pò la confezione (una volta con Web Start e infine con JavaFx) senza mai cambiare troppo il contenuto (cercano sempre rifilare Awt/Swing)

Big Bamboo
27-03-2009, 18:46
Totalmente contrario agli applet di terze parti (flash, java, silverlight e compagnia bella).
Se si vuole la massima compatibilità è meglio usare gli standard che sono stati pensati per il web (html, css e javascript)

cionci
27-03-2009, 20:15
Totalmente contrario agli applet di terze parti (flash, java, silverlight e compagnia bella).
Idem ;)

fero86
27-03-2009, 20:37
Ci mettono secoli a scaricare, dipende dall'applet.


non permettono un buon livello di pulizia perchè la grafica rimane pixellosa, scattosa e quant'altro... ma chi l'ha detto... :mbe:
volendo ormai puoi farci anche HDR e light blooming dentro un'applet Java, e tutto cross-platform, cross-browser e con delle performances che si avvicinano molto a quelle di un'applicazione nativa.


una applet o è la pagina intera o è un quadrato all'interno della stessa. ma le applet possono anche interagire col DOM della pagina, quindi le interazioni all'interno di un applet non sono per nulla isolate.



Totalmente contrario agli applet di terze parti (flash, java, silverlight e compagnia bella).
Idem ;) gradiremmo qualche argomentazione peró :rolleyes:

PGI-Bis
27-03-2009, 20:54
Credo che le Applet Java non abbiano mai preso piede per via delle dimensioni del dowload.

8 megabyte per un orologio nell'era dei modem a 56k non era un gran bel modo di presentarsi.

Sono salite sul treno troppo presto e quando è arrivato il loro momento erano già al capolinea. Ha avuto maggior fortuna il secondo passeggero, Flash.

La grafica pixellosa dipende dalla qualità del grafico che l'ha fatta. Quanto alla scattosità è un problema di documentazione. Esistono caratteristiche della pipeline di rendering Java2D la cui documentazione non è esattamente chiarissima e questo può portare a commettere errori di programmazione.

cionci
27-03-2009, 21:03
gradiremmo qualche argomentazione peró :rolleyes:
Le argomentazioni sono le più semplice: quando si può meglio evitare di aumentare le dipendenze ;) Maggiore compatibilità, migliore usabilità, maggiore leggerezza.
Silverlight attualmente è quello meno compatibile, quindi da escludere a priori. Le applet Java sono veramente pesanti (anche quelle più semplici), perché il SO deve, non solo scaricare l'applet, ma soprattutto caricare la JVM, che in confronto alle altre due tecnologie è pachidermica.
Flash è sicuramente la soluzione migliore, ma risente comunque di problemi di portabilità (vedi Flash su Linux o l'assenza su cellulari) e di scarsa interattività con il resto del sito.

cionci
27-03-2009, 21:07
Con questo non nego che ci possano essere casi in cui siano indispensabili o altamente consigliate queste tecnologie...vedi applicazioni multimediali.

fero86
27-03-2009, 22:24
Credo che le Applet Java non abbiano mai preso piede per via delle dimensioni del dowload.

8 megabyte per un orologio nell'era dei modem a 56k non era un gran bel modo di presentarsi. chiaramente questa é un'esagerazione. a me piacerebbe invece (richiesta non provocatoria) avere qualche percezione concreta di quale possa essere la differenza in termini di dimensioni tra due applicazioni sostanzialmente equivalenti, peró una sviluppata in forma di applet e l'altra con qualche altra tecnologia. l'orologio non é l'esempio piu adatto visto che si puó scrivere anche con poche righe di JavaScript che a quel punto vince su tutti perché richiede un download di pochi bytes.



Sono salite sul treno troppo presto e quando è arrivato il loro momento erano già al capolinea. Ha avuto maggior fortuna il secondo passeggero, Flash. questo discorso non riesco a capirlo: chi ha stabilito che doveva essere giunto il "capolinea delle applet"?

PGI-Bis
28-03-2009, 05:05
E' stato il mercato a stabilirlo.

Possiamo provare a fare la comparazione con Flash se troviamo qualcuno che lo sa usare (perchè io di Flash non so una mazza).

Questo:

package it.tukano.bubbleapplet;

import it.tukano.fx.*;
import it.tukano.fx.sound.*;
import java.awt.*;
import java.awt.geom.*;
import java.awt.image.BufferedImage;
import java.util.*;

public class BubbleApplet extends FXApplet {
protected Collection<? extends FXStack.Node> createFX() {
System.out.println("creating fx...");
return Arrays.asList(
new Background(),
new Logo(),
new Fader(),
new Dot()
);
}

public void init() {
super.init();
SoundSystem.getInstance().cache("/audio/tribal.ogg");
}

public void destroy() {
SoundSystem.getInstance().destroy();
}
}

class Background extends PaintedFX {
private boolean soundOn;

protected void paint(Graphics2D g, int width, int height) {
if(!soundOn) {
System.out.println("play...");
soundOn = SoundSystem.getInstance().play("/audio/tribal.ogg", true);
}
g.setPaint(Color.WHITE);
g.fillRect(0, 0, width, height);
}
}

class Logo extends PaintedFX implements Procedure<BufferedImage> {
private boolean requestImage = true;
private BufferedImage logo;

protected void paint(Graphics2D g, int width, int height) {
if(logo == null) {
createLogo();
} else {
int x = width / 2 - logo.getWidth() / 2;
int y = height / 2 - logo.getHeight() / 2;
g.drawImage(logo, x, y, null);
}
}

private void createLogo() {
getNode(FXCanvas.FXBuffer.class).getCompatibleImage("/res/text.png", this);
requestImage = false;
}

public void execute(BufferedImage image) {
logo = image;
requestImage = logo == null;
}
}

class Dot extends AnimatedFX implements Procedure<BufferedImage> {
private boolean requestImage = true;
private BufferedImage dot;
private final TUnit TUNIT = new TUnit(0.0005);
private final Point2D LOCATION = new Point2D.Double();
private ParametricPath path;
private int screenWidth, screenHeight;

protected void update(long now, long dTime) {
if(path != null) {
TUNIT.update(dTime);
double t = TUNIT.getValue();
path.compute(t, LOCATION);
}
}

protected void paint(Graphics2D g, int width, int height) {
if(path == null || sizeChanged(width, height)) {
recomputePath(width, height);
}
if(dot == null) {
getNode(FXCanvas.FXBuffer.class).getCompatibleImage("/res/dot.png", this);
} else {
int x = (int)Math.round(LOCATION.getX()) - dot.getWidth() / 2;
int y = (int)Math.round(LOCATION.getY()) - dot.getHeight() / 2;
g.drawImage(dot, x, y, null);
}
}

private boolean sizeChanged(int width, int height) {
return width != screenWidth || height != screenHeight;
}

private void recomputePath(int width, int height) {
path = new Circle(new Point(width / 2, height / 2), 100);
}

public void execute(BufferedImage image) {
dot = image;
requestImage = dot == null;
}
}

class Fader extends AnimatedFX {
private final Alpha ALPHA = new Alpha(0.0002);

protected void update(long now, long dTime) {
ALPHA.update(dTime);
}

protected void paint(Graphics2D g, int width, int height) {
Composite composite = g.getComposite();
g.setPaint(Color.WHITE);
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, (float)ALPHA.getValue()));
g.fillRect(0, 0, width, height);
g.setComposite(composite);
}
}

Fa questo:

http://www.tukano.it/test/bubbleapplet.html

Be', spero che lo faccia, perchè l'ora è tarda e non vorrei aver fatto zic anzichè zac :D.

Ometto il framework per carità di patria (sono 24 classi, diciamo un 1200-1500 linee, nulla di che).

nucarote
28-03-2009, 08:49
Il tempo di caricamento non è stato eccessivo, nell'ordine dei 10 sec, il tutto con una comune connessione ADSL da 7Mb, forse la cosa che potrebbe dar fastidio è vedere quel logo di Java che carica, che potrebbe far pensare all'utonto che il sito stà procedendo al dowload e all'installazione della JRE.
IMHO con librerie grafiche più reattive e leggere oltre che più curate esteticamente, le applets potrebbero dire ancora la loro almeno nelle RIA più complesse (gestionali, o quanto meno laddove si ci sono molti input/output da gestire con componenti GUI tradizionali)
In teoria sarei anche io favorevole allo sviluppo di RIA con strumento per il web, peccato che le varie implementazioni di javascript e css, differiscono da browser a browser e richiede uno sforzo in più per armonizzare il tutto (anche se in ciò framework come GWT aiutano un pò), per cui per evitare ciò, forse è preferibile appoggiarsi ad uno strato software ben consolidato come Flash/Flex o Applets programmate con cervello.

cionci
28-03-2009, 09:14
PGI: a me quella applet non si vede...firefox mi dice che manca un plugin, ma il plugin Java ce l'ho installato (è la prima versione ufficiale per Linux a 64 bit).
Questa applet mi funziona ad esempio: http://www.v-workshops.com/java/

CozzaAmara
28-03-2009, 09:25
un pc, allora perchè le applet sono cos' poco usate?Vediamo un confronto

Applicazione RIA Web 2.0 (Ajax etc...)

Contro:
-C'è da scriveere molto Javascript, e può risulatare poco manutenibile.
-Per quanto esistano librerie quali JQuery che promettono una astrazione dal tipo di browser, i problemi di compatibilità si incontrano comunque.
-Il codice Javascript assieme al contorno html possono diventare incredibilemente difficili da mantenere soprattutto su browser differenti



In realtà c'è poco di vero in quanto scritto sopra.
Di sicuro tutto dipende dalla mole dell'applicazione e dalla complessità di funzionalità che si vogliono ottenere ma, proprio con Framework stile JQuery si può:

- Scrivere pochissimo codice ed ottenere molto in funzionalità
- La compatibilità coi browser è quasi totale per i client più recenti, anzi permette spesso di utilizzare via JS regole CSS altrimenti non supportate ad esempio su IE.
- La manutenibilità è estremamente semplificata proprio grazie al Framework che semplifica e riduce il codice, oltre a renderlo sintatticamente pulito e coerente

Tommo
28-03-2009, 09:34
dipende dall'applet.
ma chi l'ha detto... :mbe:
volendo ormai puoi farci anche HDR e light blooming dentro un'applet Java, e tutto cross-platform, cross-browser e con delle performances che si avvicinano molto a quelle di un'applicazione nativa.
ma le applet possono anche interagire col DOM della pagina, quindi le interazioni all'interno di un applet non sono per nulla isolate.


Mi fa piacere, ma qui non si parla di cosa POTREBBE fare il Java nelle applet, ma di cosa ha fatto e sta facendo... e le applet che ho visto devastavano letteralmente l'esperienza utente, prendendo il posto del sito, scattando, avendo una grafica che fa vergogna al super nes e che fa schermo bianco quando refresha.

Da quello che ho visto, fare un sito moderno stile Facebook con un'applet Java è semplicemente impossibile.
E quello è il motivo per cui sarà sempre meno usato...

In realtà c'è poco di vero in quanto scritto sopra.
Di sicuro tutto dipende dalla mole dell'applicazione e dalla complessità di funzionalità che si vogliono ottenere ma, proprio con Framework stile JQuery si può:

- Scrivere pochissimo codice ed ottenere molto in funzionalità
- La compatibilità coi browser è quasi totale per i client più recenti, anzi permette spesso di utilizzare via JS regole CSS altrimenti non supportate ad esempio su IE.
- La manutenibilità è estremamente semplificata proprio grazie al Framework che semplifica e riduce il codice, oltre a renderlo sintatticamente pulito e coerente

Te parli di JavaScript, il discorso era sulle applet in Java "puro" ;)

cionci
28-03-2009, 09:46
Imho il motivo per cui è stato preferito Flash è semplice: Flash è più indirizzato al multimedia, alla grafica e alle animazioni. Ed è quello che era necessario agli utenti avere all'interno delle pagine web.
Per una applicazione classica all'interno di una pagina web è chiaro che è migliore una applet Java.
Ora con AJAX addirittura si passa a scrivere intere applicazioni con Javascript + DOM...quindi anche questo campo di applicazione delle applet Java sta andando a morire.

dupa
28-03-2009, 10:42
con javascript si fa il 90% di quello che serve.
con GWT puoi scrivere comodamente del java e lui ti genera il relativo javascript

CozzaAmara
28-03-2009, 10:47
Te parli di JavaScript, il discorso era sulle applet in Java "puro" ;)

Assolutamente no, io mi riferivo ai CONTRO elencati da nucaronte relativamente a: Applicazione RIA Web 2.0 (Ajax etc...)

nucarote
28-03-2009, 11:05
Assolutamente no, io mi riferivo ai CONTRO elencati da nucaronte relativamente a: Applicazione RIA Web 2.0 (Ajax etc...)

Eh, eh, mai una volta che trovo qualcuno citi bene il mio nick. :D :D
Comunque si è vero con un JQuery e GWT si semplifica molto la gestione e la manutenzione del codice AJAX oltre che le varie discrepanze di visualizzazione, anche se rimane il fatto che importare altri componenti (es GWT-EXT) è un pò più complicato rispetto ad importare dei file jar nel progetto, senza contare che alcune cose (parlo sempre di GWT con cui mi è capitato di giocarci un pò) come leggere dei file in locale (d'accordo è un'esempio un pò estremo, ma a volte può essere utile) o utilizzare alcune strutture dati presenti in java.utils non è possibile. Come pure tutto il procedimento della chiamata asincrona che è un pochino farraginosa, almeno IMHO.
PS. Qualcuno che ha un pelo di esperienza con OpenJDK, sa se l'implementazione di AWT/Swing è stato migliorata rispetto al JDK di Sun?

javaboy
28-03-2009, 12:36
Il 90% delle applet che ho visto sono lente, farraginose, mal integrate col resto della pagina ed hanno una grafica orribile.
Flash è una tecnologia molto criticata ma estremamente valida. I contenuti flash sono in genere ben integrati col resto della pagina ed estremamente veloci nel caricamento.
Se a questo aggiungiamo la qualità e la quantità dei framework javascript disponibili e gli investimenti che sono stati fatti da google, mozilla e opera per migliorare la velocità di esecuzione di javascript non vedo proprio come le applet possano ritagliarsi uno spazio nel web.

_Claudio
28-03-2009, 13:34
Eh, eh, mai una volta che trovo qualcuno citi bene il mio nick. :D :D
Comunque si è vero con un JQuery e GWT si semplifica molto la gestione e la manutenzione del codice AJAX oltre che le varie discrepanze di visualizzazione, anche se rimane il fatto che importare altri componenti (es GWT-EXT) è un pò più complicato rispetto ad importare dei file jar nel progetto, senza contare che alcune cose (parlo sempre di GWT con cui mi è capitato di giocarci un pò) come leggere dei file in locale (d'accordo è un'esempio un pò estremo, ma a volte può essere utile) o utilizzare alcune strutture dati presenti in java.utils non è possibile. Come pure tutto il procedimento della chiamata asincrona che è un pochino farraginosa, almeno IMHO.
PS. Qualcuno che ha un pelo di esperienza con OpenJDK, sa se l'implementazione di AWT/Swing è stato migliorata rispetto al JDK di Sun?

Se uno programma in gwt dovrebbe sapere come importare componenti che ne estendono le funzionalità ecc... insomma dovrebbe sapere come fare il suo lavoro.
Inoltre sarebbe anche bello se chi ci lavorasse saprebbe alla perfezione dove si "incastrano" le gwt nel modello a livelli relativo ai browser e non tenti di fare operazioni negate (es. usando java.utils) proprio dalla logica applicativa del browser. Bisogna sempre tenere a mente che le GWT non sono nient'altro che un modo per lavorare scrivendo codice Java che poi verrà "compilato" in JS e quindi soffrirà di tutte le limitazioni di quest'ultimo.

Il 90% delle applet che ho visto sono lente, farraginose, mal integrate col resto della pagina ed hanno una grafica orribile.
Flash è una tecnologia molto criticata ma estremamente valida. I contenuti flash sono in genere ben integrati col resto della pagina ed estremamente veloci nel caricamento.
Se a questo aggiungiamo la qualità e la quantità dei framework javascript disponibili e gli investimenti che sono stati fatti da google, mozilla e opera per migliorare la velocità di esecuzione di javascript non vedo proprio come le applet possano ritagliarsi uno spazio nel web.

Flash è sicuramente una buona tecnologia ma, e questo vale anche per Java, il motivo percui non è poi così usato è perchè spiazza l'utente, ho visto alcuni test circa l'usabilità dei siti e l'utente quando si trova davanti ad un browser adotta un comportamento "da browser", se il browser poi gli presenta un'interfaccia simile ad un'applicazione l'utente va in confusione e tenderà ad "averne paura".

Le applet oltre a chiare defayance tecniche e poca chiarezza nella loro descrizione, e quindi relativa incapacità anche dai migliori professionisti di creare applet efficienti, forniscono funzionalità "inutili" poichè se voglio un'applicazione vera e propria mi creo un programma che interagisce direttamente via rete con una maggior dimestichezza per l'utente e smisurata efficienza e semplicità.

Il discorso naturalmente andrebbe esteso con la domanda:"Cosa deve fare il web2.0? È veramente utile avere applicazioni "interne" ai browser?"

PGI-Bis
28-03-2009, 14:04
PGI: a me quella applet non si vede...firefox mi dice che manca un plugin, ma il plugin Java ce l'ho installato (è la prima versione ufficiale per Linux a 64 bit).
Questa applet mi funziona ad esempio: http://www.v-workshops.com/java/

Prova questa pagina:

http://www.tukano.it/test/bubbleapplet_np.html

L'applet è sempre la stessa, cambia il tag html (da object a applet).

Big Bamboo
28-03-2009, 14:53
gradiremmo qualche argomentazione peró :rolleyes:
Molto volentieri
Primo esempio

http://www.tukano.it/test/bubbleapplet.html

Firefox su windows mi dice che non esiste un plugin per visualizzare il contenuto.

Secondo esempio
Prova questa pagina:

http://www.tukano.it/test/bubbleapplet_np.html

L'applet è sempre la stessa, cambia il tag html (da object a applet).
Qui funziona ma circa ogni 3/4 di giro la pallina si blocca per una frazione di secondo (non ho un computer all'ultimo grido, ma nemmeno una ciofeca).

Questi primi 2 punti portano alla mia riflessione: perché per navigare devo installare programmi aggiuntivi (molte volte non disponibili per tutte le piattaforme) per poi ritrovarmi anche con prestazioni pietose?
Il 90% delle applet che ho visto sono lente, farraginose, mal integrate col resto della pagina ed hanno una grafica orribile.

Un punto di vista condiviso da molti

Flash è una tecnologia molto criticata ma estremamente valida. I contenuti flash sono in genere ben integrati col resto della pagina ed estremamente veloci nel caricamento.
Con questo invece non sono d'accordo (cfr non multipiattaforma). Una tra le cose che odio dei siti fatti interamente in flash è l'impossibilità di aprire i link con il tasto destro del mouse. Molti siti ne abusano e ci mettono secondi a caricare, quando magari il povero utente cerca solo delle informazioni che potrebbero essere facilmente riportate in una semplice pagina html.
Altra cosa (e qui correggetemi se sbaglio), credo comune a applet e flash, è l'assenza di indicizzazione dei contenuti da parte dei motori di ricerca.

Mi pare che i motivi per utilizzare gli standard pensati per il web ci siano. Sono d'accordo con chi dice che è difficile avere la stessa visualizzazione su tutti i browser, ma credo che nel giro dei prossimi 2-3 anni ci sarà un forte miglioramento su questo fronte. Per ora bisogna avere molta pazienza.

nucarote
28-03-2009, 15:46
Se uno programma in gwt dovrebbe sapere come importare componenti che ne estendono le funzionalità ecc... insomma dovrebbe sapere come fare il suo lavoro.
Inoltre sarebbe anche bello se chi ci lavorasse saprebbe alla perfezione dove si "incastrano" le gwt nel modello a livelli relativo ai browser e non tenti di fare operazioni negate (es. usando java.utils) proprio dalla logica applicativa del browser. Bisogna sempre tenere a mente che le GWT non sono nient'altro che un modo per lavorare scrivendo codice Java che poi verrà "compilato" in JS e quindi soffrirà di tutte le limitazioni di quest'ultimo.


Sò perfettemante che i browser non sono molto accoglienti con chi vuol cercare di lavorare con i file in locale così come avevo già fatto trapelare nel mio messaggio precedente, così come sò perfettamente che GWT offre solo un'ambiente che consente di "mappare" codice Java in Javascript, asservendo a tutti i limiti di quest'ultimi, con tutti i pro e i contro che comporta.
Poi comunque la "genialità" delle Applet, almeno quando uscirono nel lontano 1995/96 era quello di creare delle vere e proprie applicazioni che fossero distribuite attraverso gli allora "nascenti" browser, cosa che pian pianino stà accadendo ora con il web 2.0 seppur con il fatto che non sfruttano il browser non solo come un mezzo di distribuzione, ma come una sorta ambiente virtuale.

PGI-Bis
28-03-2009, 16:15
Qui funziona ma circa ogni 3/4 di giro la pallina si blocca per una frazione di secondo (non ho un computer all'ultimo grido, ma nemmeno una ciofeca).

No no, è proprio una ciofeca :D

Scherzo. Ma è strano perchè un framework simile lo uso sui cellulari e gira adeguatamente.

[update] Nel codice c'è un errore che causa la reinizializzazione continua del percorso parametrico della palla arancione.

_Claudio
28-03-2009, 16:27
Sò perfettemante che i browser non sono molto accoglienti con chi vuol cercare di lavorare con i file in locale così come avevo già fatto trapelare nel mio messaggio precedente, così come sò perfettamente che GWT offre solo un'ambiente che consente di "mappare" codice Java in Javascript, asservendo a tutti i limiti di quest'ultimi, con tutti i pro e i contro che comporta.
Poi comunque la "genialità" delle Applet, almeno quando uscirono nel lontano 1995/96 era quello di creare delle vere e proprie applicazioni che fossero distribuite attraverso gli allora "nascenti" browser, cosa che pian pianino stà accadendo ora con il web 2.0 seppur con il fatto che non sfruttano il browser non solo come un mezzo di distribuzione, ma come una sorta ambiente virtuale.

Purtroppo lavorare con i file in locale tramite browser non è possibile per motivi legati alla sicurezza e alla compatibilità tra browser e SO. Ho realizzato un vero e proprio editor di codice con le GWT e non sai le scappatoie e i giri che ho dovuto adottare per renderlo un minimo funzionante, d'altro canto l'unico modo per interagire con i file in locale sono le inputfile che caricano file su un server...

nucarote
28-03-2009, 16:56
Purtroppo lavorare con i file in locale tramite browser non è possibile per motivi legati alla sicurezza e alla compatibilità tra browser e SO. Ho realizzato un vero e proprio editor di codice con le GWT e non sai le scappatoie e i giri che ho dovuto adottare per renderlo un minimo funzionante, d'altro canto l'unico modo per interagire con i file in locale sono le inputfile che caricano file su un server...


Immagino, dato che pure io stò utilizzando GWT per un progetto. :rolleyes:

_Claudio
28-03-2009, 19:41
Immagino, dato che pure io stò utilizzando GWT per un progetto. :rolleyes:

Il problema di fondo è che con l'avvento del web2.0 andrebbero rifatti tutti gli standard perchè HTML, JS e CSS non sono abbastanza potenti. Quando si arriverà al web3.0, ossia all'interazione tra macchine, dovranno necessariamente rivedere i vari standard e linguaggi e non sarebbe male ridefinire un linguaggio unico per la creazione di siti web eliminando in toto le tecnologie adesso esistenti e garantendo un minimo di retrocompatibilità perchè necessariamente andrebbe rifatta da 0 la logica dei browser che diventerebbe sempre più simile ad un SO andando verso applicazioni Very Fat Client. Insomma ogni browser sarebbe un SO dentro il SO... e ogni sito un'applicazione aperta a cui il browser farebbe da "scatolone" e interfaccia unica.

Molti puntano su xml ma a mio avviso anche xml pone dei grossi limiti perchè è oltremodo verboso e sviluppare applicazioni desktop (perchè di questo si tratta) con xml ad ora è una tortura.
L'ideale sarebbe un linguaggio simile a java... ma solo per quanto riguarda la sintassi.

fero86
28-03-2009, 19:41
Mi fa piacere, ma qui non si parla di cosa POTREBBE fare il Java nelle applet, ma di cosa ha fatto e sta facendo... e le applet che ho visto devastavano letteralmente l'esperienza utente, prendendo il posto del sito, scattando, avendo una grafica che fa vergogna al super nes e che fa schermo bianco quando refresha. si ma capisci bene che questo discorso confonde le colpe di Sun con le colpe dei programmatori e non costituisce la minima risposta a questa discussione. sarebbe come dire: "perché nessun sito usa le applet Java?" - "perché finora sono sempre state programmate da idioti"; la contro-domanda naturale é: "e quindi?"


Da quello che ho visto, fare un sito moderno stile Facebook con un'applet Java è semplicemente impossibile. questo é vero, ma solo perché Facebook é realizzabile con AJAX (escludendo ovviamente le applicazioni in Flash) che é molto meglio sia di Java che di Flash. se invece vogliamo includere anche le applicazioni in Flash allora ti dico che io sto realizzando una mia applicazione per Facebook in Java e nella forma di un'applet :D

fero86
28-03-2009, 19:43
Molto volentieri
Primo esempio

Firefox su windows mi dice che non esiste un plugin per visualizzare il contenuto. a me succede una cosa analoga anche con le animazioni Flash prima che io installi il plugin.

per il secondo esempio ti ha risposto PGI-Bis, errore di coding.

_Claudio
28-03-2009, 20:06
si ma capisci bene che questo discorso confonde le colpe di Sun con le colpe dei programmatori e non costituisce la minima risposta a questa discussione. sarebbe come dire: "perché nessun sito usa le applet Java?" - "perché finora sono sempre state programmate da idioti"; la contro-domanda naturale é: "e quindi?"


È vero... ma i programmatori sono anche bravi, secondo me è proprio perchè la tecnologia su cui si fondano le applet è stata modificata e rimodificata (per via dei problemi sulla sicurezza in primis) che si è creata una confusione tale da non riuscire a far pressochè nulla di complesso senza problemi di usabilità/pesantezza.


Facebook é realizzabile con AJAX escludendo ovviamente le applicazioni in Flash) che é molto meglio sia di Java che di Flash.

Sacrosanto, e ricordiamoci su cosa si basa AJAX che la dice lunga su quanto le tecnologie con cui "si fa web" siano contorte, confuse e poco potenti.

gbhu
28-03-2009, 20:08
Probabilmente se Java fosse stato inventato dalla MS, insieme agli applets, il runtime sarebbe stato integrato direttamente col sistema operativo e oggi il web sarebbe diverso e magari in gran parte basato su applets.
Almeno questa è la mia sensazione.

_Claudio
28-03-2009, 20:13
Probabilmente se Java fosse stato inventato dalla MS, insieme agli applets, il runtime sarebbe stato integrato direttamente col sistema operativo e oggi il web sarebbe diverso e magari in gran parte basato su applets.
Almeno questa è la mia sensazione.

Molto probabile, anche perchè sarebbe stato implementato molto meglio in termini di efficienza essendo integrato nel SO.
Purtroppo le applet come diceva qualcuno pochi post fa hanno preso il treno troppo presto e l'idea che ne è alla base è talmente innovativa (forse senza nemmeno volerlo) che non è stata concepita e sviluppata a dovere.

marco.r
28-03-2009, 20:51
Le argomentazioni sono le più semplice: quando si può meglio evitare di aumentare le dipendenze ;) Maggiore compatibilità, migliore usabilità, maggiore leggerezza.
Silverlight attualmente è quello meno compatibile, quindi da escludere a priori.

Su questo ho da ridire. Ho provato ad andare a vedere la diretta rai su
http://www.rai.tv/dl/RaiTV/diretta.html
che usa silverlight. Sara' che avevo mono gia' installato, ma l'installaizone e' stata molto piu' diretta che nel caso delle applet java o di flash (che peraltro non funziona sempre perfettamente sulla mia macchina).

nucarote
28-03-2009, 21:33
Il problema di fondo è che con l'avvento del web2.0 andrebbero rifatti tutti gli standard perchè HTML, JS e CSS non sono abbastanza potenti. Quando si arriverà al web3.0, ossia all'interazione tra macchine, dovranno necessariamente rivedere i vari standard e linguaggi e non sarebbe male ridefinire un linguaggio unico per la creazione di siti web eliminando in toto le tecnologie adesso esistenti e garantendo un minimo di retrocompatibilità perchè necessariamente andrebbe rifatta da 0 la logica dei browser che diventerebbe sempre più simile ad un SO andando verso applicazioni Very Fat Client. Insomma ogni browser sarebbe un SO dentro il SO... e ogni sito un'applicazione aperta a cui il browser farebbe da "scatolone" e interfaccia unica.

Molti puntano su xml ma a mio avviso anche xml pone dei grossi limiti perchè è oltremodo verboso e sviluppare applicazioni desktop (perchè di questo si tratta) con xml ad ora è una tortura.
L'ideale sarebbe un linguaggio simile a java... ma solo per quanto riguarda la sintassi.

In un mondo ideale sarei d'accordissimo con te, con standard web ripensati ed effettivamente sia standard sulla carta che standard de facto. Ma fintanto ci sarà qualcuno che se ne fregherà degli standard benvengano anche i Flash i Silverlight e JavaFx "serio".

cionci
29-03-2009, 01:28
Su questo ho da ridire. Ho provato ad andare a vedere la diretta rai su
http://www.rai.tv/dl/RaiTV/diretta.html
che usa silverlight. Sara' che avevo mono gia' installato, ma l'installaizone e' stata molto piu' diretta che nel caso delle applet java o di flash (che peraltro non funziona sempre perfettamente sulla mia macchina).
Funziona con Moonlight, però non è la stessa cosa rispetto al player Windows. Ci sono altri siti che, al di là dei video, con Moonlight funzionano veramente.
A me Flash a 64 bit funziona sicuramente molte meglio che Moonlight.

nucarote
31-03-2009, 11:41
Intanto Silverlight 3.0 sembra sempre più ad avvicinarsi al "modello" delle Applet


La differenza tra Windows Presentation Foundation e Silverlight, due tecnologie introdotte da Microsoft, si fa sempre meno marcata: con il rilascio della versione 3, infatti, Silverlight avrà un accesso limitato alle risorse hardware ed al file system del desktop, con la possibilità di utilizzare l'accelerazione hardware per la grafica e gli effetti 3D; le applicazioni Silverlight potranno inoltre essere eseguite anche al di fuori del browser.

Jeffrey Hammond, analista di Forrester Research, si chiede se a questo punto Microsoft e i suoi clienti abbiano ancora bisogno di WPF; con Silverlight in effetti si possono scrivere delle Rich Internet Application che girano senza l'utilizzo degli add-on necessari a WPF per sfruttare la GPU e girare sul desktop senza il supporto di un browser, come affermato da Julian Bucknall, CTO di Developer Express, nel suo blog.

Sull'argomento è intervenuta Microsoft, nella figura di Bred Becker, responsabile delle piattaforme rich client, illustrando le novità di WPF che saranno introdotte dalla versione 4.0 del framework .NET, saranno introdotte in : il supporto per applicazioni multi-touch in Windows 7, migliori performance grafiche, nuove API per l'accesso ai media, componenti business-oriented ed una nuova datagrid condivisa con Silverlight.

Becker indica anche i punti in comune tra le due tecnologie: l'utilizzo di XAML, condivisione di controlli e API consistenti fra i due mondi; viene anche ricordato che la peculiarità di Silverlight è nel noto slogan run anywhere, mentre l'utilizzo di WPF è preferibile per quelle applicazioni che necessitano di accedere a pieno alle capacità della macchina, sia da un punto di vista hardware che per quanto concerne il file system.

Per Bucknall, l'unica differenza fra le due tecnologie la farebbe il runtime, che per WPF è più ricco; inoltre, con l'introduzione in Silverlight 3 di un layer per l'accesso ai dati basato sull'Entity Framework di ADO.NET, le differenze tra le due piattaforme sarebbero ancora meno evidenti.

Nell'articolo pubblicato su SDTimes è presente anche una tabella elaborata da Becker per guidare nella scelta della tecnologia da utilizzare, a seconda delle necessità dell'applicazione che si intende sviluppare.

Tommo
31-03-2009, 12:25
si ma capisci bene che questo discorso confonde le colpe di Sun con le colpe dei programmatori e non costituisce la minima risposta a questa discussione. sarebbe come dire: "perché nessun sito usa le applet Java?" - "perché finora sono sempre state programmate da idioti"; la contro-domanda naturale é: "e quindi?"

E quindi li attira, evidentemente :asd:
E' una cosa a due versi, la tecnologia ha dei limiti, allora la usano solo persone "scarse", che a loro volta mettono ancora più in mostra i suoi limiti.

Che poi non mi sembra che yahoo games sia una "idiozia" commercialmente parlando, ma le applet facevano gridare vendetta ugualmente.

fero86
31-03-2009, 14:01
E quindi li attira, evidentemente :asd:
E' una cosa a due versi, la tecnologia ha dei limiti, allora la usano solo persone "scarse", che a loro volta mettono ancora più in mostra i suoi limiti.a parte che questo ragionamento non mi sembra avere molto senso... :mbe: comunque... questi limiti sarebbero?

_Claudio
31-03-2009, 16:30
E quindi li attira, evidentemente :asd:
E' una cosa a due versi, la tecnologia ha dei limiti, allora la usano solo persone "scarse", che a loro volta mettono ancora più in mostra i suoi limiti.

Che poi non mi sembra che yahoo games sia una "idiozia" commercialmente parlando, ma le applet facevano gridare vendetta ugualmente.

Anche le tecnologie web hanno limiti grossissimi per l'uso che se ne vorrebbe fare... ma le usano tutti, scarsi o no.

Poi sono d'accordo con te che le applet andrebbero rifatte da zero. Ma a quel punto non rifarei le applet, ma tutti gli standard per il web.

nucarote
31-03-2009, 17:18
...
Poi sono d'accordo con te che le applet andrebbero rifatte da zero. Ma a quel punto non rifarei le applet, ma tutti gli standard per il web.

IMHO una Swing rifatta e una versione alleggerita della JRE porterebbe miglior risultati di qualsiasi JavaFX di questo mondo.
Per quanto riguarda il problema Swing per RIA c'è questo progettino molto interessante http://incubator.apache.org/pivot/

nucarote
14-04-2009, 10:21
Un'esempio non troppo preistorico di utilizzo delle Applets nelle RIA anche se in combinazione con JS.

http://www.parleys.com/display/PARLEYS/Home#slide=23;talk=11763724;title=IRIS%2C%20a%20RIA%20swing%20applet

Ad ogni modo conoscete siti interessanti, ove trovare librerie di applets non troppo preistoriche.:D

tomminno
17-04-2009, 07:55
Un punto a sfavore delle applets che mi è capitato in questo momento:
sono stato gentilmente avvertito da un'applet che era necessaria una versione precedente di Java (senza però specificare quale) e infatti l'applet non funziona proprio bene visualizzo solo un rettangolo verde fosforescente...

nucarote
17-04-2009, 08:40
La colpa potrebbe essere del programmatore, che non ha saputo scrivere i tag di deployment. Ad ogni modo, dalla versione 1.6.10 si raccomanda vivamente di utilizzare JNLP per fare il deployment.

tomminno
17-04-2009, 09:55
La colpa potrebbe essere del programmatore, che non ha saputo scrivere i tag di deployment. Ad ogni modo, dalla versione 1.6.10 si raccomanda vivamente di utilizzare JNLP per fare il deployment.

Magari l'applet è stata scritta qualche anno fa.
Chi mi garantisce che un applet che scrivo oggi funzioni bene tra un paio d'anni?

_Claudio
17-04-2009, 10:15
Quanti problemi queste applet... non sarà mica che sono state un flop?
Per carità ottima idea... ma nei tempi sbagliati...

Con l'evoluzione che hanno visto i browser lascia perplessi vedere come gli standard siano stati rappezzati e stiracchiati per anni, in altri campi basta un nonnulla per ridefinire tutto: linguaggi, architettura, persino l'hardware a volte (vedi .net, telefonini, ecc...).

Per il Web, ad oggi la tecnologia più pervasiva e usata... invece niente si continua ad usare html, css e mero scripting php (discorso diverso per jsp e servlet) sorridendo e facendo finta di usare la tecnologia più evoluta in assoluto... anche quando si perdono le giornate dietro ad errori subdoli dovuti al browser o specifiche troppo poco potenti.

nucarote
17-04-2009, 11:51
Magari l'applet è stata scritta qualche anno fa.
Chi mi garantisce che un applet che scrivo oggi funzioni bene tra un paio d'anni?

Anche questo sicuramente, ma se ti ha richiesto una vecchia JRE potrebbe esser stato anche un errore nel tag applet, nel attributo version sarà stata impostata questa vecchia JRE. Se si togliesse quest'attributo e non usa niente di strano (codebase non più presenti) potrebbe pure fungere ancora.
Comunque questo è l'articolo ove SUN "consiglia" di usare JNLP per il deployment delle applets anche se IMHO non brilla per pulizia e semplicità http://blogs.sun.com/thejavatutorials/entry/deploying_an_applet_in_under