1. Contenu du cours
• Les compétences visées : Programmer
en réseau
Informatique de l’Internet
• Programme :
– Notion de Système informatique
Joël Quinqueton – Réseaux informatiques
Dépt MIAp, UFR IV – L’internet : définition, réalisation de site,
utilisation
UPV − Université Montpellier III – Langages de l’internet : SGML, HTML,
XML , PHP, Javascript, Java
Organisation du cours Plan du cours (1)
• Généralités
• Notions sur les systèmes et les réseaux
– Infrastructures physique, protocoles bas
• TDs en Java, PHP, Javascript niveaux
– Notions élémentaires de programmation – Organisation physique
par objets en Java
– TCP/IP
– Notions de pages web dynamiques avec
– Internet
PHP
– Modification d’une page par elle même
avec Javascript
Plan du cours (2) Plan du cours (3)
• Couches de niveaux supérieurs • Concepts réseaux et conceptions des
(logicielles) applications
– Protocoles haut niveau: DNS, Mail, ftp, – Agents logiciels, objets distribués
HTTP, HTML – Echange de données: XML, DTD,
schémas, XSL
– Programmation réseau (Java, servlets,
scripts …) – Visualisation de réseaux d’information:
problématique, applications, aspects
génie logiciel, format d’échange de
données, …
–…
1
2. Bibliographie Evaluation
• TD/TP
• Nombreux sites contenant des tutoriaux – Expérimentation sur machine des protocoles
sur Java, PHP, Javascript – Programmation réseau
• Site de Sun • Java
• javascript, php,
• Divers cours, exercices, trouvés sur • Éventuellement: Perl, XML, XSL
Internet • Projet personnel: réalisation d’un joueur
• Le site du cours: automatique au go-moku (morpion)
www.univ-montp3.fr/miap/ens/MASS/XLIN401 – Tournoi à travers le réseau
Programmation Architecture client-serveur
• Architecture « Client-Serveur » • Répartition de la charge de travail entre
– Vous naviguez sur le web: vous êtes le un serveur et un poste distant (le client).
client et vous passez d’un serveur à un Par exemple:
autre – Lancement d’une application stockée sur
un disque distant (l’application tourne sur le
• Programmation réseau poste client)
– Programmer sur le client – Accès à vos comptes et fichiers
– Programmer sur le serveur (l’application « entrée », ou « login »)
Architecture
Programmation réseau
client-serveur: exemple
• Exécution client
• Lancement d’une application stockée – Le navigateur prend en charge l’exécution du code
sur un disque distant (applets)
– Le code a un accès limité aux ressources côté client
– L’application tourne sur le poste client • Exécution serveur
– L’application demande périodiquement un – Envoi d’un requête au serveur commandant l’exécution
accès à vos fichiers d’un programme
– Scripts embarqués
– Application (servlets)
2
3. Informatique et
L’informatique (1)
programmation
• Applets ou servlets: langage Java • 10% des investissements des sociétés
• Langage de programmation (hors bâtiments)
– Compilé (Java)
• Croissance très rapide du nombre de
cadres et techniciens informaticiens
– Interprété (PHP ou Javascript)
[1982-1991]
• Science encore jeune (30 ans)
• Gigantesque cathédrale de
constructions matérielles et
intellectuelles
Cori, Levy
L’informatique (2) L’informatique (3)
• Il existe une science de l’informatique
• Plusieurs théories imbriquées • La jeunesse de l'informatique permet à
– logique et calculabilité, algorithmique et analyse certains de nier son aspect scientifique
d'algorithmes, conception et sémantique des • Mythe du hacker («fous de la
langages de programmation, bases de données,
principes des systèmes d'exploitation, architectures des programmation»)
ordinateurs et évaluation de leurs performances, réseaux et
protocoles, langages formels et compilation, codes et cryptographie, – hacker [...] n. 2. One who programs
apprentissage et zero-knowledge algorithms, calcul formel, démonstration automatique,
conception et vérification de circuits, vérification et validation de programmes, temps réel et
logiques temporelles, traitement d'images et vision, synthèse d'image, robotique, ...
enthusiastically (even obsessively) or who
enjoys programming rather than just
theorizing about programming.
L’informatique (4) L’informatique (5)
• La jeunesse de l'informatique permet à • Une autre caractéristique de
certains de nier son aspect scientifique l'informatique est le côté instable des
• Mythes du hacker («fous de la programmes
programmation») • Les phénomènes continus sont rares en
– Programmeur préférant ignorer toute
considération théorique qui puisse l’aider
informatique
dans ses constructions souvent très – Une panne n'est en général pas le résultat
habiles d'une dégradation perceptible. Elle arrive
simplement brutalement.
3
4. L’informatique (6) Objectifs
• Une autre caractéristique de • Initiation à la programmation objet
l'informatique est le côté instable des – Initiation à la programmation impérative
programmes – Initiation à l’approche objet avec Java
– C'est ce côté exact de l'informatique qui est
très attrayant • Rudiments d’algorithmique
– En informatique, il y a peu de solutions – Conception et analyse des algorithmes
approchées – Implémentations des structures de
– En informatique, il y a une certaine notion données
de l'exactitude
Plan (1) Plan (2)
• Architecture • Tris simples (bulles, Objets • Méthodes:
Champs et Méthodes
machine par insertion) Références et valeurs, test – valeur de retour
• Types de base, • Tris récursifs d’égalité – visibilité
affectation (Quicksort, fusion) – classe vs instance
• Instructions • Recherche dans des • La jdk (AWT,
conditionnelles tables java.util, …)
• Boucles
Références (1) Références (2)
• Une seule
http://ead.univ-montp3.fr:8900
http://www.univ-montp3.fr/miap/ens
4
5. Références (3) Références (4)
• Sites web • Livres
– Tutorials Java – Brondeau J. Introduction à la
• Kjell , CCSU (USA)
programmation objet en Java, Dunod,
• Brandeis University (USA)
• Campione and Walrath, Addison Wesley
1999.
– Tutorials d’algorithmique – Eckel B. Thinking in Java, Mind View Inc.
• Cours de Robert Cori et Jean-Jacques Lévy – Bob Sedgewick, Algorithms, 2nd edition,
– Serveur Spédago de Spécif Addison-Wesley, 1988. En français:
• Cours / TD sur l'algorithmique Algorithmes en langage C, trad. par Jean-Michel
• Cours / TD sur la programmation Moreau, InterEditions, 1991.
Architecture d’un ordinateur Architecture d’un ordinateur
(1) (2)
• Toutes les opérations effectuées en
machine sont exécutées par le
processeur
• Aucune opération n’est faite en
mémoire principale
• Le processeur opère sur des données
préalablement stockée en mémoire
Architecture d’un ordinateur Architecture d’un ordinateur
(3) (4)
• La mémoire est une composante
constituée de circuits spécialisés dans
la localisation de mots mémoire à partir
d’une adresse
• Une adresse = un nombre = un endroit
où se trouve une donnée
Processeur MIPS 32 4kP
5
6. Architecture d’un ordinateur Architecture d’un ordinateur
(5) (6)
• Le processeur sait faire un nombre fini
d’opérations
• Tout programme doit être traduit en une
suite d’opérations qu’il sait exécuter
• Ces opérations sont souvent appelées
instructions machines
Architecture d’un ordinateur Architecture d’un ordinateur
(7) (8)
• Pour additionner deux nombres m et n.
– Amener l’adresse de m dans un registre
– Amener dans un second registre le contenu de la mémoire
vive à cette adresse
– Idem pour le second nombre n
– Exécuter l’addition (module arithmétique)
– Amener dans un registre l’adresse où stocker le résultat
– Le stocker dans la mémoire vive
Architecture d’un ordinateur
Compilation (1)
(8)
• Un processeur est composé de plusieurs modules • Les langages de programmation de
spécialisés
– Module arithmétique
haut niveau permettent de s’abstraire
– Contrôle de flux du matériel
– Calcul d’adresse
class Hello {
– Traitement des interactions avec les périphériques
public static void main ( String[] args ) {
• Deux processeurs diffèrent par l’ensemble des System.out.println("Hello World!");
instructions machine dont il dispose }
}
6
7. Compilation (2) Compilation (3)
• La compilation consiste à traduire un • Le résultat d’une compilation dépend de
langage de haut niveau en langage la plate-forme (type d’ordinateur) sur
machine lequel elle est effectuée
System.out.println("Hello World!"); • Un programme compilé sur Mac ne
tourne pas sur un PC, un programme
compilé sur PC ne tourne pas sous
00011011011010010100 000110110101
Linux, etc.
11011010010010010100 001110110110
00110011011010010100 000110110111
…
Java (1) Java (2)
• Java est un langage portable • La compilation produit le même fichier
• Le même programme, compilé une de bytecodes, quel que soit la plate-
seule fois, peut-être exécuté sur forme
n’importe quelle plate-forme
Salut.java javac Salut.class Hello.java javac Hello.class
Compilation Compilation Bytecodes Java Compilation Compilation Bytecodes Java
Java Java Java Java
La Machine Virtuelle Java
Java (3)
(JVM)
• Le même programme, compilé une • Les bytecodes sont interprétées
seule fois, peut-être exécuté sur différemment selon la plate-forme sur
n’importe quelle plate-forme laquelle ils sont exécutés
• Heuh ?
Interpréteur
Hello.class Le processeur
Java
Bytecodes
Java Machine Virtuelle Java
7
8. Java
Algorithmique (1)
Avantages / Inconvénients
• Portabilité • Performances • Un programme présente deux aspects
• Génération automatique de
la documentation des
amoindries par – un contenu et une forme
programmes l’interpréteur
• Rapide dissémination via
– un sens et une grammaire
• Gestion de la
Internet
mémoire via le • Pour l'ordinateur, il suffit que le
• Très grande compatibilité
http «garbage collector» programme soit correct au niveau de la
forme (la syntaxe)
Darmont
Algorithmique (2) Algorithmique (3)
• L’ordinateur effectuera toujours les • La cohérence du programme (du
manipulations commandées par un contenu) n'est pas examinée ou
programme syntaxiquement correct évaluée par le compilateur
– La première étape de la compilation • L'analyse du problème à traiter, la
consiste à vérifier que le programme écrit preuve de la cohérence et de la
est syntaxiquement correct
pertinence de sa solution sont préalable
– Si l'on fait une erreur de syntaxe, le à l’écriture du programme
compilateur affiche un message d'erreur
Algorithmique (4) Premier programme
• On doit • Algorithme:
– Imprimer(« bonjour tout le monde »)
– fixer l'objectif du programme
• Programme:
– établir la liste des données à manipuler et
public class BonjourApplet extends Applet
des opérations à exécuter, et les ordonner. {
• La description de la suite des public void init() {
System.out.println("Bonjour tout le
opérations élémentaires ordonnées monde");
capables de résoudre le problème posé }
constitue un algorithme }
8