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 |
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 |