Περίγραμμα. Η πλατφόρμα της Java. Computer Language Levels. Program terminology. Syntax and Semantics

Σχετικά έγγραφα
Αντικειμενοστρεφής Προγραμματισμός

ΕΠΛ 233: Αντικειμενοστρεφής Προγραμματισμός (Object-oriented programming)

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

Διάλεξη 1: Αντικειμενοστρεφής Προγραμματισμός -Εισαγωγή. Διδάσκων: Παναγιώτης Ανδρέου

Τι σημαίνει; n Για την αποδοτική δέσμευση δομών δεδομένων μη. n Για την αποφυγή «διαρροών μνήμης» (memory leaks).

ΕΠΛ 233: Αντικειμενοστρεφής Προγραμματισμός (Object-oriented programming)

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE)

Είναι μια αλληλουχία κατάλληλων οδηγιών(εντολών) που εκτελεί ο υπολογιστής για την επίλυση ενός προβλήματος.

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE)

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 1: Εισαγωγικές έννοιες

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Λειτουργικά Συστήματα. Εισαγωγή

Γλώσσες Προγραμματισμού Μεταγλωττιστές

Εισαγωγή στα Πληροφοριακά Συστήματα. Ενότητα 5: Λογισμικό - Software

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον προγραμματισμό

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών

ΕΠΛ 133: Αντικειμενοστρεφής Προγραμματισμός (Object-oriented programming)

Εισαγωγή στην Πληροφορική

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Εισαγωγή στον Προγραμματισμό

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

2.1 Αντικειµενοστρεφής προγραµµατισµός

05β Η ιδεατή μηχανή της Java

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #1 η : Εισαγωγή: Λογισμικό, Γλώσσες Προγραμματισμού, Java

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

Ψηφιακή Επεξεργασία Εικόνας

1. For each of the following power series, find the interval of convergence and the radius of convergence:

Homework for 1/27 Due 2/5

ΚΑΤΑΝΟΗΣΗ ΑΝΑΛΥΣΗ ΕΠΙΛΥΣΗ. Ο προγραμματισμός ασχολείται με το σύνολο των εντολών που δίνονται στον υπολογιστή ώστε να υλοποιείται ο αλγόριθμος.

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

Κεφάλαιο 2: Μεταφραστές

Στοίβες. ΟΑΤ της Στοίβας. Περιγραφή και Υλικό Ανάγνωσης. Αφηρηµένοι Τύποι εδοµένων (AΤ )

Δομημένος Προγραμματισμός

Α. Ερωτήσεις Ανάπτυξης

Μαλούτα Θεανώ Σελίδα 1

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Μάθημα 4: Αλγόριθμοι και Γλώσσες Προγραμματισμού Δεκέμβριος 2015 Χ. Αλεξανδράκη

1. Ξεκινώντας. 1.1 Τι είναι η Java. PDF created with FinePrint pdffactory Pro trial version

ΘΕΜΑΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ

ΑΕΠΠ Ερωτήσεις θεωρίας

ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΟΥ ΣΟΒΑΡΟΥ ΣΚΟΠΟΥ ΓΙΑ ΤΗΝ ΕΚΜΑΘΗΣΗ ΕΝΝΟΙΩΝ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΣΕ JAVA

ΚΕΦΑΛΑΙΟ 6. Περιβάλλοντα Ανάπτυξης Εφαρμογών. ΚΕΦΑΛΑΙΟ 6 Περιβάλλοντα Ανάπτυξης Εφαρμογών. Α Γενικού Λυκείου


Last Lecture. Biostatistics Statistical Inference Lecture 19 Likelihood Ratio Test. Example of Hypothesis Testing.

p n r

Προγραμματισμός Ι (HY120)

Οντοκεντρικός Προγραμματισμός

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

IIT JEE (2013) (Trigonomtery 1) Solutions

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

ΚΕΦΑΛΑΙΟ VI. Εισαγωγή στον προγραμματισμό

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 133: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

EPL 603 TOPICS IN SOFTWARE ENGINEERING. Lab 5: Component Adaptation Environment (COPE)

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Πληροφορική 2. Γλώσσες Προγραμματισμού

Αντικειμενοστρεφής Προγραμματισμός

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Πτυχιακή εργασία

Περιεχόµενα. Ανασκόπηση - Ορισµοί. Ο κύκλος ανάπτυξης προγράµµατος. Γλώσσες Προγραµµατισµού Ασκήσεις

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

ΟΡΓΑΝΙΣΜΟΣ ΒΙΟΜΗΧΑΝΙΚΗΣ ΙΔΙΟΚΤΗΣΙΑΣ

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

ΚΕΦΑΛΑΙΟ 6 - ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Αντικειµενοστρεφής Προγραµµατισµός

DESIGN OF MACHINERY SOLUTION MANUAL h in h 4 0.

03 Η ιδεατή μηχανή της Java

SUPERPOSITION, MEASUREMENT, NORMALIZATION, EXPECTATION VALUES. Reading: QM course packet Ch 5 up to 5.6

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Βασικές Αρχές Προγραμματισμού

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Εισαγωγή στην FORTRAN. Δρ. Ιωάννης Λυχναρόπουλος

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

Η ιδεατή μηχανή της Java

ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή.

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Μετάφραση ενός Προγράμματος Εξαιρέσεις

Κεφάλαιο 6 ο. Διαχείριση στοιχείων λογισμικού

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 24/3/2007

Δεδομένα & Αναπαράσταση Πληροφορίας

ΑΝΙΧΝΕΥΣΗ ΓΕΓΟΝΟΤΩΝ ΒΗΜΑΤΙΣΜΟΥ ΜΕ ΧΡΗΣΗ ΕΠΙΤΑΧΥΝΣΙΟΜΕΤΡΩΝ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ

Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1

Προγραμματισμός Υπολογιστών

Transcript:

Περίγραμμα Η πλατφόρμα της Java ΕΠΛ233 - Πρακτικά θέματα και Στόχοι μαθήματος Αντικειμενοστρεφείς Γλώσσες Προγραμματισμούς και JAVA Η πλατφόρμα της JAVA Θεμελίωση Προβλημάτων Αφαιρετικότητα Επίλυση Προβλημάτων Διαδικασία Επίλυσης Υπολογιστικών Προβλημάτων 1 Μ. Δικαιάκος, EΠΛ233 2 Computer Laguage Levels Συμβολική Γλώσσα (assembly) High-level laguage (γλώσσα προγραμματισμού υψηλού επιπέδου): A laguage that people ca read, write, ad uderstad A program writte i a high-level laguage must be traslated ito a laguage that ca be uderstood by a computer before it ca be ru Machie laguage (γλώσσα μηχανής): A laguage that a computer ca uderstad Low-level laguage (γλώσσα προγραμματισμού χαμηλού επιπέδου): Machie laguage or ay laguage similar to machie laguage Copyright 2017 Pearso Ltd. All rights reserved. Γλώσσα Μηχανής 3 4 Program termiology Code - κώδικας: A program or a part of a program Source code (or source program) - πηγαίος κώδικας: A program writte i a high-level laguage such as Java The iput to the compiler program Object code - τελικός κώδικας: The traslated lowlevel program The output from the compiler program, e.g., Java bytecode I the case of Java byte-code, the iput to the Java bytecode iterpreter Sytax ad Sematics Sytax: The arragemet of words ad puctuabos that are legal i a laguage, the grammar rules of a laguage Sema/cs: The meaig of thigs wride while followig the sytax rules of a laguage Copyright 2017 Pearso Ltd. All rights reserved. 5 Copyright 2017 Pearso Ltd. All rights reserved. 6

Tip: Error Messages Tip: Error Messages Bug: A mistake i a program The process of elimiatig bugs is called debuggig Sytax error: A grammabcal mistake i a program The compiler ca detect these errors, ad will output a error message sayig what it thiks the error is, ad where it thiks the error is Ru-/me error: A error that is ot detected ubl a program is ru The compiler caot detect these errors: a error message is ot geerated after compilatio, but after executio Logic error: A mistake i the uderlyig algorithm for a program The compiler caot detect these errors, ad o error message is geerated a>er compila/o or execu/o, but the program does ot do what it is supposed to do Copyright 2017 Pearso Ltd. All rights reserved. 7 Copyright 2017 Pearso Ltd. All rights reserved. 8 Μεταγλωττιστής (compiler) Compiler Ένα πρόγραμμα που ερμηνεύει και μετασχηματίζει τον πηγαίο κώδικα (source code) ενός προγράμματος γραμμένου σε μια γλώσσα προγραμματισμού υψηλού επιπέδου, σε εντολές στη γλώσσα μηχανής κάποιας αρχιτεκτονικής επεξεργαστή. Εκτός από την μεταγλώττιση σε γλώσσα μηχανής, ο μεταγλωττιστής χρησιμοποιεί προχωρημένους αλγορίθμους ανάλυσης κώδικα για να πραγματοποιήσει βελτιστοποιήσεις του τελικού κώδικα, ανάλογα και με τις ιδιαιτερότητες της κάθε μηχανής, όπως: Μεγαλύτερη ταχύτητα εκτέλεσης προγράμματος Οικονομικότερη διαχείριση μνήμης Συμπαγέστερος κώδικας 9 EIΣΟΔΟΣ (iput) /** * Created by mdd o 15/01/2017. */ public class LeapYear { } public static void mai(strig[] args) { it year = Iteger.parseIt(args[0]); } // divisible by 4 boolea isleapyear = (year % 4 == 0); // divisible by 4 ad ot 100 isleapyear = isleapyear && (year % 100!= 0); // divisible by 4 ad ot 100 uless divisible by 400 isleapyear = isleapyear (year % 400 == 0); System.out.pritl(isLeapYear); Mεταγλωττιστής ΕΞΟΔΟΣ (output) A program that traslates a high-level laguage program ito a equivalet low-level laguage program This traslatio process is called compilig 10 Ιterpreter (διερμηνέας) Διερμηνέας (iterpreter) EIΣΟΔΟΣ (iput) /** * Created by mdd o 15/01/2017. */ public class LeapYear { public static void mai(strig[] args) { it year = Iteger.parseIt(args[0]); // divisible by 4 boolea isleapyear = (year % 4 == 0); // divisible by 4 ad ot 100 isleapyear = isleapyear && (year % 100!= 0); // divisible by 4 ad ot 100 uless divisible by 400 isleapyear = isleapyear (year % 400 == 0); System.out.pritl(isLeapYear); } } Διερμηνέας ΕΞΟΔΟΣ (output) 2017 false Στρατηγικές διερμηνέων για εκτέλεση προγραμμάτων: Σάρωση πηγαίου κώδικα και απευθείας εκτέλεσή του Μεταγλώττιση του πηγαίου κώδικα σε κάποια ενδιάμεση αναπαράσταση και απευθείας εκτέλεση του ενδιάμεσου κώδικα Εκτέλεση αποθηκευμένου μεταγλωττισμένου κώδικα, ο οποίος έχει παραχθεί από μεταλγωττιστή ενσωματωμένο στον διερμηνέα Πρόγραμμα που εκτελεί απευθείας τις εντολές του πηγαίου κώδικα (source code) χωρίς προηγουμένως να μετασχηματίσει το πρόγραμμα αυτό σε γλώσσα μηχανής. 11 12

Byte-Code ad the Java Virtual Machie The compilers for most programmig laguages traslate high-level programs directly ito the machie laguage for a particular computer Sice differet computers have differet machie laguages, a differet compiler is eeded for each oe Ο μεταγλωττιστής (javac) μεταφράζει προγράμματα Java σε byte-codes - a machie laguage for a fictitious computer called the Java Virtual Machie. Εικονικές Μηχανές (Virtual Machies): λογισμικό που προσομοιώνει τη λειτουργία ενός υπολογιστικού συστήματος - τρέχει προγράμματα σαν πραγματικό Υ/Σ. VMWare, VirtualBox, AMI Java Virtual Machie (JVM) Εικονική μηχανή που υλοποιεί το σύνολο εντολών ενός Η/Υ με αρχιτεκτονική στοίβας (stack-orieted architecture) Τhe corerstoe of the Java platform. Compoet resposible for JAVA s hardware- ad OS-idepedece, small size of its compiled code, ad ability to protect users from malicious programs. Δέχεται και εκτελεί προγράμματα γραμμένα σε μια μορφή ενδιάμεσου κώδικα, τις δυφιοσυλλαβές Java (Java bytecode). Δεν προϋποθέτει κάποια συγκεκριμένη τεχνολογία υλοποίησης, υλικό ή λειτουργικό σύστημα. Oce compiled to byte-code, a Java program ca be used o ay computer ruig JVM, makig it very portable Copyright 2017 Pearso Ltd. All rights reserved. 13 14 3 όψεις του JVM Προδιαγραφή (specificatio): Α documet that formally describes what is required of a JVM implemetatio. Havig a sigle specificatio esures all implemetatios are iteroperable. Υλοποίηση (implemetatio): A computer program that meets the requiremets of the JVM specificatio. Στιγμιότυπο (istace): A implemetatio of the JVM specificatio, ruig i a process that executes a computer program compiled ito Java bytecode. 15 16 Αρχιτεκτονική JVM Δυφιοσυλλαβές (bytecodes) Compiled code to be executed by the JVM. Represeted usig a hardware- ad operatig system-idepedet biary format, typically (but ot ecessarily) stored i a file, kow as the class file format. Use javap -c fileame.class to view the bytecode istructios iside a class file 17 18

Class files JVM kows othig of the Java programmig laguage, oly of a particular biary format, the class file format. A class file cotais JVM istructios (or bytecodes) ad a symbol table, as well as other acillary iformatio. Ay laguage with fuctioality that ca be expressed i terms of a valid class file ca be hosted by the JVM. For security, JVM imposes strog sytactic ad structural costraits o the code i a class file. Μοντέλο εκτέλεσης Java JVM ca execute a byte code program: Through the Iterpreter: traslates a program writte i Java byte-code ito the machie laguage for a particular computer whe a Java program is executed Traslates ad immediately executes each byte-code istructio, oe after aother Traslatig byte-code ito machie code is relatively easy compared to the iitial compilatio step Usig a Just-I-Time or JIT compiler which compiles a sectio of byte-code at a time ito machie code, ad executes the machie code 19 Faster tha the iterpreter 20 Μοντέλο εκτέλεσης Java Πλεονεκτήματα vs Μειονεκτήματα Η Java συνδυάζει τις δύο τεχνικές της μεταγλώττισης και της διερμηνείας: Πηγαίος κώδικας μεταγλωττίζεται σε JVM bytecode. Tα bytecode μπορούν να εκτελεσθούν άμεσα από τον διερμηνέα της JVM. O διερμηνέας παρακολουθεί επίσης πόσο συχνά εκτελείται το κάθε τμήμα bytecode (ru-time profilig) και προωθεί συχνά εκτελούμενο κώδικα (hot spots) στον «πάνω-στην-ώρα» μεταγλωττιστή (just-i-time - JIT) compiler. Ο JIT μετατρέπει το bytecode σε τελικό κώδικα, και τον τρέχει. Πλεονεκτήματα: Ασφάλεια Εύκολος προγραμματισμός δικτύων (Network-cetric programmig) Ανεξαρτησία αρχιτεκτονικής Μειονεκτήματα: Επίδοση(performace) - όταν γίνεται χρήση διερμηνέα, η εκτέλεση προγραμμάτων είναι πιο αργή από την εκτέλεση ιθαγενή κώδικα (ative code) Δυσκολία άμεσης διαχείρισης μνήμης από τον προγραμματιστή 21 22 Μοντέλο εκτέλεσης JAVA Ο JIT μπορεί να κάνει βελτιστοποιήσεις στον κώδικα που θα μεταφράσει, αξιοποιώντας τις πληροφορίες που συγκεντρώνονται από την παρακολούθηση του τρεχούμενου κώδικα. Δυνατότητα καλύτερης βελτιστοποίησης της επίδοσης από παραδοσιακούς μεταγλωττιστές Η αρχιτεκτονική της Java επιτρέπει: την εκτέλεση κώδικα σε οποιαδήποτε μηχανή στην οποία υπάρχει η JVM και την γρήγορη εκτέλεση σε οποιαδήποτε μηχανή υπάρχει και ο μεταγλωττιστής JIT Σοβαρή βελτιστοποίηση γίνεται για τα hot spots του κώδικα. Μοντέλο εκτέλεσης Java 23 24

JVM πέρα από τη JAVA Class loader 25 26 Class Loader Java programs are divided ito smaller parts called classes Each class defiitio is ormally i a separate file ad compiled separately Class Loader: A program that coects the byte-code of the classes eeded to ru a Java program I other programmig laguages, the correspodig program is called a liker Class Loader The class loader must be able to recogize ad load aythig that coforms to the Java class file format. Performs three basic activities i this strict order: Loadig: fids ad imports the biary data for a type Likig: performs verificatio, preparatio, ad (optioally) resolutio Verificatio: esures the correctess of the imported type Preparatio: allocates memory for class variables ad iitializig the memory to default values Resolutio: trasforms symbolic refereces from the type ito direct refereces. Iitializatio: ivokes Java code that iitializes class variables to their proper startig values. Copyright 2017 Pearso Ltd. All rights reserved. 27 28 Compilig a Java Program or Class Each class defiitio must be i a file whose ame is the same as the class ame followed by.java The class FirstProgram must be i a file amed FirstProgram.java Each class is compiled with the commad javac followed by the ame of the file i which the class resides javac FirstProgram.java The result is a byte-code program whose fileame is the same as the class ame followed by.class FirstProgram.class Ruig a Java Program A Java program ca be give the ru commad (java) after all its classes have bee compiled Oly ru the class that cotais the mai method (the system will automatically load ad ru the other classes, if ay) The mai method begis with the lie: public static void mai(strig[ ] args) Follow the ru commad by the ame of the class oly (o.java or.class extesio) java FirstProgram Copyright 2017 Pearso Ltd. All rights reserved. 29 Copyright 2017 Pearso Ltd. All rights reserved. 30

Κύκλος ζωής απλού προγράμματος Πλατφόρμες Μεταγλωττιστής Ενδιάµεσος Κώδικας διφυοσυλλαβών (bytecodes) Διερµηνέας Περιβάλλοντα λογισμικού και υλικού στα οποία εκτελούνται προγράμματα. Συνήθως είναι συνδυασμός Λειτουργικού Συστήματος και του Υλικού Υποστρώματος του ΛΣ. Δημοφιλείς πλατφόρμες: Microsoft Widows, Liux, Solaris OS, Mac OS. Πλατφόρμα Java Stadard Editio (JAVA SE): Σύστημα λογισμικού που τρέχει πάνω σε διάφορες πλατφόρμες υλικού. Bασικά συστατικά: Java Developmet Kit (JDK) ad Java SE Rutime Eviromet (JRE). 31 32 Η Πλατφόρμα της JAVA SE Βασικά Εργαλεία της Πλατφόρμας Java Το Java Rutime Eviromet (JRE) παρέχει: βιβλιοθήκες (libraries) την Εικονική Μηχανή JAVA (Java Virtual Machie) δομοστοιχεία λογισμικού που χρειάζονται για την εκτέλεση applets και εφαρμογών γραμμένων σε Java Το Java Developmet Kit είναι υπερσύνολο του JRE και περιέχει: ό,τι υπάρχει στο JRE εργαλεία όπως μεταγλωττιστές (compilers), αποσφαλματωτές (debuggers) που χρειάζονται για την ανάπτυξη λογισμικού Εργαλεία Ανάπτυξης Λογισμικού: μεταγλώττιση (compilig), εκτέλεση (ruig), παρακολούθηση (moitorig), αποσφαλμάτωση (debuggig),τεκμηρίωση (documetatio): javac, java laucher, javadoc. Java API (Applicatio Programmig Iterface) Τεχνολογίες Εγκατάστασης Λογισμικού (Deploymet Techologies): Java Web Start, Java Plug-I. Εργαλειοσύνολα Γραφικών Διαπροσωπειών (GUI Toolkits): Swig. Τεχνολογίες Ολοκλήρωσης:JDBC API, JNDI API, Java RMI 33 34 Η Πλατφόρμα της JAVA Τι χρειάζεστε για να ξεκινήσετε; Γλώσσα Προγραμματισμού Java (Java programmig laguage) Η γλώσσα που γράφονται όλα τα προγράμματα JAVA (applets, servlets ad JavaBeas compoets) Πλατφόρμα Java (Java Platform or Java Rutime Eviromet) Προκαθορισμένες κλάσεις(class) που υπάρχουν σε κάθε εγκατάσταση Java. Οργανωμένες σε μορφή βιβλιοθηκών (packages). Διαθέσιμες για χρήση από όλα τα προγράμματα JAVA. JVM 35 36

IDEs: Itegrated Developmet Eviromets (Ενσωματωμένο Περιβάλλον Ανάπτυξης) Διαδικασία Προγραμματισμού User Text Editor (Kwrite, Emacs) Source code (class_ame.java) Compilatio errors Java Compiler (javac) Bytecodes (class_ame.class) Output Java Virtual Machie Eclipse IDE 38 Περίγραμμα ΕΠΛ233 - Πρακτικά θέματα και Στόχοι μαθήματος Αντικειμενοστρεφείς Γλώσσες Προγραμματισμούς και JAVA Η πλατφόρμα της JAVA Θεμελίωση Προβλημάτων Αφαιρετικότητα Επίλυση Προβλημάτων Διαδικασία Επίλυσης Υπολογιστικών Προβλημάτων ItelliJ IDEA 39 Μ. Δικαιάκος, EΠΛ233 «Καλώς ορισμένα» Προβλήματα «Καλώς ορισμένα» Προβλήματα (well-defied problems) Μπορεί να διατυπωθεί ένας σαφής και αυστηρά διατυπωμένος (τυπικός-formal) ορισμός ενός προβλήματος, από την περιγραφή του σε φυσική γλώσσα; Ενδεχομένως με την υιοθέτηση διασαφηνιστικών υποθέσεων που δεν αλλοιώνουν την υφή του προβλήματος Υπάρχει δυνατότητα εύρεσης λύσης που είναι αποδεδειγμένα σωστή (ή μαθηματική απόδειξη ότι δεν μπορεί να βρεθεί λύση;) Η λύση μπορεί να βρεθεί σε πεπερασμένο αριθμό αλγοριθμικών βημάτων; 40 41 Ποιό είναι το αποτέλεσμα της πράξης; 1 x 2 + 3 Ποιό είναι το αποτέλεσμα της πράξης; 1 + 2 x 3 Lakis Express problem: Ποιά είναι η καλύτερη διαδρομή για την παράδοση δεμάτων σε 6 σημεία στον ακόλουθο χάρτη, ξεκινώντας και καταλήγοντας από ένα δεδομένο σημείο; 42

Λευκωσία Ποιό από τα πιο κάτω ισχύει για το πρόβλημα του Lakis Express με 6 σημεία-σταθμούς; Πάφος Είναι καλά ορισμένο Δεν έχει λύση Δεν είναι καλά ορισμένο Έχει λύση αλλά είναι δύσκολη Λάρνακα 43 Πλακόστρωτο μονοπάτι Πλακόστρωτο μονοπάτι (tilig problem) Σας δίνεται ένας πεπερασμένο σύνολο από διαφορετικά έγχρωμα πλακάκια. Επιτρέπεται να τοποθετήσετε δύο πλακάκια δίπλαδίπλα μόνο αν οι συνορεύουσες ακμές τους έχουν το ίδιο χρώμα. ΟΚ Δεν επιτρέπεται να περιστρέψετε τα πλακάκια. Διαθέτετε απεριόριστο αριθμό από κάθε είδος. 45 Σας δίνεται ένας αριθμός από πλακάκια διαφορετικών χρωμάτων και δύο σημεία στο επίπεδο Α και Β. Αναζητείτε έναν αλγόριθμο που να μπορεί να λύσει το ακόλoυθο πρόβλημα: Μπορούμε να συνδέσουμε τα σημεία Α και Β με ένα φιδάκι από πλακάκια, όταν το φιδάκι επιτρέπεται να κινηθεί οπουδήποτε στο επίπεδο: ΝΑΙ ή ΟΧΙ ; ΟΧΙ 44 EΠΛ233 46 Το πλακόστρωτο μονοπάτι ως υπολογιστικό πρόβλημα A A B B??????? Αλγόριθμος ΝΑΙ/ΟΧΙ ΝΑΙ/ ΟΧΙ 47 48

Πότε υπάρχει λύση; Δεδομένου ενός αριθμού από πλακάκια και δύο σημείων στο επίπεδο Α και Β, μπορούμε να συνδέσουμε τα σημεία Α και Β με ένα φιδάκι από πλακάκια, όταν το φιδάκι επιτρέπεται να κινηθεί οπουδήποτε στο επίπεδο: ΝΑΙ ή ΟΧΙ ; Αποδεικνύεται ότι υπάρχει λύση (αλγόριθμος) όταν το φιδάκι μπορεί να επεκταθεί ελεύθερα σε ολόκληρο το επίπεδο: Αν όμως χωρίσουμε το επίπεδο στα δύο και περιορίσουμε την κίνηση του φιδιού στο μισό επίπεδο τότε αποδεικνύεται ότι δεν υπάρχει αλγόριθμος που να μπορεί να μας πει ΝΑΙ ή ΟΧΙ!! Περίγραμμα ΕΠΛ233 - Πρακτικά θέματα και Στόχοι μαθήματος Αντικειμενοστρεφείς Γλώσσες Προγραμματισμούς και JAVA Η πλατφόρμα της JAVA Θεμελίωση Προβλημάτων Αφαιρετικότητα Επίλυση Προβλημάτων Διαδικασία Επίλυσης Υπολογιστικών Προβλημάτων 49 Μ. Δικαιάκος, EΠΛ233 50 Αφαίρεση - abstractio Aφαίρεση - πώς πραγματοποιείται; Εννοιολογική επεξεργασία μέσα από την οποία γενικοί κανόνες και έννοιες προκύπτουν από τη χρήση και ταξινόμηση παραδειγμάτων, σημαινόντων, πρωταρχικών εννοιών, συστημάτων ή λειτουργιών/ μεθόδων. «Αφαίρεση»-αφαιρετική έννοια αποκαλείται επίσης το αποτέλεσμα της διαδικασίας της αφαίρεσης: συνοψίζει τα υπό περιγραφή παραδείγματα, σημαίνοντα, συστήματα, φαινόμενα, λειτουργίες/ μεθόδους. Η διαδικασία της αφαίρεσης συνήθως εμπεριέχει το φιλτράρισμα του πληροφοριακού περιεχομένου μιας έννοιας, ενός συνόλου παραδειγμάτων, παρατηρούμενων φαινομένων, σημαινόντων, συστημάτων, λειτουργιών με στόχο: την απάλειψη πληροφοριών που δεν ενδιαφέρουν ή δεν είναι σημαντικές την επιλογή και συμπερίληψη εκείνων των στοιχείων / πληροφοριών που είναι χρήσιμες / σχετικές για κάποιο συγκεκριμένο σκοπό Πηγή: Wikipedia (https://e.wikipedia.org/wiki/abstractio) 51 52 Αφαίρεση: πού χρησιμοποιείται; Τέχνες Πληροφορική Μηχανική Γλωσσολογία Μαθηματικά Μουσική Νευρολογία Φιλοσοφία Ποιό από τα πιο κάτω αποτελεί «αφηρημένη τέχνη» (abstract art); Ψυχολογία 53 EΠΛ233 54

Αφαιρετικότητα και πραγματικός κόσμος Στις διαφάνειες όπου εµφανίζεται αυτή η σύνθεση, θα µιλάµε για αφαιρετικότητα (abstractio) Λ. Λαµέρας, «Δύο κόρες», 1950 55 Αφαιρετικότητα στον προγραμματισμό Η/Υ Lisp Γλώσσες Υψηλότερου Επιπέδου Διαδικασιακές Γλώσσες (C, Fortra, Modula) Prolog Αφαιρετικότητα στον προγραμματισμό Η/Υ l (setq bar (cos 'x (cdr foo))) addcc %r1,-4,%r1 addcc %r1,%r2,%r4 ld %r4,%r5 ba loop l 01101 01100 00101 01111 1110010101 1110000101 1110011101 1010010101 57 Αφαιρετικότητα δεδομένων τις βασικές ιδιότητες δομών δεδομένων από τις λεπτομέρειες της υλοποίησής τους το τι μπορούμε να πράξουμε με τα δεδομένα από το πώς έχουν αυτά αναπαρασταθεί/κωδικοποιηθεί στον Η/Υ Ελληνική αρίθμηση: α, β, γ, δ, ε, στ, ζ, η, θ, ι Αραβική αρίθμηση: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Λατινική αρίθμηση: I, II, III, IV, V, VI, VII, VIII, IX, X Κινεζική αρίθμηση:,,,,,,,,, Ψηφιακή αρίθμηση: 0, 1 Αποκρύπτουν από τους προγραμματιστές ή τους χρήστες των δομών δεδομένων επουσιώδεις λεπτομέρειες (που δεν είναι ιδιαίτερα σημαντικές για την εργασία τους). Για την ανάπτυξη των περισσοτέρων εφαρμογών συνήθως μας ενδιαφέρει πώς και γιατί μπορούμε να χρησιμοποιήσουμε κάποιες δομές δεδομένων και όχι το πώς αυτές υλοποιούνται ή τι αναπαράσταση έχουν. Διευκολύνεται ο μετασχηματισμός ενός πολύπλοκου προβλήματος σε σύνολο απλούστερων υποπροβλημάτων (διαίρει και βασίλευε). Διευκολύνεται η αλλαγή υλοποίησης μιας λειτουργίας χωρίς να επηρεάζεται η συνολική λειτουργικότητα ενός συστήματος., Πράξεις πάνω στους αριθμούς ακολουθούν τους ίδιους κανόνες ανεξάρτητα του πώς αναπαριστούνται οι αριθμοί. LISP, APL, PROLOG: επιβάλλουν συγκεκριμένη μοντελοποίηση του πραγματικού κόσμου (π.χ. σαν σύνολο από λίστες, σαν αλγορίθμους, ή σαν αλυσίδες αποφάσεων). Π.χ. μπορούμε να αναπαραστήσουμε αριθμούς με πολλούς τρόπους: Αποτελούν αφαιρετική αναπαράσταση των συμβολικών γλωσσών (assembly), οι οποίες με την σειρά τους αποτελούν μια αφαιρετική αναπαράσταση των λειτουργιών του υλικού του Η/Υ. Ο προγραμματιστής καλείται να δημιουργήσει μια σύνδεση ανάμεσα στο μοντέλο μηχανής και στο μοντέλο του προβλήματος που προσπαθεί να επιλύσει. 58 Πλεονεκτήματα data abstractio Data Abstractio. Διαφοροποιεί: Παραδοσιακές «διαδικασιακές» Γ.Π. (Fortra, BASIC, C): siblig(x, Y) :- paret_child(z, X), paret_child(z, Y). Συµβολικές Γλώσσες (assembly) 56 59 60

Πλεονεκτήματα αφαιρετικότητας Πλεονεκτήματα αφαιρετικότητας Γλώσσες Υψηλότερου Επιπέδου Διαδικασιακές Γλώσσες (C, Fortra, Modula) Συµβολικές Γλώσσες (assembly) Υπάρχουν πολλά παραδείγματα αφαιρετικότητας στην πραγματική ζωή. Σκεφτείτε μερικά και αναπτύξτε τα στη σελίδα στα piazza.com Το πρόβληµα του Lakis Express (travelig salesma) 61 62