1. Τι είναι η Java;

Η Java είναι μια σχετικά καινούργια γλώσσα προγραμματισμού υψηλού επιπέδου που έχει δύο κύρια
χαρακτηριστικά: είναι μεταφέρσιμη (portable) και αντικειμενοστρεφής (object-oriented).
Η μεταφερσιμότητα είναι ένας όρος που χρησιμοποιείται για να χαρακτηρίσει γλώσσες
προγραμματισμού που έχουν τη δυνατότητα να μεταδίδονται μέσα από ετερογενή δίκτυα και να
εκτελούνται αυτόματα μόλις φτάνουν στον προορισμό τους. Τα πιο γνωστά παραδείγματα τέτοιων
γλωσσών αποτελούν η Java και η Postscript. Τα πλεονεκτήματα που προσφέρει η χρήση τέτοιων
γλωσσών είναι:

  1.  Η βελτίωση της απόδοσης μιας εφαρμογής ειδικά όταν η επεξεργασία γίνεται τοπικά και εξαλείφει την ανάγκη επικοινωνίας με απομακρυσμένους κόμβους σε δίκτυα με μεγάλες καθυστερήσεις
  2. Η απλοποίηση και αποκέντρωση των διαδικασιών παρακολούθησης και συντήρησης εφαρμογών στο δίκτυο μιάς και ο κάθε κόμβος που αποφασίζει να χρησιμοποιήσει μια εφαρμογή είναι υπεύθυνος και για τη σωστή εγκατάσταση του στο τοπικό σύστημα.
  3. Ο περιορισμός των απαιτήσεων σε αποθήκευση που έχουν προγράμματα τα οποία πρέπει να αποθηκευθούν τοπικά πριν εκτελεστούν. Στην περίπτωση των μεταφέρσιμων γλωσσών η μεταφορά του εκτελέσιμου κώδικα γίνεται μια μόνο φορά κατά τη χρησιμοποίηση του και δεν απαιτείται η δυνατότητα τοπικής αποθήκευσης του.
Πέρα όμως από τα πλεονεκτήματα που προσφέρει η μεταφερσιμότητα επιβάλλει και ορισμένους
περιορισμούς στη σχεδίαση των ανάλογων γλωσσών. Οι περιορισμοί αυτοί επικεντρώνονται στην
ανάγκη εκτέλεσης των προγραμμάτων σε ετερογενείς πλατφόρμες και στην ανάγκη προφύλαξης τόσο
από πιθανές παρενέργειες που μπορεί να έχει η εκτέλεση ενός προγράμματος στον κόμβο προορισμού
όσο και από την αυθαίρετη μεταβολή των χαρακτηριστικών του κόμβου αυτού.

Πιο συγκεριμένα η δυνατότητα εκτέλεσης του κώδικα μιάς τέτοιας γλώσσας από διαφορετικές
πλατφόρμες επιβάλλει την ανάπτυξη ενός προγραμματιστικού περιβάλλοντος που διευκολύνει και
βελτιστοποιεί την επίδοση των προγραμμάτων της γλώσσας αυτής σε όλες τις πλατφόρμες στις οποίες
ενδέχεται να εκτελεστούν. Στη Java η δυνατότητα αυτή υλοποιείται με την παροχή ενός μεταγλωττιστή
(compiler) και ενός διερμηνέα (interpreter) για τη γλώσσα. Ο μεταγλωττιστής μετατρέπει ένα
πρόγραμμα Java σε μια ενδιάμεση παράσταση που είναι γνωστή σαν bytecodes. Η παράσταση αυτή
είναι κοινή για όλες τις πλατφόρμες στις οποίες μπορεί να εκτελεστεί ένα πρόγραμμα Java. Οταν έρθει
η ώρα να εκτελεστεί το πρόγραμμα η Java χρησιμοποιεί ένα διερμηνέα ο οποίος μετατρέπει τα
bytecodes σε εντολές γλώσσας μηχανής της πλατφόρμας στην οποία εκτελείται το πρόγραμμα. Ο
διερμηνέας αυτός είναι γνωστός σαν Java Virtual Machine (Java VM). Η μεταγλώττιση ενός
προγράμματος χρειάζεται να γίνει μια μόνο φορά ενώ η διερμηνεία θα πρέπει να εκτελείται κάθε φορά
που εκτελείται το πρόγραμμα.

Επίσης η παροχή ασφαλείας κατά την εκτέλεση προγραμμάτων μεταφέρσιμων γλωσσών αφορά τόσο
στην αποφυγή παρενεργειών που μπορεί να έχουν προγραμματιστικά λάθη (bugs) που πιθανόν να
περιέχει ο κώδικας που εκτελείται και τα οποία δε θα πρέπει να επηρεάζουν την εκτέλεση τμημάτων
του συστήματος που είναι ανεξάρτητα από το σύστημα εκτέλεσης της γλώσσας όσο και στην αποφυγή
αλλοίωσης των περιεχομένων του συστήματος από το πρόγραμμα το οποίο εκτελείται. Η παροχή
εγγυήσεων ασφαλείας στους δύο αυτούς τομείς υπαγορεύει τη σχεδίαση μιας γλώσσας που θα
επιβάλλει περιορισμούς στη χρήση εφαρμογών σε τρία επίπεδα: στο επίπεδο της επικοινωνίας μεταξύ
των κόμβων του δικτύου, στο επίπεδο του λειτουργικού συστήματος και στο επίπεδο των λειτουργιών
που υποστηρίζονται από το συντακτικό της γλώσσας και τις βιβλιοθήκες που τη συνοδεύουν.

Στο επίπεδο της επικοινωνίας οι εφαρμογές της γλώσσας θα πρέπει να κωδικοποιούνται με
πρωτόκολλα ικανά να ελαχιστοποιήσουν την πιθανότητα αλλοίωσης του εκτελέσιμου κώδικα καθ’
οδόν προς τον προορισμό του.

Στο επίπεδο του λειτουργικού συστήματος το περιβάλλον εκτέλεσης μιας τέτοιας γλώσσας θα πρέπει
να προστατεύει τη μνήμη του συστήματος από εντολές που σκοπό έχουν να προκαλέσουν την
αλλοίωση των χαρακτηριστικών της και που μπορεί να προκαλέσουν προβλήματα στην εκτέλεση
άλλων προγραμμάτων στον ίδιο υπολογιστή. Η υλοποίηση των προδιαγραφών ασφαλείας που
περιγράψαμε εξασφαλίζεται με τη χρήση του Java VM το οποίο πέρα από διερμηνέας χρησιμοποιείται
και σαν ένα ενδιάμεσο σύστημα επκοινωνίας μεταξύ του εκτελούμενου κώδικα Java και του
λειτουργικού συστήματος το οποίο προστατεύει το υπολογιστικό σύστημα από την εκτέλεση εντολών
που μπορεί να θέσουν σε κίνδυνο την ασφάλειά του.

Τέλος στο επίπεδο της γλώσσας προγραμματισμού ο επιθυμητός βαθμός  ασφαλείας εξασφαλίζεται
με τη χρησιμοποίηση μεθόδων αυτόματης διαχείρισης της μνήμης που είναι διαθέσιμη στο πρόγραμμα,
με τον έλεγχο των ορίων στα οποία εκτελούνται εντολές διαχείρισης δομών δεδομένων όπως είναι τα
arrays, με τις περιορισμένες λειτουργίες των δεικτών στην μνήμη και με τον έλεγχο των τύπων
δεδομένων που συνδυάζονται κατά τη διάρκεια της εκτέλεσης του προγράμματος.

Η αντικειμενοστρέφεια είναι ένας όρος που χρησιμοποιείται για να περιγράψει τη χρήση
αντικειμένων σαν την κύρια δομή δεδομένων στην οποία στηρίζεται η ανάπτυξη του προγράμματος.
Τα αντικείμενα αυτά αποτελούνται τόσο από δεδομένα όσο και από μεθόδους που υλοποιούν βασικές
λειτουργίες πάνω στα δεδομένα αυτά. Επίσης τα αντικείμενα αυτά μπορούν να συνδυάζονται σε
ιεραρχικά δέντρα που αποτυπώνουν σχέσεις εγκλεισμού (υποσύνολο/υπερσύνολο) μεταξύ τους. Τα
αντικείμενα μπορούν να επικοινωνούν μεταξύ τους με ανταλλαγή μηνυμάτων (messages). Το κύριο
πλεονέκτημα των αντικειμενοστρεφών γλωσσών προγραμματισμού είναι ότι προσφέρουν μια μέθοδο
μοντελοποίησης των δεδομένων και των διαδικασιών που χρησιμοποιούνται για την επίλυση ενός
προβλήματος που προσομοιάζει τον ανθρώπινο τρόπο οργάνωσης της πληροφορίας.

Σε μια αντικειμενοστρεφή γλώσσα τα αντικείμενα ορίζονται με τη χρήση κλάσεων (classes). Τα
στιγμιότυπα (instances) ή αντικείμενα (objects) αποτελούν τα αντικείμενα του προβλήματος το οποίο
επιλύει η εφαρμογή. Σε ένα ιεραρχικό δέντρο ο πρόγονος μιας κλάσης ονομάζεται υπερκλάση
(superclass) ενώ οι απόγονοι υποκλάσεις (subclasses). Οι απόγονοι κληρονομούν (inherit) τόσο
δεδομένα όσο και μεθόδους από την υπερκλάση τους. Σε ορισμένες περιπτώσεις μπορούν να υπερβούν
(override) τις μεθόδους αυτές και να τις αντικαταστήσουν με δικές τους μεθόδους.

2. Συνοπτική Περιγραφή της Γλώσσας

Τα χαρακτηριστικά της Java είναι δυνατό να περιγραφούν σε τρία επίπεδα: στο επίπεδο της γλώσσας
προγραμματισμού στο επίπεδο του διερμηνέα και στο επίπεδο των βιβλιοθηκών που παρέχει.

2.1 Επίπεδο Γλώσσας Προγραμματισμού

Στο επίπεδο της γλώσσας προγραμματισμού η Java αποτελεί μια εξευγενισμένη έκδοση της C++ από
την οποία έχουν αφαιρεθεί όλες οι πολύπλοκες και ανασφαλείς λειτουργίες. Πιο συγκεκριμένα η Java
δε διαθέτει ανασφαλείς λειτουργίες όπως αριθμητική με δείκτες, απεριόριστη δυνατότητα μετατροπής
τύπων δεδομένων σε άλλους (casting), operator overloading, πολλαπλή κληρονομικότητα κλπ. Σε
αντίθεση με τη C++ η Java διαθέτει μεθόδους αυτόματης διαχείρισης της μνήμης που διευκολύνουν
τον έλεγχο λειτουργιών που χρησιμοποιούν δείκτες και εξαλείφουν την ανάγκη δημιουργίας
λειτουργιών για την διαχείριση της μνήμης από την κάθε εφαρμογή. Επιπλεόν οι λειτουργίες σε τύπους
δεδομένων όπως οι συμβολοσειρές (strings) και οι πίνακες (arrays) εκτελούνται με μηχανισμούς που
ελέγχουν αν οι λειτουργίες αυτές γίνονται μέσα στα όρια που καθορίζει η διάσταση των δομών αυτών.
Τέλος η γλώσσα διαθέτει μεθόδους διαχείρισης λαθών (exception handling) όπως και δυνατότητες
υποστήριξης νηματικού (threaded) προγραμματισμού και πρωτοκόλλων ελέγχου του τρόπου με τον
οποίο εκτελούνται τα νήματα αυτά (mutex locking)

Η Java εισάγει νέους τύπους δεδομένων όπως το interface το οποίο και περιγράφει ένα σύνολο από
αφηρημένες μεθόδους και σταθερές με δεδομένους τύπους. Κάθε κλάση που δηλώνεται ότι
χρησιμοποιεί ένα interface υποχρεούται να υλοποιήσει όλες τις μεθόδους .που περιέχονται σε αυτό. Ο
τύπος αυτός των δεδομένων μπορεί να χρησιμοποιηθεί για να ομαδοποιήσει κλάσεις που έχουν κοινές
λειτουργίες χωρίς να τις αναγκάσει να υπαχθούν σε μια ιεραρχία κλάσεων όπως και να αποκρύψει τον
τρόπο με τον οποίο έχουν υλοποιηθεί άλλες κλάσεις.

Επιπλέον η Java χρησιμοποιεί την έννοια του πακέτου (package) καθένα από τα οποία ομαδοποιεί
ένα σύνολο από κλάσεις και interfaces. Σε αντίθεση με ότι συμβαίνει σε άλλες γλώσσες τα πακέτα της
Java είναι ανοικτά και μπορεί να εμπλουτιστούν και με μια σειρά από κλάσεις ή interfaces που
ορίζονται από τον προγραμματιστή.

Τέλος η Java προσφέρει μια ποικιλία απο μεθόδους προσπέλασης των χαρακτηριστικών μίας κλάσης
που τα περιορίζουν στο επίπεδο της κλάσης (private), του υποδένδρου που αρχίζει από την κλάση στην
οποία περιέχονται (protected), του πακέτου στο οποίο έχουν οριστεί (package) και όλου του
προγράμματος (public). Επιπλέον η γλώσσα παρέχει δυνατότητες περιορισμού του εύρους στο οποίο
μπορεί να χρησιμοποιηθεί ο ορισμός μια κλάσης στο επίπεδο του πακέτου στο οποίο περιέχεται
(private) όπως επίσης και περιορισμού της δυνατότητας δημιουργίας υποκλάσεων (final) και
στιγμιοτύπων (abstract).

2.2 Επίπεδο Διερμηνέα

Στο επίπεδο του διερμηνέα η Java παρέχει ένα σύστημα διερμηνείας εφοδιασμένο με λειτουργίες
ελέγχου της ορθότητας ανασφαλών λειτουργιών όπως ο έλεγχος των ορίων σε πολυδιάστατους τύπος
δεδομένων, ο έλεγχος κλήσης μεθόδων σε ανενεργούς (null) δείκτες και οι μετατροπές (casting) δομών
δεδομένων από πιο γενικούς σε πιο περιορισμένους τύπους κλπ.
Επιπλέον στο επίπεδο του διερμηνέα η γλώσσα προσφέρει και μια τεχνική γνωστή σαν dynamic
binding η οποία εκτελεί τη σύνδεση (linking) των διαφόρων αρχείων από τα οποία αποτελείται μια
εφαρμογή Java κατά τη διάρκεια του χρόνου εκτέλεσης.

2.3 Επίπεδο Βιβλιοθήκης

Στο επίπεδο αυτό η γλώσσα παρέχει μια σειρά από έτοιμες κλάσεις και μεθόδους με τις οποίες μπορεί
να υλοποιηθούν τόσο διαπροσωπείες, δομές δεδομένων γενικής χρήσης και μέθοδοι επικοινωνίας για
διάφορα πρωτόκολλα δικτύων.

3. Εφαρμογές της Γλώσσας

Ισως οι πιο γνωστές εφαρμογές της Java αφορούν στη δημιουργία applets και αυτοδύναμων (stand-
alone) εφαρμογών σε έναν υπολογιστή. Τα applets είναι προγράμματα Java που ικανοποιούν ορισμένες
συμβάσεις που τα επιτρέπουν να εκτελούνται από περιηγητές στον Ιστό που υποστηρίζουν τη γλώσσα
(Java-enabled browsers). Τα applets εκτελούνται αυτόματα από τον υπολογιστή στον οποίο
καταλήγουν. Οι αυτοδύναμες εφαρμογές της Java δεν έχουν τη δυνατότητα αυτή μπορούν όμως να
χρησιμοποιηθούν για την ανάπτυξη πολύπλοκων εφαρμογών συγκρίσιμων με οποιαδήποτε άλλη
γλώσσα γενικού σκοπού (π.χ. C++). Εκτός από τις δύο εφαρμογές που αναφέραμε η Java μπορεί να
χρησιμοποιηθεί για τη δημιουργία προγραμμάτων τα οποία εκτελούνται σε έναν εξυπηρετητή (server)
και εξυπηρετούν μια σειρά από πελάτες (clients). Τα προγράμματα αυτά είναι γνωστά σαν servlets και
υποστηρίζουν εφαρμογές Βάσεων Δεδομένων στον Ιστό.

Για την υποστήριξη όλων αυτών των εφαρμογών η γλώσσα παρέχει μια αρκετά πλούσια βιβλιοθήκη
γνωστή και ως Java API (Application Programming Interface). Η βιβλιοθήκη περιλαμβάνει μεθόδους
για την υποστήριξη δομών δεδομένων παρόμοιων με αυτές που χρησιμοποιούνται από γλώσσες
γενικού σκοπού, για την δημιουργία applets, για την υλοποίηση πρωτοκόλλων ασφαλείας (Java
Security), για την προσπέλαση μιας σειράς σχεσιακών βάσεων δεδομένων (Java Database
Connectivity, JDBC), για τη δικτυακή επικοινωνία με άλλους κόμβους στο δίκτυο και τέλος για την
ενσωμάτωση αυτόνομων προγραμματιστικών εφαρμογών που μπορούν να συνδυαστούν με οπτικό
τρόπο για την παραγωγή πιο σύνθετων εφαρμογών (JavaBeans).

4. Οδηγίες Εγκατάστασης

Οι παρακάτω οδηγίες εφαρμόζονται σε περιβάλλον Windows95/NT. Το περιβάλλον της Java μπορείτε
να το προμηθευτείτε από τη διεύθυνση:

Καλό θα είναι να προμηθευτείτε την τελευταία έκδοση του JDK (Java Development Kit) που για την
ώρα είναι η 1.1.5. Η σωστή εγκατάσταση του περιβάλλοντος απαιτεί και τον ορισμό δύο μεταβλητών
συστήματος της CLASSPATH και του PATH. Η CLASSPATH χρησιμοποιείται από τον
μεταγλωττιστή της Java για να βρεί τις βιβλιοθήκες που χρησιμοποιούνται από το πρόγραμμα σας. Αν
για παράδειγμα εγκταστήσουμε το JDK στο C drive και σε ένα φάκελο με το όνομα JDK.1.1.5 τότε η
τιμή της μεταβλητής CLASSPATH θα πρέπει να δοθεί από μια εντολή της μορφής που θα πρέπει να
ενσωματωθεί στο αρχείο AUTOEXEC.BAT:

SET CLASSPATH=.;C:\JDK.1.1.5\LIB

Η μεταβλητή PATH ορίζει μια σειρά από φακέλους στους οποίους το σύστημα αναζητεί  για να
εκτελέσει οποιοδήποτε πρόγραμμα καλείται από την γραμμή εντολών. Αν υποθέσουμε ότι έχουμε
εγκαταστήσει το JDK στο φάκελο που προαναφέραμε τότε θα πρέπει να προσθέσουμε τον υποφάκελο
BIN στην λίστα από τιμές της μεταβλητής αυτής.

5. Δύο Απλά Προγράμματα Java

Στην συνέχεια θα περιγράψουμε δύο απλά προγράμματα Java τα οποία εκτελούν την ίδια λειτουργία
αλλά το πρώτο την υλοποιεί σε περιβάλλον αυτοδύναμου εκτελέσομου κώδικα ενώ το δεύτερο την
υλοποιεί σε περιβάλλον applet.

5.1 Αυτοδύναμο Πρόγραμμα
Το πρόγραμμα που ακολουθεί τυπώνει το μήνυμα I LOVE JAVA! σε ένα παράθυρο MS-DOS. Το
πρόγραμμα αποτελείται από τις ακόλουθες γραμμές κώδικα:
 
 

           class MyFirstJavaClass {
                public static void main(String[] args) {
                    System.out.println("I LOVE JAVA!"); //Εμφάνισε το μήνυμα.
                }
            }

Το πρόγραμμα θα πρέπει να έχει αποθηκευθεί σε ένα αρχείο με το όνομα MyFirstJavaClass.java.
Αν υποθέσουμε ότι έχετε ακολουθήσει τος οδηγίες εγκατάστασης που παρουσιάσαμε τότε μια εντολή
της μορφής:

θα μεταγλωττίσει τον κώδικα που παρουσιάσαμε σε μορφή bytecodes και θα αποθηκεύσει τα
αποτελέσματα της μεταγλώττισης στο αρχείο MyFirstJavaClass.class. Στη συνέχεια μια εντολή
της μορφής: θα εκτελέσει το μεταγλωττισμένο κώδικα μέσα από το περιβάλλον εκτέλεσης της Java (Java Runtime
Environment ή JRE).

Το παραπάνω πρόγραμμα περιέχει τον ορισμό μίας κλάσης στην Java. Ο απλούστερος ορισμός μίας
κλάσης δίνεται από μια δήλωση της μορφής:
 

Σε μία τέτοια δήλωση η λέξη-κλειδί class αρχίζει τον ορισμό μίας κλάσης με το όνομα name. Οι
μεταβλητές και οι μέθοδοι της κλάσης περιγράφονται στο χώρο μεταξύ των δύο αγκυλών. Για
παράδειγμα η κλάση MyFirstJavaClass που ορίσαμε παραπάνω περιέχει μόνο μια μέθοδο με το
όνομα main. Εδω πρέπει να σημειώσουμε ότι η Java δεν υποστηρίζει τον ορισμό καθολικών
μεταβλητών ή συναρτήσεων που δεν αποτελούν μέρος του ορισμού μίας κλάσης.
Το πρόγραμμα περιέχει και ένα κομμάτι κειμένου στην κεφαλή του οποίου βρίσκονται τα σύμβολα
«//». Ο μεταγλωττιστής ερμηνεύει ότι ακολουθεί τα σύμβολα αυτά στην ίδια γραμμή κειμένου σα
σχόλια και τα αγνοεί. Σχόλια που εκτείνονται σε περισσότερες από μία γραμμές μπορούν να έχουν μία
από τις δύο ακόλουθες μορφές:
 

Η συνάρτηση main που ορίσαμε μέσα στην κλάση μας αποτελεί και την κύρια συνάρτηση που
εκτελείται από το JRE. Κάθε αυτοδύναμο πρόγραμμα Java θα πρέπει να περιέχει μία συνάρτηση main
η οποία και καθορίζει το σημείο εισόδου στο πρόγραμμα μας. Η συνάρτηση αυτή αντιστοιχεί στη
συνάρτηση main ενός προγράμματος C ή C++. Ο ορισμός της συνάρτησης αυτής περιέχει την
ακόλουθη σειρά εντολών:
 

Ο ορισμός αυτός δηλώνει ότι η συνάρτηση main λαμβάνει σαν όρισμα ένα array από συμβολοσειρές
(args) το οποίο δίνεται από το χρήστη όταν καλεί το πρόγραμμα από τη γραμμή εντολών. Επομένως
το όρισμα αυτό είναι ανάλογο με το όρισμα char *argv που χρησιμοποιείται στην ανάλογη συνάρτηση
στη C ή C++. Επιπλέον δηλώνει ότι η συνάρτηση αυτή μπορεί να κληθεί από οποιαδήποτε άλλη κλάση
(public), ότι δε γυρνά καμμία τιμή σαν αποτέλεσμα (void) και ότι ο ορισμός της είναι στατικός
(static) δηλαδή δεν είναι μέρος των συναρτήσεων που δημιουργούνται μόλις αρχικοποιείται ένα
αντικείμενο της κλάσης παρά υπάρχει ένα αντίγραφο της συνάρτησης αυτής που είναι κοινό για όλα τα
αντικείμενα της κλάσης.

Το πρόγραμμα που χρησιμοποιήσαμε θα μπορούσε να είχε κληθεί με μια σειρά από ορίσματα που θα
είχαν δοθεί από το χρήστη στη γραμμή εντολών (command-line arguments). Η παρακάτω παραλλαγή
του προγράμματος μας τυπώνει και το όνομα του χρήστη που λατρεύει την Java.
 

class MyFirstJavaClass {
  public static void main(String[] args) {
      System.out.println("My name is “ + args[0] + “ and I LOVE JAVA!");   }
}

Στην περίπτωση που εξετάζουμε το πρόγραμμα θα πρέπει να κληθεί ως εξής:
 

5.2 Πρόγραμμα σε μορφή Applet

Ο παρακάτω κώδικας περιγράφει ένα applet που εμφανίζει το μήνυμα My name is Name and I
love Java applets!. Ο κώδικας θα πρέπει να αποθηκευθεί σε ένα αρχείο με το όνομα
MyFirstJavaApplet.java.
 

Αφού μεταγλωττίσουμε το πρόγραμμα θα πρέπει να εισάγουμε την applet σε μία σελίδα στον Ιστό.
Μια HTML σελίδα που θα ανταποκρίνεται στην απαίτηση αυτή μπορεί να έχει την ακόλουθη μορφή:
 

Αν υποθέσουμε ότι το αρχείο στο οποίο αποθηκεύεται ο παραπάνω κώδικας είναι το
MyFirstApplet.htm και το αρχείο αυτό βρίσκεται στον ίδιο φάκελο με το
MyFirstJavaApplet.class  τότε φορτώνοντας τη σελίδα αυτή στον Ιστό θα εκτελεστεί η applet
μας .

Για τον κώδικα από τον οποίο αποτελείται η applet που μόλις περιγράψαμε πρέπει να κάνουμε τις
εξής παρατηρήσεις:
 

  1. Η κύρια κλάση του προγράμματος είναι παιδί (extends) μια κλάση ενσωματωμένη στη Java που ονομάζεται Applet και περιέχεται στο πακέτο java.class.Applet. Ολες οι applets είναι υποκλάσεις της κλάσης αυτής.
  2.  Η κλάση μας δεν έχει μια συνάρτηση main. Αυτό συμβαίνει γιατί όταν ο περιηγητής μας φορτώνει μια Applet εκτελεί μεθόδους με συγκεκριμένα ονόματα και με μια ορισμένη σειρά που θα περιγράφουμε στη συνέχεια. Καθεμία από τις μεθόδους αυτές καλείται κάτω από ορισμένες συνθήκες όπως για παράδειγμα η paint η οποία εκτελείται κάθε φορά που η οθόνη μιας applet θα πρέπει να σχεδιαστεί.