|
|
|
Type
Safety
H Java είναι σχεδιασμένη ώστε να υποχρεώνει το type safety.
Αυτό σημαίνει ότι τα προγράμματα δεν μπορούν να έχουν πρόσβαση
στην μνήμη με μη επιτρεπτούς τρόπους. Ας το εξηγήσουμε με
ένα παράδειγμα για να γίνει πιο κατανοητό. Υποθέτουμε ότι
έχουμε ένα αντικείμενο που ονομάζεται ημερολόγιο. Αυτό έχει
ιδιότητες όπως Ημερομηνία, Ραντεβού, Ξυπνητήρι κ.λ.π. Η ιδιότητα
Ξυπνητήρι προφανώς θα είναι λογικού τύπου και θα έχει δύο
τιμές, αληθής και ψευδής. Ας υποθέσουμε ακόμη ότι υπάρχει
και ένα άλλο αντικείμενο που για απλότητα το ονομάζουμε applet
και όπου κατά διαβολική σύμπτωση η πρώτη του ιδιότητα είναι
λογικού τύπου και αφορά την δυνατότητα πρόσβασης στα αρχεία.
Αν δεν υπήρχε ο μηχανισμός του type safety τότε ένα πρόγραμμα
θα μπορούσε να εφαρμόσει την ιδιότητα Ξυπνητήρι στο αντικείμενο
applet με αποτέλεσμα να έχει την δυνατότητα να μεταβάλει όχι
προφανώς την ιδιότητα Ξυπνητήρι αλλά αυτήν που αφορά την πρόσβαση
στα αρχεία και κάνοντας την αληθή κάποιος να έχει απεριόριστη
πρόσβαση στο σύστημα αρχείων. Αντιλαμβανόμαστε όλοι την ζημιά
που θα μπορούσε να γίνει.
Πώς αντιμετωπίζει αυτό το πρόβλημα η Java; Κάθε αντικείμενο
της Java αποθηκεύεται σε μια συγκεκριμένη περιοχή της μνήμης.
Η Java τοποθετεί μια ετικέτα σε κάθε αντικείμενο που δείχνει
από ποια κλάση προέρχεται. Προκειμένου να θέσουμε την type
safety ενώ εκτελείται το πρόγραμμα και πριν γίνει οποιοδήποτε
ενέργεια ελέγχουμε αυτές τις ετικέτες. Αυτό ονομάζεται δυναμικός
έλεγχος. Το μειονέκτημα του είναι ότι είναι σχετικά αργός.
Γι’ αυτό και περισσότερο χρησιμοποιείται ο στατικός έλεγχος
που ουσιαστικά γίνεται πριν εκτελεστεί το πρόγραμμα.
|
|
|
|