6) Java - ActiveX - Flash

Duke Au début des années 90, Sun MicroSystems prévoit l'implantation de microprocesseurs dans les objets quotidiens. Pour le développement de logiciels adaptés aux nombreuses puces qui ne manqueront pas de voir le jour, l'équipe de James Gosling conçoit le langage Oak, léger, fiable et indépendant de l'architecture. Le marché des appareils domestiques intelligents ne se développe pas et le projet "Green" est un échec commercial.
En 1993, la sortie de Mosaic et l'explosion du World Wide Web relancent le projet. L'Internet et les nombreux types d'ordinateurs qui en emplissent l'espace, offrent à un langage multi plate-forme un terrain d'application privilégié. Oak est rebaptisé, enrichi de fonctionnalités réseau et relooké, et en 1995, pendant que la tempête du WWW balaye l'internet, Java, adopté par Netscape, surfe en haut de la vague Kawa

Avec en toile de fond la guerre contre Bill Gates (ce qui n'empêche pas MicroSoft de s'intéresser au produit dès 1995), le langage et ses spécifications sont distribués gratuitement par Sun. Tous les éditeurs de logiciels mettent en avant leur "Solution Java". La "Communauté Java" (quelques millions de programmeurs) suit de près les évolutions du language (Gamelan, Jars, Java Lobby). La "solution alternative" (à MicroSoft), innovante et gratuite, séduit les universitaires tandis que la crédibilité de Sun rassure l'informatique d'entreprise. Les compétences en Java sont les plus recherchées, avant même les compétences en C/C++. MicroSoft est dépassé dans le domaine des "Solutions Internet". C'est l'âge d'or de Java.
Mais, Sun trop concentré sur sa plate-forme ne propose pas de logiciels compétitifs, la "Communauté Linux" préfère sa paroisse à la machine virtuelle, Hewlett-Packard, soucieux de sécurité, installe sur ses "systèmes embarqués" sa propre JVM (Java Virtual Machine) ne contenant pas toutes les librairies officielles, Netscape insatisfait des retombées de son partenariat historique n'impose plus une JVM avec son browser. MicroSoft, dont le but est de mettre à mal l'universalité du langage, lance son environnement MicroSoft .Net et son langage C# (C sharp) déposé à l'ECMA, retire la JVM Sun de la version 6 d'Internet Explorer, développe des spécifications de son cru, et envisage de licencier la JVM de HP. De plus, dans le domaine des animations, des effets, des jeux en ligne ... Java est concurrencé toujours plus sévèrement par Flash.
C'est l'existence même de la plate-forme Java qui est remise en question. Sun propose un arrangement à HP, lance une violente offensive juridique contre MicroSoft, propose plusieurs outils destinés à simplifier le développement des applications, et, pour garder la main sur son produit, fait de Java une "marque commerciale".
Alors, Java Sun pour tous ou Javas à gogos ? Les juges des cours fédérales américaines manipulent virtuellement et en virtuoses des millions de dollars sur fond de "violation de propriété intellectuelle", "concurrence déloyale", "rupture de contrat", "utilisation abusive d'une marque commerciale" et "pratiques anti concurrentielles". Le temps joue pour MicroSoft dans la mesure où toute avancée de ses propres produits est une brèche dans le principe du langage universel. Le 26 juin 2003, la cour d'appel de Richmond (Virginie) a annulé une décision de justice qui obligeait Microsoft à intégrer le Java de Sun dans Windows mais elle a aussi interdit à MicroSoft de distribuer des produits similaires à ceux de Sun comme la Java Virtual Machine ... à suivre.
Le retrait de la machine virtuelle Java d'IE6 a été un problème pour les nouveaux utilisateurs mais les librairies Java pouvaient être téléchargées chez Sun.
Java est une plate-forme et un langage de programmation :
Une plate-forme matérielle est la combinaison d'un matériel et d'un système d'exploitation. Les plus connues sont Windows, Unix, Linux, Solaris et MacOS. La plate-forme Java, totalement logicielle, s'exécute par dessus les plates-formes matérielles.

La plate-forme Java a deux composants
La Machine Virtuelle Java (Java VM)
L'Interface de Programmation d'Applications Java (Java API)
L'API Java est un ensemble de composants logiciels aux multiples utilités (éléments d'interface graphique par exemple). Elle est constituée de "librairies" appelées "packages" aux fonctionnalités différentes.
L'API Java et la Java VM isolent le programme du matériel.
Le code natif est exécuté directement sur la plate-forme matérielle.
Le "bytecode" de Java est plus lent que le code natif mais les performances sont améliorées par les compilateurs "just in time".

Un langage de programmation
La plupart des programmes sont compilés ou interprétés avant d'être exécutés. Un programme Java est d'abord compilé en bytecode ou PCode langage intermédiaire, indépendant de la plate-forme matérielle, et le résultat est ensuite interprété par la plate-forme Java qui analyse et exécute chaque instruction sur l'ordinateur (une seule compilation mais une interprétation à chaque exécution). Le bytecode est le code machine de la JVM. Tout interpréteur Java est une implémentation de la JVM.

 

Java est un langage généraliste dont la syntaxe est celle du C++. C'est un langage interprété, simple (c'est eux qui le disent !), portable (JVM), robuste (compilateur exigeant, libération de la mémoire par un garbage collector, gestion des exceptions), sécurisé (vérification du byte code, du chargement des classes, des accès aux ressources, toute instruction potentiellement dangereuse est assimilée à une erreur de syntaxe, exécution en environnement sécurisé ou sandbox), multi-threads (java.lang.Thread, garbage collector dans un thread de basse priorité, accès aux objets gérés par un monitor), distribué (API réseau, Applets, Servlet). Très orienté objet, il ne manipule pas de fonctions mais des classes. Une classe ne peut hériter que d'une seule classe et toutes dérivent par défaut de java.lang.Object. Les objets sont manipulés par référence, il n'y a pas de pointeurs et la surcharge d'opérateurs n'est pas autorisée.
L'environnement de développement

L'environnement de développement est le JDK (Java Development Kid) qui contient un compilateur "javac", un interpréteur de bytecode "java", et un ensemble d'autres outils (API, Applet Viewer, Abstract Window Toolkit, Java Data Base Connectivity, convertisseurs, ...).
En décembre 1998 paraît le Java 2 avec des améliorations multimédia et une meilleure interface graphique.

Notions de langage Java
Une "Applet Java" est destinée à être interprétée dans un navigateur. L'attribut param du tag <applet> transmet les paramètres éventuellement nécessaires.
Une "Application Java" est autonome. L'interpréteur a besoin d'une méthode main(), qui joue le rôle du navigateur
public static void main (String args[]) {
Le code source (tapé dans un éditeur de texte ou un éditeur Java comme JBuilder de Borland) est enregistré avec l'extension .java. Le compilateur (javac) produit un programme exécutable par la JVM avec l'extention .class.
Le fichier doit avoir le même nom que la classe qu'il contient.
Les packages (librairies) permettent (explicitement) à la JVM et au compilateur de trouver sur le disque les classes et les API (java.lang, ... ) nécessaires. (Concrètement, la classe Cercle du package geom.plan doit se trouver dans le fichier geom/plan/Cercle.class). L'instruction package indique où ranger le fichier compilé. On peut utiliser une classe sans le préfixe du package avec l'instruction import nom_du_package
Les variables peuvent être déclarées n'importe où et le langage est "sensible à la casse".
Les types primitifs sont numériques (byte, short, int, long, float ou double), caractères (Unicode) ou booléens (qu'il ne faut pas confondre avec les classes Integer, Double, String ...).
Les tableaux sont des structures de données définies sur les objets : String[] Mois = new String[12];

Les expressions ++, +=, -=, &, &&, |, | |, !, = =, <<, >>, ?:, ...
sont les mêmes qu'en C
Les structures if, switch, while, do while

Les exceptions sont des instances de classes préposées à la gestion des erreurs.
Quatre exemples :

Exemple 1 : Passage d'un texte par paramètres et affichage sur fond jaune (ooooh !)
La variable affiche récupère le contenu du paramètre texte du navigateur. En cas d'absence, une valeur est affectée.
import java.applet.*;
import java.awt.*
import java.lang.*;
/* le classique hello world */

public class Coucou extends Applet {
  Label affiche = new Label();
  String contenu;
  public void init() {
    setBackground(Color.yellow);
    affiche = getParameter("texte");
    if (affiche == null) affiche = "Bonjour quand même !";
    affiche.setText(contenu);
    add(affiche); } } 
Les API " utilisées.
* pour toutes les classes des packages.

La classe Coucou est héritière de la classe Applet.
"public" pour être visible de l'extérieur.
Le constructeur de la classe Label instancie l'objet "affiche". 

La méthode "init" est exécutée au chargement de l'applet.

"add" ajoute "affiche" dans l'espace de l'applet.
Exemple 2 : Formes géométriques, création de classes (aaaah ?)
On utilise une classe "abstraite" qui, grâce à l'héritage, permet de créer des sous classes homogènes.
Le compilateur crée un fichier par classe (ici six).
import java.applet.Applet;
import java.awt.*;

public class Formes extends Applet {
  public void init() {
    Cercle c = new Cercle(20, Color.blue);
    Rect r = new Rect(50, 20, Color.green);
    Carre s = new Carre(30, Color.black);
    add(c);
    add(new Comment(c, 4, 20));
    add(r);
    add(new Comment(r, 4, 20));
    add(s);
    add(new Comment(s, 4, 20)); } }

  abstract class Forme extends Canvas {
    Dimension taille = new Dimension();
    public void Forme() {}
    public Color getColor() {return getForeground(); }
    public void setColor(Color c) {setForeground(c); }
    public double Aire() {return 0; }
    public double Perim() {return 0; }
    public String Type() {return "Forme Inconnue"; }
    public void paint(Graphics g) {}
    public Dimension preferredSize() {return taille;}
    public Dimension minimumSize() {return taille;} }

  class Rect extends Forme {
    public Rect(int large, int haut, Color c) {
      taille.width = large;
      taille.height = haut;
      setColor(c); }
    public void paint(Graphics g) {
      g.fillRect(0,0,taille.width,taille.height); }
    public double Aire() {return taille.width * taille.height; }
    public double Perim()
      {return (taille.width + taille.height)*2; }
    public String Type() {return "Rectangle"; } }

  class Carre extends Rect {
    public Carr (int cote, Color c) {super(cote, cote, c); }
    public String Type() {return "Carré"; } }

  class Cercle extends Forme {
    private int rayon;
    public Cercle(int ray, Color c) {
      rayon = ray ;
      taille.width = taille.height = 2 * rayon ;
      setColor(c); }
    public void paint(Graphics g) {
      g.drawArc(0,0,2*rayon,2*rayon,0,360); }
    public double Aire() {
      return Math.round(Math.PI * rayon * rayon); }
    public double Perim() {
      return Math.round(Math.PI * rayon); }
    public String Type() {return "Cercle"; } }

  class Comment extends TextArea {
    public Comment(Forme f, int haut, int larg) {
      super("Je suis un "+f.Type()+
      "\nPérimètre "+Double.toString(f.Perim())+
      "\nAire "+Double.toString(f.Aire()), haut, larg); } } 
On utilise la classe Applet et la librairies "java.awt".

La classe de l'applet est Formes.
La méthode "init" instancie les classes
Cercle, Rect et Carre (à créer) puis elle montre dans l'applet les formes et les propriétés de chaque objet.

La classe Forme hérite de la classe Canvas.
Notez l'absence de constructeur,
les méthodes inutilisées,
les méthodes qui retournent 0,
les méthodes qui seront surchargées,
et les méthodes vides.
Les méthodes "preferredSize" et "minimumSize" sont
nécessaires à la classe Canvas pour l'affichage des formes.

La classe Rect hérite de la classe abstraite "Forme".

La classe Carre hérite de la classe Rect.

La classe Cercle hérite de la classe abstraite Forme.
Notez le tracé de l'arc (360°) plein.
L'aire et le périmètre sont arrondis.

La classe Comment hérite de la classe TextArea.
Exemple 3 : Boutons, images et événements (ouiiiiiii !)
Quand un bouton capte un événement, il alerte la méthode "action" qui transmet son nom à la méthode "affImag".
On peut remplacer les sept boutons par une liste déroulante dont on surveillera les items Exemple 3a (source).

import java.awt.*;
import java.lang.*;
public class Zoom extends java.applet.Applet {
  Image img;
  double i;

  public void init () {
    echelle = 1;
    add(new Button("Quart"));
    add(new Button("Tiers"));
    add(new Button("Demi"));
    add(new Button("Normal"));
    add(new Button("Double"));
    add(new Button("Triple"));
    add(new Button("Quadruple"));
    img = getImage(getCodeBase(),"Duke.gif"); }

  public void paint (Graphics g) {
    int larg = img.getWidth(this);
    int haut = img.getHeight(this);
    double l = larg*echelle;
    double h = haut*echelle;
    larg = (int) l;
    haut = (int) h;
    g.drawImage(img, 10, 30, larg, haut, this); }

  public boolean action(Event evt, Object obj) {
    if (evt.target instanceof Button)
      affImag((String) obj);
      return true; }

  public void affImag(String nom) {
    if (nom == "Quart")
      {setBackground(Color.black); echelle = 0.25;}
    if (nom == "Tiers")
      {setBackground(Color.blue); echelle = 0.33;}
    if (nom == "Demi")
      {setBackground(Color.cyan); echelle = 0.5;}
    if (nom == "Normal")
      {setBackground(Color.gray); echelle = 1;}
    if (nom == "Double")
      {setBackground(Color.yellow); ; echelle = 2;}
    if (nom == "Triple")
      {setBackground(Color.green); echelle = 3;}
    if (nom == "Quadruple")
      {setBackground(Color.red); echelle = 4;}
    repaint(); } }
Les librairies utilisées.

La classe de l'applet est Zoom.
La méthode "init" initialise le coefficient "echelle",
affiche les boutons,
et charge l'image "Duke.gif"

Dans la méthode "paint", "drawImage" ne manipule que des entiers.
Après la multiplication par "echelle" double (ah ! ah !),
on utilise l'opérateur de "cast" (int) pour réajuster le type numérique.

Dans la méthode "action", le nom du bouton transmis à la méthode "affImag" est récupéré par l'opérateur de "cast" (String).

La méthode "affImag" modifie la couleur du fond de l'applet,
fixe la valeur de la variable "echelle"
et utilise la méthode repaint().

Sites dédiés à Java
Site de Sun
Site de JavaWorld
Site de Java Lobby
Site de Gamelan
Site de Jars
Java pour Linux


Active X de MicroSoft
La technologie ActiveX de Microsoft permet une totale interopérabilité entre les éléments de la technologie COM (Component Object Model) de Microsoft. Les contrôles ActiveX correspondent à la troisième génération de controles OLE (OCX). Ils permettent, par exemple, d'ouvrir et d'utiliser, en ligne, une fenêtre Excel ou Access à l'intérieur d'Internet Explorer. Présentée vers 1996 comme une alternative aux applets Java dans le domaine de l'amélioration des pages Web, il s'agit d'une technologie propriétaire destinée à utiliser sur l'internet les propriétés de l'environnement Windows : ActiveX n'est pas un standard internet. Optimisée pour Internet Explorer et MS-Windows, la technologie peut être, imparfaitement, étendue à Netscape (après installation d'un plug-in) et aux systèmes Apple ou Unix. Le langage d'écriture des contrôles ActiveX n'est pas imposé mais le compilateur doit être compatible COM donc ... on utilisera Visual Basic ou Microsoft C++, ou C#.
Très tôt, le CREEM (Centre de Recherche et d'Expérimentation pour l'Enseignement des Mathématiques) du CNAM (Conservatoire National des Arts et Métiers), alors que Cabri Géomètre déclinait une version Java, a choisi d'utiliser la technologie ActiveX pour la diffusion de ses logiciels de géométrie dynamique GéoPlan et GéoSpace. Voici la présentation du CREEM :
Remarque : Il existe une version Java de GéoPlan.

Présentation et Installation Qualités fondamentales du système
GéoPlanW et GéoSpacW sont des logiciels de construction mathématique sous Windows réalisés par le CREEM et destinés à l'enseignement.
La technologie ActiveX de Microsoft permet de créer des applications exécutables dans une fenêtre ouverte dans une autre application.
Le CREEM a décidé de fournir gratuitement des versions ActiveX de GéoPlan et de GéoSpace qui fonctionnent sous Windows avec Internet Explorer (à partir de la version 4).
Principe général de fonctionnement :
La partie logicielle nécessaire comporte deux bibliothèques (GP32.DLL, et GE32.DLL) et trois contrôles ActiveX (un pour le plan, GP0, un pour l'espace GE0, et le troisième pour l'écriture des formules mathématiques dans les pages HTML, EcritMath). Ces logiciels ont été testés par de nombreux enseignants et ne présentent aucun danger connu pour les ordinateurs.
Après l'installation, toute  référence à GP0 (ou GE0) dans une page HTML ouvrira une fenêtre GéoPlan (ou GéoSpace) interactive, avec sa figure et son menu.
Puissance : Les dessins sont remplacés par des figures interactives, qui sont de véritables instances des logiciels (interactivité mais aussi création d'objets).
Simplicité : L'interactivité est obtenue sans aucune manoeuvre spéciale après insertion de la figure conformément à la technologie ActiveX de Microsoft.
Légèreté : Une figure insérée ne "pèse" pratiquement que le texte de sa figure car le contrôle ActiveX est seulement référencé par identificateur reconnu par Windows.
Ouverture : Les facilités de création, modification, interrogation mettent l'utilisation de figures géométriques à la portée de tous.
Standardisation : Il est possible de réutiliser sans modification la syntaxe de figures existantes pour les incorporer dans des documents.
Liberté d'utilisation :  L'utilisation de ces versions ActiveX de GéoPlan et de GéoSpace est libre et gratuite dans des applications pédagogiques gratuites.

Dans un premier temps le client installe sur sa machine un OCX (accompagné éventuellement d'une DLL).
Ensuite, quand le navigateur trouve un identificateur dans le tag <objet> d'une page Web, il vérifie dans la base de registre (à partir des données de l'attribut classid) que l'ActiveX est installé et il l'insère dans la page. Par exemple :
<object classid="clsid:E29016D7-8E99-11D2-8454-004005195FED" width="200" height="223">
L'ActiveX n'est pas installé</object>
En ayant accès aux ressources matérielles et logicielles, les ActiveX sont des failles dans la sécurité de l'ordinateur sur lequel ils sont installés. Afin de combattre la possibilité d'installer sur une machine un contrôle porteur d'un code malveillant, une validation, renouvelable chaque année, est délivrée par un organisme chargé de veiller à la sécurité (VeriSign, Thawte, Entrust ... ). Il s'agit de comparaisons numériques sophistiquées avec clés privées et clés publiques qui permettent d'identifier les auteurs et l'authenticité du code. Si le niveau de sécurité du browser est Moyen, celui-ci affichera, avant le chargement du code, un message indiquant soit la provenance du contrôle et le nom de l'organisme certificateur, soit l'absence de certification. Notez qu'il est hautement nécessaire d'activer la sécurité du browser.


Flash de Macromedia
En 1996 (ça bouge fort sur le Net), Macromedia rachète le logiciel FuturSplash pour créer des animations sur le Web.
Déjà propriétaire de Macromedia Director (format Shockwave DCR) numéro un du multimédia off-line, la société est parvenue à imposer Flash pour le multimédia on-line.
La version de base du logiciel Flash, permet de réaliser des animations multimédias simples (gifs animé, dessins animés, slide shows ... ) utilisables à l'intérieur des pages Web. Son langage de programmation (orienté objet), Action Script, autorise un niveau d'interactivité (proportionnel à la complexité du script) qui permet de créer des applications complexes (jeux, simulations, aides à la navigation sur le Web ... ). Les fichiers-animations sont enregistrés au format .fla et publiés au format .swf.
Un fichier au format SWF peut être ouvert dans une page Web par l'intermédiaire d'un plug-In ou d'un ActiveX, il peut être lu localement par le lecteur (player) Flash, il peut aussi être transformé en application autonome (compatible Director). Le logiciel qui permet la création d'animations Flash exige une licence payante. Le player est livré comme plugiciel avec de nombreux navigateurs et utilisable librement.
Dans le logiciel, la zone de travail (la scène), les barres d'outils et les palettes aux nombreuses fonctionnalités forment un environnement classique. Flash manipule des formes vectorielles (textes et images facilement modifiables et peu volumineux) mais aussi des objets incorporés (BitMap), du son (y compris MP3) et de la vidéo (y compris Quick Time). L'utilisation de calques simplifie la mise en page d'un écran. Dans une animation tout ce qui bouge est un symbole (objet), la représentation graphique d'un symbole est une occurrence (instance) qui peut être manipulée par son nom. Une image-clé est un écran dans lequel il est possible de placer des symboles. Une animation, réglée par un scénario chronologique (Timeline), est faite de transitions entre des images-clé. La qualité dépendra du nombre d'images intermédiaires(onion skins), mais aussi des choix d'interpolations, de masques et de guides de déplacements. ActionScript, proche d'ECMAScript, permet d'associer des actions aux objets d'une animation.
Flash est intéressant dans le domaine pédagogique car il est parfaitement adapté à la représentation de processus évolutifs chronologiques. Néanmoins, l'utilisation judicieuse en est rare et dominent sur le Web les lambeaux de textes s'agitant bêtement et les pauvres mouvements de personnages sans âmes.


La sécurité : Soyez méfiants.
Utilisez un antivirus à jour, activez les protections des navigateurs, ne téléchargez pas n'importe quoi.
Les applications écrites en Java sont, bien entendu, des applications comme les autres. Elles peuvent donc compromettre la sécurité d'un système. Ce n'est pas le cas des applets Java qui sont exécutées par d'autres applications (un navigateur par exemple) dans un espace sécurisé appelé "SandBox" par référence aux coffres emplis de sables des démineurs. Une sandbox est un contexte restreint qui, en dissimulant au code exécuté la totalité du système, permet de contrôler l'accès aux ressources. De plus, le code Java s'exécutant dans un système virtuel sur lequel des fonctions peu sûres ne sont pas implémentées, ne peut pas outrepasser ses droits et les conséquences d'une erreur logicielle sont limitées à la portée du contexte. Une faille éventuelle dans le programme qui met en place la sandbox (navigateur) pourrait causer des problèmes graves mais serait rapidement corrigée. Et pourtant :
Le 20 août 1998 est apparu Strange Brew, virus des fichiers ".class"  (exécutables de la machine virtuelle Java) capable de se répliquer sur n'importe quelle plate-forme. Il infecte aussi bien les applets que les applications Java mais ne se propage que par les applications. Il se manifeste par un ralentissement des applications infectées et un blocage des applets.
Moins dangereuses que des virus, il existe de très nombreuses "applets hostiles" qui imposent à l'utilisateur des actions non désirées (saturation des ressources Consume, faux messages ErrorMessage, calculs pour le serveur Calculator, envoi d'e-mail au serveur PenPal, destruction de threads AppletKiller, chargements répétés ScapeGoat ... ). Elles ne présentent pas de réels dangers mais peuvent obliger à relancer le navigateur (voire le système).
En ce qui concerne les ActiveX, la sécurité est soumise à une prise de décision de l'utilisateur : accepter, ou refuser, l'installation d'un contrôle sans certification. Il n'y a donc pas de limites physiques à l'action d'un ActiveX mais seulement un contrat de confiance. Du point de vue du programmeur les modules ActiveX sont plus performants que les Applets Java, mais de celui de l'utilisateur ils sont plus dangereux (le même problème existe avec l'installation d'un plug-in).
Les identificateurs digitaux de signatures de code permettent aux concepteurs de signer numériquement leurs créations afin de sécuriser leur distribution sur l'internet. Les utilisateurs qui téléchargent des contrôles ActiveX, des applets Java, des bibliothèques de liens dynamiques, des fichiers ".cab", des fichiers ".jar" ou des contenus HTML numériquement signés peuvent être certains que le contenu du téléchargement n'a pas été modifié depuis sa certification. Les Digital IDs servent d'emballage virtuel aux logiciels. Après la signature, toute modification du code casse la signature numérique et alerte le client.
Les 30 et 31 janvier 2001, l'autorité de certification Verisign a délivré deux certificats à un escroc qui s'est fait passer pour un employé de Microsoft. Verisign a immédiatement intégré les deux certificats dans une liste de révocation (CRL) et Microsoft a ensuite publié un patch.


Polémiques

  L'existence de MicroSoft perturbe toutes les spéculations sur le devenir de l'internet
mais ne pas tenir compte de cette existence est la pire des approches.
Les réactions émotionnelles provoquées par la (trop) grande réussite de la société de Bill Gates
conduisent à des positions théoriques
aussi inconfortables pour ses partisans qu'incommodes pour ses adversaires
... et réciproquement.
Néanmoins :
 

J'ai lu récemment
"L'enseignement est un domaine public, indépendant des entreprises. Avec le développement des technologies, l'enseignement devient dépendant des logiciels et donc de l'entreprise. Dans un enseignement libre et laïque les logiciels libres faits par les enseignants pour les enseignants sont la seule solution à long terme."
S'il n'est pas impossible d'adhérer à la première phrase, la troisième oublie le principe des "vaches bien gardées" : que les enseignants enseignent bien et que les programmeurs programment de même.
J'ai souvent entendu douter de la qualité des produits MicroSoft et en même temps stigmatiser le machiavélisme de Gates qui n'a pas son pareil pour s'approprier les bonnes idées de ses concurrents. Sans développer l'inconséquence de la juxtaposition de ces deux assertions, je suis persuadé que la guerre économique mortelle que se sont livrées les sociétés informatiques (Windows, qui n'était pas un bon produit, n'aurait pas subsisté sans de bons logiciels) a produit plus de qualité qu'une multitude de bons sentiments. En allant même plus loin, Unix, le meilleur système d'exploitation actuellement connu, est né plus de vingt ans avant Linux. Sans la révolte idéologique provoquée par le monopole totalitaire (impérialiste, ploutocratique, ...) de Microsoft, il n'aurait pas été proposé (sous la forme Linux) au monde de la micro-informatique qui n'en ressentait pas le besoin ou, dans un contexte concurrenciel, il serait resté marginal comme l'OS2 d'IBM. Pas de Linux sans Windows (pas d'aspirations démocratiques sans tyrannie, hélas !).
Est-ce que Flash, ActiveX, ... Java expriment, à travers leur abandon des standards ouverts, la volonté de détruire l'internet ?
Les outils de création payants donnent, après installation d'un adaptateur, des résultats visibles gratuitement (Animations de Flash, ActiveX de MicroSoft), ... le langage Java, gratuit, peut engendrer des applications commerciales, ... il fut un temps où Netscape devait être acheté. Si Macromédia décidait de modifier son produit logiciel ou de remettre en cause sa stratégie commerciale, les créateurs de sites se poseraient sans doute des questions mais pour les utilisateurs de l'internet la validité des pages HTML ne serait pas remise en cause. Le danger, en l'occurrence, est l'influence que peut exercer sur l'ensemble des pages Web, l'aspect des sites mercantiles de e-commerce, de e-learning, de e-sexe qui, ciblant un public téléphage pour lequel mouvement est synonyme de nouveauté, débordent d'animations et d'effets spéciaux. En ne distinguant pas les "effets" des "causes" il devient facile de confondre la "forme" et le "fond".
Il n'est pas inutile de rappeler ici que le W3C propose SVG (Scalable Vector Graphics) et SMIL (Synchronized Multimedia Integration Language), deux langages basés sur XML qui sont de véritables standard internet, libres, documentés et performants pour doper le HTML.

Recherches sur Google en juillet 2003
Questions Nombres de réponses Questions Nombres de réponses
activex 1 560 000 active x 4 060 000
applet java 1 130 000 applet 2 640 000
applets java 0 780 000 applets 1 710 000
flash macromedia 1 300 000    

Retour au début