Una applicazione applet è un programma Java capace di essere eseguito da un browser Web. Come tutti gli altri programmi implementati in linguaggio Java, un applet è costituito da classi. A differenza però degli altri programmi usuali, la classe da cui ha inizio l'esecuzione di un applet deve essere una sottoclasse della classe java.awt.Applet. Quest'ultima classe, infatti, possiede i metodi che permettono il controllo (messa in esecuzione, arresto, riavvio, etc.) dello applet:
Questi metodi (in particolare start e stop) sono analoghi a quelli che si incontrano nella classe java.lang.Thread. In effetti, uno applet è sempre costituito da un thread, ovvero una routine che "gira" al contempo con altre routine. Perciò, quando uno applet è messo in esecuzione da un browser Web, esso non "gira" in esclusiva, ovvero esso non assorbe tutte le risorse del client Web. Se al contrario il browser Web passasse totalmente il controllo dell'esecuzione allo applet, il browser stesso verrebbe bloccato. Di conseguenza, una volta caricato lo applet, non si potrebbe più, per esempio, scorrere la pagina HTML che contiene lo applet stesso, oppure, sempre per esempio, non si avrebbe la capacità di cambiare documento HTML. Ogni applet, se non fosse costituito da un thread, avrebbe bisogno di essere dotato esplicitamente di un comando che provvede alla interruzione dello applet stesso da parte dell'utente. Ciò sarebbe ovviamente molto fastidioso, soprattutto per le animazioni inserite nei documenti HTML. Una animazione, infatti, è generata da uno applet specifico che provvede a visualizzare in rapida successione delle immagini nella finestra del browser. Se l'animazione non girasse in background, l'utente non potrebbe scorrere o cambiare la pagina HTML, ma sarebbe costretto ogni volta ad interrompere lo applet che genera l'animazione stessa. Ciò ovviamente ostacolerebbe non poco la navigazione in Internet. Invece, se gli applet "girano" in background, le pagine HTML che li contengono sono maneggiabili e leggibili al pari delle pagine HTML normali. Inoltre, se gli applet non fossero costituiti da thread, non si potrebbero mandare in esecuzione al contempo più applet nello stesso documento HTML. L'utente sarebbe costretto a passare esplicitamente da uno applet ad un altro. In altre parole, per esempio, l'utente non potrebbe osservare più di una animazione alla volta.
public class Coulomb extends java.applet.Applet { ...
Dopo di ciò, nella sottoclasse appena creata è necessario invocare i metodi init(), start(), stop() e destroy(), sovrascrivendoli (override) se necessario. Segue la descrizione di questi metodi.
Invocati e riscritti i metodi sopra descritti in una sottoclasse della classe Applet, il resto di un programma applet è del tutto analogo ad un programma normale Java. Se si desidera che lo applet sia eseguibile pure come programma convenzionale lanciabile da shell di sistema operativo, è necessario inserire anche il metodo main nella sottoclasse applet. Il metodo main sarà ignorato quando lo applet viene eseguito in ambiente Web, mentre esso costituirà il punto di inizio quando il programma viene chiamato da una shell di sistema operativo.