310 likes | 503 Views
Εισαγωγή στη JAV Α ( μέρος Α’ ). Βασίλης Παπαταξιάρχης {vpap@di.uoa.gr} Μάθημα : Αντικειμενοστραφής Προγραμματισμός Διδάσκουσα : Ιζαμπώ Καράλη Τμήμα Πληροφορικής και Τηλεπικοινωνιών Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών. Βασικά Σημεία. Εισαγωγικές Πληροφορίες για τη γλώσσα Java
E N D
Εισαγωγή στη JAVΑ(μέρος Α’) Βασίλης Παπαταξιάρχης {vpap@di.uoa.gr} Μάθημα: Αντικειμενοστραφής Προγραμματισμός Διδάσκουσα: Ιζαμπώ Καράλη Τμήμα Πληροφορικής και Τηλεπικοινωνιών Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών
Βασικά Σημεία • Εισαγωγικές Πληροφορίες για τηγλώσσα Java • Τεχνολογία Java • Δομή ενός Java προγράμματος • Χαρακτηριστικά της γλώσσας Java • Επιπλέον Δυνατότητες • Διαφορές με C++
Ιστορικά Στοιχεία • Η Java δημιουργήθηκε το 1991 από τον James Gosling κ.ά. στη SunMicrosystems. • Αρχικά, ονομάστηκε Oak. • Αρχικός στόχος ήταν η ανάπτυξη μίας γλώσσας που θα ήταν ανεξάρτητη πλατφόρμας, δηλ. εύκολα θα «έπαιζε» παντού. • Λόγω της ανάπτυξης του Διαδικτύου, η Java βρήκε πρόσφορο έδαφος για ανάπτυξη εφαρμογών.
Τι είναι η Java; • Με τη Java μπορείς να κάνεις ότι και με μία τυπική διαδικαστική γλώσσα. • Βασίζεται στο αντικειμενοστραφές μοντέλο ανάλυσηςκαι σχεδιασμού. • Έχει πολλές ομοιότητεςστο συντακτικό της με τη C++.
Αρχιτεκτονική Java • Ιδιαιτερότητα: “Compile once, run everywhere”
Μεταφερσιμότητα • Τα αρχεία πηγαίου κώδικα Java (.java) μεταγλωττίζονται σε αρχεία bytecode (.class) και όχι σε κώδικα μηχανής (machine code). • Τα bytecode αρχεία είναι ανεξάρτητα μηχανής και μπορούν να εκτελεστούν από μία Java Virtual Machine (JVM). • Υπάρχουν JVM σχεδόν για κάθε πλατφόρμα. • Windows, Linux, Solaris, κ.ά.
ΔομήΠρογραμμάτων • Οι κλάσεις οργανώνονται σε .java αρχεία • Σε κάθε αρχείο πρέπει να υπάρχει το πολύ μία public κλάση • Συνήθης πρακτική: 1 κλάση ανά αρχείο • Το όνομα του αρχείου ταυτίζεται με το όνομα της publicκλάσης που περιέχει
Java Program Java APIs JVM H/W - OS Java 2 Platform • Αποτελείται από 2 μέρη: • Java Virtual Machine • Java APIs • Java APIs • Βιβλιοθήκες που παρέχουν βασικές συναρτήσεις έτοιμες για χρήση • 3 εκδόσεις: • Java 2 Standard Edition (J2SE): desktop και δικτυακές εφαρμογές • Java 2 Enterprise Edition (J2EE): εταιρικές εφαρμογές • Java 2 Micro Edition (J2ME): χρήση σε κινητές συσκευές
Java Virtual Machine • «Εκτελεί» μεταγλωττισμένα Java προγράμματα που ονομάζονται bytecode αρχεία. • Τα bytecode αρχεία είναι ανεξάρτητα πλατφόρμας και μπορούν να εκτελεστούν από οποιονδήποτε υπολογιστή διαθέτει μία JVM. • Η JVM φορτώνει τις κλάσεις που χρειάζονται για να εκτελεστεί το Java πρόγραμμα (class loader). • Η JVM «επικυρώνει» (verifies)την εγκυρότητα των bytecode αρχείων πριν τα εκτελέσει (bytecode verifier).
JDK - JRE • Java Development Kit (JDK) • Περιβάλλον ανάπτυξης εφαρμογών στη γλώσσα Java • Περιέχει JVM και Java βιβλιοθήκες • Εργαλεία, όπως jar και javadoc • Java Runtime Environment (JRE) • Υποσύνολο του JDK • Ουσιαστικά περιέχει μία υλοποίηση της JVM με σκοπό τη δυνατότητα εκτέλεσης προγραμμάτων Java.
Αρχεία Java • Αρχεία Java • .java: πηγαίος κώδικας (source file) • .class : bytecode αρχείο (παράγεται από compiler) • .jar : σύνολα σχετικώνκλάσεων • Μεταγλωττίζουμε τα .java αρχεία που περιέχουν κλάσεις. • Το μεταγλωττισμένο αρχείο .class που εκτελούμε θα πρέπει να περιέχει ακριβώς μία main συνάρτηση (από εκεί ξεκινά η εκτέλεση)
Φάσεις Εκτέλεσης java compiler bytecode file interpreter (VM) Source code Hello.java Hello.class javac java
Hello World • Βήμα 1 • Βήμα 2 • javac HelloWorld.java • Βήμα 3 • java HelloWorld
Τύποι Δεδομένων στη Java (1/2) • Πρωτογενείς τύποι δεδομένων (primitive data types): ειδικοί τύποι δεδομένων, built-ins της γλώσσας, μέγεθος ανεξάρτητο πλατφόρμας • Δεν χρησιμοποιείται η λέξη “new” για τη δημιουργία μίας μεταβλητήςπρωτογενούς τύπου • Π.χ. int i = 1000;
Τύποι Δεδομένων στη Java (2/2) • Αντικείμενα • Στη Java τα πάντα (εκτός των primitives)είναι αντικείμενα της κλάσης java.lang.Object και δημιουργούνται με τη λέξη “new” • Π.χ. Date d = new Date(); String s = new String(“Vassilis”); • Παραδείγματα: • String: ακολουθία χαρακτήρων (κλάση java.lang.String), τυπικά δεν αποτελεί πρωτογενή τύπο δεδομένων, αλλά πρακτικά μπορούμε να τον σκεφτόμαστε ως τέτοιο • Arrays, Collections, Vectors, Int, Double, MyClass κλπ.
Βασικά Στοιχεία της Java • Μεταβλητές • Παρόμοια με C++ • Τελεστές • Παρόμοια με C++ • ‘+’: συνένωση Strings • “instanceof” operator • Π.χ. System.out.println(“Size of array = ” + array.size());
static - final • Static • variable: ανήκει στην κλάση • method: χρησιμοποιεί μόνο παραμέτρους • Final • variable: απαγόρευση αλλαγής τιμής εντός εμβέλειας • method: δε μπορεί να γίνει override • class: δε μπορεί να γίνει extend
Δομές Ελέγχουστη Java • Παρόμοια με C++ • Δομές Επιλογής • if-else • switch-case • Δομές Επανάληψης • for • while • do while • break, continue, return, goto
Δηλώσεις import • Δίνουν εντολή στον compiler να καταστήσει ορατό ένα πακέτο (package)στο αρχείο κώδικα. • Π.χ. import java.util.Vector //μόνο την κλάση Vector import java.util.* //ό,τι περιέχεται στο java.util
Διαχείριση Μνήμης • Γίνεται αυτόματα μέσω ενός νήματος: του garbage collector. • Ένα κομμάτι μνήμης απελευθερώνεται runtime όταν πλέον δεν υπάρχει άλλη αναφορά προς αυτό μέσα στο πρόγραμμα. • Ο χρήστης δεν ασχολείται (και δεν μπορεί άμεσα να το κάνει) με την απελευθέρωση μνήμης
Τεκμηρίωση – Αρχεία .jar • Javadoc • Αυτόματη παραγωγήτεκμηρίωσης σε μορφή html σελίδαςμέσω των αρχείων κώδικα Java • Ο κώδικας συνυπάρχει με το κείμενο τεκμηρίωσης – απευθείας προσπέλαση. • Αρχεία .jar • Διευκολύνει τη διαχείριση των Java αρχείων • Ενοποίηση αρχείων σε πακέτα
Java και Διαδίκτυο • JavaApplets • Web-εφαρμογές και όχι τυπικά java προγράμματα • Τοποθετούνται σε ιστοσελίδες • Εκτελούνται από τη JVM εντός ενός Web browser • Υποστήριξη sockets, servlets, κ.ά.
Άλλες Διαφορές από C++ (1/3) • Η Java δεν επιτρέπει πολλαπλή κληρονομικότητα (για λόγους απλότητας) • Κάθε κλάση μπορεί να κληρονομεί το πολύ από μία άλλη κλάση («extends») • Interfaces: Δομές που περιέχουν «μη υλοποιημένες» συναρτήσεις,χωρίς μεταβλητές-μέλη και δεν είναι κλάσεις • Μία κλάση μπορεί να κάνει «implement» περισσότερα από ένα interface
Άλλες Διαφορές από C++ (2/3) • Η Java θεωρείται εν γένει απλούστερη γλώσσα από τη C++. • Όλες οι Java μέθοδοι είναι όπως οι virtual της C++. • Η Java δεν υποστηρίζει δείκτες (pointers).
Άλλες Διαφορές από C++ (3/3) • Η Java δεν υποστηρίζει defines, typedefs ή preprocessor. Οπότε, δε χρειάζεται ούτε αρχεία κεφαλίδας (header files). • Στη Java δεν υποστηρίζονται καθολικές μεταβλητές. Εναλλακτικά: “static” • Στη Java δεν επιτρέπονται συναρτήσεις εκτός κλάσεων (stand-alone functions).
Προτεινόμενες Πηγές • The Source for Java Developers, http://java.sun.com/ • The Java Tutorials, http://java.sun.com/docs/books/tutorial/ • Learning Java, Pat Niemeyer & Jonathan Knudsen • Thinking in Java,Bruce Eckel,http://www.mindview.net/Books/TIJ/
Την επόμενη φορά… • Λάθη και Εξαιρέσεις • Μετατροπή Αντικειμένων • Είσοδος / Έξοδος • Εργαλεία Ανάπτυξης • Επιπρόσθετα Θέματα