Uploaded by yassgame2002

01-JavaPresentation 2023

advertisement
‫جامعة الحسن الثاني الدار البيضاء‬
‫المدرسة العليا للتكنولوجيا‬
‫‪object-oriented‬‬
‫‪programmingWith‬‬
‫‪java‬‬
‫البرمجة الشيئية باستخدام جافا‬
‫من إعداد العربي حسوني‬
‫‪Prepared by :‬‬
‫‪Larbi Hassouni‬‬
‫‪Présentation de Java‬‬
‫‪1‬‬
‫‪HASSOUNI Larbi‬‬
: ‫( المراجع الرئيسية‬main references)
Sites : ‫مواقع الويب‬
1. www.oracle.com (le plus complet et le plus à jour : c'est la principale source)
2. http://deptinfo.unice.fr/~grin/
Livres : ‫كتب‬
1. Au cœur de Java 2 : Notions fondamentales (Cay S.Horstmann & Gary Cornell)
2. Au cœur de Java2 : Foctions avancées(Cay S.Horstmann & Gary Cornell)
3. BIG Java (Cay S.Horstmann)
4. Java How to program (Deitel)
5. Beginning Java 2 (Ivor Horton)
6. Practical Database Programming with Java (Ying Bai)
7. Data Structures & Algorithms in JAVA (MICHAEL T. GOODRICH, ROBERTO TAMASSIA)
8. Object-Oriented Data Structures Using Java (NELL DALE, DANIEL T.JOYCE, CHIP
WEEM)
9. Conception et programmation orientée objet (Bertrand Meyer)
10. Java En Concentré (David Flanagan)
HASSOUNI Larbi
Présentation de Java
2
JAVA TECHNOLOGY :
• • The ava technology is
developed by SUN
Microsystems™ in 1995
and mainly consists of
three components:
• A programming language
• A platform, software
environment in which java
programs run.
• An API (Application
Programming Interface)
HASSOUNI Larbi
‫تقنية جافا‬
‫تم تطوير تقنية جافا بواسطة شركة‬
1995 ‫سان ميكروسسطم في عام‬
:‫وتتكون بشكل أساسي من ثالثة مكونات‬
‫لغة برمجة‬
‫ بيئة برمجية تعمل فيها برامج‬، ‫منصة‬
.‫جافا‬
)‫)واجهة برمجة التطبيقات‬API
Présentation de Java
3
• Java technology is
used in many fields of
application and
particularly in:
• Application servers
(Java EE)
• Cellphones
• Smart cards (JME)
HASSOUNI Larbi
Présentation de Java
‫• يتم استخدام تقنية جافا‬
‫في العديد من مجاالت‬
:‫التطبيق وخاصة في‬
‫خوادم التطبيقات‬‫هاتف خليوي‬‫بطاقات ذكية‬-
4
Example of program in JAVA
The class code must be saved
in a file with the same name
(case included) as the class
3
HelloWorld.java
1
All java code must be defined
inside a class
public class HelloWorld {
public static void main(String[ ] args) {
for(int i = 1; i <= 5; i++) {
if(i%2 == 1){
System.out.println("Hello World !"); 2
}
}
}
4
The entry
point for
execution
is
main()
method
Compilation :
The
description of
the
class is
performed
inside a block
{}
}
javac HelloWorld.java
--------------------
HelloWorld.java
javac
Execution :
java HelloWorld.
--------------------
HelloWorld.class
java
Hello World !
Hello world !
Hello World !
5
Example of program in JAVA
The class code must be saved
in a file with the same name
(case included) as the class
3
HelloWorld.java
1
‫يجب تحديد جميع رموز جافا داخل‬
‫فئة‬
public class HelloWorld {
public static void main(String[ ] args) {
‫يتم وصف الفئة داخل‬
‫}{ كتلة‬
for(int i = 1; i <= 5; i++) {
if(i%2 == 1){
System.out.println("Hello World !"); 2
}
}
}
4
‫نقطة الدخول‬
‫للتنفيذ هي‬
‫الطريقة الرئيسية‬
main()
}
‫التحويل البرمجي‬:
javac HelloWorld.java
--------------------
HelloWorld.java
javac
‫تنفيذ‬:
java HelloWorld.
--------------------
HelloWorld.class
java
Hello World !
Hello world !
Hello World !
6
‫ترجمة مصدر البرنامج‬
Compiling source code
➢ Source code cannot be
executed directly by a
computer
‫ال يمكن تنفيذ مصدر البرنامج‬
‫مباشرة عن طريق الكمبيوتر‬
➢ This source code must be
translated into a language that
the computer (the computer's
processor) can understand
(native language)
‫يجب ترجمة مصدر البرنامج هذا‬
‫إلى لغة يستطيع الكمبيوتر (معالج‬
)‫الكمبيوتر) فهمها (اللغة األم‬
‫المترجم هو برنامج يقوم بهذه‬
‫الترجمة‬
➢ A compiler is a program that
performs this translation
HASSOUNI Larbi
Présentation de Java
7
Compiling in Java → bytecode
‫ترجمة في جافا‬
• In Java, the source code is not
translated directly into the
language of the computer
• It is first translated into a
language called "bytecode",
the language of a virtual
machine (JVM; Java Virtual
Machine) defined by Sun
• This language (bytecode) is
independent of the computer
that will run the program
HASSOUNI Larbi
‫ ال تتم ترجمة الكود المصدري‬، ‫في جافا‬
‫مباشرة إلى لغة الكمبيوتر‬
‫يتم ترجمتها أوالً إلى لغة تسمى "بايث‬
‫ وهي لغة اآللة االفتراضية (جفم‬، "‫كود‬
‫؛ جاف فرتيال ماشين ) التي حددتها‬
‫شركة سان‬
‫هذه اللغة (بايث كود) مستقلة عن‬
‫الكمبيوتر الذي سيقوم بتشغيل البرنامج‬
Présentation de Java
8
Compilation provides bytecode
‫الترجمة تنتج البايت كود‬
source program
‫برنامج المصدر‬
OneClass.java
Program written in Java
‫برنامج مكتوب بلغة جافا‬
Compiler
‫مترجم‬
Program in bytecode is
independent of the computer
‫ مستقل عن‬، ‫البرنامج في البايت كود‬
‫الكمبيوتر‬
HASSOUNI Larbi
Bytecode
OneClass.class
Présentation de Java
9
Compiling with: ‫ترجمة بواسطة‬
javac
Sun provides the javac compiler with the JDK
)‫توفر شركة سان المترجم جافاس مع (ج د ك‬
javac HelloWorld.java
creates a "HelloWorld.class" file that contains the bytecode,
located in the same directory as the file «.java »
‫كلس" يحتوي على رمز البايت كود الموجود في نفس‬٠‫يقوم بإنشاء ملف "هلوورلد‬
"‫جافا‬٠" ‫المجلد مثل الملف‬
You can designate the file to compile by an absolute or relative
path: :‫يمكن تعيين الملف ليتم ترجمته بواسطة مسار مطلق أو نسبي‬
javac SousRep/HelloWorld.java
10
Java is compiled and interpreted language
‫جافا هو لغة مترجمة ومفسرة‬
• Compilation of a JAVA program: generation of byte-code
‫ إنشاء البايت كود‬:‫ترجمة برنامج جافا‬
public class Test {
public static void main(String[ ] args)
{
for (int i = 0; i < 10; i++)
System.out.println("Hello " + i);
}
}
javac
Test.java
Source code
‫مصدر الرمز‬
01100001
11100000
11111010
11101...
...
Test.class
byte-code
‫بايت كود‬
• The byte code is:
– close to a machine language
– independent of the execution platform (hardware + OS)
:‫البايت كود هو‬
‫ قريب من لغة اآللة‬)‫ نظام التشغيل‬+ ‫ مستقل عن منصة التنفيذ (األجهزة‬-
javap –c Test
Unassemble Test.class
‫تفكيك‬
0 iconst_0
1 istore_1
2 goto 30
5 getstatic #10 <Field
java.io.PrintStream
8 new #5 <Class
java.lang.StringBuffer
11 dup
12 ldc #1 <String "Hello ">
….
27 iinc 1 1
30 iload_1
31 bipush 10
33 if_icmplt 5
36 return
11
Bytecode exécution ‫تنفيذ البايت كود‬
The bytecode must be executed by a JVM
"‫يجب تنفيذ البايت كود بواسطة "جفم‬
This JVM does not exist; it is simulated by a program which:
:‫هاته "جفم" غير موجودة واقعيا ؛ ويتم محاكاتها بواسطة برنامج‬
– reads the instructions (in bytecode) of the .class program,
«‫كالس‬٠" ‫يقرأ التعليمات (بالبايت كود) الموجودة في البرنامج‬
– translates them into the native language of the computer
processor ‫ يترجمها إلى اللغة األم لمعالج الكمبيوتر‬– launch their exécution : ‫يطلق تنفيد التعليمات‬
HASSOUNI Larbi
Présentation de Java
12
Running with java : ‫التنفيد بواسطة جافا‬
♠Sun provides the java program that simulates a JVM
"‫م‬٠‫ف‬٠‫توفر شركة سان برنامج جافا الذي يحاكي "ج‬
♠ java HelloWorld
Class name: )‫اسم الفصيلة (او الفئة‬
no suffixmethod
: .class: ‫الحقة‬
‫دون‬
main()
of the
interprets the bytecode of the
HelloWorld class :
"‫يفسر بايت كود الطريقة الرئيسية "مان()" لفئة "هللوورلد‬
♠ HelloWorld.class must be in the current directory or in
one of the locations indicated by an option
-classpath or by the CLASSPATH variable
‫كالس" في المجلد الحالي أو في أحد المواقع المشار‬٠‫يجب أن تكون "هللووورلد‬
:‫إليها بواسطة أحد الخيارات‬
"‫"كالسباث" أو بواسطة متغير "كالسباث‬13
JVM
♠ Systems that want to be able to run a
Java program must provide a JVM
‫يجب على األنظمة التي تريد أن تكون قادرة على تشغيل‬
"٠‫م‬٠‫ف‬٠‫برنامج جافا أن توفر "ج‬
♠ Currently, all systems have a JVM
"٠‫م‬٠‫ف‬٠‫ جميع األنظمة تحتوي على "ج‬، ‫حاليًا‬
(Linux, Windows, MacOs,…)
HASSOUNI Larbi
Présentation de Java
14
The bytecode can be executed by any JVM
"٠‫م‬٠‫ف‬٠‫يمكن تنفيذ "البايت كود" بواسطة أي "ج‬
Bytecode
OneClass.class
WRITE ONCE
‫اكتب مرة واحدة‬
RUN EVERYWHERE ‫ونفد في كل مكان‬
JVM in Unix,
processor SPARC
HASSOUNI Larbi
JVM in Windows,
processor Intel
JVM in Linux,
processor Intel
JVM in MacOS,
processor Motorola
15
Benefits of JVM for Internet ‫" لإلنترنت‬٠‫م‬٠‫ف‬٠‫فوائد "ج‬
♠ Thanks to its portability, the bytecode of a class can be
loaded from a machine in a distant network, and executed
by a local JVM
، ‫ يمكن تحميل "البايت كود" لفصيلة ما من جهاز في شبكة بعيدة‬، ‫بفضل قابليته للنقل‬
‫" محلية‬٠‫م‬٠‫ف‬٠‫وتنفيذه بواسطة "ج‬
♠ The JVM makes many checks on the bytecode before its
execution to ensure that it will not perform any dangerous
action.
‫" بإجراء العديد من عمليات التحقق على "البايت كود" قبل تنفيذه‬٠‫م‬٠‫ف‬٠‫تقوم "ج‬
‫للتأكد من أنه لن يقوم بأي إجراء خطير‬
♠ Therefore, the JVM brings
– flexibility for loading the code to be executed
– but also security for the execution of this code
:"٠‫م‬٠‫ف‬٠‫ تحقق "ج‬، ‫لذلك‬
‫ المرونة في تحميل الكود المطلوب تنفيذه‬"‫ضا األمان لتنفيذ هذا" الكود‬
ً ‫ ولكن أي‬16
The JVM causes some slowness...
... ‫" بعض البطء‬٠‫م‬٠‫ف‬٠‫تسبب"ج‬
♠ The checks performed on the bytecode and the step of
interpreting this bytecode (in the native language of the
processor) slow down the execution of Java classes.
‫عمليات التحقق التي يتم إجراؤها على "البايت كود" وعملية تفسيره (في اللغة األصلية‬
٠‫للمعالج) تبطئ من تنفيذ فئات جافا‬
♠ But “Just In Time (JIT)” or “Hotspot” techniques reduce this
problem:
They allow the instructions that are executed to be translated
only once into native code.
:‫لكن تقنيات "جست ان تايم" أو"هوتسبوت" تقلل من هذه المشكلة‬
‫ الى اللغة األصلية للكمبيوتر مرة واحدة‬،‫ التي يتم تنفيذها‬،‫إنها تسمح ترجمة التعليمات‬
.‫فقط‬
HASSOUNI Larbi
Présentation de Java
17
Java and other languages ‫جافا ولغات البرمجة األخرى‬
♠ Java has become in a few years one of the most used
development languages, especially for applications that need
great portability or great flexibility on the Internet.
‫ خاصة‬، ‫أصبحت لغة جافا في بضع سنوات واحدة من أكثر لغات التطوير استخدا ًما‬
.‫للتطبيقات التي تحتاج إلى قابلية كبيرة للنقل أو مرونة كبيرة على اإلنترنت‬
♠ For applications that require very high execution speed, we
still prefer the languages C, C++, or the good old Fortran.
(which has libraries widely used for scientific computing)
‫ ما زلنا نفضل اللغات "س" أو‬، ‫بالنسبة للتطبيقات التي تتطلب سرعة تنفيذ عالية جدًا‬
. ‫" أو لغة "فورتران" القديمة‬++‫"س‬
)‫(التي توفر عدة مكتبات تستخدم على نطاق واسع للحوسبة العلمية‬
HASSOUNI Larbi
Présentation de Java
18
Java specifications ‫مواصفات جافا‬
♠ Java is actually: ‫جافا في الواقع‬
– the Java language: ‫لغة جافا‬
http://java.sun.com/docs/books/jls/
– One JVM : "٠‫م‬٠‫ف‬٠‫"ج‬
http://java.sun.com/docs/books/vmspec/
– les API : "‫ء‬٠‫ب‬٠‫"ا‬
Set of predefined classes spread over several packages
‫مجموعة من الفئات المحددة مسبقًا موزعة على عدة حزم‬
♠ Java is not standardized; its evolution is managed by the
JCP (Java Community Process; http://www.jcp.org/) in
which Oracle plays a major role.
‫ب" (عملية مجتمع جافا) ؛‬٠‫س‬٠‫جافا ليست موحدة ؛ تتم إدارة تطورها بواسطة "ج‬
‫دورا رئيسيًا‬
ً "‫حيث تلعب "اوراكل‬
19
Java platform
API (Application Programming Interface) :
standard class libraries
HASSOUNI Larbi
Présentation de Java
20
3 editions of Java
♠ Java SE : Java Standard Edition ; JDK = J2SE
Development Kit, also called SDK (Software
Development Kit) for some versions
Provides compilers, tools, runtimes, and APIs to write,
deploy, and run applets and applications
♠ JavaEE : Enterprise Edition which adds the APIs to write
applications installed on servers into distributed
applications : servlet, JSP, EJB,…
♠ JavaME : Micro Edition, light version of Java for writing
embedded programs (smart cards/Java card,
mobile phones, etc.)
HASSOUNI Larbi
Présentation de Java
21
Your development
environment
♠ Text editor (NotePad)
♠ Compiler (javac)
♠ Bytecode interpreter(java)
♠ JDK online help (Web browser)
♠ Automatic documentation generator(javadoc)
♠ applet tester(appletviewer)
♠ Debugger(jdb)
HASSOUNI Larbi
Présentation de Java
22
Your development
environment
♠ Many IDEs(Integrated Development Environment)
Java Studio
Creator
Sunsoft
JDeveloper
Oracle
WebSphere Studio
Application Developper
(VisualAge) IBM
JBuilder
Borland
♠ Open-source or freeware environments
Eclipse
www.eclipse.org
NetBeans
www.netbeans.org
BlueJ
www.bluej.org
Emacs + JDE
http://sunsite.auc.dk/jde
HASSOUNI Larbi
23
Environment variables
♠ PATH : must include the directory that contains the Java
utilities(javac, java, javadoc,…)
♠ CLASSPATH : indicates the user class search path
♠ The beginner must not have a variable CLASSPATH
HASSOUNI Larbi
Présentation de Java
24
A Point class
/** Model a coordinate point x, y */
public class Point extends Object{
private int x, y;
public Point(int x, int y) { // a constructor
super();
this.x = x;
this.y = y;
}
public double distance(Point p) { // a method
return Math.sqrt((this.x-p.x)*(this.x-p.x) + (this.yp.y)*(this.y-p.y));
}
public static void main(String[] args) {
Point p1 = new Point(1, 2);
Point p2 = new Point(5, 1);
System.out.println("Distance
: " + p1.distance(p2));
HASSOUNI Larbi
Présentation de Java
25
}
2 classes in 1 file
/** Model a coordinate point x, y */
public class Point {
private int x, y;
public Point(int x1, int y1) {
x = x1; y = y1;
}
public double distance(Point p) {
return Math.sqrt((x-p.x)*(x-p.x) + (y-p.y)*(y-p.y));
}
}
Point.java file
/** Test the Point class */
class TestPoint {
public static void main(String[] args) {
Point p1 = new Point(1, 2);
Point p2 = new Point(5, 1);
System.out.println("Distance : " + p1.distance(p2));
}
}
HASSOUNI Larbi
26
Compiling and running the
Point class
Compiling the Point.java file
javac Point.java
provides 2 class files : Point.class and TestPoint.class
We launch the execution of the TestPoint class which has
a main() method
java TestPoint
HASSOUNI Larbi
Présentation de Java
27
2 classes in 2 files
/** Models a point with x, y coordinates */
public class Point {
private int x, y;
public Point(int x1, int y1) {
x = x1; y = y1;
}
Point.java file
public double distance(Point p) {
return Math.sqrt((x-p.x)*(x-p.x) + (y-p.y)*(y-p.y));
}
}
/** To test the Point class */
TestPoint.java file
class TestPoint {
public static void main(String[] args) {
Point p1 = new Point(1, 2);
Point p2 = new Point(5, 1);
System.out.println("Distance : " + p1.distance(p2));
}
} HASSOUNI Larbi
Présentation de Java
28
Architecture of a Java source program
♠ Java source program = set of “.java” files
♠ Each “.java” file contains one or more class definitions
♠ At most one public class definition per “.java” file (with file
name = public class name)
HASSOUNI Larbi
29
Dynamic class loading
♠ During the execution of a Java code, the classes (their
bytecode) are loaded into the JVM as needed
♠ A class can be loaded :
– from the local machine (the most frequent case)
– from another machine, via the network
– by any other means (database, etc.)
HASSOUNI Larbi
Présentation de Java
30
Types of Java Programs
You can develop three types of programs with java
1- Independent applications (or stand alone)
2- Applets executed in the environment/JVM of a Web
browser and loaded by an HTML page
3- Client/Server applications that run on an application
server
HASSOUNI Larbi
Présentation de Java
31
Independent applications
♠ Application must have a main class
– class having a method with the signature
public static void main(String[ ] args)
Array of strings
(equivalent to argc, argv in C)
♠ This method serves as an entry point for the execution of the
application
♠ Launching the application is done by executing the main method of the
application's main class; for example :
java TestPoint
launches the interpretation of the code of the main() method of the
principal TestPoint class found in the TestPoint.class file
HASSOUNI Larbi
Présentation de Java
32
Applet
♠ Classe ne possédant pas de méthode main()
• Hérite de java.awt.Applet ou javax.swing.JApplet
• Son bytecode réside sur un serveur http
• Elle est véhiculée vers un client http (navigateur Web) via une
page HTML qui contient son url
• Lorsqu’un navigateur compatible Java (avec sa propre
machine virtuelle java (JVM)) reçoit cette page HTML, il
télécharge le code de la classe et l’exécute sur le poste client
– l’applet doit posséder un certain nombre de méthodes pour
permettre cette exécution :
init(), start(), stop(), paint(), destroy()
HASSOUNI Larbi
Présentation de Java
33
Exemple d’applet
import java.awt.*;
import java.applet.*;
public class Checkerboard extends Applet {
/* This applet draws a red-and-black checkerboard.
It is assumed that the size of the applet is 160 by 160 pixels.
*/
public void paint(Graphics g) {
int row; // Row number, from 0 to 7
int col; // Column number, from 0 to 7
int x,y; // Top-left corner of square
for ( row = 0; row < 8; row++ ) {
for ( col = 0; col < 8; col++) {
x = col * 80;
y = row * 80;
if ( (row % 2) == (col % 2) )
g.setColor(Color.red);
else
g.setColor(Color.black);
g.fillRect(x, y, 80, 80);
}
} // end for row
} // end paint()
} // end class Checkerboard
HASSOUNI Larbi
Présentation de Java
34
Exemple de page Web qui contient
une applet
<html>
<head>
<title>Utilsation des applets</title>
</head>
<body>
<h1 align = "center">Utilisation des applets</h1>
<p align=center>
<applet code="Checkerboard.class"
height=640 width=640>
</applet>
</p>
</body>
<html>
HASSOUNI Larbi
Présentation de Java
35
HASSOUNI Larbi
Présentation de Java
36
Étapes pour l’exécution d’une applet
1. Demande chargement page Web
Qui contient une applet
Client
http
Navigateur
intégrant une
machine
virtuelle Java
2. Chargement de la page Web
html
Serveur
html
html
3. Demande chargement de l’applet
référencée dans la page
HTTP
.class
4. Chargement du bytecode de
La classe
.class
3. Exécution de l’applet
dans la JVM du client
Présentation de Java
HASSOUNI Larbi
37
Exécution de l'applet
♠ Le navigateur a sa propre machine virtuelle
♠ Un programme Java spécial démarré par le navigateur va
lancer certaines méthodes de la classe Applet :
init(), start(), stop(), destroy(), paint()
♠ init() est exécuté seulement quand l’applet
est lancée pour la première fois
♠ paint() dessine l'applet dans la page Web
HASSOUNI Larbi
Présentation de Java
38
Utilité des applets
♠ Les applets permettent de faire des pages Web plus
riches (grâce aux possibilités offertes par Java)
♠ La page Web peut contenir
– des animations ou des mises en forme
complexes pour mettre en valeur certaines
informations
– des résultats de calculs complexes
– des informations « dynamiques » (pas connues
au moment où la page Web statique est créée)
trouvées en interrogeant une base de données
– ….
HASSOUNI Larbi
Présentation de Java
39
Download