Java logo PredDalej

Applet versus aplikacia

Aj ked su aplety a aplikacie napisane v jazyku Java, je medzi nimi niekolko rozdielov, ktore musime zvazit pri navrhu riesenia nejakeho problemu. Tato kapitola by Vam mala pomoct pri rozhodovani sa, ci napisat applet alebo aplikaciu.

Preco ten rozdiel?

Musime si najprv uvedomit, co je to vlastne applet, ako a kde sa vykonava jeho kod.

Applety, ake mozeme najst na Internete, mam na mysli subory s priponou class, su stiahnute po sieti na lokalny pocitac uzivatela, ktory si prezera danu stranku, kde sa tento kod vykonava. Predstavte si, ze by nemal applet ziadne obmedzenia a mohol by sa spravat ako rovnocenna aplikacia na Vasom disku. Co by appletu FormatDisk zabranilo, aby Vam formatoval disk? Nemusi to byt az take zle, ale ziadna aktivita nie je ziaduca, pokial presne nevieme, co od nej mozeme ocakavat. Samozrejme, ze by Internet neobsahoval applety s menom FormatDisk alebo ine destrukcne applety, ale ani vysoko konstrukcne aktivity nie su ziaduce. Napriklad applet CreateFile by vytvaral 100000 malickych suborov nahodne rozmiestnenych po disku s nahodne generovanymi menami.

Popisme si podrobnejsie rozdiely medzi appletami a aplikaciami.

Pouzivanie bitovych map - obrazkov

Nahrat obrazok do pamete v pripade appletu je naozaj trivialna vec. Staci zavolat metodu getImage, ktora nahra lubovolny obrazok z Internetu so specifikovanym URL. Dovod tohto obmedzenia je dizajn a nie bezpecnost.

Dobry napad najdete na listservery. Realizacia tohto napadu by mohla vyzerat takto:
import sun.awt.image.URLImageSource;

...
img = Toolkit.getDefaultToolkit().
  createImage(new URLImageSource(url));
...

Pristup na disk

Cele filozofovanie zhrniem do jednej vety.
Applet nema pristup na disk. Mysli sa tym, ze applet nemoze: Ak som nieco vynechal, co sa tyka diskov, tak plati, ze nemoze! :-)

Ak chcete alebo potrebujete pristupovat na disk, je to jasne, musite implementovat aplikaciu a nie applet.

Komunikacia po sieti

Applet je silne obmedzeny, co sa tyka komunikacie. Nie je mozne nadviazat spojenie pomocou soketu s lubovolnym pocitacom na sieti. Je mozne nadviazat spojenie iba s pocitacom, z ktoreho bol dany applet stiahnuty.

Pristup do kniznic tried

Applety nie su schopne pristupovat ku knizniciam sun.* a nemozu linkovat kniznize pomocou metody System.loadlibrary().

Lokalne procesy, thready

Applet nemoze riadit cinnost inych threadov ako tych, ktore boli vytvorene z neho samotneho (v jeho tele), cize patria do skupiny threadov vytvorenych appletom.

Implementacia serverov

V pripade, ze potrebujete naprogramovat server, mate rozhodnute. Budete programovat aplikaciu, pretoze metody accept() a listen() su podporovane jedine v aplikaciach.

Zaciatok