Java Hellenic User Group logo

Αρχική Σελίδα
Αγορά Συζήτησης
Κείμενα/Βοηθήματα

Valid CSS!

Η πρώτη επαφή με την Java

Εισαγωγή

Ήρθε η ώρα να περάσουμε από τα λίγα λόγια περί Java στην πράξη. Τι θα χρειαστούμε για να ετοιμάσουμε το πρώτο μας φλιτζάνι Java στα MS-Windows. Λοιπόν έχουμε και λέμε :

·         Το Software Development Kit της Java (SDK) . Περιλαμβάνει τόσο τον compiler (javac) όσο και το Runtime environment (JRE) την εικονική μηχανή.

·         Κάποιον text editor της αρεσκείας μας (TextPad vi, emacs)

·         Για λόγους ευκολίας ένα shortcut (συντόμευσγ) του Command prompt (DOS-Command prompt) στα MS-Windows.

Αφού κατεβάσουμε με επιτυχία το Java Development Kit φροντίζουμε να εγκατασταθεί σωστά. Η τελευταία του έκδοση είναι τυλιγμένη σε έναν αρκετά έξυπνο MS-Windows Installer που αναλαμβάνει να κάνει της απαραίτητες ρυθμίσεις στο σύστημα μας, όσο αναφορά το περιβόητο path και τα τους φακέλους εγκατάστασης (install directories).

Μα τι είναι αυτό το CLASSPATH και πως το ρυθμίζω σωστά;

To περιβόητο classpath είναι ίσως η πηγή των περισσότερων λαθών για αυτούς που αρχίζουνε την εκμάθηση της Java. Αυτό που κάνει το classpath είναι να «λέει» στην εικονική μηχανή (JVM) που μπορεί να βρει τις απαραίτητες κλάσεις ώστε να τρέξει ένα πρόγραμμα.Ένα Java πρόγραμμα αποτελείται εξ' ολοκλήρου από κλάσεις (class). Ο,τιδήποτε δηλώνεται, και εκτελείται βρίσκεται μέσα σε μία ή πολλές κλάσεις. Αυτές οι κλάσεις περιέχουνε μεταβλητές, μεθόδους και μπορούνε να περιέχουνε και άλλες κλάσεις (εσωτερικές κλάσεις). Όλες οι κλάσεις φορτώνονται δυναμικώς από τον φορτωτή κλάσεων (class loader) κατά τη διάρκεια έναρξης και εκτέλεσης του προγράμματος. Ο μοναδικός τρόπος για να βρει ο φορτωτής κλάσεων τις απαραίτητες κλάσεις είναι μέσω του classpath.
   Το classpath δεν πρέπει να μπερδεύεται με το path. Αυτό που κάνει το path είναι να «λέει» στο λειτουργικό σύστημα που να βρει τα διάφορα προγράμματα για να τρέξει. Προσοχή στη διαφορά. Το classpath δείχνει στην εικονική μηχανή το δρόμο για τις απαραίτητες κλάσεις (κατάληξη .class) ενώ το path δείχνει το δρόμο στο λειτουργικό σύστημα για τα απαραίτητα προγράμματα (συνήθως με κατάληξη .exe). Έτσι λοιπόν αν κάποιος θέλει να τρέξει το javac.exe τότε ο υποκατάλογός του θα πρέπει να μπει στο path. Αν θέλει να τρέξει μία κλάση (ας πούμε MyClass.class) τότε ο υποκατάλογος αυτής της κλάσης θα μπει στο classpath
  Τo classpath μπορεί επίσης να περιέχει JAR (Java ARchive) και ZIP αρχεία εφ' όσον αυτά περιέχουνε Java κλάσεις (ή ακόμα και διάφορα άλλα αρχεία κειμένου). Για να ρυθμιστεί το classpath το μόνο που έχει να γίνει είναι να προσθέσουμε τις απαραίτητες κλάσεις, JAR ή ZIP αρχεία στο τέλος του.

Θέτοντας το PATH και το CLASSPATH

Πριν προχωρήσουμε στο πρώτο παράδειγμα κώδικα πρέπει να βεβαιωθούμε ξανά ότι το περιβάλλον έχει στηθεί σωστά και ότι είμαστε σε θέση να κάνουμε compile αλλά και να τρέξουμε εφαρμογές γραμμένες σε Java. Ας θέσουμε πρώτα το PATH για να μπορέσουμε να βρούμε τον compiler javac και το java ώστε να τρέξουμε τα αρχεία. Αυτό μπορεί να γίνει με δύο τρόπους.Ο πρώτος είναι να το θέσουμε μέσω του My Computer>Properties>Advanced>Environment Variables και επιλέγουμε το PATH και Edit New... αν δεν υπάρχει και πρέπει να το δημιουργήσουμε). Αν ήδη υπάρχει πάμε στο τέλος και γράφουμε ;<υποκατάλογος του SDK>\bin ώστε να το τοποθετήσουμε στο τέλος του ήδη υπάρχων path. Για παράδειγμα αν έχουμε εγκαταστήσει το SDK στο c:\jdk1.4 τότε το path γίνεται ;c:\jdk1.4\bin. (χωρίς την τελεία). Αν δεν υπάρχει το path και το δημιουργήσουμε εμείς τότε η τιμή που θα πάρει θα είναι η ίδια αλλά χωρίς το ; στην αρχή, δηλαδή c:\jdk1.4\bin. (πάλι χωρίς την τελεία).
   Ο δεύτερος τρόπος είναι παρόμοιος αλλά γίνεται μέσω της γραμμής εντολών. Ανοίγουμε ένα παράθυρο εντολών (command prompt) και γράφουμε SET PATH=%PATH%;c:\jdk1.4\bin (ή κάτι άλλο αντί για c:\jdk1.4 αν έχει εγκατασταθεί το SDK κάπου αλλού). Αυτό ήτανε, το PATH ήδη δείχνει στον υποκατάλογο που βρίσκεται το Java Development Kit.
   To classpath μπορεί να καθοριστεί με τους ίδιους τρόπους. Μία καλή πρακτική είναι να υπάρχει ένας σταθερός υποκατάλογος όπου θα συγκεντρώνονται όλες οι κλάσεις (για παράδειγμα ο c:\java\lib).Ακολουθώντας τα ίδια βήματα με το path επιλέγουμε το CLASSPATH αυτή τη φορά και τοποθετούμε τον υποκατάλογο στο τέλος του ήδη υπάρχων CLASSPATH (;c:\java\lib).

  Ανοίγoντας ένα παράθυρο εντολών γράφουμε :

SET CLASSPATH=%CLASSPATH%;c:\java\lib (ή οποιοδήποτε άλλο υποκατάλογο της αρέσκειάς μας). Αυτό ήτανε. Το classpath έχει τοποθετηθεί. Αυτό που μας μένει είναι να βάζουμε όλες τις κλάσεις μας σε αυτόν τον υποκατάλογο που δείχνει το classpath

Αυτό βέβαια δεν είναι απαραίτητο. Μπορούμε να έχουμε τις κλάσεις όπου θέλουμε αλλά θα πρέπει κάθε φορά να αλλάζουμε το classpath. Αν για παράδειγμα έχουμε δύο κλάσεις A.class και B.class, η μία στο c:\java\lib\A.class και η άλλη στο c:\classes\B.class τότε μπορούμε να φορτώσουμε τη Β αλλάζοντας το classpath και γράφοντας SET CLASSPATH=%CLASSPATH%;c:\classes και αυτό θα έχει ως αποτέλεσμα η εικονική μηχανή να κοιτάει και στους δύο υποκαταλόγους (c\:java\lib και c:\classes).

Η πρώτη μου Java κλάση

Αρχίζουμε λοιπόν, ανοίγοντας τον editor μας να γράψουμε την πρώτη μας κλάση που συνάμα θα είναι και το πρώτη εφαρμογή application μας στην Java. Εδώ θα πρέπει να κατανοήσουμε μερικά πράγματα πρώτου μπούμε σε περαιτέρω λεπτομέρειες! Όπως έχει αναφερθεί και στο προηγούμενο άρθρο μέσα σε ένα java source αρχείο μπορούμε εμείς να γράψουμε όσες κλάσεις (class) θέλουμε, αλλά με ένα μεγάλο περιορισμό! Μόνο μια από αυτές τις κλάσεις θα χαρακτηριστεί ως δημόσια (public) και το όνομα του αρχείου θα πρέπει να είναι ταυτόσημο με το όνομα την κλάσης αυτό! Για την δική μας περίπτωση  αλλά και γενικότερα συνηθίζεται κάθε source αρχείο να περιέχει μόνο μια κλάση! Παραθέτω μερικά παραδείγματα.

Java Source με πολλαπλές κλάσεις γραμμένες μέσα του

//Java source file MyFirstClass.java

 public class MyFirstClass{

 }

 class AnotherClass {

 }

 class Another2Class{ 

 

 Το παραπάνω κομμάτι κώδικα αποτελεί ένα Java source αρχείο με όνομα MyFirstClass.java. Μπορείτε απλώς να κάνετε copy/paste το κείμενο μέσα στο πλαίσιο και να το σώσετε μέσα σε ένα text αρχείο με όνομα MyFirstClass και extension .java.

 
ΠΡΟΣΟΧΗ: H Java είναι γλώσσα Case Sensitive αυτό σημαίνει ότι αν έχετε γράψει το όνομα της κλάσης μέσα στον κώδικα σας ως MYFIRSTCLASS τότε πρέπει να ονομάσετε και το αρχείο σας ακριβός με το ίδιο όνομα αλλιώς δεν θα μπορέσετε να κάνετε compile. Το case sensitivity της γλώσσας επεκτείνεται σε όλη την διαδικασία της γραφής κώδικα και γενικά πρέπει να είμαστε πολύ προσεκτικοί! Στην Java το όνομα «Apοc» είναι διαφορετικό από το «apoc». Συνοψίζοντας πρέπει πάντα να θυμόμαστε ότι σε κάθε source αρχείο java περιέχει τουλάχιστον μια κλάση και παίρνει το όνομα του από το όνομα της κλάσης που έχουμε ορίσει ως public!

H κλάση (class) Apoc στο αρχείο Apoc.java

//Java source file Apoc.java

 public class Apoc{   
 

 } 

Σχόλια μέσα στον κώδικα

Στα παραπάνω παραδείγματα απλών κλάσεων (dummy classes), δεν κάνουν τίποτα. Παρατηρήστε ότι περιέχονται γραμμές που αρχίζουν με " // ". Αυτά αποτελούν έναν από τους 3 τρόπους που μπορούμε να γράψουμε σχόλια μέσα στον κώδικα μας. Για όσους δεν γνωρίζουν τι είναι σχόλια, πληροφοριακά θα αναφέρω ότι είναι κομμάτι κειμένου (που εισάγουμε εμείς) που αγνοεί ο compiler και απλά βρίσκεται μέσα στα αρχεία του κώδικα μας για να τονίσει διάφορα σημαντικά σημεία (αλγοριθμικά και μη) έτσι ώστε να κάνει την ανάγνωση του αρχείου από έναν τρίτο πιο εύκολη και κατανοητή!

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

//java source file Apoc.java

public class Apoc{

 /* Αυτός είναι ένας ακόμη τρόπος να γράφεις Σχόλια */
 

 /**

  * Αυτός είναι ακόμα τρόπος για να γράφεις σχολεία (Javadoc)

  */

}

Παρατηρούμε λοιπόν  ότι μπορούμε να σχολιάσουμε μια γραμμή με το να βάλουμε μπροστά τα "//". Επίσης μπορούμε να σχολιάσουμε πολλές γραμμές με το να αρχίσουμε τα Σχόλια μας με  το "/*" να συνεχίσουμε να γράφουμε όσο θέλουμε και στο τέλος να τελειώσουμε με "*/".

Ο τρίτος τρόπος και συνάμα ο πιο χρήσιμος (θα δούμε το γιατί αργότερα) είναι ο λεγόμενος Javadoc τρόπος που μέσα στην παρακάτω δομή μπορούμε να προσθέσουμε πολλαπλές δομές σχολίων .
 

/**

* Αυτό

* είναι ένα μεγάλο

* Javadoc

* σχόλιο

*

*

*/

 

/* Και αυτό είναι  ένα μεγάλο

σχόλιο

Τα Σχόλια μπορούν να γράφουν και στα ελληνικά

Ο compiler τα αγνοεί

*/

 

Το πρώτο HelloWorld πρόγραμμα στην Java

Μετά την μικρή ανασκόπηση για την σχόλια ήρθε η στιγμή να δούμε και πως μοιάζει μια μικρή Java εφαρμογή, η οποία απλώς θα βγάζει το μήνυμα "Hello World" στην οθόνη μας.

/**

* HelloWorld.java

*

* Prints to the console a Hello World message

*

* @author apoc

* @version 1.0

*/

public class HelloWorld{

 

   /*This is the main method of our application */

  public static void main(String[] args){

     System.out.println("Hello world");

  }//end of main method

 

}//end of class

Μετά από όσα διαβάσαμε παραπάνω, μερικές γραμμές από το παραπάνω κομμάτι κώδικα που αποτελεί και την πρώτη μας Java εφαρμογή (application), θα μας είναι είδη γνώριμα.Οι πρώτες 8 σειρές του κώδικα μας αποτελούν ένα μακροσκελές Javadoc σχόλιο στο οποίο δηλώνουμε όνομα του αρχείου μας (παράλληλα όπως ξέρουμε είναι και το όνομα της κλάσης μας (class)), τι κάνει καθώς και 2 λέξεις που αρχίζουν με το γνωστό σε όλους μας @ οι οποίες δηλώνουν το όνομα του συγγραφέα αλλά και την έκδοση της εφαρμογή μας. Προς το παρόν δεν θα ασχοληθούμε γιατί γράφτηκαν έτσι οι λέξεις αυτές, είναι μέρος του μηχανισμού Javadoc.
    Συνεχίζοντας στη 10η σειρά έχουμε τη δήλωση (declaration) της κλάσης μας. Δεν πρέπει να ξεχνάμε ότι η Java είναι μια άκρως αντικειμενοστραφή γλώσσα και τα πάντα σε αυτή δηλώνονται και λειτουργούν μέσα σας κλάσεις. Ο τρόπος δήλωσης μια κλάσης στην Java είναι συγκεκριμένος και πρέπει να ακολουθεί κάποιους βασικούς κανόνες τους οποίους θα εξηγήσουμε ευθύς αμέσως. Η δήλωση μίας κλάσης μπορεί να αποτελείται από τουλάχιστον δύο τμήματα και το πολύ έξι, των οποίων η σειρά είναι συγκεκριμένη καθώς και η σημασία.
    Το πρώτο κομμάτι (λέξη) πάντα δηλώνει τη δημοσιότητα που θα έχει η κλάση μας στον έξω κόσμο (για όσους δεν καταλαβαίνουν τον όρο δημοσιότητα, πρέπει να πούμε ότι είναι όρος και μηχανισμός που σχετίζεται με τον αντικειμενοστραφή προγραμματισμό). Μπορούμε να το παραλείψουμε και να μην το συμπεριλάβουμε στην δήλωση μας. Χρησιμοποιούμε τις λέξεις public (δημόσια - μπορούνε να έχουνε πρόσβαση σε αυτή όλες οι κλάσεις ανεξαρτήτως το που βρίσκοντε) ή private (προσωπική - πρόσβαση σε αυτή έχει μόνο η κλάση η οποία είναι εξωτερική (outer) στην προσωπική κλάση) ή protected (προστατευμένη - πρόσβαση σε αυτή έχουνε οι κλάσεις που βρίσκοντε μόνο μέσα στο ίδιο πακέτο). Αν δηλώσουμε την κλάση απλώς ως class τότε η εξ' ορισμού δημοσιότητα είναι protected.
     Το δεύτερο κομμάτι μπορούμε επίσης να το παραλείψουμε  και είναι το κομμάτι που θα δηλώσει κάποιο ιδιαίτερο χαρακτηριστικό της κλάσης μας όσο αναφορά την δυνατότητα της να παράγουμε αντικείμενα (objects) αλλά και αν μπορεί να χρησιμοποιηθεί σαν θεμέλιος λίθος για την παραγωγή νέων κλάσεων (inheritance). Εδώ οι λέξεις που μπορούμε να χρησιμοποιήσουμε είναι ή abstract (αφηρημένη) ή final (τελική). Δεν είναι του παρόντος να εξηγήσουμε εις βάθος την κάθε μια λέξη. Περιληπτικά να πούμε ότι κάθε κλάση που δηλώνεται ως αφηρημένη δεν μπορεί να χρησιμοποιηθεί για να δημιουργήσουμε αντικείμενά (object) της, ενώ κάθε κλάση που χαρακτηρίζεται ως τελική σημαίνει ότι δεν μπορεί να χρησιμοποιηθεί ως βάση για άλλες κλάσεις και δεν μπορούμε να δημιουργήσουμε αναφορές της, απλώς τη χρησιμοποιούμε στατικώς (ένα παράδειγμα τελικής κλάσεως είναι η κλάση System).

Το τρίτο κομμάτι αποτελείται πάντα από την λέξη class όπου για ευνόητους λόγους δεν μπορεί να παραληφθεί ποτέ.

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

Το πέμπτο κομμάτι (και αυτό δεν είναι υποχρεωτικό) αποτελείται από 2 λέξεις και δηλώνει αν η κλάση μας έχει βασιστεί σε κάποια άλλη κλάση για να δημιουργηθεί.(inheritance) ή υποχρεούται να ακολουθήσει κάποια συγκεκριμένη μορφή που πρέπει να έχει στην δομή της. Το πέμπτο κομμάτι λοιπόν αποτελείται από τις λέξεις extends (επεκτείνει) ή implements (εφαρμόζει) και το όνομα της κλάσης. Αν χρησιμοποιήσουμε τη λέξη extends τότε αυτό σημαίνει ότι η κλάση μας κληρονομεί στοιχεία από την υπερκλάση. Αν χρησιμοποιήσουμε τη λέξη implements τότε αυτό δηλώνει ότι η κλάση μας πρέπει να εφαρμόζει τους κανόνες της διεπαφής (interface) (ένα πρόχειρος χαρακτηρισμός θα ήταν διεπαφή = σαν κλάση αλλά χωρίς βασικό σώμα). Η δική μας δήλωση αποτελείται από 3 λέξεις public class HelloWorld .

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

Μετά τις 3 λέξεις που περιγράψαμε παραπάνω ακολουθεί ο χαρακτήρας «}». Ο χαρακτήρας αυτός (αγκύλη) αποτελεί  το ένα είδος νοητού φράγματος. δηλώνει ότι από εδώ και πέρα θα ορίσουμε μεθόδους και μεταβλητές που ανήκουν στην κλάση αυτή. Μπορούμε να παρατηρήσουμε στην τελευταία γραμμή του κώδικα μας ότι υπάρχει ένα αντίστοιχος χαρακτήρας «}» o οποίος δηλώνει το τέλος της γραφής της κλάσης μας. ’ρα μετά την δήλωση μια κλάσης πάντα ακολουθεί το άνοιγμα των «διαχωριστικών»  αγκυλών, στην συνεχεία το λεγόμενο σώμα της κλάσης δηλαδή η δήλωση των μεταβλητών και των μεθόδων και στο τέλος το κλείσιμο των διαχωριστικών αγκυλών. Περνάμε λοιπόν στο βασικό σώμα (body) της κλάσης μας και παρατηρούμε αμέσως ένα ακόμα σχόλιο το οποίο δηλώνει ότι παρακάτω θα ακολουθήσει η δήλωση μια μεθόδου της κλάσης και μάλιστα όχι μιας οποιαδήποτε μεθόδου αλλά της βασικής μεθόδου (main).
 

Δήλωση μεθόδου μέσα σε μια κλάση.

Πρωτού εξηγήσουμε γιατί η μέθοδος (ή συνάρτηση) με το όνομα main έχει ιδιαίτερη σημασία για την εφαρμογή μας και γενικότερα για κάθε Java εφαρμογή θα πούμε μερικά πράγματα για τους κανόνες που πρέπει να ακολουθούμε στην δήλωση μιας μεθόδου.Είδαμε παραπάνω ότι η δηλώσει μιας κλάσης αποτελείται από 6 κομμάτια από τα οποία μπορούμε να το παραλείψουμε μερικά στην δήλωση μας ενώ τα αλλά δεν μπορούμε. Παράλληλοι κανόνες ακολουθούν και την δήλωση μιας μεθόδου η οποία μπορεί να αποτελείται από 2  έως 4 κομμάτια (λέξεις).

  • Το πρώτο κομμάτι (το οποίο μπορεί να παραληφθεί ) είναι ίδιο με αυτό στην δήλωση της κλάσης και δηλώνει την δημοσιότητα της μεθόδου μας μπορεί να χρησιμοποιηθεί η λέξη public και μόνο αυτή, ώστε να είναι δημόσια και να μπορεί η εικονική μηχανή να τη βρει.

  • Το δεύτερο κομμάτι (το οποίο μπορεί να παραληφθεί) δηλώνει ένα χαρακτηριστικό της μεθόδου όσο αναφορά την ύπαρξή της ή τη μη ύπαρξή της σε κάθε αντικείμενο που δημιουργούμε από την κλάση αυτή. Εδώ μπορούμε να  χρησιμοποιήσουμε τη λέξη static (στατική). Χαρακτηρίζοντας μια μέθοδο ως στατική ουσιαστικά δηλώνουμε στον compiler ότι για όλα τα αντικείμενα της κλάσης που θα δημιουργήσουμε, θα μοιράζονται την ίδια οντότητα της μεθόδου αντί να έχουν και να χρησιμοποιούν  το κάθε ένα και από ένα αντίγραφο της .

  • Το τρίτο κομμάτι είναι υποχρεωτικό στην δήλωση της μεθόδου (ή συνάρτησης)  μιας και δηλώνει τον τύπο της δηλαδή μετά την εκτέλεση της αν θα μας επιστρέψει κάποια τιμή και τι τύπος είναι η τιμή αυτή π.χ. είναι ένας int (ακέραιος), μια λέξη (String) ή κάτι άλλο. Εδώ, αν η μέθοδος μας επιστρέφει κάτι, είμαστε υποχρεωμένοι να δηλώσουμε το τύπο της τιμής που επιστρέφει αν όχι τότε είμαστε υποχρεωμένοι να τη δηλώσουμε με την λέξη void (κενή).

  • Το τέταρτο και τελευταίο κομμάτι αποτελεί το όνομα της  μεθόδου μας και είναι κάτι που δεν μπορούμε να το παραλείψουμε. Εδώ συνήθως ακολουθείται ένας διαφορετικός κανόνας από τη δήλωση της κλάσης και καλό είναι να αρχίζουμε το όνομα της με μικρό γράμμα!
     

Ένα μικρός χάρτης της δήλωσης μια μεθόδου είναι ο εξής:

Μετά τη δήλωση ακολουθούν οι παρενθέσεις όπου μέσα τους δηλώνουμε τον τύπο και το όνομα της μεταβλητής που θέλουμε να περάσουμε στην συνάρτηση μας ως παράμετρο. Αν θέλαμε να δηλώσουμε ότι σε μια μέθοδο θα περάσουμε ως παραμέτρους έναν ακέραιο και μια λέξη θα το κάναμε κάπως έτσι (int anΙnt, String aStr). Παντα δηλώνουμε τον τύπο και μετά το όνομα, για πολλαπλές παραμέτρους χρησιμοποιούμε κόμμα για να τις διαχωρίζουμε. Όπως και με την κλάση έτσι και με τη μέθοδο, το σώμα της πάντα βρίσκεται περικυκλωμένο από τα τις γνωστές μας αγκύλες.

Η περίφημη μέθοδος main(String[] args)

Στο παράδειγμά μας παρατηρούμε ότι η κλάση μας έχει στο βασικό σώμα της μόνο μια μέθοδο δηλωμένη και αυτή αποτελεί την μέθοδο main η οποία αποτελεί ιδιαίτερη μέθοδο. Ένα απλοϊκός κανόνας που μπορεί να μας καθοδηγήσει ιδιαίτερα στα πρώτα μας βήματα στην Java είναι ότι κάθε java εφαρμογή έχει μια μέθοδο main. Όταν βλέπουμε μια κλάση Java που έχει μέσα της μια δήλωση μεθοδου main τότε θα αποκαλούμε την κλάση αυτή ως εφαρμογή (application) Java.

Η δήλωση της μεθοδου main είναι πάντα η ίδια και δεν αλλάζει, δηλαδή πάντα έχει τη μορφή public static void main και πάντα ακολουθείται από την δήλωση του εξής ως παράμετρο (String[] args). Για όσους είναι γνώστες της γλώσσας  C++ είναι το γνωστό argv, argc. Για όσους δεν είναι γνωστές περιληπτικά θα πούμε ότι αυτό που δηλώνουμε στο κομμάτι των παραμέτρων είναι ένα πίνακας από String (λέξεις) που μπορεί ο χρηστής της εφαρμογής μας να δηλώσει κατά την εκτέλεση της έτσι ώστε να έχει κάποια ειδική συμπεριφορά. Μπορούμε περάσουμε μερικές παραμέτρους για να δούμε κάποια συγκεκριμένα αποτελέσματα πχ dir-a  όπου βλέπουμε τα κρυφά αρχεία. Αυτή ακριβός είναι και η ουσία του String[] args. Πρέπει να τονίσουμε ότι φυσικά και πρέπει να συμπεριλάβουμε επιπλέον κώδικα όπου θα ελέγχει αν ο χρηστής έχει δώσει παραμέτρους κατά την διάρκεια της εκτέλεσης. Παντός σε κάθε main μέθοδο πρέπει να δηλώνουμε πάντα το String[] args ασχέτως αν η εφαρμογή μας θα υποστηρίζει παραμέτρους η όχι.

Η δική μας main

Στην δική μας περίπτωση η εφαρμογή μας έχει και αυτή την γνωστή τώρα πια μέθοδο main όπου μέσα στο σώμα της υπάρχει η εντολή System.out.println(); η οποία βγάζει στην οθόνη μας (DOS command prompt) ένα μήνυμα. Το πιο σημαντικό που πρέπει να προσέξουμε εδώ είναι ότι μετά την γραφή κάθε εντολής μέσα σε μια μέθοδο πρέπει να ακολουθεί το ελληνικό ερωτηματικό (;). Ο χαρακτήρας αυτός δηλώνει στον compiler ότι η γραφή της μεθοδου τελείωσε και ότι ακολουθεί μια νέα εντολή ή το τέλος της μεθοδου. Πρέπει να πούμε ότι μεταξύ των δηλώσεων μεθόδων μιας κλάσης δεν ακολουθεί ; παρά μόνο μεταξύ των δηλώσεων μεταβλητών. Παραθέτω το παρακάτω παράδειγμα.

//Apoc.java η κλάση δεν είναι Java application δεν έχει

// main μέθοδο

 

public class Apoc{

 public int anInt; //μια δήλωση μεταβλητής

 public String aStr; //ακόμα μια δήλωση μεταβλητής

 

 /*

  Μια δήλωση μεθοδου που δέχεται σαν παράμετρο έναν

  Ακέραιο(anInt) και επιστρέφει έναν ακέραιο συγκεκριμένα τον Αριθμό 5.

  */

public int Ameth(int anInt){

      return 5;       

  }//end of method Ameth

 

}//end of class Apoc 

Compile και εκτέλεση της εφαρμογής HelloWorld

Αφού έχουμε σιγουρευτεί για την σωστή ρύθμιση του CLASSPATH θα προσπαθήσουμε να κάνουμε compile το αρχείο HelloWorld.java .Υποθέτουμε ότι το HelloWorld.java βρίσκεται μέσα κάποιο φάκελο του σκληρού μας δίσκου .έστω ότι αυτός ο φάκελος είναι ο 'C:\JavaSrc'. Ανοίγουμε από τα windows ένα DOS command prompt (Start ->Programs->Accessories->Command prompt) και εκτελούμε την εξής εντολή :

javac c:\JavaSrc\HelloWorld.java

Αν όλα πάνε καλά τότε δεν θα λάβουμε κανένα μήνυμα επιτυχίας απλά ο κέρσορας μας θα μεταφερθεί σε ένα νέο command prompt στην παρακάτω σειρά! (No news is good news). Αν παρατηρήσουμε τον φάκελο c:\JavaSrc θα δούμε ότι ένα νέο αρχείο έχει δημιουργηθεί το HelloWorld.class. Αυτό  είναι και το αρχείο που περιέχει το  περίφημο bytecode το οποίο θα αναλάβει να διαβάσει και να εκτελέσει η εικονική μηχανή. Αν έχουμε τον φάκελο μας (C:\JavaSrc) στο classpath τότε μπορούμε όπως είμαστε στο υπάρχων command prompt με την εντολή :

java HelloWorld

θα εκτελέσουμε την εφαρμογή μας. Αν όχι τότε μέσο του command prompt και με την εντολή cd c:\JavaSrc θα βρεθούμε στα περιεχόμενα του φακέλου μας. Από εκεί εκτελούμε την ίδια εντολή που αναφέρθηκε πιο πάνω και λογικά θα πρέπει να πάρουμε σαν αποτέλεσμα στην οθόνη μας το μήνυμα «Hello World».

Aποστολόπουλος Πάρις
Κωνσταντινίδης Πάνος


  Get Java Now!