Predavanje
br. index|1|2|3|4|5|6|7|8|9|10|11|12|13|14|HOME
HTML, jezik za oblikovanje web stranica - URL, jedinstvena adresa dokumenta – dijelovi URLa – linkovi – relativni URLovi – applet Hello World – što je applet? – HTML oznaka <applet> - odabir pozicije na stranici – alternativni tekst – imenovanje appleta – JAR arhive – HTML oznaka <object> - veličina appleta – HTML oznaka <param> - obrada nepoznatog broja parametara – sigurnost appleta – što applet može činiti? – s kim applet može komunicirati? – koliko CPU vremena applet dobija? – sigurnost i social engineering – sprečavnje hakerskih napada kroz applete – Životni ciklus appleta – metode init(), start(), stop() i destroy() – koordinatni sustav – objekti klase Graphics – crtanje linija – crtanje pravokutnika – punjenje pravokutnika – brisanje pravokutnika – elipse i kružnice – primjer, bullseye – poligoni – višestruke linije (polylines) – učitavanje slika – metode getCodeBase() i getDocumentBase() – prikaz slike u pravoj veličini – skaliranje slika – boje – sistemske boje – fontovi – odabir oblika i veličine fonta – klasa FontMetrics
HTML znači HyperText Markup Language. HTML datoteke su tekstualne datoteke u kojima su dijelovi teksta označeni pomoću tagova (oznaika). Ekstenzija takve datlteke je .htm ili .html. Evo primjera jedne jednostavne HTML datoteke:
<html><head><title>Moj prvi HTML Document</title></head><body><h1>Zaglavlje veličine 1</h1> Ovdje se piše vidljivi dio dokumenta.Ovako se <STRONG>naglašava</STRONG> sadržaj. </body></html>
Elementi koji su zatvoreni u trokutastim zagradama kao
<html>, <head>, and <title> >zovu se oznake (tags).
Oznake se mogu pisati velikim ili malim slovima (nisu case sensitive).
Većina oznaka ima zatvarač koji definira doseg oznake. Zatvarač ima isto
ime kao i oznaka, ali mu je dodan slash (/) nakon otvorene zagrade. Na
primjer, </html>, </head>, i </title> su zatvarači. Tekst između <title> i </title>, Moj prvi HTML dokument iz gornjeg primjera, predstavlja naslov
stranice.
Oznake se u pravilu mogu pisati unutar drugih oznaka, ali se ne mogu preklapati.
Neke oznake imaju dodatne atribute (to nije isto što i atributi u Javi). Atribut je ime iza kojeg slijedi
znak jednakosti i vrijednost, a zajedno s oznakom pobliže određuje način
interpretacije teksta. Na primjer, da bismo zaglavlje H1 centrirali, možemo koristiti atribut ALIGN i dati mu vrijednost center; tj.
<h1 align="center">Zaglavlje veličine 1</h1>
Atributi su također case-insensitive. Dvostruki navodnici oko vrijednosti su opcionalni osim ako vrijednost sadrži bjeline.Za potpunu informaciju o HTML-u pogledajte HyperText Markup Language na W3C - World Wide Web Consortium.
URL je kratica za uniform resource locator. To je pointer na određeni resurs na nekoj lokaciji na Internetu. Na primjer, http://student.math.hr/~vedris/ ili http://student.math.hr/~vedris/java/java-predavanje-05.htm su URLovi.
URL specificira protokol za pristup poslužitelju, npr. ftp, http, ime poslužitelja, lokaciju datoteke na poslužitelju i eventualno lokaciju nekog mjesta (sidro, anchor) unutar datoteke. Opći oblik URLa je
protocol://hostname[:port]/path/filename#section
Protokol je uglavnom jedan od sljedećih:
Hostname (ime poslužitelja) mora biti valjano mrežno ime hosta na Internetu, a može biti i IP adresa, npr student.math.hr, www.ora.com or shock.njit.edu ali i 204.29.207.217 ili 128.235.252.184.
Port (broj porta) je opcionalan Za http je default port 80.
Path (put do datoteke) pokazuje određeni direktorij na poslužitelju. Formira se u odnosu na početni direktorij servisa (server root, document root) koji ne mora biti (i obično nije) nužno početni direktorij (root) sustava datoteka (file system). Cijeli sustav datoteka obično se ne otkriva javnosti.
Filename (ime datoteke) pokazuje na određenu datoteku unutar navedenog direktorija. Na mnogim poslužiteljima uobičajeno je da se, ako je ime datoteke izostavljeno, podrazumijeva datoteka index.html. Na drugima će se dobiti ispis direktorija, a neki će poslati poruku o pogreški.
Section (mjesto unutar datoteke) referencira imenovano sidro (anchor) unutar HTML dokumenta. Ono se označava ovako:
<A NAME="xtocid1902914">Comments</A>
URL koji pokazuje na to sidro sadrži nakon imena datoteke još i ime sidra ispred kojeg je znak #, na primjer ovako:
http://metalab.unc.edu/javafaq/javafaq.html#xtocid1902914
Da biste u HTML datoteci napravili link od dijela teksta, zatvorit ćete
ga unutar oznaka <A>
i </A>. Oznaci <A> dodat ćete atribut HREF i u njemu navesti url na koji želite usmjeriti vaš link. Na primjer,
Ovaj link pokazuje na <A HREF="http://student.math.hr/~vedris/java/java-predavanja/java-predavanje-05.htm">peto predavanje iz Jave</A> na PMF-u.
Većina browsera će tako označeni tekst prikazati podvučeno, u plavoj ili ljubičastoj boji, no to ovisi o podešenosti browsera. Klikanjem na taj dio teksta prikazat će se resurs koji je naveden u pripadnom URLu.
When a web browser reads an HTML document, it has a great deal of
information about the document. This includes the protocol used to retrieve the
document, the name of the host where the document lives, and the path to that
document on the host. Most of this is likely to be the same for many of the URLs
in that document. Relative URLs inherit the protocol, hostname, and path of
their parent document rather than respecifying it in each <A
HREF> tag. Thus if any piece of the URL is
missing, it is assumed to be the same as that of the document in which the URL
is found. Such a URL is called a relative URL. In contrast, a
completely specified URL is called an absolute URL. Na primjer, ako
pregledavajući dokument http://metalab.unc.edu/javafaq/books.html
kliknete na sljedeći hiperlink:
<a href="javafaq.html">the FAQ</A>
Browser će odrezati books.html sa završetka izraza http://metalab.unc.edu/javafaq/books.html
i ostaviti http://metalab.unc.edu/javafaq/,
a zatim pripojiti javafaq.html na završetak izraza http://metalab.unc.edu/javafaq/ da bi dobio http://metalab.unc.edu/javafaq/javafaq.html.
Ako relativni link počinje sa /, onda je on relativan u odnosu na document root umjesto na
trenutno aktivnu datoteku.. Znači, ako prilikom pregledavanja datoteke
http://metalab.unc.edu/javafaq/books.html kliknete na hiperlink
<a href="/boutell/faq/www_faq.html">
browser će odbaciti /javafaq/javafaq.html i pripojiti /boutell/faq/www_faq.html na završetak izraza http://metalab.unc.edu/ da bi dobio http://metalab.unc.edu/boutell/faq/www_faq.html.
Relativni URLovi imaju raznih prednosti. Smanjuju količinu potrebnog tipkanja, ali što je još važnije, omogućuju premiještanje cijelih stabala HTML dokumenata bez narušavanja njihovih internih linkova
Jedan od razloga popularnosti Jave je mogućnost pisanja interaktivnih appleta na webu. Program Hello World nije baš interaktivan, no pogledajmo svejedno njegovu web verziju:
import java.applet.Applet; import java.awt.Graphics; public class HelloWorldApplet extends Applet { public void paint(Graphics g) { g.drawString("Hello world!", 50, 25); } }
Primjećujete da je applet Hello World nešto složeniji nego aplikacija, a ima i nešto dodatnog posla da bi ga se pokrenulo.
Najprije spremite izvorni kod u datoteku HelloWorldApplet.java. Kompilirajte je na uobičajeni način. Dobit ćete klasu HelloWorldApplet.class. Da biste je pokrenuli, potrebno je napraviti HTML dokument koji će sadržati naš applet. Evo jednog takvog dokumenta:
<HTML><HEAD><TITLE> HelloWorldApplet</TITLE></HEAD> <BODY>Ovo je applet HelloWorld:<P><applet code="HelloWorldApplet.class" width="150" height="50"></applet></BODY></HTML>
Spremite tu datoteku pod imenom HelloWorldApplet.html u isti direktorij gdje se nalazi datoteka HelloWorldApplet.class. Pogledajte tu HTML datoteku pomoću nekog standardnog (Java enabled) browsera kao što je Internet Explorer, Netscape ili Applet viewer koji se nalazi u JDK paketu. Vidjet ćete string Hello World unutar pravokutnika veličine 150x50 točaka.
Ako je kompilacija prošla bez pogreške, a ne vidite string Hello World, provjerite da li je klasa u istom direktoriju kao i HTML datoteka. Također budite sigurni da koristite dovoljno novu verziju browsera, koja podržava Javu. Ako ni Applet Viewer ne vidi vaš applet, pogreška je vjerojatno u appletu, a ne u browseru.
Applet je mala aplikacija koja je zamišljena da se ne izvršava samostalno, nego unutar druge aplikacije, tipično unutar web browsera. Klasa java.applet.Applet osigurava standardno sučelje između appleta i njihove okoline. Evo što se sve naziva appletom:
java.applet.Applet
java.applet.Applet
Ovo je hijerarhija njenih nadklasa:
java.lang.Object | +---java.awt.Component | +---java.awt.Container | +---java.awt.Panel | +---java.applet.Applet
Appleti se u HTML stranicu ugrađuju pomoću oznaka <APPLET> i </APPLET>. Oznaka <APPLET> se ponaša lično kao <IMG>. Kompilirana klasa koja sadrži appletov kod referencira se pomoću
atributa CODE. Njezina je lokacija relativna u odnosu na izvorni HTML dokument. Na
primjer, ako pregledavate stranicu http://metalab.unc.edu/javafaq/index.html, a ta stranica referencira applet pomoću CODE="Animation.class", onda bi datoteka Animation.class trebala biti na adresi http://metalab.unc.edu/javafaq/animation.class.
Međutim, suprotno od uobičajene prakse, ako se applet nalazi negdje
drugdje, a ne u istom direktoriju kao i HTML dokument, ne možete u atributu
<CODE> jednostavno navesti njegov URL, nego umjesto toga morate koristiti još
i atribut CODEBASE u kojem ćete navesti dio URLa koji pokazuje put do appleta. Na primjer,
da je HTML stranica s našim appletom HelloWorldApplet bila napisana kao
<APPLET CODE="HelloWorldApplet.class"CODEBASE="classes"
WIDTH=200 HEIGHT=200></APPLET>
onda bi browser pokušao tražiti klasu HelloWorldApplet.class u poddirektoriju classes onog direktorija u kojem se nalazi HTML dokument. Također, ako napišemo
<APPLET CODE="HelloWorldApplet.class" CODEBASE="http://student.math.hr/~vedris/java/classes" WIDTH=200 HEIGHT=200></APPLET>
onda će browser pokušati naći našu klasu na adresi http://student.math.hr/~vedris/java/classes/HelloWorldApplet.class neovisno o tome gdje se HTML dokument nalazi.
Ukratko, browser pokušava rekonstruirati URL po formuli
(CODEBASE + "/" + CODE). Jednom kad je URL formiran, vrijede sva pravila o relativnim i
apsolutnim URLovima.
Ekstenziju .class možete u atributu CODE izostaviti i pisati samo ime klase. Na primjer
<APPLETCODE="HelloWorldApplet"
CODEBASE="http://student.math.hr/~vedris/java/classes" WIDTH=200 HEIGHT=200></APPLET>
Ako applet nije u default paketu, potrebno je pisati puno ime paketa. Na primjer
<APPLETCODE="hr.math.student.vedris.myApplets.HelloWorldApplet"
CODEBASE="http://student.math.hr/~vedris/java/classes" WIDTH=200 HEIGHT=200></APPLET>
U ovom slučaju browser će tražiti klasu na adresi http://student.math.hr/~vedris/java/classes/hr/math/student/vedris/myApplets/HelloWorldApplet.class, pa struktura direktorija na serveru mora biti napravljena u skladu s hijerarhijom paketa.
Atributi HEIGHT i WIDTH rade na isti način kao i kod oznake IMG, određujući veličinu pravokutnika koji će browser rezervirati za prikaz
appleta. Veličine su specificirane u pikselima i obavezne su.
Oznaka <APPLET> ima nekoliko atributa za definiranje pozicije appleta na
stranici.
Atribut ALIGN određuje kako je appletov pravokutnik pozicioniran na stranice u odnosu
na druge elemente. Dozvoljene vrijednosti ovog atributa su LEFT, RIGHT, TOP, TEXTTOP, MIDDLE, ABSMIDDLE, BASELINE, BOTTOM i ABSBOTTOM. Atribut je opcionalan.
U atributima HSPACE i VSPACE moguće je odrediti količinu praznog prostora (u pikselima) između
appleta i okolnog teksta. I ovi su atributi opcionalni.
<applet code="HelloWorldApplet.class" CODEBASE="http://student.math.hr/~vedris/java/classes" width=200 height=200ALIGN=RIGHTHSPACE=5 VSPACE=10>
</APPLET>
Atributi ALIGN, HSPACE, i VSPACE identični su onima koji se koriste u oznaci <IMG>.
Oznaka <APPLET> ima i atribut ALT. Browser ga koristi u slučaju ako iz nekog razloga ne može izvesti
applet. Na primjer, ako je u browseru isključena opcija za dozvolu izvođenja
Java appleta, trebao bi se prikazati tekst naveden u atributu ALT. Atribut ALT je opcionalan.
<applet code="HelloWorldApplet.class" CODEBASE="http://student.math.hr/~vedris/java/classes" width=200 height=200ALIGN=RIGHT HSPACE=5 VSPACE=10ALT="Hello World!"></APPLET>
Ovim se atributom ne koriste stariji browseri koji uopće ne razumiju
oznaku <APPLET>. Oni umjesto toga prikazuju čisti tekst koji se nalazi između oznake
<APPLET> i njenog zatvarača, </APPLET>. S druge strane, browseri koji su Java enabled ignorirat će taj
tekst. Na primjer, sljedeći HTML fragment ispisuje string Hello World!
svima, dakle i Java enabled i non-Java enabled
browserima.
<applet code="HelloWorldApplet.class" CODEBASE="http://student.math.hr/~vedris/java/classes" width=200 height=200ALIGN=RIGHT HSPACE=5 VSPACE=10ALT="Hello World!">Hello World!<P></APPLET>
Appletu se unutar web stranice može dati ime kako bi mogao komunicirati
s drugim appletima. To se radi pomoću atributa NAME. Na primjer,
<applet code="HelloWorldApplet.class"Name=Applet_01
CODEBASE="http://student.math.hr/~vedris/java/classes" width=200 height=200ALIGN=RIGHT HSPACE=5 VSPACE=10ALT="Hello World!">Hello World!<P></APPLET>
Sve slike, zvukove i klase koje su potrebne za izvršavanje vašeg appleta možete spakirati u JAR arhivu i tako ih učitati odjednom, a ne svaku posebno. Time smanjujete broj konekcija koje browser mora ostvariti da bi dobio sve što mu treba. Ako se appletova klasa nalazi u takvoj arhivi, onda ćete oznaci <APPLET> dodati još i atribut <ARCHIVE>. Na primjer:
<APPLET CODE=HelloWorldApplet CODEBASE="http://student.math.hr/~vedris/java/classes" WIDTH=200 HEIGHT=200 ARCHIVE="HelloWorld.jar"><hr>Hello World!<hr></APPLET>
U ovom primjeru appletova klasa je i dalje HelloWorldApplet. Međutim, browser će odgovarajuću datoteku potražiti u arhivi
HelloWorld.jar a ne u zasebnoj datoteci HelloWorldApplet.class.
Arhiva je spakirana na neki od uobičajenih načina, na primjer:
% jar cf HelloWorld.jar HelloWorldApplet.class added manifestadding: HelloWorldApplet.class(in = 384) (out= 271)(deflated 29%)%
Želimo li pogledati što ima u arhivi, možemo to učiniti ovako:
% jar tf HelloWorld.jarMETA-INF/META-INF/MANIFEST.MFHelloWorldApplet.class%
HTML 4.0 uvodi umjesto oznake <APPLET> novu oznaku <OBJECT>. Umjesto atributa CODE uvodi se atribut CLASSID. Na primjer:
<OBJECTCLASSID="HelloWorldApplet.class"
CODEBASE="http://student.math.hr/~vedris/java/classes" WIDTH=200 HEIGHT=200ALIGN=RIGHT HSPACE=5 VSPACE=10></OBJECT>
Atribut <OBJECT> omogućuje i uključivanje ActiveX kontrola i drugih aktivnih elemenata,
no za Javu nam to ne treba. Podržavaju je samo najnovije verzije browsera i
smatra se da će oznaka <APPLET> biti još dosta vremena aktualna.
Možete imati i obje oznake, jednu unutar druge, ovako:
<OBJECTCLASSID="HelloWorldApplet.class" WIDTH=200 HEIGHT=200
CODEBASE="http://student.math.hr/~vedris/java/classes"><APPLET CODE="HelloWorldApplet.class" CODEBASE="http://student.math.hr/~vedris/java/classes" WIDTH=200 HEIGHT=200></APPLET></OBJECT>
Browseri koji razumiju oznaku <OBJECT> ignorirat će sadržaj između nje i njenog zatvarača, dok će ga ostali
prikazati. Elementi PARAM su isti za obje oznake.
Veličina prostora koju zauzima applet dok se izvršava unutar web browsera zadana je atributima HEIGHT i WIDTH i sam applet je ne može promijeniti. Međutim, može doznati kolika je ta veličina, što mu je potrebno npr. da ne bi crtao izvan zadanog prostora.
Veličina appleta doznaje se pomoću metode getSize() koju klasa java.applet.Applet nasljeđuje od svoje nadklase java.awt.Component. Ova metoda vraća objekt tipa java.awt.Dimension. Takav objekt ima dva atributa tipa int, to su height i width. Pogledajmo sljedeći primjer appleta koji ispisuje svoje
dimenzije.
import java.applet.*; import java.awt.*; public class SizeApplet extends Applet { public void paint(Graphics g) { Dimension appletSize = this.getSize(); int appletHeight = appletSize.height; int appletWidth = appletSize.width; g.drawString("Applet je " + appletHeight + " pt visok i " + appletWidth + " pt sirok.", 15, appletHeight/2); } }
Prmijetite kako je ovdje visina appleta uzeta u obzir kod odlučivanja gdje smjestiti tekst. Korištenje appletove dimenzije za određivanje mjesta objekata na stranici često je korištena tehnika.
Parametri se iz HTML dokumenta prenose appletima pomoću para
NAME=VALUE i oznaci <PARAM> koja se smješta između oznake <APPLET> i njenog zatvarača. Unutar samog appleta vrijednosti proslijeđene
putem oznake <PARAM> čitaju se pomoću metode getParameter() iz klase java.applet.Applet.
Sljedeći program demonstrira ispis stringova dobivenih sa HTML stranice. String koji se ispisuje je ovdje vrijednost parametra "Message".
import java.applet.*; import java.awt.*; public class DrawStringApplet extends Applet { public void paint(Graphics g) { String inputFromPage = this.getParameter("Message"); g.drawString(inputFromPage, 50, 25); } }
Na HTML stranici imat ćemo parametar "Message" čija će vrijednost biti string "Kako ste?".
<HTML><HEAD><TITLE>DrawStringApplet</TITLE></HEAD> <BODY>Ovo je applet DrawStringApplet:<P><APPLET code="DrawStringApplet.class" CODEBASE="http://student.math.hr/~vedris/java/classes"WIDTH="300" HEIGHT="50"><PARAM name="Message" value="Kako ste?">Ova stranica ce biti vrlo dosadna ako vaš browser ne razumije Javu.</APPLET></BODY></HTML>
Promijenimo li vrijednost parametra, applet će ispisivati odgovarajući string bez potrebe da ga iznova kompiliramo.
Ovaj je applet vrlo sličan appletu HelloWorldApplet. Međutim, umjesto da fiksno kodiramo poruku koju on ispisuje, ona će
biti učitana u varijablu inputFromPage izravno iz klauzule PARAM u HTMLu.
Metodi getParameter() daje se kao argument ime parametra sa HTML stranice, a ona će vratiti
njegovu vrijednost. I argument i povratna vrijednost su stringovi. Ako je
potreban drugačiji tip, morat ćete osigurati potrebne konverzije.
Oznaka <PARAM> stavlja se između <APPLET> i </APPLET>. Ona ima svoje atribute, NAME i VALUE koji identificiraju njegovo ime i vrijednost. Oba se stavljaju u
dvostruke navodnike ako sadrže praznine.
Broj parametara nije ograničen. Možete imati po volji mnogo oznaka
<PARAM> koje applet i ne mora sve iskoristiti. Višak će biti na siguran način
ignoriran.
Ponekad je potrebno obraditi nepoznati broj parametara. U tom slučaju, parametri trebaju biti imenovani na neki predvidljiv način. Na primjer,
<PARAM name="Line1" value="There once was a man from Japan">
<PARAM name="Line2" value="Whose poetry never would scan">
<PARAM name="Line3" value="When asked reasons why,">
<PARAM name="Line4" value="He replied, with a sigh:">
<PARAM name="Line5" value="I always try to get as many syllables into the last line as I can.">
Sljedeći program ispisuje ovaj tekst znajući način na koji su parametri imenovani ("Line" + numlines).
Metoda paint() ispisuje svaki string na ekran, povećavajući y poziciju za 15 piksela
svaki put.
import java.applet.*; import java.awt.*; public class PoetryApplet extends Applet { String[] poem = new String[101]; int numlines; public void init() { String nextline; for (numlines = 1; numlines < poem.length; numlines++) { nextline = this.getParameter("Line" + numlines); if (nextline == null) break; poem[numlines] = nextline; } numlines--; } public void paint(Graphics g) { int y = 15; for (int i=1; i <= numlines; i++) { g.drawString(poem[i], 5, y); y += 15; } } }
Ovako bi izgledao HTML dokument
<HTML>
<HEAD>
<TITLE>PoetryApplet</TITLE>
</HEAD>
<BODY>
Ovo
je applet PoetryApplet:<P>
<APPLET
code="PoetryApplet.class"
CODEBASE="http://student.math.hr/~vedris/java/classes"
WIDTH="350"
HEIGHT="100">
<PARAM
name="Line1" value="There once was a man from
Japan">
<PARAM
name="Line2" value="Whose poetry never would scan">
<PARAM
name="Line3" value="When asked reasons why,">
<PARAM
name="Line4" value="He replied, with a sigh:">
<PARAM
name="Line5" value="I always try to get as many syllables into the last line as
I can.">
Ova
stranica ce biti vrlo dosadna ako vas browser ne razumije
Javu.
</APPLET>
</BODY>
</HTML>
Procesiranje proizvoljne liste parametara bez znanja o načinu formiranja njihovih imena za sad nije moguće.
Suprotno raširenom mišljenju, Java appleti su sigurni za korisnike koji surfaju po internetu. Neće vam se dogoditi da vam applet formatira disk ili unese virus u sustav. Zbog mehanizama virtualne mašine, hvatanja iznimaka i tako dalje, Java appleti i aplikacije su u praksi sigurniji od tradicionalnih programskih jezika.
Appleti imaju ugrađena dodatna sigurnosna ograničenja kako bi zaštitili
korisnike od programerskih pogrešaka, ali i od virusa. To je implementirano
pomoću klase java.lang.SecurityManager. Različite podklase ove klase osiguravaju različita sigurnosna
okruženja na različitim virtualnim mašinama. Loša strana toga je uvođenje raznih
restrikcija na akcije koje aplet može činiti.
Applet može:
Sve što s tim ograničenjima možete učiniti moguće je učiniti iz appleta. S druge strane, applet ne može:
Po pretpostavci applet može ostvariti mrežnu konekciju samo na stroj (file system) s kojeg je učitan. Taj sistem se zove codebase. Applet ne može komunicirati s bilo kojim strojem na internetu. Sva komunikacija te vrste mora biti posredovana preko poslužitelja.
Razlog je taj što bi inače applet mogao lansirati s neke mašine napade na internu mrežu organizacije. To bi pogotovo bio problem za mašine unutar firewalla koje su obično konfigurirane tako da jedne drugima vjeruju. Također, to bi omogućilo hakerima da lakše sakriju svoju pravu lokaciju.
HotJava, Sunov applet viewer i Internet Explorer (ali ne i Netscape) dozvoljavaju vam da appletu dopustite ostvarivanje konekcija na proizvoljni stroj, ali to nije default opcija.
Jedan od razloga za brigu oko zlonamjernih appleta je mogućnost pretjerane uporabe CPU vremena, što je problem na, recimo Mac-u, a nešto manje na Windows NT ili Solaris. U svakom slučaju, applet može natjerati korisnika da npr. prisilno ugasi browser što može uzrokovati određeni gubitak podataka.
Moguće je također da applet koristi CPU vrijeme za svrhe koje nisu odmah vidljive. Na primjer, neki popularni applet može lansirti napad na password datoteku pomoću tzv. kineske lutrije. Ili, applet koji simulira neku igru može u backgroundu lansirati thread koji pokušava slučajnim pristupom razbiti enkripciju neke datoteke. U tom slučaju mogao bi ostvariti konekciju prema svom serveru i poslati ključ natrag. Što je applet popularniji, to je vjerojatnost pronalaženja ključa veća. Ipak, Java kod se lako dekompilira, pa se takvi appleti mogu otkriti.
Suprotno popularnom vjerovanju, većina provala na kompjutore nije rezultat briljantnih ideja i velikog znanja nego različitih oblika krađe passworda, od pretraživanja smeća do prijevare putem lansiranja prozora na kojem piše da je veza prekinuta pa se traži upis passworda (pogledajte za primjer ovaj TricksterApplet). Takve aktivnosti poznate su pod nazivom social engineering., u slobodnom prijevodu "lov u mutnom".

Da bi se spriječile takve zabune, prozori appleta su uvijek snabdjeveni
nekom uočljivom porukom kao: "Warning: Applet Window" ili "Unsigned Java Applet
Window." To, naravno, još uvijek ne garantira da netko neće upisati svoj
password ne čitajući što piše na prozoru. Obrazovanje korisnika na prvom je
mjestu u računalnoj sigurnosti.
<APPLET>
<APPLET> tražeći atribut CODE i eventualno CODEBASE.
java.lang.Class object.
init() metodu.
start() metodu.
handleEvent() metode. Događaji koji rade update kažu appletu da se iznova prikaže
(repaint)
stop() metodu.
destroy() metodu. Svi appleti imaju sljedeće četiri metode:
public void init();public void start();public void stop();public void destroy();
Imaju ih jer ih ima njihova nadklasa, java.applet.Applet (pored ostalih, naravno). U nadklasi su one samo deklarirane i ne čine
ništa, npr.
public void init() {}
Podklase mogu (ali i ne moraju) prekriti ove metode kako bi ispunile
određene zadaće u određeno vrijeme. Na primjer, metoda init() je dobro mjesto za učitavanje parametara iz oznake <PARAM> jer ona će biti pozvana upravo u trenutku kad se applet počne
izvršavati. because it's called
exactly once when the applet starts up. Budući da su deklarirane u nadklasi, Web
browser će pozvati te metode kad mu trebaju, čak ni ne znajući jesu li
implementirane u appletu ili u nadklasi. To je dobar primjer
polimorfizma.
Metoda start() se poziva bar jednom u appletovom životnom ciklusu, onda kad se applet
starta ili restarta. Ponekad to može biti i više nego jednom. Mnogi appleti
nemaju eksplicitnu start()metodu nego je nasljeđuju iz nadklase. Najčešće se koristi za startanje
threadova koje će applet trebati dok se izvršava.
Metoda stop() se poziva bar jednom, kad browser napusti stranicu koja sadrži applet.
Kad se na nju opet vrati, pozvat će se metoda start(). Koristi se za zaustavljanje zaustavljanje threadova koje applet
koristi. Kad je applet zaustavljen, ne bi trebao trošiti CPU cikluse.
Metoda destroy() se poziva točno jednom u životnom ciklusu appleta, upravo prije nego
browser otpusti applet. Koristi se uglavnom za završno čišćenje. is called exactly once in an applet's
life, just before the browser unloads the applet. This method is generally used
to perform any final clean-up.