Java Tutorial Part 1 by HC120525092238

VIEWS: 4 PAGES: 28

									          Εισαγωγή στη JAVΑ
                   (μέρος Α’)
         Βασίλης Παπαταξιάρχης
            {vpap@di.uoa.gr}

Μάθημα: Αντικειμενοστραφής Προγραμματισμός
          Διδάσκουσα: Ιζαμπώ Καράλη
   Τμήμα Πληροφορικής και Τηλεπικοινωνιών
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών
Βασικά Σημεία
   Εισαγωγικές Πληροφορίες για τη γλώσσα Java

   Τεχνολογία Java

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

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

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

   Διαφορές με C++
Ιστορικά Στοιχεία
   Η Java   δημιουργήθηκε το 1991 από τον
    James Gosling κ.ά. στη Sun Microsystems.
   Αρχικά, ονομάστηκε 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 2 Platform
   Αποτελείται από 2 μέρη:                           Java Program
       Java Virtual Machine                             Java APIs
       Java APIs
                                                           JVM

                                                        H/W - OS
   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           bytecode file    interpreter (VM)
Source code
                 compiler

Hello.java        javac             Hello.class              java




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

        WRITE             Text editor        Αρχείο .java

                                             Αρχείο .class
       COMPILE        Java compiler
                                              (bytecode)
                                               Έξοδος
         RUN         Java interpreter
                                            προγράμματος
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 και Διαδίκτυο

   Java Applets
       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/
Την επόμενη φορά…

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

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

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

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

   Επιπρόσθετα Θέματα
Ερωτήσεις ?

								
To top