Προς το περιεχόμενο

Java FAQ


apoc

Προτεινόμενες αναρτήσεις

Menwntas pistos sthn arxikh idea tou topic aftou ...epanerxomai me to na prologhsw san topic starter oti toulaxiston egw gia twra kai o Insomniac Ghrionhs (miaw kai dikia tou einai h idea.apla etyxe egw na kanw prwtos thn ylopoihsh) tha ekthetoume apo edw kai pera themata gia thn Glwssa Java!O kathenas einai euprosdektos na postarei erwthseis alla kai apopseis peri ths glwssas kai elpizw oloi mazi na vriskoume lyseis se kathimerina kai mh themata pou mporei na apasxoloun kapoion!<p>Thelw na tonisw oti to topic einia austhra afierwmeno sthn java me thn ennoia oti tha htan askopo na mpoume se dialogo gia to pia eina ikalyterh glwssa ktl ktl..giati etsi kai allios opws oloi exoume ksanapei den yparxei h teleia glwssa!Kai fisika h yparksei autou tou topic den apotelei kapoia endeiksh snob gia alles glwsses h platformes!<p>Elpizw apo to topic na perasoun themata pou tha aforoun thn Java apo thn genesh ths ews kai alla texnika themata!<p>Kala na javaroume loipon!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντ. 251
  • Δημ.
  • Τελ. απάντηση

Λίγα λόγια για τη Java.<p>Όσοι ασχολούντε με τον προγραμματισμό,

επαγγελματίεςκαι μη, έχουνε aκούσει για τη γλώσσα

Java. Όλα ξεκίνησαν απο την διάσημη εταιρία στον κόσμο

της πληροφορικής Sun Microsystems

(http://www.sun.com). Ήταν αρχές του 1991 όταν στη Sun

αναζητούσαν το κατάλληλο εργαλείο για ν' αποτελέσει

την πλατφόρμα ανάπτυξης λογισμικού σε μικρο-συσκευές

(έξυπνες οικιακές συσκευές εως πολύπλοκα συστήματα

παραγωγής γραφικών). Τα εργάλεια της εποχής τα οποια

πέρασαν από την 'πασαρέλα' των υποψηφίων ηταν γλώσσες

όπως η C++ και C. Μετά απο διάφορους πειραματισμούς

αποφάνθηκαν οτι οι υπάρχουσες γλώσσες δεν μπορούσαν να

καλύψουν τις ανάγκες τους! Ο πατέρας της Java, James

Gosling που εργαζόταν εκείνη την εποχή για την Sun

έκανε ήδη πειραματισμούς πάνω στην C++ και είχε

παρουσιάσει κατά καιρούς κάποιες πειραματικές

γλωσσες(C++ ++) ως πρώτυπα για το νέο εργαλείο που

αναζητουσαν στην Sun. Τελικα μετα απο λίγο καιρο

κατέληξαν σε μια τελική πρόταση για το επιτελείο της

Sun, ήταν η γλωσσα Oak. Το όνομά της το πήρε απο το

ομώνυμο δένδρο (βελανιδιά) το οποίο ο Gosling είχε έξω

απο το γραφείο του και έβλεπε κάθε μέρα!<p>H Oak ηταν μια γλώσσα που διατηρούσε μεγάλη συγγένεια

με την C++, αλλά παράλληλα είχε πολυ πιο έντονο

αντικειμονοστραφή χαρακτήρα και χαρακτηριζοταν για την

απλότητα της σε πολλά πράγματα, που είχαν σαν σκοπό να

αυξήσουν την απόδοση των χρηστών της. Σύντομα όμως, οι

της Sun ανακάλυψαν ότι το όνομα Oak ήταν ήδη

κατοχυρωμένο απο κάποια άλλη γλωσσα οπότε κατά την

διάρκεια μία εκ των πολλών συναντήσεων σε καποιο

τοπικο caf? αποφάσισαν να μετονομάσουν το νέο τους

δημιούργημα σε Java που εκτός των άλλων ήταν το όνομα

αγαπητού καφέ για τους δημιουργούς της (Java στην

αγγλική γλώσσα είναι το φυτό που βγάζει τον καφέ)! Η

επίσημη εμφάνιση της Java αλλα και του HotJava

(browser με υποστήριξη στην Java) στη βιομηχανία της

πληροφορικής έγινε το Μάρτιο του 1995 όταν η Sun την

ανακοίνωσε στο Sun World 1995 συνέδριο. O πρώτος

αποδελτιωτής (compiler) της ήτανε γραμμένος στη γλώσσα

C από τον James Gosling. Το 1994 ο Van Hoffman

ξαναγράφει τον αποδελτιωτή της Java σε Java (από τα

πλεόν δύσκολα επιτεύγματα στο χώρο της πληροφορικής

είναι να γράψεις έναν αποδελτιωτή μίας γλώσσας στην

ίδια τη γλώσσα), ενώ το Δεκέμβριο του 1995 πρώτες οι

IBM, Borland, Mitsubishi Electronics, Sybase και

Symantec ανακοινώνουνε σχέδια να χρησιμοποιήσουνε τη

Java για να γράψουνε λογισμικό. Από εκεί και πέρα η

Java ακολουθεί μία ανοδική πορεία και είναι πλέον μία

από τις πιο δημοφιλείς γλώσσες στον χώρο της

πληροφορικής για την ανάπτυξη λογισμικού.<p>Τί κάνει όμως τη Java τόσο δημοφιλή; Ένα από τα βασικά

πλεονεκτήματα της Java έναντι των περισσότερων άλλων

γλωσσών είναι η ανεξαρτησία του λειτουργικού

συστήματος και πλατφόρμας. Τα προγράμματα που είναι

γραμμένα σε Java τρέχουνε ακριβώς το ίδιο σε Windows,

Linux, Solaris και Macintosh (σύντομα θα τρέχουνε και

σε Playstation καθώς και σε άλλες κονσόλες) χωρίς να

χρειαστεί να ξαναγίνει διάταξη αποδελτίωσης

(compiling) ή να αλλάξει ο πηγαίος κώδικας για κάθε

διαφορετικό λειτουργικό σύστημα. Για να επιτευχθεί

όμως αυτό χρειαζόταν κάποιος τρόπος ετσι ώστε τα

προγραμματα γραμμενα σε Java μπορουν να είναι

'κατανοητά' από κάθε υπολογιστή αναξάρτητα του είδους

επεξεργαστή (intel x86.IBM, Sun SPARC, Motorola) αλλα

και λειτουργικού συστήματος (Windows, Unix, Linux,

Solaris, MacOS). Ο λόγος είναι ότι κάθε κεντρική

μονάδα επεξεργασίας μπορεί και «καταλαβαίνει»

διαφορετικό assembly κώδικα. Ο συναρμολογούμενος

(assembly) κώδικας που τρέχει σε Windows είναι

διαφορετικός από αυτόν που τρέχει σε ένα Macintosh. Η

λύση δόθηκε με την ανάπτυξη της Εικονικής Mηχανής

(Virtual Machine ή VM ή ΕΜ στα ελληνικά).<p>Τι κάνει λοιπόν το Java Virtual Machine; Αφου γραφτεί

κάποιο πρόγραμμα σε Java τότε γίνεται compile μέσω

του Java compiler (javac), εκείνος με την σειρά του

δίνει ένα αριθμό απο .class αρχεια (=bytocode. Το

bytecode είναι η μορφή που παίρνει ο πηγαίος κώδικας

της Java όταν έρθει σε μία διάταξη αποδελτίωσης)

αναλόγως με το πόσες κλάσεις έχουνε γραφτεί για την

εφαρμογή. Οταν προσπαθήσουμε λοιπόν να εκτελέσουμε την

εφαρμογή μας το Java Virtual Machine που πρέπει να

είναι εγκατεστημένο στο μηχάνημα μας, θα αναλάβει να

διαβάσει τα .class αρχεία και να τα μεταφράσει σε

γλώσσα και εντολές που υποστηρίζει το λειτουργικό μας

και ο επεξεργαστής μας, έτσι ώστε να εκτελεστεί (να

σημειώσουμε εδώ ότι αυτό συμβαίνει με την παραδοσιακή

Εικονική Μηχανή. Πιο σύγχρονες εφαρμογές της ΕΜ

μπορούνε και αποδελτιώνουνε τα πολύχρηστα τμήματα

bytecode απ ευθείας σε ιθαγενή κώδικα (native code)

με αποτέλεσμα να βελτιώνεται η ταχύτητα). Χωρίς αυτό

δε θα ηταν δυνατή η εκτέλεση λογισμικού γραμμένο σε

Java. Πρέπει να πούμε οτι το Virtual Machine ειναι

λογισμικό platform specific δηλαδή για κάθε είδος

λειτουργικού και ανάλογης τεχνολογίας επεξεργαστή,

υπάρχει διαφορετική έκδοση! Ετσι υπάρχουν διαθέσιμες

εκδόσεις του για Windows, Linux, Solaris!<p>Ο,τιδήποτε θέλει να κάνει ο προγραμματιστής (ή ο

χρήστης) γίνεται μέσω της εικονικής μηχανής. Αυτό

βοηθάει στο να υπάρχει μεγαλύτερη ασφάλεια στο σύστημα

γιατί η εικονική μηχανή είναι υπεύθυνη για την

επικοινωνία χρήστη - υπολογιστή. Ο προγραμματιστής δεν

μπορεί να γράψει κώδικα ο οποίος θα έχει καταστροφικά

αποτελέσματα για τον υπολογιστή γιατί η εικονική

μηχανή θα τον ανιχνεύσει και δε θα επιτρέψει να

εκτελεστεί. Από την άλλη μεριά ούτε ο χρήστης μπορεί

να κατεβάσει «κακό» κώδικα από το δίκτυο και να τον

τρέξει. Αυτό είναι ιδιαίτερα χρήσιμο για μεγάλα

διανεμειμένα συστήματα όπου πολλοί χρήστες

χρησιμοποιούνε το ίδιο πρόγραμμα συγχρόνως.<p>Ακόμα μία ιδέα που βρίσκεται πίσω από τη Java είναι η

ύπαρξη του συλλέκτη σκουπιδιών (Garbage Collector).

Σύλλεξη σκουπιδιών είναι μία κοινή ονομασία που

χρησιμοποιείται στον τομέα της πληροφορικής για να

δηλώσει την ελευθέρωση τμημάτων μνήμης από δεδομένα

που δε χρειάζοντε και δε ρησιμοποιούντε άλλο. Αυτή η

απελευθέρωση μνήμης στη Java είναι αυτόματη και

γίνεται μέσω του συλλέκτη απορριμάτων. Υπεύθυνη για

αυτό είναι και πάλι η εικονική μηχανή η οποία μόλις

«καταλάβει» ότι η στοίβα (heap) της μνήμης (στη Java η

συντριπτική πλειοψηφία των αντικειμένων αποθηκεύοντε

τη στοίβα σε αντίθεση με τη C++ που αποθηκεύοντε

κυρίως στο σωρό - stack) κοντεύει να γεμίσει

ενεργοποιεί το συλλέκτη απορριμάτων. Έτσι ο

προγραμματιστής δε χρειάζεται να ανησυχεί για το πότε

και αν θα ελευθερώσει ένα συγκεκριμένο τμήμα της

μνήμης, ούτε και για δείκτες (pointers) που

εστιάζουνε σε άδειο κουτάκι μνήμης. Αυτό είναι

ιδιαίτερα σημαντικό αν σκεφτούμε ότι ένα μεγάλο

ποσοστό κατάρρευσης των προγραμμάτων οφείλονται σε

λάθος χειρισμό της μνήμης.<p>Πάντως τίποτα σε αυτόν τον κόσμο δεν έρχεται χωρίς

κόστος. Έτσι λοιπόν, παρόλο που η εικονική μηχανή

προσφέρει όλα αυτά (και όχι μόνο) τα πλεονεκτήματα, η

Java είναι πιο αργή σε σχέση με άλλες

προγραμματιστικές γλώσσες υψηλού επιπέδου (high-level)

όπως η C και η C++. Έχει αποδειχτεί ότι η C++ μπορεί

να είναι αρκετές φορές γρηγορότερη από τη Java.

Ευτυχώς γίνοντε φιλότιμες προσπάθειες από τη Sun για

τη βελτιστοποίηση της εικονικής μηχανής, ενώ και

διάφορες άλλες πραγματοποιήσεις της εικονικής μηχανής

υπάρχουνε από διάφορες άλλες εταιρίες (όπως IBM) οι

οποίες μπορεί άλλοτε να προσφέρουνε καλύτερα και

άλλοτε χειρότερα αποτελέσματα. Επιπλέον με τον ερχομό

των JIT (Just In Time) compilers, οι οποίοι

μετατρέπουνε το bytecode απ ευθείας σε γλώσσα

μηχανής, η διαφορά ταχύτητας από τη C++ έχει μικρύνει

κατά πολύ.<p>Όλα τα εργαλεία που χρειάζεται κάποιος για να γράψει

Java προγράμματα έρχοντε δωρεάν. Από περιβάλλον

ανάπτυξης μέχρι build εργαλεία και βιβλιοθήκες.

Ευτυχώς η Sun και οι υπόλοιπες εταιρίες είναι αρκετά

γενναιόδωρες ώστε να μας τα παρέχουνε χωρίς

χρέωση.Όπως είπαμε και πιο πάνω υπάρχουνε πολλές

διαφορετικές εφαρμογές της Εικονικής μηχανής και του

compiler της Java. Είναι στο χέρι του καθενός να

επιλέξει το κατάλληλο περιβάλλον. Πάντως ο δικτυακός

τόπος της Sun είναι ένα καλό σημείο για να αρχίσει

κάποιος. Η Εικονική Μηχανή και ο compiler μπορούνε να

βρεθούνε στην παρακάτω διεύθυνση

http://java.sun.com/j2se/ όπου θα συνιστούσαμε να

κατεβάσετε τις τελευταίες εκδόσεις (1.4) καθώς και τα

συνοδευτικά έγγραφα (documentation) διότι είναι αρκετά

κατατοπιστικά και διευκολυντικά. Προσοχή, και τα τρία

τα αρχεία είναι αρκετά μεγάλα σε μέγεθος, οπότε

χρήστες με αργή σύνδεση θα πρέπει να περιμένουνε ώρα.<p>Για περιβάλλον ανάπτυξης θα συνιστούσαμε ή το Forte

(http://java.sun.com/j2se/1.4/download-sdk-forte.html)

ή το JCreator (http://www.jcreator.com/) (βέβαια για

να γράψει κάποιος Java κώδικα δε χρειάζεται τίποτα

άλλο παρά έναν επεξεργαστή κειμένου όπως notepad ή

emacs - μακριά από vi- αλλά ένα ολοκληρωμένο

περιβάλλον ανάπτυξης βοηθάει πολύ, ιδιαίτερα για τον

εντοπισμό σφαλμάτων). Οι βασικές εκδόσεις και των δύο

είναι δωρεάν. Για τις πιο προχωρημένες εκδόσεις

απαιτήται η αγορά άδειας. Το Forte είναι αρκετά καλό

και προσφέρει πάρα πολλά επιπλέον περιεχόμενα, τα

οποία δε χρειάζοντε στα αρχικά στάδια εκμάθησης της

Java. Καταναλώνει αρκετή μνήμη οπότε δε θα το

συνιστούσα σε υπολογιστές με μνήμη λιγότερη των

128MB.Από την άλλη μεριά το JCreator είναι αρκετά πιο

απλό και εύχρηστο από το Forte αλλά δεν έρχεται με τα

προχωρημένα προγράμματα του Forte (και τρέχει μόνο σε

Παράθυρα). Πάντως σε κάποιον που τώρα αρχίζει την

εκμάθηση της Java θα συνιστούσαμε ανεπιφύλακτα

JCreator. Βέβαια εκτός των παραπάνω υπάρχουνε και

διάφορα άλλα εργαλεία όπως ο JBuilder (η βασική έκδοση

είναι δωρεάν), το Visual Age της IBM (αρκετά δυνατό)

και το Visual Cafe της Symantec (επίσης αρκετά δυνατό)

τα οποία δυστυχώς κοστίζουνε αρκετά λεφτά.<p>To keimeno grafthke apo ton insomniac Girionh.

Allages kai epemvaseis apo ton apoc.<p>Einai to prwto se mia prospathia pou exoume pei na ksekinhsoume mesa apo to topic afto...

ta sxolia dika kas...sintoma tha akolouthisoun kai alla!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Συνεχίζοντας στο ίδιο κλιμα παραθέτω το link απ' το οποίο μπορείτε να κατεβάσετε το νεο (φρέσκο και τελικό) release tou Java Software Developemt Kit ,εκδοση 1.4 standard.<p>Στο πακέτο περιλαμβάνεται ο javac (compiler) αλλά και το νέο (JVM) virtual machine. που δείχνει να είναι λιγο πιο γρήγορο από τον προκάτωχο του.<p>η εγκατάσταση δεν απαιτεί κατι ιδιαίτερο και είναι φιλική!<p>Εδώ θα δείτε ένα overview του νέου SDK

http://java.sun.com/j2se/1.4/<p>Και αντίστοιχα η σελίδα για Download

http://java.sun.com/j2se/1.4/download.html<p>για τους χρηστες Windows επιλέξτε το Windows(All languages) στην κατηγορία SDK!Είναι διαθέσιμη και η επιλογή για download μονο του JVM(Εικονικης μηχανης).<p>Συντομα θα προστεθει στο topic ενα νεο αρθρο που θα ασχολελιται με τυχον προβλήματα στην εγκατασταση του JVM και του Java Compiler,παραλληλα με μια μικρή εισαγωγή σε κώδικα Java!<p>καλά να περνάτε!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Τώρα δεν ξέρω αν αυτό είναι καθαρά στα πλαίσια της Java, αλλά βρήκα ένα ενδιαφέρον άρθρο για το πώς μπορείς να καλέσεις java classes απο visual basic. <p>java απο visual basic<p>Y.Γ. Αν πιστεύετε οτι δεν είναι σχετικό, στείλτε μου PM και θα το σβήσω

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ο προγραμματιστής δεν

μπορεί να γράψει κώδικα ο οποίος θα έχει καταστροφικά

αποτελέσματα για τον υπολογιστή γιατί η εικονική

μηχανή θα τον ανιχνεύσει και δε θα επιτρέψει να

εκτελεστεί.<p>auto pos mporei na elenxtei? [diladi ama arxiso na svino 300 arxeia, auto einai "paranomi" energeia i "epiterpti" ?] <p>

ιθαγενή κώδικα = native code smile.gif" border="0

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

H ennoia tou kakou kwdika den periorizetai mono se svhse 300 arxeia!

O security manager elenxei ektos ton allwn ta stuck overflow...thn orthi domh tou bytecode..thn thrhsh ths swsths dhmosiothtas pou prepei na exoun ta object sou (private,public members).

ola ta parapanw mporei na apovoun katastrofika se ena systhma pou mporei na trekei Java kwdika....<p>Apo thn allh den mporeis na exeis ena applet kai na apokta to applet dikaiwmata sto kathe systhma pou to katevazei kai to trexei giati ...mporei o dhmiourgos tou applet ston kwdika tou na exei shmeia pou svhnei pragmatika opws les 300 arxeia !<p>an exeis oreksh rikse mia matia edw!to arthro einai katatopistiko kai mpainei pragmatika sthn ousia oswn eipa parapanw!<p>http://java.sun.com/security/seccodeguide.html

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Σωστότατη η απάντηση του φίλου άποκ. Να συμπληρώσω ότι αν θέλεις να σβήσεις 300 αρχεία στην πλευρά του διακομιστή (server side) μπορείς να το κάνεις πολύ εύκολα. Η Java το επιτρέπει αυτό. Αυτό που δεν μπορείς είναι να σβήσεις αρχεία στην πλευρά του πελάτη (client side), που θα ήτανε άλλωστε καταστροφικό (φαντάζεσαι μία applet ή μία Java εφαρμογή να μπορούσε να το κάνει αυτό wink.gif" border="0 . Υπεύθυνο γι αυτό είναι το λεγόμενο sandbox της Java.<p>Για να μπορεί μία Applet να γράψει/διαβάσει/σβήσει ένα αρχείο, να δημιουργήσει μία νέα διεργασία (process), να ανοίξει μία σύνδεση σε κάποιον διακομιστή (εκτός αυτού από τον οποίο προέρχεται) και να φορτώσει ένα DLL πρέπει πρώτα να αποκτήσει μία ψηφιακή υπογραφή που θα αποδεικνύει ότι όντως η Applet είναι φερέγγυα. Αυτές οι υπογραφές εγγυούντε την ταυτότητα του εκδότη (δηλαδή των εταιριών που δίνουνε αυτές τις υπογραφές) και την ακεραιότητα του πηγαίου κώδικα. Αν ο εκδότης δει ότι μία Applet δεν κάνει αυτό που υποτίθεται ότι κάνει τότε δεν εκδίδει ψηφιακή υπογραφή και κατά συνέπεια οι Applets δεν είναι αξιόπιστες. Αυτές οι υπογραφές συνάπτονται μέσα στον πηγαίο κώδικα της Applet. Έτσι παρέχεται απόδειξη καταγωγής, εμπιστοσύνη μεταξύ πελάτη και εταιρίας και κρυπτογραφία.<p>Όμως το παραπάνω δεν είναι τόσο απόδειξη ασφάλειας της εικονικής μηχανής αλλά περισσότερο ασφάλεια της γενικότερης έννοιας της Java. Δηλαδή θεωρητικώς και πρακτικώς, το να σβήσεις 300 αρχεία ή να φορτώσεις ένα DLL είναι έγκυρο bytecode και δε θα προκαλέσει πρόβλημα στην εικονική μηχανή (άρα και σε όλη την εφαρμογή) παρά μόνο στον υπολογιστή σου και σε εσένα. Η εικονική μηχανή θα συνεχίσει να τρέχει σαν να μη συνέβει τίποτα. Με τον όρο ασφάλεια της εικονικής μηχανής νοείται ότι ο προγραμματιστής δεν μπορεί να γράψει κώδικα που θα καταρρεύσει το όλο Java περιβάλλον. Ένα πολύ απλό παράδειγμα είναι ότι η εικονική μηχανή ελέγχει πάντα για το αν προσπαθείς να έχεις πρόσβαση σε μία θέση ενός πίνακα που δεν υπάρχει. Για παράδειγμα αν έχεις έναν πίνακα (array) με δέκα στοιχεία και προσπαθήσεις να προσπελάσεις το ενδέκατο τότε η εικονική μηχανή θα πετάξει εξαίρεση και δε θα συντριβεί (αυτό είναι κάτι που δε συμβαίνει με γλώσσες όπως η C++ όπου πολύ άνετα θα μπορούσες να προσπαθήσεις να διαβάσεις το ενδέκατο στοιχείο χωρίς να ελέγξεις αν υπάρχει πρώτα).<p>Επίσης είναι εφικτό να γράψεις ένα πρόγραμμα απ ευθείας σε bytecode ή να τον αλλάξεις και να δημιουργήσεις κώδικα που ο αποδελτιωτής (compiler) ποτέ δε θα σε άφηνε να γράψεις. Ένα από τα εργαλεία που έρχοντε μαζί με τη Java είναι και ο επαληθευτής (verifier) ο οποίος χρησιμοποιώντας ένα σύνολο κανόνων ευρετικής (heuristic) αναγνωρίζει τον κώδικα που δε «συμμορφώνεται» με τους κανόνες. Παρ όλα αυτά όμως μπορείς να απενεργοποιήσεις τον επαληθευτή με τη noverify επιλογή. Αν θέλεις περισσότερες πληροφορίες κοίτα εδώ: http://www.javaworld.com/javaworld/jw-06-2001/jw-0615-howto.html

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

To parakatw arxeio einai h synexeia ths prospathias pou exoume ksekinhsei edw kai ligo kairo!Mas sinxwreitai gia to megalo tou megethos..apla merika pragmata apla den mporeis na ta agnohseis....

To idio arthro me poli kalitero format kai me plaisia (editing in word) mporeite na deite edw...<p>http://www.members.tripod.com/apoc_gr/JavaFirstHelloWorld2.htm<p>

Java Hello World<p>Το πρώτο φλιτζάνι καφέ<p>Ήρθε η ώρα να περάσουμε από τα λίγα λόγια περί Java στην πράξη. Τι θα χρειαστούμε για να ετοιμάσουμε το πρώτο μας φλιτζάνι Java. Λοιπόν έχουμε και λέμε : <p> Το Software Development Kit της Java (SDK) που μπορείτε να το βρείτε εδώ http://java.sun.com/j2se/1.4/download.html. Περιλαμβάνει τόσο τον compiler (javac) όσο και το Runtime environment (JRE).

Το windows notepad ή οποίο άλλο text editor της αρεσκείας μας

Και για λόγους ευκολίας ένα shortcut στο Command prompt (DOS-Command prompt) στα windows!<p>Αφού κατεβάσουμε με επιτυχία το Java Development Kit φροντίζουμε να εγκατασταθεί σωστά. Η τελευταία του έκδοση είναι τυλιγμένη σε έναν αρκετά έξυπνο Windows Installer που αναλαμβάνει να κάνει της απαραίτητες ρυθμίσεις στο σύστημα μας, όσο αναφορά το περιβόητο path και install directories.<p>Μα τι είναι αυτό το CLASSPATH και πως το ρυθμίζω σωστά;<p>To περιβόητο classpath είναι ίσως η πηγή των περισσότερων λαθών για αυτούς που αρχίζουνε την εκμάθηση της Java. Αυτό που κάνει το classpath είναι να «λέει» στην εικονική μηχανή που μπορεί να βρει τις απαραίτητες κλάσεις ώστε να τρέξει ένα πρόγραμμα.<p>Ένα Java πρόγραμμα αποτελείται εξ ολοκλήρου από κλάσεις. Ο,τιδήποτε δηλώνεται, και εκτελείται βρίσκεται μέσα σε μία ή πολλές κλάσεις. Αυτές οι κλάσεις περιέχουνε μεταβλητές, μεθόδους και μπορούνε να περιέχουνε και άλλες κλάσεις (εσωτερικές κλάσεις). Όλες οι κλάσεις φορτώνονται δυναμικώς από τον φορτωτή κλάσεων (class loader) κατά τη διάρκεια έναρξης και εκτέλεσης του προγράμματος. Ο μοναδικός τρόπος για να βρει ο φορτωτής κλάσεων τις απαραίτητες κλάσεις είναι μέσω του classpath.<p>Το classpath δεν πρέπει να μπερδεύεται με το path. Αυτό που κάνει το path είναι να «λέει» στο λειτουργικό σύστημα που να βρει τα διάφορα προγράμματα για να τρέξει. Προσοχή στη διαφορά. Το classpath δείχνει στην εικονική μηχανή το δρόμο για τις απαραίτητες κλάσεις (κατάληξη .class) ενώ το path δείχνει το δρόμο στο λειτουργικό σύστημα για τα απαραίτητα προγράμματα (συνήθως με κατάληξη .exe). Έτσι λοιπόν αν κάποιος θέλει να τρέξει το javac.exe τότε ο υποκατάλογός του θα πρέπει να μπει στο path. Αν θέλει να τρέξει μία κλάση (ας πούμε MyClass.class) τότε ο υποκατάλογος αυτής της κλάσης θα μπει στο classpath.<p>Τo classpath μπορεί επίσης να περιέχει JAR (Java ARchive) και ZIP αρχεία εφ όσον αυτά περιέχουνε Java κλάσεις (ή ακόμα και διάφορα άλλα αρχεία κειμένου). Για να ρυθμιστεί το classpath το μόνο που έχει να γίνει είναι να προσθέσουμε τις απαραίτητες κλάσεις, JAR ή ZIP αρχεία στο τέλος του.

Θέτοντας το PATH & CLASSPATH

Πριν προχωρήσουμε στο πρώτο παράδειγμα κώδικα πρέπει να βεβαιωθούμε ξανά ότι το περιβάλλον έχει στηθεί σωστά και ότι είμαστε σε θέση να κάνουμε compile αλλά και να τρέξουμε εφαρμογές γραμμένες σε Java. Ας θέσουμε πρώτα το PATH για να μπορέσουμε να βρούμε τον compiler javac και το java ώστε να τρέξουμε τα αρχεία. Αυτό μπορεί να γίνει με δύο τρόπους.<p>Ο πρώτος είναι να το θέσουμε μέσω του 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. (πάλι χωρίς την τελεία).<p>Ο δεύτερος τρόπος είναι παρόμοιος αλλά γίνεται μέσω της γραμμής εντολών. Ανοίγουμε ένα παράθυρο εντολών (command prompt) και γράφουμε SET PATH=%PATH%;c:\jdk1.4\bin (ή κάτι άλλο αντί για c:\jdk1.4 αν έχει εγκατασταθεί το SDK κάπου αλλού). Αυτό ήτανε, το PATH ήδη δείχνει στον υποκατάλογο που βρίσκεται το Java Development Kit.<p>To classpath μπορεί να καθοριστεί με τους ίδιους τρόπους. Μία καλή πρακτική είναι να υπάρχει ένας σταθερός υποκατάλογος όπου θα συγκεντρώνονται όλες οι κλάσεις (για παράδειγμα ο c:\java\lib).<p>Ακολουθώντας τα ίδια βήματα με το path επιλέγουμε το CLASSPATH αυτή τη φορά και τοποθετούμε τον υποκατάλογο στο τέλος του ήδη υπάρχων CLASSPATH (;c:\java\lib).<p>Ανοίγoντας ένα παράθυρο εντολών γράφουμε :

SET CLASSPATH=%CLASSPATH%;c:\java\lib (ή οποιοδήποτε άλλο υποκατάλογο της αρέσκειάς μας). Αυτό ήτανε. Το classpath έχει τοποθετηθεί. Αυτό που μας μένει είναι να βάζουμε όλες τις κλάσεις μας σε αυτόν τον υποκατάλογο που δείχνει το classpath.<p>Αυτό βέβαια δεν είναι απαραίτητο. Μπορούμε να έχουμε τις κλάσεις όπου θέλουμε αλλά θα πρέπει κάθε φορά να αλλάζουμε το 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).

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

Java Source με πολλαπλές κλάσεις γραμμένες μέσα του<p>//Java source file MyFirstClass.java<p>public class MyFirstClass

{

 

}<p>class AnotherClass

{<p>}<p>class Another2Class

{<p>}<p>Το παραπάνω κομμάτι κώδικα αποτελεί ένα Java source αρχείο με όνομα MyFirstClass.java. Μπορείτε απλώς να κάνετε copy/paste το κείμενο μέσα στο πλαίσιο και να το σώσετε μέσα σε ένα text αρχείο με όνομα MyFirstClass και extension .java.<p>H Java είναι γλώσσα Case Sensitive αυτό σημαίνει ότι αν έχετε γράψει το όνομα της κλάσης μέσα στον κώδικα σας ως MYFIRSTCLASS τότε πρέπει να ονομάσετε και το αρχείο σας ακριβός με το ίδιο όνομα αλλιώς δεν θα μπορέσετε να κάνετε compile. Το case sensitivity της γλώσσας επεκτείνεται σε όλη την διαδικασία της γραφής κώδικα και γενικά πρέπει να είμαστε πολύ προσεκτικοί! Στην Java το όνομα «Apοc» είναι διαφορετικό από το «apoc». Συνοψίζοντας πρέπει πάντα να θυμόμαστε ότι σε κάθε source αρχείο java περιέχει τουλάχιστον μια κλάση και παίρνει το όνομα του από το όνομα της κλάσης που έχουμε ορίσει ως public!

H κλάση (class) Apoc στο αρχείο Apoc.java<p>//Java source file Apoc.java

public class Apoc

{

 

}<p>Σχόλια μέσα στον κώδικα<p>Στα παραπάνω παραδείγματα απλών κλάσεων (dummy classes), δεν κάνουν τίποτα. Παρατηρήστε ότι περιέχονται γραμμές που αρχίζουν με // . Αυτά αποτελούν έναν από τους 3 τρόπους που μπορούμε να γράψουμε σχόλια μέσα στον κώδικα μας. Για όσους δεν γνωρίζουν τι είναι σχόλια, πληροφοριακά θα αναφέρω ότι είναι κομμάτι κειμένου (που εισάγουμε εμείς) που αγνοεί ο compiler και απλά βρίσκεται μέσα στα αρχεία του κώδικα μας για να τονίσει διάφορα σημαντικά σημεία (αλγοριθμικά και μη) έτσι ώστε να κάνει την ανάγνωση του αρχείου από έναν τρίτο πιο εύκολη και κατανοητή!<p>Στην Java έχουμε 3 τρόπους να γράφουμε σχόλια, μερικοί από αυτούς θα είναι είδη γνωστοί σε όσους έχουν παλαιότερη εμπειρία από την γλώσσα C και C++. Παραθέτω είδη σχολίων που μπορούμε να συναντήσουμε μέσα σε ένα αρχείο με κώδικα Java!<p>//java source file Apoc.java

public class Apoc

{

 

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

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

*/<p>}<p>Παρατηρούμε λοιπόν ότι μπορούμε να σχολιάσουμε μια γραμμή με το να βάλουμε μπροστά τα //. Επίσης μπορούμε να σχολιάσουμε πολλές γραμμές με το να αρχίσουμε τα Σχόλια μας με το /* να συνεχίσουμε να γράφουμε όσο θέλουμε και στο τέλος να τελειώσουμε με */.<p>Ο τρίτος τρόπος και συνάμα ο πιο χρήσιμος (θα δούμε το γιατί αργότερα) είναι ο λεγόμενος Javadoc τρόπος που μέσα στην παρακάτω δομή μπορούμε να προσθέσουμε πολλαπλές δομές σχολίων .<p>/**

* Αυτό

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

* Javadoc

* σχόλιο

*

*

*/<p>/*

Και αυτό είναι <p>ένα μεγάλο <p>σχόλιο

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

Ο compiler τα αγνοεί

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

* HelloWorld.java

*

* Prints to the console a Hello World message

*

* @author apoc

* @version 1.0

*/<p>public class HelloWorld{

 

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

public static void main(String[] args){<p> System.out.println(Hello world);<p> }//end of main method<p>}//end of class<p>Μετά από όσα διαβάσαμε παραπάνω, μερικές γραμμές από το παραπάνω κομμάτι κώδικα που αποτελεί και την πρώτη μας Java εφαρμογή (application), θα μας είναι είδη γνώριμα.<p>Οι πρώτες 8 σειρές του κώδικα μας αποτελούν ένα μακροσκελές Javadoc σχόλιο στο οποίο δηλώνουμε όνομα του αρχείου μας (παράλληλα όπως ξέρουμε είναι και το όνομα της κλάσης μας (class)), τι κάνει καθώς και 2 λέξεις που αρχίζουν με το γνωστό σε όλους μας @ οι οποίες δηλώνουν το όνομα του συγγραφέα αλλά και την έκδοση της εφαρμογή μας. Προς το παρόν δεν θα ασχοληθούμε γιατί γράφτηκαν έτσι οι λέξεις αυτές, είναι μέρος του μηχανισμού Javadoc.<p>Συνεχίζοντας στη 10η σειρά έχουμε τη δήλωση (declaration) της κλάσης μας. Δεν πρέπει να ξεχνάμε ότι η Java είναι μια άκρως αντικειμενοστραφή γλώσσα και τα πάντα σε αυτή δηλώνονται και λειτουργούν μέσα σας κλάσεις. Ο τρόπος δήλωσης μια κλάσης στην Java είναι συγκεκριμένος και πρέπει να ακολουθεί κάποιους βασικούς κανόνες τους οποίους θα εξηγήσουμε ευθύς αμέσως. Η δήλωση μίας κλάσης μπορεί να αποτελείται από τουλάχιστον δύο τμήματα και το πολύ έξι, των οποίων η σειρά είναι συγκεκριμένη καθώς και η σημασία.<p>Το πρώτο κομμάτι (λέξη) πάντα δηλώνει τη δημοσιότητα που θα έχει η κλάση μας στον έξω κόσμο (για όσους δεν καταλαβαίνουν τον όρο δημοσιότητα, πρέπει να πούμε ότι είναι όρος και μηχανισμός που σχετίζεται με τον αντικειμενοστραφή προγραμματισμό). Μπορούμε να το παραλείψουμε και να μην το συμπεριλάβουμε στην δήλωση μας. Χρησιμοποιούμε τις λέξεις public (δημόσια - μπορούνε να έχουνε πρόσβαση σε αυτή όλες οι κλάσεις ανεξαρτήτως το που βρίσκοντε) ή private (προσωπική πρόσβαση σε αυτή έχει μόνο η κλάση η οποία είναι εξωτερική (outer) στην προσωπική κλάση) ή protected (προστατευμένη πρόσβαση σε αυτή έχουνε οι κλάσεις που βρίσκοντε μόνο μέσα στο ίδιο πακέτο). Αν δηλώσουμε την κλάση απλώς ως class τότε η εξ ορισμού δημοσιότητα είναι protected.<p>Το δεύτερο κομμάτι μπορούμε επίσης να το παραλείψουμε και είναι το κομμάτι που θα δηλώσει κάποιο ιδιαίτερο χαρακτηριστικό της κλάσης μας όσο αναφορά την δυνατότητα της να παράγουμε αντικείμενα (objects) αλλά και αν μπορεί να χρησιμοποιηθεί σαν θεμέλιος λίθος για την παραγωγή νέων κλάσεων (inheritance). Εδώ οι λέξεις που μπορούμε να χρησιμοποιήσουμε είναι ή abstract (αφηρημένη) ή final (τελική). Δεν είναι του παρόντος να εξηγήσουμε εις βάθος την κάθε μια λέξη. Περιληπτικά να πούμε ότι κάθε κλάση που δηλώνεται ως αφηρημένη δεν μπορεί να χρησιμοποιηθεί για να δημιουργήσουμε αντικείμενά (object) της, ενώ κάθε κλάση που χαρακτηρίζεται ως τελική σημαίνει ότι δεν μπορεί να χρησιμοποιηθεί ως βάση για άλλες κλάσεις και δεν μπορούμε να δημιουργήσουμε αναφορές της, απλώς τη χρησιμοποιούμε στατικώς (ένα παράδειγμα τελικής κλάσεως είναι η κλάση System).<p>Το τρίτο κομμάτι αποτελείται πάντα από την λέξη class όπου για ευνόητους λόγους δεν μπορεί να παραληφθεί ποτέ.<p>Το τέταρτο κομμάτι είναι το όνομα που θα δώσουμε στην κλάση μας και καλό είναι να αρχίζει πάντα με κεφαλαίο γράμμα (θα αναφερθούμε εκτενέστερα κάποια στιγμή για το σύνολο των κανόνων που πρέπει να ακολουθεί ο καθένας που γράφει Java κώδικα έτσι ώστε να είναι σύμφωνος με το λεγόμενο Java Coding Conventions) και, όπως είπαμε και πιο πάνω, πρέπει να έχει ακριβώς το ίδιο όνομα με το αρχείο.<p>Το πέμπτο κομμάτι (και αυτό δεν είναι υποχρεωτικό) αποτελείται από 2 λέξεις και δηλώνει αν η κλάση μας έχει βασιστεί σε κάποια άλλη κλάση για να δημιουργηθεί.(inheritance) ή υποχρεούται να ακολουθήσει κάποια συγκεκριμένη μορφή που πρέπει να έχει στην δομή της. Το πέμπτο κομμάτι λοιπόν αποτελείται από τις λέξεις extends (επεκτείνει) ή implements (εφαρμόζει) και το όνομα της κλάσης. Αν χρησιμοποιήσουμε τη λέξη extends τότε αυτό σημαίνει ότι η κλάση μας κληρονομεί στοιχεία από την υπερκλάση. Αν χρησιμοποιήσουμε τη λέξη implements τότε αυτό δηλώνει ότι η κλάση μας πρέπει να εφαρμόζει τους κανόνες της διεπαφής (interface) (ένα πρόχειρος χαρακτηρισμός θα ήταν διεπαφή = σαν κλάση αλλά χωρίς βασικό σώμα). Η δική μας δήλωση αποτελείται από 3 λέξεις public class HelloWorld .<p>Το έκτο τμήμα είναι το όνομα της διεπαφής ή της κλάσης από την οποία η δική μας κλάση θα κληρονομήσει κανόνες και συμπεριφορά.<p>Έχουμε δηλώσει εμείς λοιπόν ότι η κλάση μας θα είναι διαθέσιμη και ορατή στον έξω κόσμο (ίσως η περιγραφή που δίνεται αυτή την στιγμή για την δημοσιότητα της κλάσης να μην είναι η πιο σωστή αλλά σκοπός του κειμένου αυτού δεν είναι να μπει σε ουσιαστικό διάλογο περί αντικειμενοστραφή προγραμματισμού), δεν θα μπορούσαμε να κάνουμε αλλιώς γιατί το αρχείο μας ονομάζεται HelloWorld όποτε είμαστε υποχρεωμένοι να έχουμε μέσα του μια δήλωση κλάσης με το ίδιο όνομα καθώς και με δηλωμένη την δημοσιότητα της ως public. Το δεύτερο κομμάτι είναι η λέξη class που είμαστε υποχρεωμένοι να το φράξουμε έτσι και αλλιώς και το τρίτο το όνομα το οποίο αρχίζει με κεφαλαίο γράμμα (HelloWorld).<p>Μετά τις 3 λέξεις που περιγράψαμε παραπάνω ακολουθεί ο χαρακτήρας «}». Ο χαρακτήρας αυτός (αγκύλη) αποτελεί το ένα είδος νοητού φράγματος. δηλώνει ότι από εδώ και πέρα θα ορίσουμε μεθόδους και μεταβλητές που ανήκουν στην κλάση αυτή. Μπορούμε να παρατηρήσουμε στην τελευταία γραμμή του κώδικα μας ότι υπάρχει ένα αντίστοιχος χαρακτήρας «}» o οποίος δηλώνει το τέλος της γραφής της κλάσης μας. ʼρα μετά την δήλωση μια κλάσης πάντα ακολουθεί το άνοιγμα των «διαχωριστικών» αγκυλών, στην συνεχεία το λεγόμενο σώμα της κλάσης δηλαδή η δήλωση των μεταβλητών και των μεθόδων και στο τέλος το κλείσιμο των διαχωριστικών αγκυλών. Περνάμε λοιπόν στο βασικό σώμα (body) της κλάσης μας και παρατηρούμε αμέσως ένα ακόμα σχόλιο το οποίο δηλώνει ότι παρακάτω θα ακολουθήσει η δήλωση μια μεθόδου της κλάσης και μάλιστα όχι μιας οποιαδήποτε μεθόδου αλλά της βασικής μεθόδου (main).<p>Δήλωση μεθόδου μέσα σε μια κλάση.<p>Πρωτού εξηγήσουμε γιατί η μέθοδος (ή συνάρτηση) με το όνομα main έχει ιδιαίτερη σημασία για την εφαρμογή μας και γενικότερα για κάθε Java εφαρμογή θα πούμε μερικά πράγματα για τους κανόνες που πρέπει να ακολουθούμε στην δήλωση μιας μεθόδου.<p>Είδαμε παραπάνω ότι η δηλώσει μιας κλάσης αποτελείται από 6 κομμάτια από τα οποία μπορούμε να το παραλείψουμε μερικά στην δήλωση μας ενώ τα αλλά δεν μπορούμε. Παράλληλοι κανόνες ακολουθούν και την δήλωση μιας μεθόδου η οποία μπορεί να αποτελείται από 2 έως 4 κομμάτια (λέξεις).<p>Το πρώτο κομμάτι (το οποίο μπορεί να παραληφθεί ) είναι ίδιο με αυτό στην δήλωση της κλάσης και δηλώνει την δημοσιότητα της μεθόδου μας μπορεί να χρησιμοποιηθεί η λέξη public και μόνο αυτή, ώστε να είναι δημόσια και να μπορεί η εικονική μηχανή να τη βρει.<p>Το δεύτερο κομμάτι (το οποίο μπορεί να παραληφθεί) δηλώνει ένα χαρακτηριστικό της μεθόδου όσο αναφορά την ύπαρξή της ή τη μη ύπαρξή της σε κάθε αντικείμενο που δημιουργούμε από την κλάση αυτή. Εδώ μπορούμε να χρησιμοποιήσουμε τη λέξη static (στατική). Χαρακτηρίζοντας μια μέθοδο ως στατική ουσιαστικά δηλώνουμε στον compiler ότι για όλα τα αντικείμενα της κλάσης που θα δημιουργήσουμε, θα μοιράζονται την ίδια οντότητα της μεθόδου αντί να έχουν και να χρησιμοποιούν το κάθε ένα και από ένα αντίγραφο της .<p>Το τρίτο κομμάτι είναι υποχρεωτικό στην δήλωση της μεθόδου (ή συνάρτησης) μιας και δηλώνει τον τύπο της δηλαδή μετά την εκτέλεση της αν θα μας επιστρέψει κάποια τιμή και τι τύπος είναι η τιμή αυτή π.χ. είναι ένας int (ακέραιος), μια λέξη (String) ή κάτι άλλο. Εδώ, αν η μέθοδος μας επιστρέφει κάτι, είμαστε υποχρεωμένοι να δηλώσουμε το τύπο της τιμής που επιστρέφει αν όχι τότε είμαστε υποχρεωμένοι να τη δηλώσουμε με την λέξη void (κενή).<p>Το τέταρτο και τελευταίο κομμάτι αποτελεί το όνομα της μεθόδου μας και είναι κάτι που δεν μπορούμε να το παραλείψουμε. Εδώ συνήθως ακολουθείται ένας διαφορετικός κανόνας από τη δήλωση της κλάσης και καλό είναι να αρχίζουμε το όνομα της με μικρό γράμμα!<p>Ένα μικρός χάρτης της δήλωσης μια μεθόδου είναι ο εξής:<p> public/private/protected static/synchronized void ή τυπος όνομα μεθοδου<p>Μετά τη δήλωση ακολουθούν οι παρενθέσεις όπου μέσα τους δηλώνουμε τον τύπο και το όνομα της μεταβλητής που θέλουμε να περάσουμε στην συνάρτηση μας ως παράμετρο. Αν θέλαμε να δηλώσουμε ότι σε μια μέθοδο θα περάσουμε ως παραμέτρους έναν ακέραιο και μια λέξη θα το κάναμε κάπως έτσι (int anΙnt, String aStr). Παντα δηλώνουμε τον τύπο και μετά το όνομα, για πολλαπλές παραμέτρους χρησιμοποιούμε κόμμα για να τις διαχωρίζουμε. Όπως και με την κλάση έτσι και με τη μέθοδο, το σώμα της πάντα βρίσκεται περικυκλωμένο από τα τις γνωστές μας αγκύλες.

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

Η δική μας main<p>Στην δική μας περίπτωση η εφαρμογή μας έχει και αυτή την γνωστή τώρα πια μέθοδο main όπου μέσα στο σώμα της υπάρχει η εντολή System.out.println(); η οποία βγάζει στην οθόνη μας (DOS command prompt) ένα μήνυμα. Το πιο σημαντικό που πρέπει να προσέξουμε εδώ είναι ότι μετά την γραφή κάθε εντολής μέσα σε μια μέθοδο πρέπει να ακολουθεί το ελληνικό ερωτηματικό ( wink.gif" border="0 . Ο χαρακτήρας αυτός δηλώνει στον compiler ότι η γραφή της μεθοδου τελείωσε και ότι ακολουθεί μια νέα εντολή ή το τέλος της μεθοδου. Πρέπει να πούμε ότι μεταξύ των δηλώσεων μεθόδων μιας κλάσης δεν ακολουθεί ; παρά μόνο μεταξύ των δηλώσεων μεταβλητών. Παραθέτω το παρακάτω παράδειγμα.<p>//Apoc.java η κλάση δεν είναι Java application δεν έχει

// main μέθοδο<p>public class Apoc{<p>public int anInt; //μια δήλωση μεταβλητής <p>public String aStr; //ακόμα μια δήλωση μεταβλητής<p> /*

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

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

*/<p> public int Ameth(int anInt){

return 5;

}//end of method Ameth

 

}//end of class Apoc<p> Compile και εκτέλεση της εφαρμογής HelloWorld

Αφού έχουμε σιγουρευτεί για την σωστή ρύθμιση του CLASSPATH θα προσπαθήσουμε να κάνουμε compile το αρχείο HelloWorld.java .Υποθέτουμε ότι το HelloWorld.java βρίσκεται μέσα κάποιο φάκελο του σκληρού μας δίσκου .έστω ότι αυτός ο φάκελος είναι ο C:\JavaSrc.<p>Ανοίγουμε από τα windows ένα DOS command prompt (Start ->Programs->Accessories->Command prompt) και εκτελούμε την εξής εντολή :<p>javac c:\JavaSrc\HelloWorld.java <p>Αν όλα πάνε καλά τότε δεν θα λάβουμε κανένα μήνυμα επιτυχίας απλά ο κέρσορας μας θα μεταφερθεί σε ένα νέο command prompt στην παρακάτω σειρά! (No news is good news). Αν παρατηρήσουμε τον φάκελο c:\JavaSrc θα δούμε ότι ένα νέο αρχείο έχει δημιουργηθεί το HelloWorld.class. Αυτό είναι και το αρχείο που περιέχει το περίφημο bytecode το οποίο θα αναλάβει να διαβάσει και να εκτελέσει η εικονική μηχανή. Αν έχουμε τον φάκελο μας (C:\JavaSrc) στο classpath τότε μπορούμε όπως είμαστε στο υπάρχων command prompt με την εντολή :<p>java HelloWorld<p>να εκτελέσουμε την εφαρμογή μας. Αν όχι τότε μέσο του command prompt και με την εντολή cd c:\JavaSrc θα βρεθούμε στα περιεχόμενα του φακέλου μας. Από εκεί εκτελούμε την ίδια εντολή που αναφέρθηκε πιο πάνω και λογικά θα πρέπει να πάρουμε σαν αποτέλεσμα στην οθόνη μας το μήνυμα «Hello World».<p>To παραπάνω κείμενο γράφηκε από τον ΑΠ apoc και τον ΠΚ Γηρυόνη.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχίζοντας με το JCreator

 

Αφού καλύψαμε τα βασικά περί Java ας πούμε δύο λόγια για ένα Ολοκληρωμένο Περιβάλλον Ανάπτυξης (IDE Integrated Development Environment). Ένα ολοκληρωμένο περιβάλλον ανάπτυξης βοηθάει αρκετά στη γραφή πηγαίου κώδικα, εντοπισμό σφαλμάτων, αυτο-σημπλήρωση κώδικα, αυτόματη δημιουργία κλάσεων κλπ. Υπάρχουνε αρκετά για τη Java, μερικά απά αυτά είναι δωρεάν, μερικά όχι. Δε θα ασχοληθούμε με αυτά που χρειάζονται άδεια για τα χρησιμοποιήσεις, ούτε με αυτά που είναι πολύπλοκα, αλλά με ένα που πιστεύουμε ότι είναι απλό και εύχρηστο. Το JCreator (το οποίο τρέχει μόνο σε Παράθυρα: (MS-Windows). Για τους χρήστες Linux/Unix/Mac θα πούμε λίγα λόγια στο μέλλον για το Forte).

 

Το JCreator έρχεται σε δύο εκδόσεις. Βασική έκδοση και προχωρημένη έκδοση. Μερικά από τα χαρακτηριστικά που περιλαμβάνει η προχωρημένη έκδοση, συν τοις άλλοις, είναι αυτο-συμπλήρωση κώδικα (auto-completion), σημεία σταματημού (break points) κατά τη διάρκεια εντοπισμού σφαλμάτων, προχωρημένες ρυθμίσεις εκτύπωσης και ενισχυμένη βοήθεια για τη δημιουργία κλάσεων (class wizard). Η προχωρημένη έκδοση κοστίζει κάποια χρήματα ενώ η βασική μάς παρέχεται δωρεάν. Για την ώρα θα ασχοληθούμε με τη βασική έκδοση την οποία μπορείτε να την κατεβάσετε από εδώ. Αφού κατεβεί και γίνει η εγκατάστασή του μπορείτε να το τρέξετε επιλέγοντας το JCreator LE εικονίδιο μέσα από το Programs ή το Desktop.

 

Αφού τρέξει την πρώτη φορά θα ρωτήσει αν θέλουμε να συσχετίσουμε όλα τα .java, .jcp και .jcw με αυτό (εικόνα 1). Μπορούμε αν θέλουμε να συσχετίσουμε και άλλα αρχεία με το JCreator επιλέγοντας Add. Για την ώρα αυτά τα τρία φτάνουνε. Πατώντας Next> πρέπει να θέσουμε τον υποκατάλογο που έχουμε εγκαταστήσει το JDK (εικόνα 2). Επιλέγουμε λοιπόν τον υποκατάλογο (συνήθως ονομάζεται jdk1.3 ή jdk1.4) (εικόνα 3) και πάμε στο επόμενο παραθυράκι όπου μπορούμε να επιλέξουμε τον υποκατάλογο που περιέχει όλα τα συνοδευτικά έγγραφα βοήθειας (documentation) (εικόνα 4) ο οποίος βρίσκεται κάτω από τον jdk υπό τη μορφή \docs (εικόνα 5).

 

Αφού τελειώσουμε και με αυτό το βήμα το JCreator θα αρχίσει αυτομάτως όπου και μας μεταφέρει στην κυρίως περιοχή ανάπτυξης προγραμμάτων (εικόνα 6). Περνώντας το δείκτη του ποντικιού πάνω από το κάθε εικονίδιο βγάζει βοήθεια (tool tip) για το τι είναι το κάθε ένα (εικόνα 7). Η κεντρική περιοχή (βλέπε εικόνα 6) είναι αυτή στην οποία μπορούμε να γράφουμε τον πηγαίο κώδικα. Η περιοχή αριστερά χωρίζεται σε δύο τμήματα. Το πάνω μας δείχνει πληροφορίες για το πόνημα μας (project) ενώ το κάτω για τις διάφορες κλάσεις και μεθόδους που χρησιμοποιούμε. Ας αρχίσουμε λοιπόν με το πρώτο πρόγραμμά μας για να δούμε πως λειτουργεί το JCreator.

 

Επιλέγουμε File -> New -> και μετά Empty Project για να αρχίσουμε με ένα κενό έργο. Μπορούμε να αλλάξουμε την τοποθεσία του έργου μας με το να αλλάξουμε το Location ή να το αφήσουμε στην εξ ορισμού τιμή του. Προτού προχωρήσουμε πρέπει να δώσουμε ένα όνομα στο έργο μας. Ας το ονομάσουμε HelloWorld μιας και αυτό θα είναι το πρώτο μας πρόγραμμα (εικόνα 8). Μετά το OK βλέπουμε ότι στα αριστερά έχει εμφανιστεί το όνομα του έργου που μόλις δημιουργήσαμε (εικόνα 9). Αν κοιτάξουμε και στο φάκελο (HelloWorld) που δημιουργήσαμε (στον προορισμό που ορίσαμε στο Location) θα δούμε ότι έχουνε δημιουργηθεί δύο αρχεία (HelloWorld.jcp και HelloWorld.jcw) (εικόνα 10). Το HelloWorld.jcp αντιπροσωπεύει το πόνημά μας (project) ενώ το HelloWorld.jcw το χώρο εργασίας μας (workspace). Μπορούμε να προσθέσουμε πολλά projects στο workspace αναλόγως με τις ανάγκες μας.

 

Αφού δημιουργήσαμε το έργο μας και το χώρο εργασίας μας ας γράψουμε και το αρχείο τώρα. Επιλέγουμε πάλι File -> New -> Java File και δίνουμε ένα όνομα στο αρχείο μας κάτω από το Filename. Ας το ονομάσουμε HelloWorld (εικόνα 11). Επίσης βλέπουμε ότι το Add To Project τετραγωνάκι είναι επιλεγμένο (αν δεν είναι το επιλέγουμε) και ότι το όνομα του πονήματος μας είναι το HelloWorld. Αυτό σημαίνει ότι το αρχείο που θα γράψουμε θα προστεθεί στο πόνημα που δημιουργήσαμε. Αφού πατήσουμε ΟΚ ανοίγει ένα καινούριο αρχείο όπου μπορούμε να αρχίσουμε να γράφουμε τον κώδικα. Επίσης στο πάνω αριστερά παράθυρο το αρχείο έχει προστεθεί και μπορούμε να το δούμε με το να διευρύνουμε το HelloWorld (διπλό χτύπημα με το ποντίκι πάνω στο HelloWorld ή μονό χτύπημα στο σύμβολο «+») (εικόνα 12).

 

Μπορούμε να χρησιμοποιήσουμε το HelloWorld.java από την προηγούμενη καταχώρηση:

 

</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">/**

* 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 [/code]</blockquote><font size="2" face="Verdana, Helvetica, sans-serif">Αφού το αντιγράψουμε βλέπουμε ότι το κάτω αριστερά παράθυρο μας δείχνει όλες τις μεθόδους που είναι διαθέσιμες για τη HelloWorld κλάση (εικόνα 13). Στο παράδειγμά μας έχουμε μόνο μία γιατί η κλάση μας αποτελείται μόνο από μία μέθοδο, τη βασική (main). Μπορούμε να κάνουμε compile το πρόγραμμά μας με το να πατήσουμε F7 ή να διαλέξουμε Build -> Compile Project (εικόνα 14). Αφού ολοκληρωθεί η διαδικασία αποδελτίωσης μπορούμε να το τρέξουμε πατώντας F5 ή Build -> Execute Project (εικόνα 15). Θα πρέπει να εμφανιστεί στην οθόνη μας ένα καινούριο παράθυρο με το μήνυμα "Hello World" (εικόνα 16).

 

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

 

Επιπρόσθετες χρήσιμες πληροφορίες.

 

Μπορούμε να προσθαφαιρέσουμε κλάσεις στο CLASSPATH μας με το να επιλέξουμε Configure -> Options -> JDK Profiles -> επιλέγουμε το JDK που χρησιμοποιούμε -> Edit -> Classes -> Add (εικόνα 17). Μπορούμε να προσθαφαιρέσουμε διάφορα έγγραφα βοήθειας ακολουθώντας τα ίδια βήματα αλλά επιλέγοντας Documentation αντί για Classes στην προτελευταία επιλογή.

 

Επίσης, αν έχουμε θέσει το documentation σωστά, επιλέγοντας μία κλάση και πατώντας Ctrl + F1 μπορούμε να δούμε τα πάντα για αυτή την κλάση (πακέτο, μεθόδους, υπερκλάση (super class), υποκλάσεις (subclasses) και μεταβλητές (variables)). Στο παραπάνω παράδειγμα αν επιλέξουμε την κλάση System και πατήσουμε Ctrl + F1 τότε θα ανοίξει ένα νέο παράθυρο με όλες τις πληροφορίες που χρειαζόμαστε (εικόνα 18 και εικόνα 19).

 

Το κείμενο αυτό γράφτηκε από τους ʼποκ και Γηρυόνη και είναι διαθέσιμο σε HTML μορφή (με όλες τις εικόνες) και από εδώ.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Sthn olh mas prospathia exoume idrisei ena online group sto yahoo JavaInsomniacs opot to xrhsimopoioume san ena mesw endwepoikwnias prin apo to post kathe keimenou alla kai san enan koino xwro apothikeushs dedomenwn!

 

Opoios endiaferetai mporei na ginei melos

http://groups.yahoo.com/group/javainsomniacs/

 

epeidh den diekdidoume ton titlo oute tou sygrafea alla oute kai tou akadhmaikou...tha thelame thn gnwmi sas gia ta osa exete diavasei mexri twra...parathrhseis..isws kati allo pou tha mporouse na anaferthei...kapoies idiaiteres apories ktl ktl!

 

Thelw na tonisw ksana oti skoposmas den einai na meiwsoume kata kapoio tropo kapoia allh platforma anaptikshs h glwssa!

 

Na ste kala!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 2 εβδομάδες αργότερα...

Γεια σας και απο το καινουργιο μελος του group!!Δεν ειχα κανει post εως τωρα γιατι οι γνωσεις μου απο java ειναι ακομα πολυ βασικες.Ειναι η πρωτη μου, ουσιαστικα, επαφη με τον προγραμματισμο και με δυσκολευει λιγο αλλα κατα τα αλλα ειναι πολυ ενδιαφερουσα γλωσσα και θελω πολυ να αρχισω να την χρησιμοποιω( και πρεπει γιατι την διδασκομαι κιολας στο πανεπιστημιο!! <img border="0" title="" alt="[Confused]" src="images/icons/confused.gif" /> .)

Διαβασα τα οσα εχετε κανει post και ειναι αρκετα περιεκτικα για πρωτο ξεκινημα.

Ελπιζω απο αυτη τη προσπαθεια να βοηθηθουμε ολοι.Αυτα για τωρα.

 

Eκανα post εδω για να δει και ο Apoc οτι ειμαι insomniac!!!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

xexex nai to eida!Nomizw prepei na peires to confirmation gia to club!elpizw mexri twra na voithithikes apo ta apla ayta keimena....oti allh aporia exeis kane thn post..se ligo tha prostethei kai ena neo keimenaki me pio poly code step through ...gia pio polles leptomeries

 

Na sai kala!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.


  • Δημιουργία νέου...