Επόμενο  Προηγούμενο  Περιεχόμενα 
                            
                            
                              To www.blackdown.org είναι υπεύθυνο για τα ports της java
                              σε linux. Αναλόγως με το αν έχουμε libc h' glibc
                              κατεβάζουμε την ανάλογη έκδοση του jdk (java development
                              kit) και το βάζουμε στο αγαπημένο μας directory (συνήθως
                              /usr/lib). Εκεί τραβάμε ένα
                            
                            
beast:/usr/lib # tar vxzf jdk_1.1.7-v1a-glibc-x86.tar.gz
και είμαστε έτοιμοι :) 
                            
                              Εδώ λοιπόν βλέπουμε την δενδρική δομή αυτού του
                              directory:
                            
                            
                            
-r--r--r--   1 505      505        101235 Nov  5  1998 CHANGES
-r--r--r--   1 505      505           937 Nov  5  1998 COPYRIGHT
-r--r--r--   1 505      505          5994 Nov  5  1998 LICENSE
-r--r--r--   1 505      505         53189 Nov  5  1998 README
-rw-r--r--   1 505      505         12631 Nov  5  1998 README.linux
-rw-r--r--   1 505      505          7547 Nov  5  1998 README.linux.src
drwxr-xr-x   3 505      505          1024 Nov  5  1998 bin
drwxr-sr-x   4 505      505          1024 Nov  5  1998 include
-r--r--r--   1 505      505          2500 Nov  5  1998 index.html
drwxr-xr-x   4 505      505          1024 Nov  5  1998 lib
-rw-r--r--   1 505      505       1675875 Nov  5  1998 src.zip
                            
                            
                              To αρχειάκι src.zip περιέχει τα sources της java (σε
                              περίπτωση που δεν θέλουμε να χρησιμοποιήσουμε τις ήδη
                              υπάρχουσες compilαρισμένες εκδόσεις) και στο
                              README.linux.src περιέχονται οδηγίες για το compilation
                              process.
                            
                            
                              Στο lib βρίσκονται όλα τα απαιτούμενα .so αρχεία μαζί με
                              ένα σημαντικότατο αρχειάκι ονόματι classes.zip που
                              περιέχει όλες τις classes (semi-compiled morfi .class)
                              που έρχονται με το jdk. ΟΧΙ, ΔΕΝ ΧΡΕΙΑΖΕΤΑΙ ΝΑ ΤΟ
                              ΑΠΟΣΥΜΠΙΕΣΕΤΕ! :)
                            
                            
                              Στις παλαιότερες εκδόσεις του jdk, o compiler της java
                              απαιτούσε την ύπαρξη μιας shell variable, ονόματι
                              $CLASSPATH, που έδειχνε σε αυτό το αρχείο (classes.zip)
                              αλλά και σε οποιαδήποτε άλλα directories, τα οποία
                              περιείχαν ".class" αρχεία που θα χρησίμευαν στο πρόγραμμά
                              σας. Σύμφωνα με το documentation του jdk1.1.7 αυτή η
                              variable δεν χρησιμοποιείται πια. Για καλό και για κακό
                              όμως (και για όσους από εσάς έχουν τσιμπήσει παλιότερο
                              jdk) καλό θα ήταν στο /etc/profile να βάλετε:
                            
                            
export CLASSPATH=.:/usr/lib/java117_v1a/lib/classes.zip:~/java
                            
                              Όσοι από σας χρησιμοποιούν tsch :) ας παίξουν με την
                              setenv.
                            
                            
                              Έτσι έχουμε στο CLASSPATH το παρόν directory εργασίας, το
                              directory που περιέχει το classes.zip και ένα directory
                              κάτω από το home μας με όνομα java.
                            
                            
                              To directory bin περιέχει τα binaries του JDK. Εφόσον δεν
                              είμαστε αρκετά τρελοί για να τα καλούμε με τα full path
                              names, θα ήταν καλό να βάλουμε το directory αυτό στο PATH
                              μας (/usr/lib/java117_v1a/bin). Έτσι θα έχουμε πρόσβαση
                              από παντού στα παρακάτω εργαλεία:
                            
                            
                              - 
                                javac ( Java Compiler )
 :) Ο compiler μας...παίρνει αρχεία με κώδικα σε java
                                (.java) και τα μεταφράζει σε bytecode.
- 
                                java ( Java Interpreter )
 O κύριος που αναλαμβάνει να ανεβάσει το προγραμματάκι
                                μας πάνω στην virtual machine. Με άλλα λόγια, :) τρέχει
                                τα προγράμματά μας.
- 
                                java_g ( java tracer )
 Δίνει πληροφορίες για το τί γίνεται στην Virtual
                                Machine, κατά την εκτέλεση του προγράμματος.
- 
                                jre ( Java Runtime Interpreter )
 Είναι μια ελαφριά έκδοση του παραπάνω. Χρησιμοποιείται
                                κυρίως από τους κυρίους που *απλώς θέλουν να τρέξουν το
                                πρόγραμμα*.
- 
                                appletviewer ( Java AppletViewer )
 Ένα όμορφο εργαλείο για να τεστάρετε locally τα
                                applets σας.
- 
                                jdb ( Java Debugger )
 Ψάχνει για ζωύφια στα προγράμματά σας :)
- 
                                javap ( Class File Disassembler )
 Aυτό το όμορφο προγραμματάκι εκτός από το ότι τραβάει
                                τα declarations από ένα .class αρχείο (ναι, ναι,
                                compilαρισμένο αρχείο) σας μεταφράζει και τα byte-code
                                περιεχόμενα αυτού του αρχείου (δηλ. τις εντολές που θα
                                δωθούν στην virtual machine).
- 
                                javadoc ( Java Documentation Generator )
 Τελικά είναι της μόδας αυτές τις μέρες, κάθε γλώσσα
                                προγραμματισμού να έχει και από ένα προγραμματάκι που
                                διαβάζει τον κώδικα και από ειδικά comments, να παράγει
                                μια HTML σελίδα με το documentation του προγράμματος.
- 
                                javah ( C Header and Stub File Generator )
 To προγραμματάκι αυτό θα βοηθήσει όσους θέλουν να
                                βάλουν εξωτερικές functions (της C) μέσα στον java
                                κώδικά τους (για περισσότερες πληροφορίες κοιτάξτε στο
                                API documentation).
- 
                                jar ( Java Archive Tool )
 Μεταξύ άλλων, μαζεύει τα .class αρχεία και τα
                                συμπιέζει σε ένα αρχείο. Φτιάχνει κάτι σαν μία
                                συμπιεσμένη βιβλιοθήκη από classes :)
- 
                                javakey ( Digital Signing Tool )
 Θα χρησιμοποιηθεί από προγράμματα που χρειάζονται
                                πιστοποίηση για την αυθεντικότητα ορισμένων κομματιών
                                κώδικα.
- 
                                native2ascii ( Native-To-ASCII )
 Mετατροπή από native encoding (unicode) σε ascii με τη
                                χρήση του \udddd escape convention.
- 
                                rmic ( Java RMI Stub Converter )
 Χρησιμοποιείται στο RMI και φτιάχνει τα stubs που θα
                                χρησιμοποιήσουν τα τερματικά σας :) προκειμένου να
                                τρέξουν το πρόγραμμα του server.
- 
                                rmiregistry ( Java Remote Object Registry )
 Χρησιμοποιείται στο RMI και συνθέτει ένα registry για
                                τα objects που θα διαθέσει o server, στους clients.
- 
                                serialver ( Serial Version Command )
 Επιστρέφει την έκδοση μιας class.
                              Aς δούμε όμως ένα απλό παράδειγμα από compilation.
                              Κατ΄αρχήν ορίζουμε το όνομα του πακέτου που θα γράψουμε
                              και φτιάχνουμε ένα directory με το όνομα του κάτω από το
                              CLASSPATH:
                            
                            
                            
glynos@beast:~/java > pwd
/home/glynos/java        
                            
                            
                              Έστω ότι το πακέτο μας λέγεται "koko". Φτιάχνουμαι το
                              άναλογο directory:
                            
                            
                            
glynos@beast:~/java > mkdir koko
glynos@beast:~/java > cd koko
                            
                            (Αν το πακέτο μας ονομαζόταν "kati.akoma.pio.megalo" θα
                            έπρεπε να φτιάξουμε τα directories "kati/akoma/pio/megalo")
                            
                            
                              Αποφασίζουμε την κύρια class του προγράμματος να την
                              ονομάσουμε "trella". Συνεπώς φτιάχνουμε ένα αρχειάκι με
                              όνομα "trella.java" και τυπώνουμε μέσα τα παρακάτω:
                            
                            
                            
package koko;
class trella {
      public static void main(String argv[]){
             System.out.println("geia sou kosmakh!");
      };
};
                            
                            
                              Αφού σώσουμε το αρχειάκι, του τραβάμε και ένα compile :)
                            
                            
                            
glynos@beast:~/java/koko > javac trella.java
glynos@beast:~/java/koko > ls -l
-rw-r--r--   1 glynos   users         474 Sep  5 12:17 trella.class
-rw-r--r--   1 glynos   users         142 Sep  5 12:03 trella.java
                            
                            
                              Όπως βλέπουμε δημιουργήθηκε το "trella.class" που
                              περιέχει σε byte-code τον κώδικα που θα τρέξει η virtual
                              machine (συγκρίνετε το μέγεθος του αρχείου με το μέγεθος
                              του αντίστοιχου εκτελέσιμου της C).
                            
                            
                              Τώρα έχοντας ορίσει σωστά το όνομα του πακέτου, του
                              directory και του CLASSPATH, μπορούμε από οποιοδήποτε
                              σημείο του δίσκου μας, να καλέσουμε το πρόγραμμα (το
                              syntax είναι java {package_name}.{main_class_name}).
                            
                            
                            
glynos@beast:/ > java koko.trella
geia sou kosmakh!
glynos@beast:/ >
                            
                            
                              Ψάχνοντας στο net, μπορεί κανείς να βρει πολλά βοηθητικά
                              tools για προγραμματισμό σε Java κάτω από Linux. Από
                              web-browsers για να τεστάρετε τα applets σας (netscape,
                              hot-java) μέχρι IDE, visual programming interfaces αλλά
                              και decompilers (όπως ο jad που παίρνει τα .class files
                              και τα μεταφράζει σε source code). Εδώ θα βρείτε μία
                              μικρή λίστα.
                            
                            
                              Επίσης, κυκλοφορούν αρκετοί JVMs και από τρίτες εταιρείες
                              (όχι μόνο από την Sun) με πιο γνωστό τον kaffe.
                            
                            
                              Σε περίπτωση που είστε λάτρης του CLI και δεν βρίσκετε
                              κανένα λόγο για να χρησιμοποιήσετε κάποιο εργαλείο για
                              Visual Programming, θα σας πρότεινα να σηκώσετε στο
                              περιβάλλον των X, 2-3 rxvt's (για το γράψιμο debugging
                              και testing του κώδικα) και ασφαλώς ένα web-browser για
                              να διαβάζετε το API documentation του jdk. Για όσους από
                              εσάς ξεκινούν τώρα με την Java, υπάρχει και ένα online
                              tutorial στο http://www.java.sun.com
                            
                            
                              Επόμενο  Προηγούμενο  Περιεχόμενα