(Translated by https://www.hiragana.jp/)
Java - Βικιπαίδεια

Java

γλώσσα προγραμματισμού

Ηいーた Java είναι αντικειμενοστρεφής γλώσσα προγραμματισμού πぱいοおみくろんυうぷしろん σχεδιάστηκε από τたうηいーたνにゅー εταιρεία πληροφορικής Sun Microsystems.

Τたうοおみくろん λογότυπο της γλώσσας Java.

Στις αρχές τたうοおみくろんυうぷしろん 1991, ηいーた Sun αναζητούσε τたうοおみくろん κατάλληλο εργαλείο γがんまιいおたαあるふぁ νにゅーαあるふぁ αποτελέσει τたうηいーたνにゅー πλατφόρμα ανάπτυξης λογισμικού σしぐまεいぷしろん μικρο-συσκευές (έξυπνες οικιακές συσκευές έως πολύπλοκα συστήματα παραγωγής γραφικών). Τたうαあるふぁ εργαλεία της εποχής ήταν γλώσσες όπως ηいーた C++ κかっぱαあるふぁιいおた ηいーた C. Μετά από διάφορους πειραματισμούς προέκυψε τたうοおみくろん συμπέρασμα ότι οおみくろんιいおた υπάρχουσες γλώσσες δでるたεいぷしろんνにゅー μπορούσαν νにゅーαあるふぁ καλύψουν τις ανάγκες τους. Οおみくろん "πατέρας" της Java, James Gosling, πぱいοおみくろんυうぷしろん εργαζόταν εκείνη τたうηいーたνにゅー εποχή γがんまιいおたαあるふぁ τたうηいーたνにゅー Sun, έκανε ήδη πειραματισμούς πάνω σしぐまτたうηいーた C++ κかっぱαあるふぁιいおた είχε παρουσιάσει κατά καιρούς κάποιες πειραματικές γλώσσες (C++ ++, πぱいοおみくろんυうぷしろん μετέπειτα ονομάστηκε C# ) ως πρότυπα γがんまιいおたαあるふぁ τたうοおみくろん νέο εργαλείο πぱいοおみくろんυうぷしろん αναζητούσαν σしぐまτたうηいーたνにゅー Sun. Τελικά μετά από λίγο καιρό κατέληξαν μみゅーεいぷしろん μみゅーιいおたαあるふぁ πρόταση γがんまιいおたαあるふぁ τたうοおみくろん επιτελείο της εταιρίας, ηいーた οποία ήταν ηいーた γλώσσα Oak. Τたうοおみくろん όνομά της τたうοおみくろん πήρε από τたうοおみくろん ομώνυμο δένδρο (βελανιδιά) τたうοおみくろん οποίο οおみくろん Gosling είχε έξω από τたうοおみくろん γραφείο τたうοおみくろんυうぷしろん κかっぱαあるふぁιいおた έβλεπε κάθε μέρα.

Από τたうηいーたνにゅー Oak σしぐまτたうηいーた Java

Επεξεργασία

Ηいーた Oak ήταν μία γλώσσα πぱいοおみくろんυうぷしろん διατηρούσε μεγάλη συγγένεια μみゅーεいぷしろん τたうηいーたνにゅー C++. Παρόλα αυτά είχε πολύ πぱいιいおたοおみくろん έντονο αντικειμενοστρεφή (object oriented) χαρακτήρα σしぐまεいぷしろん σχέση μみゅーεいぷしろん τたうηいーたνにゅー C++ κかっぱαあるふぁιいおた χαρακτηριζόταν γがんまιいおたαあるふぁ τたうηいーたνにゅー απλότητα της. Σύντομα ηいーた υπεύθυνοι ανάπτυξης της νέας γλώσσας ανακάλυψαν ότι τたうοおみくろん όνομα Oak ήταν ήδη κατοχυρωμένο οπότε κατά τたうηいーたνにゅー διάρκεια μιας εいぷしろんκかっぱ τたうωおめがνにゅー πολλών συναντήσεων σしぐまεいぷしろん κάποιο τοπικό καφέ αποφάσισαν νにゅーαあるふぁ μετονομάσουν τたうοおみくろん νέο τους δημιούργημα σしぐまεいぷしろん Java πぱいοおみくろんυうぷしろん εκτός τたうωおめがνにゅー άλλων ήταν τたうοおみくろん όνομα της αγαπημένης ποικιλίας καφέ γがんまιいおたαあるふぁ τους δημιουργούς της. Ηいーた επίσημη εμφάνιση της Java αλλά κかっぱαあるふぁιいおた τたうοおみくろんυうぷしろん HotJava (πλοηγός μみゅーεいぷしろん υποστήριξη Java) σしぐまτたうηいーた βιομηχανία της πληροφορικής έγινε τたうοおみくろん Μάρτιο τたうοおみくろんυうぷしろん 1995 όταν ηいーた Sun τたうηいーたνにゅー ανακοίνωσε σしぐまτたうοおみくろん συνέδριο Sun World 1995. Οおみくろん πρώτος μεταγλωττιστής (compiler) της ήταν γραμμένος σしぐまτたうηいーた γλώσσα C από τたうοおみくろんνにゅー James Gosling. Τたうοおみくろん 1994, οおみくろん A.Van Hoff ξαναγράφει τたうοおみくろんνにゅー μεταγλωττιστή της γλώσσας σしぐまεいぷしろん Java, ενώ τたうοおみくろん Δεκέμβριο τたうοおみくろんυうぷしろん 1995 πρώτες οおみくろんιいおた IBM, Borland, Mitsubishi Electronics, Sybase κかっぱαあるふぁιいおた Symantec ανακοινώνουν σχέδια νにゅーαあるふぁ χρησιμοοιήσουν τたうηいーた Java γがんまιいおたαあるふぁ τたうηいーたνにゅー δημιουργία λογισμικού. Από εκεί κかっぱαあるふぁιいおた πέρα ηいーた Java ακολουθεί μία ανοδική πορεία κかっぱαあるふぁιいおた είναι πλέον μία από τις πぱいιいおたοおみくろん δημοφιλείς γλώσσες σしぐまτたうοおみくろんνにゅー χώρο της πληροφορικής. Στις 13 Νοεμβρίου τたうοおみくろんυうぷしろん 2006 ηいーた Java έγινε πλέον μみゅーιいおたαあるふぁ γλώσσα ανοιχτού κώδικα (GPL) όσον αφορά τたうοおみくろん μεταγλωττιστή (javac) κかっぱαあるふぁιいおた τたうοおみくろん πακέτο ανάπτυξης (JDK, Java Development Kit).

Ηいーた εξαγορά από τたうηいーたνにゅー Oracle κかっぱαあるふぁιいおた τたうοおみくろん μέλλον της Java

Επεξεργασία

Στις 27 Απριλίου 2010 ηいーた εταιρία λογισμικού Oracle Corporation ανακοίνωσε ότι μετά από πολύμηνες συζητήσεις ήρθε σしぐまεいぷしろん συμφωνία γがんまιいおたαあるふぁ τたうηいーたνにゅー εξαγορά της Sun Microsystems κかっぱαあるふぁιいおた τたうωおめがνにゅー τεχνολογιών (πνευματικά δικαιώματα/ πατέντες) πぱいοおみくろんυうぷしろん ηいーた δεύτερη είχε σしぐまτたうηいーたνにゅー κατοχή της ή δημιουργήσει. Ηいーた συγκεκριμένη συμφωνία θεωρείται σημαντική γがんまιいおたαあるふぁ τたうοおみくろん μέλλον της Java κかっぱαあるふぁιいおた τたうοおみくろんυうぷしろん γενικότερου οικοσυστήματος τεχνολογιών γύρω από αυτή μιας κかっぱαあるふぁιいおた οおみくろん έμμεσος έλεγχος της τεχνολογίας κかっぱαあるふぁιいおた ηいーた εξέλιξη της περνάει σしぐまεいぷしろん άλλα χέρια.

Εκδόσεις

Επεξεργασία

Σήμερα οおみくろんιいおた υποστηριζόμενες εκδόσεις είναι οおみくろんιいおた Java 8 και 9. Οおみくろんιいおた σημαντικότερες πぱいοおみくろんυうぷしろん έχουν κυκλοφορήσει, μみゅーεいぷしろん τις αντίστοιχες ημερομηνίες κυκλοφορίας, είναι οおみくろんιいおた εξής :

  • JDK 1.0 (23 Ιανουαρίου 1996)[1]
  • JDK 1.1 (19 Φεβρουαρίου 1997)
  • J2SE 1.2 (8 Δεκεμβρίου 1998)
  • J2SE 1.3 (8 Μαΐου 2000)
  • J2SE 1.4 (6 Φεβρουαρίου 2002)
  • J2SE 5.0 (30 Σεπτεμβρίου 2004)
  • Java SE 6 (11 Δεκεμβρίου 2006)
  • Java SE 7 (28 Ιουλίου 2011)
  • Java SE 8 (18 Μαρτίου 2014)
  • Java SE 9 (21 Σεπτεμβρίου 2017)
  • Java SE 10 (20 Μαρτίου 2018)
  • Java SE 11 (LTS*) (25 Σεπτεμβρίου 2018)
  • Java SE 12 (Μάρτιος 2019)
  • Java SE 13 (Σεπτέμβριος 2019)
  • Java SE 14 (Μάρτιος 2020)
  • Java SE 15 (Σεπτέμβριος 2020)
  • Java SE 16 (Μάρτιος 2021)
  • Java SE 17 (LTS*) (Σεπτέμβριος 2021)

LTS = Long-Term Support. Είναι ηいーた έκδοση ηいーた οποία προορίζεται νにゅーαあるふぁ παραμείνει στάνταρντ γがんまιいおたαあるふぁ τたうαあるふぁ επόμενα χρόνια.

Τたうαあるふぁ χαρακτηριστικά της Java

Επεξεργασία

Ένα από τたうαあるふぁ βασικά πλεονεκτήματα της Java έναντι τたうωおめがνにゅー περισσότερων άλλων γλωσσών είναι ηいーた ανεξαρτησία τたうοおみくろんυうぷしろん λειτουργικού συστήματος κかっぱαあるふぁιいおた πλατφόρμας. Τたうαあるふぁ προγράμματα πぱいοおみくろんυうぷしろん είναι γραμμένα σしぐまεいぷしろん Java εκτελούνται ακριβώς τたうοおみくろん ίδιο σしぐまεいぷしろん Windows, Linux, Unix κかっぱαあるふぁιいおた Macintosh (σύντομα θしーたαあるふぁ τρέχουν κかっぱαあるふぁιいおた σしぐまεいぷしろん Playstation καθώς κかっぱαあるふぁιいおた σしぐまεいぷしろん άλλες κονσόλες παιχνιδιών) χωρίς νにゅーαあるふぁ χρειαστεί νにゅーαあるふぁ ξαναγίνει μεταγλώττιση (compiling) ή νにゅーαあるふぁ αλλάξει οおみくろん πηγαίος κώδικας γがんまιいおたαあるふぁ κάθε διαφορετικό λειτουργικό σύστημα. Γがんまιいおたαあるふぁ νにゅーαあるふぁ επιτευχθεί όμως αυτό χρειαζόταν κάποιος τρόπος έτσι ώστε τたうαあるふぁ προγράμματα γραμμένα σしぐまεいぷしろん Java νにゅーαあるふぁ μπορούν νにゅーαあるふぁ είναι «κατανοητά» από κάθε υπολογιστή ανεξάρτητα τたうοおみくろんυうぷしろん είδους επεξεργαστή (Intel x86, IBM, Sun SPARC, Motorola) αλλά κかっぱαあるふぁιいおた λειτουργικού συστήματος (Windows, Unix, Linux, BSD, Mac OS). Οおみくろん λόγος είναι ότι κάθε κεντρική μονάδα επεξεργασίας κατανοεί διαφορετικό κώδικα μηχανής. Οおみくろん συμβολικός κώδικας (assembly) πぱいοおみくろんυうぷしろん μεταφράζεται κかっぱαあるふぁιいおた εκτελείται σしぐまεいぷしろん Windows είναι διαφορετικός από αυτόν πぱいοおみくろんυうぷしろん μεταφράζεται κかっぱαあるふぁιいおた εκτελείται σしぐまεいぷしろん έναν υπολογιστή Macintosh. Ηいーた λύση δόθηκε μみゅーεいぷしろん τたうηいーたνにゅー ανάπτυξη της Εικονικής Μηχανής (Virtual Machine ή VM ή ΕいぷしろんΜみゅー σしぐまτたうαあるふぁ ελληνικά)[2].

Ηいーた εικονική μηχανή της Java

Επεξεργασία

Αφού γραφεί κάποιο πρόγραμμα σしぐまεいぷしろん Java, σしぐまτたうηいーた συνέχεια μεταγλωττίζεται μέσω τたうοおみくろんυうぷしろん μεταγλωττιστή javac, οおみくろん οποίος παράγει έναν αριθμό από αρχεία .class (κώδικας byte ή bytecode). Οおみくろん κώδικας byte είναι ηいーた μορφή πぱいοおみくろんυうぷしろん παίρνει οおみくろん πηγαίος κώδικας της Java όταν μεταγλωττιστεί. Όταν πρόκειται νにゅーαあるふぁ εκτελεστεί ηいーた εφαρμογή σしぐまεいぷしろん ένα μηχάνημα, τたうοおみくろん Java Virtual Machine πぱいοおみくろんυうぷしろん πρέπει νにゅーαあるふぁ είναι εγκατεστημένο σしぐまεいぷしろん αυτό θしーたαあるふぁ αναλάβει νにゅーαあるふぁ διαβάσει τたうαあるふぁ αρχεία .class. Σしぐまτたうηいーた συνέχεια τたうαあるふぁ μεταφράζει σしぐまεいぷしろん γλώσσα μηχανής πぱいοおみくろんυうぷしろん νにゅーαあるふぁ υποστηρίζεται από τたうοおみくろん λειτουργικό σύστημα κかっぱαあるふぁιいおた τたうοおみくろんνにゅー επεξεργαστή, έτσι ώστε νにゅーαあるふぁ εκτελεστεί. Αυτό συμβαίνει μみゅーεいぷしろん τたうηいーたνにゅー παραδοσιακή Εικονική Μηχανή (Virtual Machine).[3] Πぱいιいおたοおみくろん σύγχρονες εφαρμογές της εικονικής Μηχανής μπορούν κかっぱαあるふぁιいおた μεταγλωττίζουν εいぷしろんκかっぱ τたうωおめがνにゅー προτέρων τμήματα bytecode απευθείας σしぐまεいぷしろん κώδικα μηχανής (εγγενή κώδικα ή native code) μみゅーεいぷしろん αποτέλεσμα νにゅーαあるふぁ βελτιώνεται ηいーた ταχύτητα. Χωρίς αυτό δでるたεいぷしろん θしーたαあるふぁ ήταν δυνατή ηいーた εκτέλεση λογισμικού γραμμένου σしぐまεいぷしろん Java. Ηいーた JVM είναι λογισμικό πぱいοおみくろんυうぷしろん εξαρτάται από τたうηいーたνにゅー πλατφόρμα, δηλαδή γがんまιいおたαあるふぁ κάθε είδος λειτουργικού συστήματος κかっぱαあるふぁιいおた αρχιτεκτονικής επεξεργαστή υπάρχει διαφορετική έκδοση τたうοおみくろんυうぷしろん. Έτσι υπάρχουν διαφορετικές JVM γがんまιいおたαあるふぁ Windows, Linux, Unix, Macintosh, κινητά τηλέφωνα, παιχνιδομηχανές κかっぱλらむだπぱい.

Οτιδήποτε θέλει νにゅーαあるふぁ κάνει οおみくろん προγραμματιστής (ή οおみくろん χρήστης) γίνεται μέσω της εικονικής μηχανής. Αυτό βοηθάει σしぐまτたうοおみくろん νにゅーαあるふぁ υπάρχει μεγαλύτερη ασφάλεια σしぐまτたうοおみくろん σύστημα γιατί ηいーた εικονική μηχανή είναι υπεύθυνη γがんまιいおたαあるふぁ τたうηいーたνにゅー επικοινωνία χρήστη - υπολογιστή. Οおみくろん προγραμματιστής δでるたεいぷしろんνにゅー μπορεί νにゅーαあるふぁ γράψει κώδικα οおみくろん οποίος θしーたαあるふぁ έχει καταστροφικά αποτελέσματα γがんまιいおたαあるふぁ τたうοおみくろんνにゅー υπολογιστή γιατί ηいーた εικονική μηχανή θしーたαあるふぁ τたうοおみくろんνにゅー ανιχνεύσει κかっぱαあるふぁιいおた δでるたεいぷしろん θしーたαあるふぁ επιτρέψει νにゅーαあるふぁ εκτελεστεί. Από τたうηいーたνにゅー άλλη μεριά ούτε οおみくろん χρήστης μπορεί νにゅーαあるふぁ κατεβάσει «κακό» κώδικα από τたうοおみくろん δίκτυο κかっぱαあるふぁιいおた νにゅーαあるふぁ τたうοおみくろんνにゅー εκτελέσει. Αυτό είναι ιδιαίτερα χρήσιμο γがんまιいおたαあるふぁ μεγάλα κατανεμημένα συστήματα όπου πολλοί χρήστες χρησιμοποιούν τたうοおみくろん ίδιο πρόγραμμα συγχρόνως.

Οおみくろん συλλέκτης απορριμμάτων (Garbage Collector)

Επεξεργασία

Ακόμα μία ιδέα πぱいοおみくろんυうぷしろん βρίσκεται πίσω από τたうηいーた Java είναι ηいーた ύπαρξη τたうοおみくろんυうぷしろん συλλέκτη απορριμμάτων (Garbage Collector). Συλλογή απορριμμάτων είναι μία κοινή ονομασία πぱいοおみくろんυうぷしろん χρησιμοποιείται σしぐまτたうοおみくろんνにゅー τομέα της πληροφορικής γがんまιいおたαあるふぁ νにゅーαあるふぁ δηλώσει τたうηいーたνにゅー ελευθέρωση τμημάτων μνήμης από δεδομένα πぱいοおみくろんυうぷしろん δでるたεいぷしろん χρειάζονται κかっぱαあるふぁιいおた δでるたεいぷしろん χρησιμοποιούνται άλλο. Αυτή ηいーた απελευθέρωση μνήμης σしぐまτたうηいーた Java είναι αυτόματη κかっぱαあるふぁιいおた γίνεται μέσω τたうοおみくろんυうぷしろん συλλέκτη απορριμμάτων. Υπεύθυνη γがんまιいおたαあるふぁ αυτό είναι κかっぱαあるふぁιいおた πάλι ηいーた εικονική μηχανή ηいーた οποία μόλις «καταλάβει» ότι οおみくろん σωρός (heap) της μνήμης (σしぐまτたうηいーた Java ηいーた συντριπτική πλειοψηφία τたうωおめがνにゅー αντικειμένων αποθηκεύονται σしぐまτたうοおみくろん σωρό σしぐまεいぷしろん αντίθεση μみゅーεいぷしろん τたうηいーた C++ όπου αποθηκεύονται κυρίως σしぐまτたうηいーた στοίβα) κοντεύει νにゅーαあるふぁ γεμίσει ενεργοποιεί τたうοおみくろん συλλέκτη απορριμμάτων. Έτσι οおみくろん προγραμματιστής δでるたεいぷしろん χρειάζεται νにゅーαあるふぁ ανησυχεί γがんまιいおたαあるふぁ τたうοおみくろん πότε κかっぱαあるふぁιいおた αあるふぁνにゅー θしーたαあるふぁ ελευθερώσει ένα συγκεκριμένο τμήμα της μνήμης, ούτε κかっぱαあるふぁιいおた γがんまιいおたαあるふぁ σφάλματα δεικτών. Αυτό είναι ιδιαίτερα σημαντικό γιατί είναι κοινά τたうαあるふぁ σφάλματα προγραμμάτων πぱいοおみくろんυうぷしろん οφείλονται σしぐまεいぷしろん λανθασμένο χειρισμό της μνήμης.

Ηいーた προεπιλεγμένη μέθοδος γがんまιいおたαあるふぁ συλλογή απορριμμάτων μοιράζει τたうοおみくろん σωρό σしぐまεいぷしろん δύο κομμάτια. Τたうοおみくろん πρώτο, χρησιμοποιείται γがんまιいおたαあるふぁ νέα αντικείμενα κかっぱαあるふぁιいおた λέγεται μαιευτήριο. Αφού επιβιώσουν ένα προεπιλεγμένο αριθμό εκκαθαρίσεων σしぐまτたうοおみくろん μαιευτήριο, ώριμα αντικείμενα μεταφέρονται σしぐまτたうοおみくろん δεύτερο κομμάτι τたうοおみくろんυうぷしろん σωρού. Τたうοおみくろん μαιευτήριο είναι μοιρασμένο σしぐまεいぷしろん δύο κομμάτια, τたうοおみくろんνにゅー από-χωρο κかっぱαあるふぁιいおた τたうοおみくろんνにゅー προς-χωρο. Νέα αντικείμενα τοποθετούνται αρχικά σしぐまτたうοおみくろんνにゅー από-χωρο. Όταν αυτός γεμίσει, ζωντανά αντικείμενα αντιγράφονται σしぐまτたうοおみくろんνにゅー προς-χωρο κかっぱαあるふぁιいおた οおみくろんιいおた δύο χώροι ανταλλάσσουν ρόλο.

Επιδόσεις

Επεξεργασία

Παρόλο πぱいοおみくろんυうぷしろん ηいーた εικονική μηχανή προσφέρει όλα αυτά (κかっぱαあるふぁιいおた όχι μόνο) τたうαあるふぁ πλεονεκτήματα, ηいーた Java αρχικά ήταν πぱいιいおたοおみくろん αργή σしぐまεいぷしろん σχέση μみゅーεいぷしろん άλλες προγραμματιστικές γλώσσες υψηλού επιπέδου (high-level) όπως ηいーた C++. Εμπειρικές μετρήσεις σしぐまτたうοおみくろん παρελθόν είχαν δείξει ότι ηいーた C++ μπορούσε νにゅーαあるふぁ είναι αρκετές φορές γρηγορότερη από τたうηいーたνにゅー Java. Ωστόσο γίνονται προσπάθειες από τたうηいーた Oracle γがんまιいおたαあるふぁ τたうηいーた βελτιστοποίηση της εικονικής μηχανής, ενώ υπάρχουν κかっぱαあるふぁιいおた άλλες υλοποιήσεις της εικονικής μηχανής από διάφορες εταιρίες (όπως της IBM), οおみくろんιいおた οποίες μπορεί σしぐまεいぷしろん κάποια σημεία νにゅーαあるふぁ προσφέρουν καλύτερα κかっぱαあるふぁιいおた σしぐまεいぷしろん κάποια άλλα χειρότερα αποτελέσματα. Επιπλέον μみゅーεいぷしろん τたうηいーたνにゅー καθιέρωση τたうωおめがνにゅー μεταγλωττιστών JIT (Just In Time), οおみくろんιいおた οποίοι μετατρέπουν τたうοおみくろんνにゅー κώδικα byte απευθείας σしぐまεいぷしろん γλώσσα μηχανής, ηいーた διαφορά ταχύτητας από τたうηいーた C++ έχει μικρύνει κατά πολύ.[4]

Οおみくろんιいおた τελευταίες εκδόσεις τたうοおみくろんυうぷしろん javac μみゅーεいぷしろん τたうηいーた χρήση της τεχνολογίας Hot Spot έχουν καταφέρει αξιόλογες επιδόσεις πぱいοおみくろんυうぷしろん πλησιάζουν ή κかっぱαあるふぁιいおた ξεπερνούν σしぐまεいぷしろん μερικές περιπτώσεις τたうοおみくろんνにゅー εγγενή κώδικα.[4]

Ως αντικειμενοστρεφής γλώσσα, ηいーた Java βασίζεται σしぐまεいぷしろん κλάσεις κかっぱαあるふぁιいおた αντικείμενα. Μみゅーιいおたαあるふぁ κλάση (class) είναι μみゅーιいおたαあるふぁ φόρμα γがんまιいおたαあるふぁ τたうηいーた δημιουργία αντικειμένων (objects ή instances). Αφού πρώτα δημιουργηθεί μみゅーιいおたαあるふぁ κλάση, σしぐまτたうηいーた συνέχεια μπορεί νにゅーαあるふぁ χρησιμοποιηθεί γがんまιいおたαあるふぁ τたうηいーたνにゅー παραγωγή αντικειμένων. Παρομοιάζοντας, θしーたαあるふぁ μπορούσαμε νにゅーαあるふぁ πούμε ότι ηいーた κλάση αποτελεί μみゅーιいおたαあるふぁ "συνταγή" γがんまιいおたαあるふぁ τたうηいーた δημιουργία αντικειμένων. Μみゅーιいおたαあるふぁ κλάση περιγράφει μみゅーιいおたαあるふぁ οντότητα, γがんまιいおたαあるふぁ παράδειγμα ηいーた κλάση Student μπορεί νにゅーαあるふぁ περιγράψει ένα φοιτητή, ηいーた κλάση Employee έναν εργαζόμενο, ηいーた κλάση Car ένα αυτοκίνητο κかっぱ.λらむだπぱい. Μみゅーιいおたαあるふぁ κλάση περιλαμβάνει αあるふぁ) πεδία (fields) κかっぱαあるふぁιいおた βべーた) μεθόδους (methods). Τたうαあるふぁ πεδία αντιστοιχούν σしぐまεいぷしろん ιδιότητες τたうωおめがνにゅー αντικειμένων της κλάσης ενώ οおみくろんιいおた μέθοδοι επιτελούν λειτουργίες σしぐまτたうαあるふぁ αντικείμενα της κλάσης. Κάθε μέλος μίας κλάσης, είτε πεδίο είτε μέθοδος, πぱいρろーoσδιορίζεται από έναν προσδιοριστή προσπέλασης (access modifier). Υπάρχουν τέσσερεις προσδιοριστές προσπέλασης: private, package-private (μみゅーεいぷしろん κενό μετρατροπέα), protect κかっぱαあるふぁιいおた public. Τたうαあるふぁ private μέλη είναι ορατά μόνο από τたうηいーたνにゅー ίδια κλάση, τたうαあるふぁ package-private είναι ορατά από κλάσεις τたうοおみくろんυうぷしろん ίδιου πακέτου, τたうαあるふぁ protected από κλάσεις τたうοおみくろんυうぷしろん ίδιου πακέτου κかっぱαあるふぁιいおた από κλάσεις εκτός πακέτου πぱいοおみくろんυうぷしろん επεκτείνουν (extends) αυτήν τたうηいーたνにゅー κλάση, είναι δηλαδή υποκλάσεις της. Τたうαあるふぁ public μέλη είναι ορατά από όλες τις κλάσεις της εφαρμογής.

Έστω, γがんまιいおたαあるふぁ παράδειγμα, ότι θέλουμε νにゅーαあるふぁ δημιουργήσουμε μみゅーιいおたαあるふぁ κλάση ηいーた οποία νにゅーαあるふぁ παριστά τたうηいーたνにゅー οντότητα "φοιτητής" (Student) . Κάθε φοιτητής θしーたαあるふぁ προσδιορίζεται από δύο πεδία, τたうοおみくろん πεδίο code (κωδικός) κかっぱαあるふぁιいおた τたうοおみくろん πεδίο name (όνομα). Επιπλέον, ηいーた κλάση θしーたαあるふぁ περιέχει μεθόδους γがんまιいおたαあるふぁ ανάγνωση κかっぱαあるふぁιいおた τροποποίηση τたうωおめがνにゅー πεδίων code κかっぱαあるふぁιいおた name καθώς κかっぱαあるふぁιいおた μεθόδους γがんまιいおたαあるふぁ κατασκευή νέου αντικειμένου Student (κατασκευαστές). Οおみくろん κώδικας πぱいοおみくろんυうぷしろん ακολουθεί δημιουργεί τたうηいーたνにゅー κλάση Student κかっぱαあるふぁιいおた περιέχει: αあるふぁ) Δύο πεδία, τたうοおみくろん αριθμητικό (int) πεδίο code κかっぱαあるふぁιいおた τたうοおみくろん αλφαριθμητικό (String). name βべーた) Δύο κατασκευαστές, έναν χωρίς παραμέτρους κかっぱαあるふぁιいおた έναν μみゅーεいぷしろん παραμέτρους τις code κかっぱαあるふぁιいおた name. γがんま) Δύο μεθόδους λήψης της τιμής τたうωおめがνにゅー πεδίων (getters), τις getCode() κかっぱαあるふぁιいおた getName. δでるた) Δύο μεθόδους εκχώρησης τιμής (setters) σしぐまτたうαあるふぁ πεδία code κかっぱαあるふぁιいおた name, τις setCode() κかっぱαあるふぁιいおた setName().

public class Student{
    private int code;
    private String name;
    //Kατασκευαστής της κλάσης χωρίς παραμέτρους
    public Student(){
        code = 0;
        name = "";
    }
    //Kατασκευαστής της κλάσης μみゅーεいぷしろん παραμέτρους
    public Student(int code, String name){
        this.code = code;
        this.name = name;
    }
    //Ηいーた μέθοδος επιστρέφει τたうοおみくろんνにゅー κωδικό
    public int getCode(){
        return code;
    }
    //Ηいーた μέθοδος επιστρέφει τたうοおみくろん όνομα
    public String getName(){
        return name;
    }
    //Ηいーた μέθοδος θέτει κωδικό σしぐまεいぷしろん ένα αντικείμενο
    public void setCode(int code){
        this.code = code;
    }
    //Ηいーた μέθοδος θέτει όνομα σしぐまεいぷしろん ένα αντικείμενο
    public void setName(String name){
        this.name = name;
    }
}

Εργαλεία ανάπτυξης

Επεξεργασία

Όλα τたうαあるふぁ εργαλεία πぱいοおみくろんυうぷしろん χρειάζεται κάποιος γがんまιいおたαあるふぁ νにゅーαあるふぁ γράψει Java προγράμματα έρχονται δωρεάν, από τたうοおみくろん περιβάλλον ανάπτυξης μέχρι εργαλεία build όπως τたうοおみくろん Apache Ant κかっぱαあるふぁιいおた βιβλιοθήκες, ενώ υπάρχουν πολλές διαφορετικές υλοποιήσεις της Εικονικής Μηχανής κかっぱαあるふぁιいおた τたうοおみくろんυうぷしろん μεταγλωττιστή (πぱい.χかい. the GNU Compiler for Java) της Java.

Πολλά εργαλεία κかっぱαあるふぁιいおた τεχνολογίες σしぐまεいぷしろん Java μπορούν νにゅーαあるふぁ βρεθούν σしぐまτたうοおみくろん Apache Software Foundation αλλά κかっぱαあるふぁιいおた σしぐまτたうοおみくろん Jakarta Project.

Ολοκληρωμένο περιβάλλον ανάπτυξης (IDE)

Επεξεργασία

Γがんまιいおたαあるふぁ νにゅーαあるふぁ νにゅーαあるふぁ γράψει κάποιος κώδικα Java δでるたεいぷしろん χρειάζεται τίποτα άλλο παρά έναν επεξεργαστή κειμένου, όπως τたうοおみくろん Σημειωματάριο (Notepad) τたうωおめがνにゅー Windows ή οおみくろん vi (γνωστός σしぐまτたうοおみくろん χώρο τたうοおみくろんυうぷしろん Unix). Παρόλ' αυτά, ένα ολοκληρωμένο περιβάλλον ανάπτυξης (IDE) βοηθάει πολύ, ιδιαίτερα σしぐまτたうοおみくろんνにゅー εντοπισμό σφαλμάτων (debugging). Υπάρχουν αρκετά διαθέσιμα IDEs, ενώ πολλά από αυτά παρέχονται δωρεάν. Τたうαあるふぁ πぱいιいおたοおみくろん γνωστά Ολοκληρωμένα Περιβάλλοντα Ανάπτυξης είναι τたうοおみくろん NetBeans της Apache, τたうοおみくろん Eclipse κかっぱαあるふぁιいおた τたうοおみくろん IntelliJ Idea της JetBrains.

Δείτε επίσης

Επεξεργασία

Παραπομπές

Επεξεργασία
  1. (Αγγλικά) «JAVASOFT SHIPS JAVA 1.0». Ιστορική ανακοίνωση, πぱいοおみくろんυうぷしろん δημοσιεύθηκε στις 23/1/1996.
  2. Deitel, Paul· Deitel, Harvey (2015). Java Προγραμματισμός (Ελληνική Μετάφραση) (10ηいーた έκδοση). Αθήνα: Μみゅー. Γκιούρδας. σしぐまεいぷしろんλらむだ. 19. ISBN 978-960-512-681-0. 
  3. (Αγγλικά) «The Java® Virtual Machine Specification, SE 7 Edition» από docs.oracle.com. Ανακτήθηκε 27/1/2018.
  4. 4,0 4,1 Horstmann C. 2015, βべーたλらむだ. πηγές σしぐまεいぷしろんλらむだ. 5-6, 7
  • Cay S. Horstmann «Core Java, Volume I - Fundamentals» Tenth Edition, December 2015.
  • Daniel Y. Liang "Introduction to JAVA programming and data structures" Twelfth Edition, 2020

Εξωτερικοί σύνδεσμοι

Επεξεργασία

Ομάδες χρηστών Java (User Groups)

Επεξεργασία
  • jugs κοινότητα
  • jhug (ελληνική ομάδα χρηστών Java)
  • bejug (βελγική ομάδα χρηστών Java)
  • jugmilano (μιλανέζικη ομάδα χρηστών Java)
  • egjug (αιγυπτιακή ομάδα χρηστών Java)