JavaScript | Java | |
environnement
d'exécution usuel |
Exécuté par un navigateur Web, inséré dans une page .html |
Programmes "stand-alone"
exécutés par la machine
virtuelle Java (JVM). (interpréteur de bytecode) |
compilation? |
Pas d'étape de compilation |
Nécessite compilation explicite
en bytecode: javac MonPrg.java produit le bytecode: MonPrg.class |
types | peu de types de base 1 type numérique: Number |
nombreux types de base types numériques: int, long, short, byte, double, float |
typage | dynamique une variable peut tour à tour contenir un nombre, un booléen, une chaîne de caractères, un tableau Ex: var a = 1; |
statique
|
paradigme de programmation |
Multiple: impératif,
fonctionnel, orienté-objet Objets très différents de Java (à base de prototypes, plutôt que de classes) |
Orienté Objet
|
Verbosité |
Peu verbeux |
Très verbeux |
Tolérance |
Tolérant aux déviations de
syntaxe |
strict
sur la syntaxe |
Rapidité
d'exécution des programmes |
Plutôt lents |
Plutôt rapides |
Syntaxe quasi-identique pour les structures de contrôle: if, while, for
(syntaxe héritée du langage C et partagée aussi par C++ et Java
notamment)
JavaScript |
Java |
|
Fichiers
source nécessaires |
Fichier hello.js contenant:alert("Hello World!") Fichier: hello.html contenant: <html> |
Fichier: Hello.java
contenant:public class Hello |
Étape
de compilation |
Pas de compilation |
Dans un shell, allez à l'endroit
où se trouve votre fichier source, et tapez javac Hello.java
|
Exécution |
Ouvrir hello.html dans un navigateur Web
(ex: en double-cliquant dessus dans le gestionnaire de fichier). Cela va afficher une boîte de message indiquant Hello world! Ces fichiers peuvent aussi être hébergés sur un serveur Web distant. Se rendre à l'URL (adresse Web) pointant sur le fichier hello.html avec un navigateur va (télé)charger le programme dans le navigateur et l'exécuter. |
Dans le shell, taper java Hello Notez que pour cette commande il ne faut pas écrire d'extension (ni .java ni .class). Ceci va exécuter le bytecode qui se trouve dans Hello.class et résulter en l'affichage: Hello World! |
JavaScript |
Java |
||||||
Type |
Description |
Ex de valeur littérale |
Type |
Description |
Ex de valeur littérale |
||
Nombres | number |
|
|
Nombres entiers (signés, représentation en complément à 2) |
byte |
entier signé 8 bits (de -128 à 127) |
|
short |
entier signé 16 bits (de --32768 à 32767) |
|
|||||
int (le plus utilisé) |
entier signé 32 bits (de -2147483648 à 2147483647) |
|
|||||
long |
entier signé 64 bits |
|
|||||
Nombres à virgule (représentation virgule flottante standard IEEE 754) |
float |
nombre à virgule flottante 32 bits |
|
||||
double (le plus utilisé) |
nombre à virgule flottante 64 bits |
|
|||||
Booléen |
boolean |
Booléen, ne peut prendre que la valeur vrai (true) ou faux (false). |
|
boolean | Booléen, ne peut prendre que la valeur vrai (true) ou faux (false). |
|
|
Caractère | pas de type caractère en
JavaScript |
on manipule toujours des chaînes
de caractères ( string ). Voir plus bas. |
char | 16 bits. Unité d'encodage UTF16. |
À mettre entre apostrophes (single
quote)
|
JavaScript |
Java |
|
Syntaxe |
var
<nom_de_variable>
= <valeur>; ou bien var <nom1> = <valeur1>, <nom2> = <valeur2>, ... ; À l'intérieur d'une fonction, le mot-clé var déclare une variable locale à a fonction. |
<type>
<nom_de_variable> = <valeur>; ou bien <type> <nom_de_variable>; (déclaration sans valeur initiale, recevront la valeur par défaut). ou bien <type> <nom1> = <valeur1>, <nom2> = <valeur2>, ... ; Toutes les variables d'une même instruction de déclaraiton multiple auront le même type. |
Exemples |
var a = 36; var pi = 3.14159, allume=true; var s="allo"; |
int a = 36; double pi = 3.14159; boolean allume = true; char c = 'a'; String s = "allo"; long n1=32L, n2=-25L, n3=128; |
<lvalue> = <rvalue>;
Instructions équivalentes (toutes
les colonnes d'une ligne) |
||||
Opérateur d'affectaiton = |
Opérateur arithmétiqe et
affectation combinés: +=, -=, *=, /=, %= |
Opérateur de post-incrément ++ et
post-décrément -- |
Opérateur de pré-incrément ++ et
pré-décrément -- |
|
a = a+1; |
a += 1; |
a++; |
++a; |
|
a = a-1; |
a -= 1; |
a--; |
--a; |
|
a = a+3; |
a += 3; |
|||
a = a-(2*b+7); |
a -= 2*b+7; |
|||
a = a*4; |
a *= 4; |
|||
a = a/4; |
a /= 4; |
Tableau Java à une dimension |
|||
Syntaxe |
Exemple |
||
déclaration |
<type>[] <nom>; |
int[] t; |
Déclare t (au départ vaut null). Le type de t est int[] c.a.d. "tableau à une dimension d'int". Il ne pourra plus changer. |
création |
new <type>[<nbélem>]
|
|
|
déclaration et création simultanés |
<type>[] <nom> = new <type>[<nbélem>]; |
|
Réserve de la place pour 100 char. Cet espace ne pourra pas être modifiée (ni agrandi, ni raccourci). |
taille réservée pour un tableau |
<nom>.length |
System.out.println(tab.length); |
affichera 100. Attention, pas .length() |
accès à un élément en lecture/écriture |
<nom>[position] Les positions ou indices vont de 0 à taille-1. |
tab[0] = 'A'; t[3] = 27; int i=4; t[i] = t[i-1]+27; |
|
Libération (éventuelle) de l'espace mémoire occupé par un tableau |
<nom_de_tableau> = null; |
tab = null; |
|
Déclaration et initialisation en ligne |
<type>[] <nom> = {<elem0>, <elem1>, <elem2>, ...}; OU <type>[] <nom> = new <type>[] {<elem0>, <elem1>, <elem2>, ...}; |
int[] tt = {10,20,30}; OU int[] tt = new int[]{10,20,30}; |
// Déclare un tableau 2D de double de 3 "lignes" par 5 "colonnes"
double[][] t = new double[3][5];
// Met à 10, l'élément de la première ligne, dernière colonne
t[0][4] = 10;
// Affiche nombre de lignes, et de colonnes
System.out.println(t.length + " lignes");
System.out.println(t[0].length + " colonnes");
// t[0] est la première ligne de t, c'est un tableau 1D
double[] ligne;
ligne = t[0]; // ligne pointe sur les mêmes éléments que t[0]
t[0][3] = 33;
System.out.println(ligne[3]); // affichera 33.0
int a = 5;Affichera:
Systam.out.print("Bonjour ");
System.out.print("2*"+a+"=");
System.out.println(2*a);
Arguments passés sur la ligne de commande lors du lancement du programme:
Lecture depuis l'entrée standard (stdin, en Java: System.in):
if / else if / else |
switch |
int num = scan.nextInt(); |
int num = scan.nextInt(); |
Boucle for |
Boucle while équivalente |
for(<initialisation de variables>; <condition de continuation>; <modification de variables>) { <corps de la boucle>; } |
<initialisation de variables>; while(<condition de continuation>) { <corps de la boucle>; <modification de variables>; } |
// pour résumer for(<A>; <B>; <C>) { <D>; } |
// équivaut à <A>; while(<B>) { <D>; <C>; } |
JavaScript (boucle de style foreach) |
Java (boucle de style foreach) | Java (équivalent for classique) |
var tab = ["un","deux","trois"]; |
String[] tab = {"un","deux","trois"}; |
String[] tab = {"un","deux","trois"}; |
JavaScript |
Java (méthode static d'une classe) |
Autre syntaxe possible: var divisible = function(a,b) |
public class MaClasse
public static void <nom> ( <type param1> <nom param 1>, <type param2> <nom param 2>, ... ) { // corps de la fonction // ... } Fonction retournant une valeur: public static <type de retour> <nom> ( <type param1> <nom param 1>, <type param2> <nom param 2>, ... ) { // corps de la fonction // ... return <expression donnant la valeur de retour>; } |