6.1 Introduction
Les fondations du langage Java ont été mises en place en 1990 par un
groupe de programmeurs de Sun Microsystems.
Ils pensaient que la prochaine
vague d'informatique serait compacte et personnelle et tournerait
autour de produits d'électronique grand-public tels que magnétoscopes
et téléphones, et non des ordinateurs de bureau.
De cette idée est né une société FirstPerson et un langage OAK
résolument orienté réseau et objet, qui sans clients véritables,
l'électronique grand public n'étant pas prêt à investir dans cette
technologie, fut repris et amélioré par la maison Sun, et donné à la
communauté Internet sous le nom de Java.
Le but étant de faire de Java le langage de programmation du NET.
Les utilisateurs et diffuseurs du Web, frustrés par l'interactivité
limitée disponible avec HTML et CGI (Common Gateway Interface),
accueillirent cette nouvelle philosophie avec enthousiasme.
A ces débuts, Java a surtout été utilisé pour créer des applets
(petits programmes transmis aux navigateurs), mais
cette technique trop liée aux capacités des interpréteurs Java (JVM) a montré
ces limites. Aujourd'hui, le déploiement de Java est surtout utilisé
coté serveur (voir chapitre 13 page ??)
6.2 Caractéristique de Java
Java a été développé en déterminant les caractéristiques de C et C++
qui pouvaient être éliminées dans le contexte de la programmation
orientée-objet tout en conservant une syntaxe semblable.
-
pas de pré-processeur
- pas de typage implicite
- pas de pointeurs
- pas de fonctions , mais des méthodes
- gestion de la mémoire par ramasse miette
- pas d'héritage multiple, mais une notion d'interface
class HelloWorld {
static public void main(String args[])
{
System.out.println("Hello World!");
}
}
Java est un langage de programmation complet, pas spécialement lié au
Web , il dispose de tous les opérateurs, binaires, logiques arithmétiques
Java est résolument objet, les chaînes, les tableaux, voire les types
de bases peuvent être en-capsulés dans des objets.
Comme pour tous les langages objets, de nombreux packages ,
fournissent des solutions évitant de recoder des classes
très usitées (help html, mail, jdbc, swing, java2d, java3d,....).
Java est un langage intégrant la technologie réseau, l'accès fichiers
se fait par des URL, il dispose en outre d'importantes bibliothèques
pour gérer des objets distribués (RMI, JDBC ...)
String url = "jdbc:postgresql://medias.obs-mip.fr:5432/towns
Connection c = DriverManager.getConnection(url);
Statement s = c.createStatement();
ResultSet r = s.executeQuery("SELECT * FROM VILLES");
while (r.next())
{
int i = r.getInt("Population");
String s = r.getString("Ville");
System.out.println("Ville "+s+" a "+i+" hab."); ......
}
Java est à la croisée d'un langage interprété et compilé, il doit
être compilé (traduit en byte-code) avant d'être interprété par une
JVM (Java Machine) lié au processeur.
Cette particularité est liée au compromis temps
d'exécution/portabilité.
L'architecture du byte-code est neutre(endianess, flottant.....)
Des JIT (Just In Time Compiler) présents dans IE et Netscape ,
permettent d'accélérer la phase d'interprétation.
Des processeurs Java sont ou ont été envisagés (NC) , mais la
jeunesse du langage et ses évolutions empêchent d'envisager
sérieusement une solution industrielle.
Figure 6.1: Chaine de réalisation d'un programme Java
Java est sur: il a été conçu pour être exploité dans des
environnements clients serveurs et distribués.
Une applet ne dispose d'aucune ressource coté clients susceptible de
nuire à son intégrité (pas d'accès aux périphériques, aux disques ...)
6.3 Construire une applet
Une applet est un objet qui hérite de la classe applet
import java.applet.Applet; // la classe applet
import java.awt.Graphics; // la classe graphique
public class HelloWorld extends Applet {
public void paint(Graphics g) { // impléméntation de la méthode paint
g.drawString("Hello world!", 50, 25);
}
}
Le transformer en byte code
javac hello.java
L'insérer dans du code html en précisant sa taille
<HTML>
<HEAD> <TITLE> A Simple Program </TITLE> </HEAD>
<BODY>
Here is the output of my program:
<applet code=Hello.class name=hello
width=300 height=300>
</applet>
</BODY>
</HTML>
Dans cet exemple le toolkit graphique utilisé est AWT, qui permet de
construire boutons, zone de saisies, listes déroulantes, mais aussi
d'utiliser des primitives graphiques pour faire toute sorte de tracés
dans les fenêtre de ces objets (ie drawLine, drawString....).
Plusieurs extensions (Swing, java2d, java3d) fournissent des packages
supplémentaires permettant d'utiliser des objets plus sophistiqués,
ils doivent être évités coté client, pour ménager la bande passante et
la patience de l'utilisateur.
Enfin, pour obtenir une certaine portabilité des applets créés,
sachez que la plupart des JVM des navigateurs ne comprennent que du
java 1.1
Si vous voulez en savoir plus:
http://membres.lycos.fr/slegall/
http://tecfa.unige.ch/tecfa/teaching/formcont/ecole-ete-tunis2001/tie/html/java-awt/java-awt-3.html