Les Applets JAVA

Pour découvrir comment faire vos applets, je vous laisse consulter les liens dans la section Ressources

Afin de les utiliser, il vous faudra un navigateur équipé du Plug-in Java, qui fait partie de la Java Runtime Environnement (JRE), Standard Edition (Java SE). Ce plugin permet aux applets sur les sites Web d'être exécuté dans un navigateur sur le bureau.

Par contre dés lors que vous souhaiterai faire accéder votre Applet au réseau via des Socket ou au propriétés de la JVM du client, il vous faudra l'autoriser pour ne pas avoir des erreurs de restrictions telles que :

java.security.AccessControlException: access denied (java.net.SocketPermission 192.168.0.254:5901 connect,resolve)
java.security.AccessControlException: access denied (java.util.PropertyPermission java.home read)

Lors de l'utilisation de socket, il est possible de définir des règles de sécurité. Ces dernières permettent de limiter le champ d'action de notre Applet et ainsi respecter les conditions de sécurité imposées par la "sandbox" Java (bac à sable). En effet, une Applet doit par défaut s'exécuter dans un environnement protégé dédié uniquement à celle-ci ; un espace mémoire dans lequel l'application ne peut pas sortir, mais peut faire tout ce dont elle a envie. Ainsi il est interdit à une Applet de communiquer avec des serveurs autres que celui d’où elle provient ou d’effectuer des opérations sur le poste du client à moins qu'on ne l'y autorise spécifiquement. Le fichier qui contient ces règles de sécurité se nomme "java.policy". Il est disponible dans le répertoire du "Java Runtime Environnement" installé sur chacune des machines clientes, plus précisément dans le répertoire "\lib\security" du JRE. Afin de permettre la connexion d'une socket réseau, il faut configurer ce fichier en ajoutant la ligne suivante dans la partie "grant" :

permission java.net.SocketPermission "HOST:1024-", "connect";

Pour résumer, le SocketPermission représente un accès au réseau via un Socket. Nous devons préciser le host, le ou les port(s) disponible(s) ainsi que un nombre d’actions (par ex : connect). Dans notre cas, le host n'est pas défini et peut être n'importe quelle ip, il faut indiquer l'adresse de ce dernier comme host, donc '*' pour toutes les ip possibles. L'host peut être décrit par un nom DNS ou une adresse IP ; à noter que si nous indiquons un nom DNS, il faudra ajouter l'action "resolve". Le client peut se connecter sur les ports de 1024 à 65535. Ceci est indiqué par "1024-". Le "connect" signifie que le client à la permission de se connecter. Pour les autres valeurs possibles voyez la classe SocketPermission

Ressources

  • w3.org Recommendations du W3C (détaillant les attributs de la balise applet) concernant l’intégration des applets dans des pages HTML.
  • java.sun.com
  • Cours de JmDoudoux sur les Applets Java
  • Première applet en Java avec commentcamarche.net

Exemple d'applet java

package com.placeoweb;
 
import java.awt.*;
import java.util.ArrayList;
 
public class HelloWorldApplet extends java.applet.Applet {
   public void init (){
 
	   java.util.List<String> list = new ArrayList<String>();
	   list.add("java.version");
	   list.add("java.home");	// Retour : java.security.AccessControlException: access denied (java.util.PropertyPermission java.home read)
 
	   for (String key : list) {
		   System.out.println( key );
		   String value = System.getProperty( key );
		   System.out.println( key + "=" + value );  // A destination de la console
		   add(new Label(key+":"+System.getProperty( key )));  // A destination de l'affichage de l'applet
	   }
 
   }
}
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Applet : Hello World</title>
</head>
<body>
 
<applet code="com.placeoweb.HelloWorldApplet.class" width="500" height="50" align="left">
 
Message s'affichant si l'applet n'est pas supportée par le navigateur
 
</applet>
 
</body>
</html>

Alternative nouvelle aux Applets Java

Une alternative aux Applets Java pourrait être les Java Web Start (jws) avec leur fichiers .jnlp