Εισαγωγή στη JAV Α ( μέρος Α’ )

28
Εισαγωγή στη JAVΑ (μέρος Α’) Βασίλης Παπαταξιάρχης {[email protected]} Μάθημα: Αντικειμενοστραφής Προγραμματισμός Διδάσκουσα: Ιζαμπώ Καράλη Τμήμα Πληροφορικής και Τηλεπικοινωνιών Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών

description

Εισαγωγή στη JAV Α ( μέρος Α’ ). Βασίλης Παπαταξιάρχης {[email protected]} Μάθημα : Αντικειμενοστραφής Προγραμματισμός Διδάσκουσα : Ιζαμπώ Καράλη Τμήμα Πληροφορικής και Τηλεπικοινωνιών Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών. Βασικά Σημεία. Εισαγωγικές Πληροφορίες για τη γλώσσα Java - PowerPoint PPT Presentation

Transcript of Εισαγωγή στη JAV Α ( μέρος Α’ )

Page 1: Εισαγωγή στη  JAV Α ( μέρος Α’ )

Εισαγωγή στη JAVΑ(μέρος Α’)

Βασίλης Παπαταξιάρχης{[email protected]}

Μάθημα: Αντικειμενοστραφής ΠρογραμματισμόςΔιδάσκουσα: Ιζαμπώ Καράλη

Τμήμα Πληροφορικής και ΤηλεπικοινωνιώνΕθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών

Page 2: Εισαγωγή στη  JAV Α ( μέρος Α’ )

Βασικά Σημεία

Εισαγωγικές Πληροφορίες για τη γλώσσα Java

Τεχνολογία Java

Δομή ενός Java προγράμματος

Χαρακτηριστικά της γλώσσας Java

Επιπλέον Δυνατότητες

Διαφορές με C++

Page 3: Εισαγωγή στη  JAV Α ( μέρος Α’ )

Ιστορικά Στοιχεία Η Java δημιουργήθηκε το 1991 από τον

James Gosling κ.ά. στη Sun Microsystems. Αρχικά, ονομάστηκε Oak. Αρχικός στόχος ήταν η ανάπτυξη μίας

γλώσσας που θα ήταν ανεξάρτητη πλατφόρμας, δηλ. εύκολα θα «έπαιζε» παντού.

Λόγω της ανάπτυξης του Διαδικτύου, η Java βρήκε πρόσφορο έδαφος για ανάπτυξη εφαρμογών.

Page 4: Εισαγωγή στη  JAV Α ( μέρος Α’ )

Τι είναι η Java;

Με τη Java μπορείς να κάνεις ότι και με

μία τυπική διαδικαστική γλώσσα.

Βασίζεται στο αντικειμενοστραφές

μοντέλο ανάλυσης και σχεδιασμού.

Έχει πολλές ομοιότητες στο συντακτικό

της με τη C++.

Page 5: Εισαγωγή στη  JAV Α ( μέρος Α’ )

Αρχιτεκτονική Java

Ιδιαιτερότητα:“Compile once, run everywhere”

Page 6: Εισαγωγή στη  JAV Α ( μέρος Α’ )

Μεταφερσιμότητα

Τα αρχεία πηγαίου κώδικα Java (.java)

μεταγλωττίζονται σε αρχεία bytecode

(.class) και όχι σε κώδικα μηχανής (machine

code).

Τα bytecode αρχεία είναι ανεξάρτητα

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

μία Java Virtual Machine (JVM).

Υπάρχουν JVM σχεδόν για κάθε πλατφόρμα. Windows, Linux, Solaris, κ.ά.

Page 7: Εισαγωγή στη  JAV Α ( μέρος Α’ )

Δομή Προγραμμάτων

Οι κλάσεις οργανώνονται σε .java αρχεία

Σε κάθε αρχείο πρέπει να υπάρχει το πολύ μία

public κλάση

Συνήθης πρακτική: 1 κλάση ανά αρχείο

Το όνομα του αρχείου ταυτίζεται με το

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

Page 8: Εισαγωγή στη  JAV Α ( μέρος Α’ )

Java 2 Platform

H/W - OS

Java APIs

JVM

Java Program Αποτελείται από 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): χρήση σε κινητές συσκευές

Page 9: Εισαγωγή στη  JAV Α ( μέρος Α’ )

Java Virtual Machine

«Εκτελεί» μεταγλωττισμένα Java προγράμματα που

ονομάζονται bytecode αρχεία.

Τα bytecode αρχεία είναι ανεξάρτητα πλατφόρμας και

μπορούν να εκτελεστούν από οποιονδήποτε υπολογιστή

διαθέτει μία JVM.

Η JVM φορτώνει τις κλάσεις που χρειάζονται για να

εκτελεστεί το Java πρόγραμμα (class loader).

Η JVM «επικυρώνει» (verifies) την εγκυρότητα των

bytecode αρχείων πριν τα εκτελέσει (bytecode

verifier).

Page 10: Εισαγωγή στη  JAV Α ( μέρος Α’ )

JDK - JRE

Java Development Kit (JDK) Περιβάλλον ανάπτυξης εφαρμογών στη γλώσσα Java

Περιέχει JVM και Java βιβλιοθήκες

Εργαλεία, όπως jar και javadoc

Java Runtime Environment (JRE) Υποσύνολο του JDK

Ουσιαστικά περιέχει μία υλοποίηση της JVM με σκοπό

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

Page 11: Εισαγωγή στη  JAV Α ( μέρος Α’ )

Αρχεία Java

Αρχεία Java .java : πηγαίος κώδικας (source file) .class : bytecode αρχείο (παράγεται από compiler) .jar : σύνολα σχετικών κλάσεων

Μεταγλωττίζουμε τα .java αρχεία που περιέχουν κλάσεις.

Το μεταγλωττισμένο αρχείο .class που εκτελούμε θα πρέπει να περιέχει ακριβώς μία main συνάρτηση (από εκεί ξεκινά η εκτέλεση)

Page 12: Εισαγωγή στη  JAV Α ( μέρος Α’ )

Φάσεις Εκτέλεσης

Φάση Εργαλείο Έξοδος

WRITE Text editor Αρχείο .java

COMPILE Java compilerΑρχείο .class (bytecode)

RUN Java interpreterΈξοδος

προγράμματος

Hello.java javac Hello.class java

Source codejava

compilerbytecode file interpreter (VM)

Page 13: Εισαγωγή στη  JAV Α ( μέρος Α’ )

Hello World

Βήμα 1

Βήμα 2 javac HelloWorld.java

Βήμα 3 java HelloWorld

Page 14: Εισαγωγή στη  JAV Α ( μέρος Α’ )

Τύποι Δεδομένων στη Java (1/2) Πρωτογενείς τύποι δεδομένων (primitive data

types): ειδικοί τύποι δεδομένων, built-ins της γλώσσας, μέγεθος ανεξάρτητο πλατφόρμας

Δεν χρησιμοποιείται η λέξη “new” για τη δημιουργία μίας μεταβλητής πρωτογενούς τύπου Π.χ. int i = 1000;

Page 15: Εισαγωγή στη  JAV Α ( μέρος Α’ )

Τύποι Δεδομένων στη 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 κλπ.

Page 16: Εισαγωγή στη  JAV Α ( μέρος Α’ )

Βασικά Στοιχεία της Java Μεταβλητές

Παρόμοια με C++

Τελεστές Παρόμοια με C++ ‘+’: συνένωση Strings “instanceof” operator Π.χ.

System.out.println(“Size of array = ” + array.size());

Page 17: Εισαγωγή στη  JAV Α ( μέρος Α’ )

static - final

Static variable: ανήκει στην κλάση method: χρησιμοποιεί μόνο παραμέτρους

Final variable: απαγόρευση αλλαγής τιμής εντός

εμβέλειας method: δε μπορεί να γίνει override class: δε μπορεί να γίνει extend

Page 18: Εισαγωγή στη  JAV Α ( μέρος Α’ )

Δομές Ελέγχου στη Java

Παρόμοια με C++ Δομές Επιλογής

if-else switch-case

Δομές Επανάληψης for while do while

break, continue, return, goto

Page 19: Εισαγωγή στη  JAV Α ( μέρος Α’ )

Δηλώσεις import

Δίνουν εντολή στον compiler να καταστήσει ορατό ένα πακέτο (package) στο αρχείο κώδικα.

Π.χ. import java.util.Vector //μόνο την κλάση Vectorimport java.util.* //ό,τι περιέχεται στο java.util

Page 20: Εισαγωγή στη  JAV Α ( μέρος Α’ )

Διαχείριση Μνήμης Γίνεται αυτόματα μέσω ενός νήματος: του

garbage collector. Ένα κομμάτι μνήμης απελευθερώνεται runtime

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

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

Page 21: Εισαγωγή στη  JAV Α ( μέρος Α’ )

Τεκμηρίωση – Αρχεία .jar

Javadoc Αυτόματη παραγωγή τεκμηρίωσης σε μορφή

html σελίδας μέσω των αρχείων κώδικα Java

Ο κώδικας συνυπάρχει με το κείμενο τεκμηρίωσης – απευθείας προσπέλαση.

Αρχεία .jar Διευκολύνει τη διαχείριση των Java αρχείων

Ενοποίηση αρχείων σε πακέτα

Page 22: Εισαγωγή στη  JAV Α ( μέρος Α’ )

Java και Διαδίκτυο

Java Applets Web-εφαρμογές και όχι τυπικά java

προγράμματα Τοποθετούνται σε ιστοσελίδες Εκτελούνται από τη JVM εντός ενός Web

browser

Υποστήριξη sockets, servlets, κ.ά.

Page 23: Εισαγωγή στη  JAV Α ( μέρος Α’ )

Άλλες Διαφορές από C++ (1/3) Η Java δεν επιτρέπει πολλαπλή κληρονομικότητα

(για λόγους απλότητας) Κάθε κλάση μπορεί να κληρονομεί το πολύ από μία

άλλη κλάση («extends») Interfaces: Δομές που περιέχουν «μη υλοποιημένες»

συναρτήσεις, χωρίς μεταβλητές-μέλη και δεν είναι κλάσεις

Μία κλάση μπορεί να κάνει «implement» περισσότερα από ένα interface

Page 24: Εισαγωγή στη  JAV Α ( μέρος Α’ )

Άλλες Διαφορές από C++ (2/3)

Η Java θεωρείται εν γένει απλούστερη γλώσσα από τη C++.

Όλες οι Java μέθοδοι είναι όπως οι virtual της C++.

Η Java δεν υποστηρίζει δείκτες (pointers).

Page 25: Εισαγωγή στη  JAV Α ( μέρος Α’ )

Άλλες Διαφορές από C++ (3/3)

Η Java δεν υποστηρίζει defines, typedefs ή

preprocessor. Οπότε, δε χρειάζεται ούτε αρχεία

κεφαλίδας (header files).

Στη Java δεν υποστηρίζονται καθολικές

μεταβλητές. Εναλλακτικά: “static”

Στη Java δεν επιτρέπονται συναρτήσεις εκτός

κλάσεων (stand-alone functions).

Page 26: Εισαγωγή στη  JAV Α ( μέρος Α’ )

Προτεινόμενες Πηγές

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/

Page 27: Εισαγωγή στη  JAV Α ( μέρος Α’ )

Την επόμενη φορά…

Λάθη και Εξαιρέσεις

Μετατροπή Αντικειμένων

Είσοδος / Έξοδος

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

Επιπρόσθετα Θέματα

Page 28: Εισαγωγή στη  JAV Α ( μέρος Α’ )

Ερωτήσεις ?