Introduction à JAVA

Transcription

Introduction à JAVA
Introduction à JAVA
Philippe Roose (IUT Bayonne)
Olivier Dedieu (INRIA)
Mais JAVA…c ’est quoi ?
■
■
■
Langage OO
Exécuté dans une Machine Virtuelle
Possède un ensemble complet d ’API
(réseau, graphique, sécurité, …)
De OAK à JAVA
■
■
■
■
■
■
■
■
■
1993 : Projet Oak (langage pour l'électronique grand
public, l ’électroménager, …)
Mai 95 : Netscape prend la licence
Sept. 95 : JDK 1.0 b1
Déc. 95 : Microsoft se dit intéressé
Janv. 96 : JDK 1.0.1
Fin 96 : RMI, JDBC, JavaBeans, ...
Fév. 97 : JDK 1.1
JDK 1.2
JDK 1.3
Java n ’est pas...
■
■
■
■
…du HTML, ni même une variante.
…comparable à des langages de script à la
TCL/Tk, Perl…et surtout pas à…JavaScript
…n ’est pas aussi permissif que le C++, plus
proche de SmallTalk dans la philosophie.
…limité au Applet. Il est tout à fait envisageable de
réaliser des applications complète, professionnelle
(HotJava, NetBean, ELKAR (!), …).
Java est…en bref...
■
■
■
■
■
■
■
■
■
■
Orienté objets
Interprété
Portable
Simple
Robuste
Sécurisé
Multi-threads
Distribué
Rapide (maintenant !)
En évolution (ajout d ’API, exple : JXTA)
Orienté objets
■
■
■
■
■
(presque) tout est une classe (pas de
fonctions, uniquement des méthodes) sauf
les types primitifs (int, float, double, ...) et
les tableaux
Toutes les classes dérivent de la classe de
base java.lang.Object
Héritage simple pour les classes (on peut
tricher un peu !)
Les objets se manipulent via des
références (leur nom)
La syntaxe est proche de celle de C/C++
Java est portable
■
Le compilateur Java génère du byte code
(intermédiaire entre le code machine et le langage).
■
■
L ’environnement d ’ exécution du byte code
(JVM) est présent sur la plupart des machines
actuelles (Amiga, PC, Mac, AS400, RS6000,
Unix, …)
Java supporte un code source écrit en Unicode
(plus vaste que l ’ASCII).
Java est robuste
■
■
■
■
■
■
■
A l’origine, c'est un langage pour les applications
embarquées, plus rigoureuse que pour NOUS !!!
Gestion de la mémoire par un garbage collector (inspiré
du Lisp)
Pas d’accès direct à la mémoire (pas d ’allocation
dynamique pour les fans !)
Mécanisme d'exception dans les cas critiques (accès
aux ressources…)
Accès à une référence nom conforme et/ou non
existante → exception.
compilateur contraignant (erreur si exception non gérée,
si utilisation d’une variable non affectée, ...). Oblige à
une programmation « propre »
Tableaux = objets (taille connue, débordement →
exception).
Java est sécurisé
■
Pour permettre une sécurisation du code mobile.
■
Code certifié par une clé.
Java est multi-thread
■
Intégrés au langage et aux API :
– synchronized
– garbage collector dans un thread de basse priorité
– java.lang.Thread, java.lang.Runnable
■
■
■
Accès concurrents à objet gérés par un
monitor.
Implémentation propre à chaque JVM ->
quelques problèmes.
Difficultés pour la mise au point et le portage.
Java est distribué
■
■
■
■
API réseau (java.net.Socket,
java.net.URL, ...).
Applet.
Servlet.
Remote Method Invocation.
Les performances
■
■
■
La plupart du temps, le byte code est interprété
par la JVM.
Possibilité de faire de la « compilation à la
volée » et même de produire du code compilé
(perte de la portabilité)
Plusieurs types de génération de code machine :
Les outils
■
Environnements de développement :
– Sun JDK 1.1.x (compilateur, interpréteur,
appletviewer,...)
– java-mode emacs
– IDE : Visual Age, Café,Java WorkShop, Jbuilder,
Visual J++, ...
■
Browsers :
– Sun HotJava 1.1
– Netscape Navigator 3
– Internet Explorer 3
Les outils (3)
Java Development Kit
■
■
■
■
■
■
■
■
javac : compilateur de sources java
java : interpréteur de byte code
appletviewer : interpréteur d'applet
javadoc : générateur de documentation (HTML, MIF)
jdb : debugger
javakey : générateur de clés pour la signature de code
rmic : compilateur de stubs RMI
rmiregistry : "Object Request Broker" RMI
Les core API 1.0 et 1.1
■
■
■
■
■
■
java.lang : Types de bases, Threads,
ClassLoader, Exception, Math, ...
java.util : Hashtable, Vector, Stack, Date, ...
java.applet
java.awt : Interface graphique portable
java.io : accès aux i/o par flux
java.net : Socket (UDP, TCP), URL, ...
Les core API 1.1
■
■
■
■
■
■
java.lang.reflect : introspection sur les classes
et les objets
java.beans : composants logiciels
java.sql (JDBC) : accès homogène aux bases
de données
java.security : signature, cryptographie,
authentification
java.serialisation : sérialisation d'objets
java.rmi : Remote Method Invocation
Les autres API
■
■
■
■
Java Server : Servlets
Java Commerce : JavaWallet
Java Média : 2D, 3D, Animation, Telephony
JXTA : Peer 2 Peer