Εξετάστε τις πληροφορίες σχετικά με το Toolkit στο Host On-Demand Information Center. Τα βιβλία για το Toolkit βρίσκονται στη διασύνδεση Host Access Toolkit στο αριστερό πλαίσιο πλοήγησης. Επίσης, παρέχεται μια λειτουργία αναζήτησης που σας επιτρέπει να αναζητήσετε πληροφορίες σε ολόκληρο το Information Center. Η λειτουργία αυτή είναι ιδιαίτερα χρήσιμη αν αναζητάτε πληροφορίες σχετικά με ένα συγκεκριμένο API.
Εξετάστε τα κοινά προβλήματα που αναφέρονται στο εγχειρίδιο Host Access Beans for Java Reference, στο Information Center.
Εξετάστε τις πληροφορίες σχετικά με τα διάφορα εργαλεία για τον εντοπισμό σφαλμάτων στις μικροεφαρμογές και τις εφαρμογές Host Access Beans. Οι πληροφορίες αυτές βρίσκονται στο εγχειρίδιο Host Access Beans for Java Reference, στο Information Center. Περιλαμβάνονται επίσης πληροφορίες σχετικά με την ενσωμάτωση των λειτουργιών ιχνηλασίας του Host On-Demand (Βοήθημα ιχνηλασίας) και τον τρόπο χρήσης της λειτουργίας Presentation Space Debugger.
Απέτυχε η εκτέλεση μιας παρεχόμενης από την εταιρεία μικροεφαρμογής σε ένα πρόγραμμα πλοήγησης με υποστήριξη Java 2; Αν ο χρήστης θέλει να εκτελέσει μια προσαρμοσμένη μικροεφαρμογή με μια συνεδρία εξομοίωσης του Host On-Demand (για παράδειγμα, μια συνεδρία τερματικού 3270) που ενεργοποιείται από έναν πελάτη Host On-Demand Java 2, και για την εκτέλεση της μικροεφαρμογής απαιτούνται εξουσιοδοτήσεις της Java 2, τότε θα πρέπει να εκτελεστεί μία από τις ακόλουθες ενέργειες για να ικανοποιηθούν οι απαιτήσεις ασφάλειας της Java 2. Διαφορετικά, η εκτέλεση της μικροεφαρμογής θα αποτύχει χωρίς να εμφανιστεί σχετικό μήνυμα:
Αν εξετάζετε τη χρήση νημάτων, ελέγξτε ότι ο προσαρμοσμένος κώδικάς σας έχει εκτελέσει όλα τα απαραίτητα API για την αποδέσμευση νημάτων. Για παράδειγμα, αν χρησιμοποιήσετε το ECLSession, εκτελέσετε το startCommunication() και στη συνέχεια το session.dispose(), δεν θα αποδεσμευτούν όλα τα νήματα μέχρι να εκτελεστεί το stopCommunictions().
Όλα τα νήματα του Abstract Windows Toolkit (AWT) δημιουργούνται αυτόματα από τη Java ως τμήμα του περιβάλλοντος AWT για τη διαχείριση στοιχείων GUI (για παράδειγμα, για την αποστολή συμβάντων GUI της Java). Το νήμα ελέγχεται από τον κώδικα runtime της Java και δεν υπάρχουν διαθέσιμες διεπαφές για την έναρξη και τον τερματισμό του νήματος από μια εφαρμογή όπως το Host On-Demand ή μια προσαρμοσμένη εφαρμογή που βασίζεται στο HACL.
Παρόλο που η εφαρμογή που χρησιμοποιείτε μπορεί να βασίζεται σε συγκεκριμένη έκδοση του Host On-Demand Toolkit, μπορείτε να διατηρήσετε προηγούμενες εκδόσεις του Toolkit και να τις χρησιμοποιείτε για την επίλυση σφαλμάτων. Για παράδειγμα, αν δημιουργείτε εφαρμογές με την έκδοση 9.0 του Toolkit, και είναι διαθέσιμη η έκδοση 9.1, μπορείτε να δείτε αν το πρόβλημα παρατηρείται και στις δύο εκδόσεις των βιβλιοθηκών Toolkit. Μπορείτε επίσης να συγκρίνετε προηγούμενες εκδόσεις, όπως τις εκδόσεις 7.0 και 8.0.
Η σύγκριση της συμπεριφοράς διαφορετικών εκδόσεων του JVM είναι σημαντικό βήμα για την επίλυση προβλημάτων στο Host On-Demand. Αν παρατηρήσετε διαφορετική συμπεριφορά σε διαφορετικές εκδόσεις του JVM, βρίσκεστε ένα βήμα πιο κοντά στην ανακάλυψη της αιτίας του προβλήματος.
Η Sun Microsystems παρέχει μια δωρεάν υπηρεσία αναφοράς και αναζήτησης σφαλμάτων στους εγγεγραμμένους χρήστες. Παρέχει τη δυνατότητα αναζήτησης σε μια βάση δεδομένων γνώσεων, η οποία σας επιτρέπει να εντοπίσετε γνωστά προβλήματα και πιθανούς τρόπους διόρθωσης.
Αν έχετε ορίσει τη μεταβλητή περιβάλλοντος CLASSPATH των Windows στο σταθμό εργασίας σας, εξετάστε την τεκμηρίωση για τα API Java της Sun Microsystems για πληροφορίες σχετικά με το πώς επηρεάζει αυτή η μεταβλητή τη σειρά αναζήτησης των διαδρομών κλάσεων από το javac.exe και το java.exe. Η μεταβλητή CLASSPATH μπορεί να παραπέμπει σε διαφορετικές βιβλιοθήκες JVM η οποίες δεν είναι συμβατές με τις βιβλιοθήκες JVM και τις προσαρμοσμένες βιβλιοθήκες που σκοπεύετε να χρησιμοποιήσετε.
Άλλα εγκατεστημένα προϊόντα που χρησιμοποιούν Java μπορεί να έχουν εγκαταστήσει βιβλιοθήκες Java με το ίδιο όνομα για την υποστήριξη της εφαρμογής τους. Η δική σας εφαρμογή μπορεί κατά λάθος να χρησιμοποιεί αυτές τις ακατάλληλες βιβλιοθήκες.
Μπορείτε να κάνετε μια γρήγορη δοκιμή αφαιρώντας προσωρινά τη δήλωση της μεταβλητής CLASSPATH. Αν αλλάξει ο τρόπος λειτουργίας, μπορεί αυτή να είναι η αιτία του προβλήματος.
Ορισμένες φορές, ο προσαρμοσμένος κώδικας λειτουργεί σωστά όταν χρησιμοποιείται το Internet Explorer και το Netscape με τα δικά τους JVM (jdk1.1), αλλά δεν λειτουργεί όταν χρησιμοποιείται ένα πρόγραμμα πλοήγησης με πρόσθετη λειτουργία Java 2. Για παράδειγαμ, όταν χρησιμοποιείται μια πρόσθετη λειτουργία Java 2, η κονσόλα Java μπορεί να αναφέρει μη αναμενόμενο σφάλμα ClassDefNotFoundException ή NullPointerException. Σε άλλες περιπτώσεις, η κονσόλα Java του Internet Explorer μπορεί να αναφέρει παραβίαση των κανόνων ασφάλειας.
Αν δημιουργείτε μια μικροεφαρμογή που θα εκτελείται σε πρόγραμμα πλοήγησης, ο κώδικας που θα δημιουργήσετε πρέπει να πληροί τις προϋποθέσεις για την πρόσβαση σε πόρους που βρίσκονται έξω από το προστατευτικό "κέλυφος" (sandbox) (ανατρέξτε στην τεκμηρίωση της Java).
Σε διάφορα σημεία, οι βιβλιοθήκες του HOD Toolkit υποβάλλουν κλήσεις σε μεθόδους
χρησιμοποιώντας λειτουργίες ασφάλειας. Οι κλήσεις που υποβάλλονται εσωτερικά στα API του
Toolkit χρησιμοποιούν αρχεία αποθήκευσης της IBM με ψηφιακές υπογραφές, στα οποία έχουν
εκχωρηθεί τα απαραίτητα δικαιώματα.
Ο κώδικάς σας μπορεί επίσης να απαιτεί την υλοποίηση λειτουργιών ασφάλειας. Αυτή
είναι μια γενική απαίτηση της Java και δεν ισχύει μόνο για το Host On-Demand Toolkit.
Μελετήστε την κατάλληλη τεκμηρίωση της Java.
Το ακόλουθο παράδειγμα μπορεί να σας βοηθήσει να διαπιστώσετε αν το πρόβλημα με τη Java 2 σχετίζεται με τη λειτουργία διαχείρισης ασφάλειας. Δημιουργήστε ένα αρχείο με όνομα ${κεντρικός-κατάλογος-χρήστη}/.java.policy και με το ακόλουθο περιεχόμενο:
// JBuilder extensions for use with running/debugging Applets. // Use for testing purposes only. grant { permission java.security.AllPermission; permission java.net.SocketPermission "*","accept, connect, listen, resolve"; };
Αν ο κώδικας λειτουργεί όπως με ένα JVM του jdk1.1, θα πρέπει να σχεδιάσετε διαφορετικά την εκχώρηση δικαιωμάτων.
Ομοίως, αν χρησιμοποιείτε το Internet Explorer και το JVM της Microsoft, δημιουργήστε ένα αρχείο JAR για τον προσαρμοσμένο κώδικά σας και καθορίστε τη διαδρομή του στην ακόλουθη καταχώρηση του μητρώου:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Java VM\TrustedClasspath
Σημειώστε ότι ο καθορισμός μιας διαδρομής για ένα αρχείο CAB χωρίς υπογραφή δεν έχει κανένα αποτέλεσμα.
Αν τα σφάλματα παραβίασης ασφάλειας δεν εμφανίζονται πλέον, τοποθετήστε τον προσαρμοσμένο κώδικά σας σε ένα αρχείο CAB με ψηφιακή υπογραφή. Αν το έχετε ήδη κάνει, μπορεί να χρειάζεται να επιβεβαιώσετε ή να εκχωρήσετε δικαιώματα εκτέλεσης ενεργειών ασφάλειας σε διάφορα κρίσιμα σημεία κατά το χρόνο εκτέλεσης.
Θυμηθείτε ότι μια κλάση Java που ενεργοποιείται από το java.exe με χρήση του σημείου εισόδου main(...) μπορεί να μην διαθέτει λειτουργία διαχείρισης ασφάλειας, εκτός αν την έχετε καθορίσει εσείς. Ωστόσο, οι κλάσεις μικροεφαρμογών παρακολουθούνται πάντα από τη λειτουργία διαχείρισης ασφάλειας του προγράμματος πλοήγησης.
Χρησιμοποιήστε μόνο τις μεθόδους και τα πεδία API που δημοσιεύονται στα έγγραφα JavaDocs του Toolkit. Αν χρησιμοποιήσετε API που δεν έχουν δημοσιευτεί, μπορεί να προκύψουν απρόβλεπτα αποτελέσματα. Επιπλέον, αποφύγετε τη χρήση δημοσιευμένων API με την ένδειξη "deprecated" (καταργήθηκε).
Οι καταστάσεις αυτές είναι συνηθισμένες σε πολλές γλώσσες προγραμματισμού, συμπεριλαμβανομένης της Java. Τα συμπτώματα περιλαμβάνουν:
Ελέγξτε αν η προσθήκη μιας μεθόδου Thread.sleep(...) ή System.out.println(...) επηρεάζει τα συμπτώματα. Επίσης, ελέγξτε αν το σύμπτωμα εξαρτάται από την ποσότητα επεξεργασίας που εκτελείται σε λειτουργίες χειρισμού συμβάντων (event handlers). Οι λειτουργίες χειρισμού συμβάντων θα πρέπει να είναι σύντομες, γι' αυτό καθορίστε η εντατική επεξεργασία να εκτελείται από κάποιο άλλο νήμα.
Η επιτυχία του κώδικα μιας λειτουργίας πελάτη ή ενός προγράμματος οδήγησης συχνά εξαρτάται από την κατανομή του χρόνου στο δίκτυο και στο κεντρικό σύστημα. Αν ξαφνικά αποτύχει η εκτέλεση του κώδικα, το πρόβλημα μπορεί να οφείλεται στην αλλαγή κάποιου στοιχείου του περιβάλλοντός σας. Ορισμένες αλλαγές που μπορεί να επηρεάσουν το χρονισμό είναι:
Το Toolkit του Host On-Demand διαθέτει δύο ισχυρούς μηχανισμούς που μπορούν να σας βοηθήσουν να αποφύγετε τα σφάλματα που οφείλονται στην κατανομή χρόνου:
Αυτοί οι δύο μηχανισμοί χρησιμοποιούνται σε διαφορετικές περιπτώσεις, αλλά και οι δύο έχουν τον ίδιο σκοπό. Έχουν σχεδιαστεί ώστε να σας βοηθήσουν να εκπληρώσετε τις απαραίτητες προϋποθέσεις για τη διατήρηση μιας κανονικής ροής δεδομένων μεταξύ των συστημάτων πελάτη και εξυπηρετητή όταν πραγματοποιούνται αλλαγές στις ρυθμίσεις του δικτύου και των συστημάτων σας.
Οι ατέρμονες βρόχοι μπορούν να καταναλώσουν μεγάλη ποσότητα πόρων σε συστήματα mainframe, ιδιαίτερα όταν πολλά συστήματα πελάτη χρησιμοποιούν τις ίδιες ρουτίνες. Αν προκύψουν πολλοί βρόχοι ταυτόχρονα, μπορεί να προκληθεί ακόμα και "κρέμασμα" του συστήματος mainframe.
Εξετάστε τον κώδικα για να εντοπίσετε δομές ελέγχου ροής βρόχου οι οποίες μπορεί να μην ικανοποιήσουν ποτέ τις συνθήκες εξόδου τους. Επίσης, ελέγξτε αν έχετε ορίσει κώδικα διαφυγής για τις περιπτώσεις βρόχου. Θυμηθείτε ότι η διάγνωση ορισμένων προβλημάτων είναι πιο εύκολη σε ένα σταθμό εργασίας πελάτη από ό,τι σε ένα σύστημα mainframe παραγωγής.
Θα πρέπει να έχετε υπόψη ότι η χρήση κλήσεων HACL screenreco για την ικανοποίηση μιας συνθήκης εξόδου από βρόχο δεν συνιστάται, για παράδειγμα στην περίπτωση που υπάρχει μία μόνο συνθήκη HACL screenreco για τον τερματισμό βρόχων και το κεντρικό σύστημα εξακολουθεί να εμφανίζει μια μη αναμενόμενη μεταβλητή οθόνη.
Το Toolkit παρέχει κλάσεις ακρόασης οι οποίες μπορούν να ειδοποιήσουν τον κώδικα ενδιάμεσου επιπέδου (middle-tier) όταν μια σύνδεση με ένα σύστημα υποστήριξης διακοπεί ξαφνικά. Χωρίς αυτή την ειδοποίηση, ο κώδικας ενδιάμεσου επιπέδου μπορεί να μεταδοθεί σε μη κατάλληλες διαδρομές.
Αν πολλές συνδέσεις διακοπούν χωρίς να γίνει εκκαθάρισή τους, μπορεί σταδιακά να καταναλωθούν όλα τα διαθέσιμα νήματα.
Βεβαιωθείτε ότι έχετε σχεδιάσει το περιβάλλον GUI έτσι ώστε να αντιμετωπίζει τις ενδεχομένως επιβλαβείς ενέργειες των χρηστών. Για παράδειγμα, ορισμένοι χρήστες μπορεί να εξακολουθήσουν να πατούν το ίδιο κουμπί πολλές φορές, αν δεν είναι βέβαιοι ότι η αίτησή τους εκτελείται. Για το λόγο αυτό, θα πρέπει ο κώδικας να σχεδιαστεί ώστε να εμποδίζει τις πλεονάζουσες ενέργειες που προκαλούνται από το συνεχόμενο πάτημα ενός κουμπιού και το περιβάλλον GUI θα πρέπει να πληροφορεί τους χρήστες σχετικά με την κατάσταση των αιτήσεών τους.
Σχεδιάστε τον κώδικα με εναλλακτικές διαδρομές ροής που μπορούν να χρησιμοποιηθούν για την επιστροφή ή την αναίρεση ενεργειών σε περίπτωση σφάλματος. Ο κώδικας ενδιάμεσου επιπέδου (middle-tier) θα πρέπει να έχει τη δυνατότητα να εντοπίζει σφάλματα, για παράδειγμα χρησιμοποιώντας λειτουργίες ιχνηλασίας. Θα πρέπει πάντα να γίνεται έλεγχος για να εξασφαλίζεται ότι αυτό που αναμένεται να εμφανιστεί στην οθόνη είναι αυτό που στην πραγματικότητα εμφανίζεται.
Το HACL είναι το API της 'πράσινης οθόνης'. Ο κώδικας ενδιάμεσου επιπέδου
(middle-tier) που έχει δημιουργηθεί με το HACL μπορεί να λάβει έναν κωδικό ελέγχου BELL,
ALERT ή BEEP από ένα κεντρικό σύστημα. Αυτό συνήθως μεταφράζεται στη μέθοδο
java.awt.Toolkit.beep()
της Java. Η μέθοδος αυτή δεν είναι κατανοητή στα
κεντρικά συστήματα και μπορεί να προκαλέσει τη διακοπή της ενημέρωσης της οθόνης. Αυτό
είναι ένα γενικό πρόβλημα που δεν αφορά αποκλειστικά τις βιβλιοθήκες HACL του Toolkit.
Μία λύση είναι ο ορισμός ενός ζεύγους παραμέτρων ECLSession: SESSION_QUIETMODE, SESSION_ON ("true"). Επίσης, υπάρχει μια βοηθητική βιβλιοθήκη RAWT (Remote AWT) η οποία είναι διαθέσιμη για περιπτώσεις όπου ο κώδικας Java πρόκειται να εκτελέσει πολλές κλήσεις Java που αφορούν στοιχεία GUI. Η βιβλιοθήκη αυτή μπορεί να είναι χρήσιμη όταν πρέπει να γνωρίζεται ότι έχει προκύψει κωδικός ALERT στο iSeries.
Αν ο κώδικας εκτελείται μέχρι το τέλος της πρότασης main(...), αλλά ο έλεγχος δεν επιστρέφει στο σύστημα μετά την εκκαθάριση και την έξοδο του JVM, αναβαθμίστε το Host On-Demand στην έκδοση V8.0.1 για να αποφύγετε αυτό το πρόβλημα.
Τα BEANS του Toolkit αναγνωρίζουν και λειτουργούν με τα API του HACL. Όμως, τα API του HACL είναι ανεξάρτητα και δεν αναγνωρίζουν τα BEANS. Αυτό σημαίνει ότι οι ενέργειες που εκτελούνται στο επίπεδο BEANS μεταβιβάζονται στο επίπεδο HACL, ενώ οι ενέργειες που εκτελούνται στο επίπεδο HACL δεν μεταβιβάζονται ποτέ στο επίπεδο BEANS. Η ροή πληροφοριών επιτυγχάνεται μέσω μιας απόκρισης από το κεντρικό σύστημα.
Η κλάση (Terminal/Session).getECLSession() είναι μια μέθοδος πρόσβασης στα HACL API που υπόκεινται αυτών των BEANS. Αν έχετε δημιουργήσει μια μικροεφαρμογή ή εφαρμογή που βασίζεται σε BEANS, περιορίστε τη χρήση της κλάσης getECLSession() στις ενέργειες εκείνες που δεν αντιμετωπίζονται από ένα από τα API BEANS.
Η λειτουργία Εκτέλεση μικροεφαρμογής μπορεί να υλοποιεί είτε τη διεπαφή ECLAppletInterface είτε την CustomInterface. Η διεπαφή CustomInterface παρέχει τις καλύτερες δυνατότητες πρόσβασης.
Για να είναι σωστός ο συγχρονισμός, η κλήση προς τη μικροεφαρμογή πρέπει να ικανοποιεί ορισμένες συνθήκες, διαφορετικά η μικροεφαρμογή θα εκτελεστεί χωρίς να λάβει υπόψη το πρόγραμμα του κεντρικού συστήματος. Για παράδειγμα, η σύνδεση με το κεντρικό σύστημα πρέπει να είναι ενεργή και πρέπει να έχει ληφθεί το αναμενόμενο περιεχόμενο από την πράσινη οθόνη του κεντρικού συστήματος. Βεβαιωθείτε ότι οι συνθήκες αυτές πληρούνται.
Παρόλο που οι συνεδρίες εξομοίωσης του Host On-Demand βασίζονται στα API BEANS και HACL που περιλαμβάνονται στο Toolkit, ορισμένα στοιχεία τους είναι ανεξάρτητα και δεν περιλαμβάνονται. Τέτοια στοιχεία είναι, για παράδειγμα, η επιφάνεια εργασίας του Host On-Demand και η Διαχείριση υπηρεσιών. Επιπλέον, η IBM παρέχει πολλά API που δεν περιλαμβάνονται στο Toolkit, τα οποία παρέχουν την πρόσθετη τεχνολογία που δημιουργεί το ολοκληρωμένο πρόγραμμα εξομοίωσης του Host On-Demand.
Αν δεν το έχετε κάνει ήδη, εξοικειωθείτε με το Programmable Host On-Demand API. Το Programmable Host On-Demand είναι ένα σύνολο από API σε Java τα οποία επιτρέπουν σε προγραμματιστές να ενσωματώσουν διάφορα στοιχεία του κώδικα πελάτη του Host On-Demand, όπως οθόνες, μενού και εργαλειοθήκες, στις δικές τους προσαρμοσμένες εφαρμογές και μικροεφαρμογές Java. Τα API παρέχουν στον προγραμματιστή τον πλήρη έλεγχο της επιφάνειας εργασίας του Host On-Demand (των στοιχείων που είναι ορατά στο χρήστη) χωρίς να είναι απαραίτητο να ξεκινήσει με τα Host Access Java Beans που περιλαμβάνονται στο Toolkit. Ο υποκείμενος κώδικας του Host On-Demand χειρίζεται την απαραίτητη "καλωδίωση" των διαφόρων λειτουργικών τμημάτων, συμπεριλαμβανομένης και της αποθήκευσης των προτιμήσεων των χρηστών, όπως μακροεντολές, αντιστοιχίες πλήκτρων και αντιστοιχίες χρωμάτων, στο τοπικό σύστημα αρχείων για μελλοντική χρήση. Ο προγραμματιστής πρέπει να καθορίσει μόνο τη διάταξη της επιφάνειας εργασίας του Host On-Demand. Για περισσότερες πληροφορίες σχετικά με το Programmable Host On-Demand API, ανατρέξτε στο εγχειρίδιο Programmable Host On-Demand στο Κέντρο πληροφοριών του Host On-Demand.
Αν μεταγλωττίσετε τον κώδικα του Toolkit με τη Java 2, αλλά η εκτέλεση του κώδικα αποτυγχάνει με το εγγενές JVM του προγράμματος πλοήγησης, σημειώστε τα εξής. Αρχίζοντας από το Host On-Demand Έκδοση 7, οι βιβλιοθήκες του Toolkit παρέχονται σε δύο εκδόσεις: jdk1.1 και Java 2. Οι βιβλιοθήκες jdk1.1 έχουν μεταγλωττιστεί με το ibmdjk1.1.8, ενώ οι βιβλιοθήκες Java 2 έχουν μεταγλωττιστεί με την πιο πρόσφατη υποστηριζόμενη έκδοση της Java 2 της IBM.
Οι κλάσεις BEANS του Toolkit που εμφανίζουν στοιχεία GUI έχουν υποδιαιρεθεί, ώστε να βασίζονται σε java.awt για την έκδοση jdk1.1 και σε javax.swing για την έκδοση Java 2. Αν μεταγλωττίσετε την προσαρμοσμένη εφαρμογή σας χρησιμοποιώντας τις βιβλιοθήκες της έκδοσης jdk1.1, η εφαρμογή θα λειτουργεί είτε σε περιβάλλον JVM 1.1 είτε σε περιβάλλον JVM Java 2. Αν μεταγλωττίσετε την προσαρμοσμένη εφαρμογή σας χρησιμοποιώντας τις βιβλιοθήκες της έκδοσης Java 2, τότε αυτή θα είναι συμβατή με το περιβάλλον JVM 1.3 της Java 2 ή μεταγενέστερο. Αν επιχειρήσετε να την εκτελέσετε σε περιβάλλον JVM 1.1, ακόμα και αν η βιβλιοθήκη swingall.jar περιλαμβάνεται στη διαδρομή κλάσεων, θα προκύψουν μη επανορθώσιμες εξαιρέσεις.
Παρόλο που μπορείτε να μεταγλωττίσετε τον κώδικα χρησιμοποιώντας το jdk1.1 και να τον εκτελέσετε σε JVM της Java 2, μπορεί να παρατηρήσετε κάποιες ανεπιθύμητες επιπτώσεις που σχετίζονται με την ανάμιξη στοιχείων "heavyweight" και "lightweight". Οι επιπτώσεις αυτές είναι πιο εμφανείς όταν Terminal beans της Java 2 ενσωματώνονται σε ένα java.awt.Frame το οποίο κατασκευάζεται και στη συνέχεια διαγράφεται επανειλημμένως. Η υποστήριξη σε αυτή την περίπτωση είναι πολύ περιορισμένη.
Ο κώδικας που έχει δημιουργηθεί με τα API του Personal Communications κανονικά μπορεί να μεταγλωττιστεί με τις βιβλιοθήκες που παρέχονται στο Toolkit. Ωστόσο, ίσως πρέπει να προσθέσετε στον κώδικα κάποιες παραμέτρους ρύθμισης συνεδριών, για τις οποίες δεν υπάρχει αντίστοιχη παράμετρος στα αρχεία ρυθμίσεων WS.
Σημειώστε ότι τα API του Personal Communications είναι λειτουργικά ισοδύναμα με τα API του Host On-Demand V4, τα οποία χρησιμοποιούν jdk1.1. Η τρέχουσα έκδοση του Toolkit περιλαμβάνει πολλές επεκτάσεις και προσθήκες, ορισμένες από τις οποίες δεν είναι διαθέσιμες στο Host On-Demand V4. Έκτοτε, η IBM έχει κάνει σημαντικές αλλαγές στη λειτουργία των κλάσεων HACL screenreco, με αποτέλεσμα να απαιτείται αλλαγή του κώδικα και του σχεδιασμού. Οι βασικές λειτουργίες του Macro BEAN παραμένουν ίδιες, αλλά στη λειτουργία Macro του Toolkit έχει διπλασιαστεί ή τριπλασιαστεί ο αριθμός των διαθέσιμων API.