IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Sommaire > Syntaxe et généralités du language
        Qu'est-ce que Java ?
        Qu'est-ce que le JRE, le JDK?
        Comment compiler et exécuter mon application Java ?
        Quelle est la différence entre une application / une applet / une servlet ?
        Où peut-on trouver les sources des classes de l'API de Sun ?
        Qu'est-ce que Java Web Start ?
        Qu'est-ce que l'Unicode ?
        Comment connaître la version de la JVM installée ?
        Quelles sont les convention de nommage en Java ?
        Qu'est que l'obfuscation ?
        2.1. Les mots-clés(4)
                Que signifie le mot-clé final ?
                Que signifie le mot-clé strictfp ?
                Que signifie le mot-clé transient ?
                Et le goto en Java ?
        2.2. Les notions(4)
                Qu'est ce qu'une classe abstraite ?
                Qu'est ce qu'une interface ?
                Qu'est ce qu'une méthode 'deprecated' ?
                Qu'est-ce que la sérialisation ?
        2.3. Gestion des chaînes de caractères(11)
                Comment comparer des chaînes de caractères ?
                Comment convertir une chaîne en nombre ?
                Comment convertir un nombre en chaîne ?
                Comment convertir un nombre en chaîne formatée ?
                Comment convertir une date en chaîne ?
                Comment convertir une chaîne en Date ?
                Comment convertir des 'char' en ASCII ?
                Comment découper facilement une chaîne ?
                Comment utiliser des caractères bizarres tel que : €, ࢘, ࢙ ?
                Quelle est la longueur maximale d'une chaîne de caractères ?
                Quand doit-on utiliser un StringBuffer ?
        2.4. Gestion des dates(6)
                Comment connaître l'heure courante ?
                Comment mettre à jour l'heure courante du système ?
                Comment faire des opérations sur des dates ?
                Comment convertir une date en chaîne ?
                Comment convertir une chaîne en Date ?
                Comment connaître la date de création d'un fichier ?
        2.5. Gestion des fichiers(9)
                Comment connaître les racines des arborescences de fichiers ?
                Comment parcourir une arborescence de fichiers ?
                Comment copier/déplacer un fichier ?
                Comment supprimer un fichier ou un répertoire ?
                Comment renommer/déplacer un fichier ?
                Comment créer un fichier temporaire ?
                Comment connaître la date de création d'un fichier ?
                Comment connaître l'espace libre d'un disque ?
                Comment indiquer la position d'un fichier en conservant la portabilité ?
        2.6. Gestion des threads(5)
                Qu'est ce qu'un thread ?
                Comment créer un thread ?
                Pourquoi toutes les méthodes de la classe Thread sont marquées "deprecated" ?
                Comment terminer un thread sans la méthode stop() ?
                Comment faire un minuteur (timer) facilement ?
        2.7. Structures de données(7)
                Comment bien utiliser les collections ?
                Quel différence entre HashSet, TreeSet et LinkedHashSet ?
                Quelles différences entre ArrayList, LinkedList et Vector ?
                Quelles différences entre HashMap, TreeMap, LinkedHashMap, IdentityHashMap, WeakHashMap et Hashtable ?
                Comment créer une pile (LIFO) ?
                Comment augmenter la taille d'un tableau ?
                Comment fonctionne un ArrayList ?
        2.8. XML(5)
                Quelle est la différence entre SAX et DOM ?
                Comment lire un document XML (SAX) ?
                Comment lire un document XML (DOM) ?
                Comment transformer un document XML ?
                Comment transformer un document XML ?
        2.9. De C++ à Java(4)
                Quel est l'équivalent Java des pointeurs sur fonctions C/C++ ?
                Peut-on surcharger les opérateurs comme en C++ ?
                Comment faire pour hériter de plusieurs classes ?
                Existe-t-il des templates en Java ?
        2.10. La reflexivité(3)
                Comment déterminer si un objet est un tableau ?
                Comment déterminer le nombre de dimension d'un tableau ?
                Comment agrandir un tableau ?
        2.11. Astuces(17)
                Comment connaître la version de la JVM installée ?
                Comment connaître le système d'exploitation depuis le programme ?
                Comment arrondir un nombre ?
                Quel rôle joue les imports lors de la compilation ?
                Comment exécuter une application externe ?
                Comment faire une énumération en Java ?
                Comment faire en sorte que le paramètre int de ma méthode soit modifié en retour ?
                Comment accéder aux valeurs des variables d'environnement ?
                Comment créer son propre Listener ?
                Comment créer un Jar exécutable ?
                Comment resoudre le problème entre Big et Little Endian ?
                Comment lancer une application sans le terminal (Windows uniquement) ?
                Comment lire/écrire du texte dans le presse-papier ?
                Comment gérer les fermetures accidentelles ( Contrôle-C et kill -9 ) ?
                Comment forcer le passage du 'Garbage collector' ?
                Comment lire des informations sur l'entrée standard ?
                Comment annuler la construction d'un objet lors de la construction ?



Qu'est-ce que Java ?
auteur : Clément Cunin
Java est un langage orienté objet développé par la société Sun. La syntaxe générale est très proche de celle du C, mais Java n'est pas une surcouche du C et la syntaxe est beaucoup plus claire que celle du C++.

Les avantages :
Les avantages de Java son nombreux. Le byte-code, tout d'abord, qui assure à Java une portabilité complète vers de très nombreux systèmes. L'importance de l'api de base qui offre tous les services de base, notamment pour la construction des interfaces graphiques. La 3ème force de Java, c'est son adaptabilité dans de nombreux domaines, autant pour le web que pour les systèmes embarqués.

Liste des Système disposant d'une implémentation de Java :
Windows 3.1/95/98/NT4/2000/ME/XP/CE, MacOS, Solaris, Linux, AIX, OS/2, IRIX, UnixWare, HP/UX, Digital Unix, AmigaOS, BeOS, OpenVMS, FreeBSD, SunOS, RiscOS

Cette liste n'est pas exhaustive et est donnée à titre d'exemple.


Qu'est-ce que le JRE, le JDK?
auteur : Clément Cunin
JRE :
Java Runtime Environement, c'est le kit destiné au client pour pouvoir exécuter un programme Java. Il se compose essentiellement d'une machine virtuelle Java (JVM) capable d'exécuter le byte-code et les bibliothèques standard de Java.

JDK :
Java Development Kit, c'est le kit destiné au programmeur. Ce kit est composé d'un JRE, d'un compilateur et de nombreux programmes utiles, des exemples de programmes Java, les sources de toutes les classes de l'api.


Comment compiler et exécuter mon application Java ?
auteur : Johann Heymes
Je ne parlerai en aucun cas des techniques à employer sous les divers environnements de programmation car tous fournissent une documentation compétente et si ce n'est pas le cas ne méritent tout simplement pas qu'on y prête attention.

Pré-requis/Rappel :
Pour que la suite des opérations se passe bien, il est absolument nécessaire que les règles suivantes soient respectées :
  • un fichier contient une seule classe dont le modificateur de portée est public ;
  • le nom du fichier est strictement le même que le nom de la classe public (majuscule/minuscule importante) ;
  • il faut que les commandes java, javac, jar,... soient accessibles. Pour le vérifier taper dans une console ou un terminal ceci :java -version si vous obtenez un message autre que la version de Java installée référez-vous à la documentation de votre système d'exploitation, généralement le problème est dû à la variable d'environnement PATH qui ne pointe pas sur le répertoire contenant les exécutables.

La Compilation :
La compilation se fait avec l'application nommée javac. Placez-vous dans votre répertoire de travail et exécutez la commande suivante :

javac -d classes/ sources/MonFichierACompiler.java
Ici nous avons donc un fichier Java nommé "MonFichierACompiler.java" dans le répertoire nommé "sources" et le résultat de la compilation sera placé dans le répertoire nommé "classes". Pour plus d'information sur les options utilisées, tapez la commande "javac" et la liste apparaîtra à l'écran.

L'Exécution :
L'exécution se fait via la commande java. Placez-vous dans votre répertoire de travail et exécutez la commande suivante :

java -classpath classes/ MonFichierACompiler
Ici nous précisons à l'application java qu'elle doit trouver les fichiers *.class dans le répertoire classes (note : si vos *.class se trouvent dans le répertoire courrant, vous pouvez utiliser : "-classpath .") et qu'elle trouvera son point de départ dans la classe public nommée "MonFichierACompiler". Pour rappel ce point de départ correspond à la méthode dont la signature est :

public static void main (String argv [])
si vous avez ommis cette méthode vous obtiendrez un message d'erreur du style :

Exception in thread "main" java.lang.NoSuchMethodError: main
et si votre classpath est erroné vous obtiendrez :

Exception in thread "main" java.lang.NoClassDefFoundError: MonFichierACompiler

Quelle est la différence entre une application / une applet / une servlet ?
auteur : Clément Cunin
Application :
Une application Java est un programme utilisant le langage de programmation Java et qui tourne généralement sur la machine où se trouve au départ le code. Il a le même but qu'un programme C ou d'un autre langage.

Applet :
L'applet est récupérée à distance à travers un navigateur Web et s'exécute sur celui-ci. En raison de ce téléchargement à distance, les règles de sécurité concernant les applets sont très strictes ( pour éviter notamment les virus ). Par exemple, une applet ( contrairement à une application ), ne permet pas forcément l'écriture sur le disque local ou l'impression.

Servlet :
Une servlet peut être considéré comme une applet coté serveur. Une servlet est destinée à ajouter des fonctionnalités à un serveur web.


Où peut-on trouver les sources des classes de l'API de Sun ?
auteur : Clément Cunin
Où ?
Sun distribue le code source de toutes les classes de l'API avec le JDK (installation de composant optionnel !). Vous pouvez donc retrouver les sources dans le fichier 'src.jar', dans le répertoire d'installation du JDK.

Pourquoi ?
Même si cette cette approche n'est pas à conseiller aux débutants, il peut parfois être très utile de consulter le code source des classes l'API. Cela peut permettre, par exemple, d'estimer la complexité de certains algorithmes, ou de mieux comprendre le fonctionnement d'un objet particulier (et ainsi le surcharger plus efficacement). En cherchant bien, on peut également trouver des classes non documentées...

lien : Qu'est-ce que le JRE, le JDK?

Qu'est-ce que Java Web Start ?
auteur : Ronan Le Gallo
auteur : Clément Cunin
auteur : Jean-Baptiste Bugeaud
JavaWebStart est l'implémentation de référence par Sun de la spécification JNLP (JavaNetworkLaunchingProtocol) qui définit un mécanisme d'installation et de mise à jour supportant des fonctinalités évoluées grâce à HTTP et XML.

L'idée de JWS est de "mimer" le comportement d'une applet pour une application Java. Un serveur héberge l'application ; le client Web Start se connecte au serveur, télécharge l'application et l'exécute. Les règles de sécurité sont semblables à celles des applets.

L'intérêt principal est la facilité de déploiement des applications. Lors d'une mise à jour, seul le serveur est à modifier, les clients téléchargeront la nouvelle application au prochain démarrage. Ce système est très intéressant pour les grosses entreprises qui ne peuvent pas se permettre d'aller mettre à jour une application sur les milliers de postes de leurs collaborateurs.

Les avantages :
  • Fonctionnement en mode déconnecté.
  • Exécution externe au browser -> intégration facile & large support.
  • Mise à jour incrémentale et modulaire des applications.
  • Support d'un exécution sécurisée dans un environnement de type sandbox.
  • Certains services avancés accessibles sans certificat (ouverture d'un flux fichier, sauvegarde d'un flux fichier, mécanisme de persistance entre sessions, impression, téléchargement de ressources, ...).
  • Migration facile depuis une application Java standard.

lien :  http://www.up2go.net/

Qu'est-ce que l'Unicode ?
auteur : Nicolas Cuny
Les encodages les plus souvent utilisés en informatique sont l'ASCII et l'ISO Latin-1. Ils sont codés respectivement sur 7 bits et 8 bits, ils peuvent donc représenter 128 et 256 caractères. Ces encodages sont suffisants pour les principales langues de l'Europe et de l'Ouest, mais ils sont quand même assez limités.

Un standard, Unicode, a été crée en 1991 pour pallier à ces limitations et permettre de coder d'autres alphabets. Chaque caractère est défini sur 16 bits, ce qui porte à 65 536 le nombre le symboles représentables, de quoi envisager l'avenir sereinement. Aujourd'hui sous la coupe de l'Unicode Consortium, le standard continue d'évoluer. Pour plus de détails, consultez le site Unicode.org .

Java qui se veut un langage standard, utilisable quelquesoit le machine ou le système, utilise Unicode pour représenter les caractères. Malheureusement Unicode est encore peu répandu et la plupart des éditeurs de texte ne le prennent pas en charge. Cependant un programme écrit en ASCII (ou en ISO Latin-1) sera parfaitement compris par Java. Si vous voulez imbriquer un caractère Unicode dans un programme écrit en ASCII pur, vous devrez utiliser une séquence d'échappement particulière : la barre oblique arrière ou anti-slash '\' suivie d'un 'u' minuscule et d'une suite de quatres chiffres hexadécimaux correspondant au code Unicode du caractère. Par exemple, \u0020 représente le caractère d'espacement.

Les caractères Unicode sont utilisables partout en Java, y compris dans les noms de variables et les commentaires. Toutefois, il est recommandé de ne pas utiliser les symboles monétaires en tête des noms car ils pourraient interférer avec des variables interne à Java.

lien :  http://www.unicode.org/

Comment connaître la version de la JVM installée ?
auteur : Clément Cunin
Depuis une console :

java -version
Depuis un programme :
Lors de l'exécution, la version de la JVM est accessible via les propriétés système (Comment accéder aux valeurs des variables d'environnement ?).

String version = System.getProperty("java.vm.version");

Quelles sont les convention de nommage en Java ?
auteur : Clément Cunin
Les variables :
Les noms variables sont écrits en minuscules sauf la première de chaque de mot à partir du deuxième. Il est également recommandé de choisir un nom de variable court mais suffisamment explicite (garder à l'esprit qu'un autre programmeur sera peut-être obbligé de comprendre votre code plus tard).

public int maVariableEntiere;
Note : Une variable peut commencer par le caractère '_' ou '$', mais c'est fortement déconseillé par SUN.

Les constantes :
Afin de bien les différencier des variables ; les constantes sont écrites en majuscule, les mots sont séparés par le caractère '_'.

public final static int MA_CONSTANTE
Les méthodes :
Le nom des méthodes suit les mêmes règles de construction que les variables, mais le premier mot devrait toujours être un verbe à l'infinitif, suivi éventuellement de mots pour qualifier l'action.

Les classes et interfaces :
Les noms de classes sont écrit en minuscule, chaque première letre d'un mot est en majuscule.

public class MaClasse
Les paquets :
Les noms de paquet sont intégralement écrits en minuscule, sans caractère de séparation. Afin d'éviter au maximum les risques de conflit de nommage, il est recommandé de placer son travail dans un paquet commençant par un nom de domaine internet (com, edu, gov, mil, en, fr, etc ...) suivit du nom de l'organisation ou du projet.

com.developpez.javaorg.w3c.domorg.xml.sax

Qu'est que l'obfuscation ?
auteur : Clément Cunin
Qu'est que c'est, quel est le but ?
Pour assurer l'indépendance de la plate-forme, les programmes Java sont distribués sous forme de bytecode, cette forme est très proche du code source original. Le bytecode est donc très facile à décompiler ce qui augmente le risque d'une attaque par analyse du code source (reverse engineering). Cette attaque consiste à décompiler une application pour comprendre ce qu'elle fait exactement (dans le cas de la cryptographie) ou pour comprendre comment elle le fait (dans le cas d'espionnage industriel).
Pour se protéger de ce type d'attaque, on peut avoir recours à un "obfuscateur". Il s'agit d'un utilitaire qui transforme le bytecode en un bytecode équivalent mais plus difficile à décompiler.

Comment ça marche ?
Plusieurs techniques permettent de rendre plus difficile la décompilation du bytecode. La première se base sur les principes d'optimisation du code, en réordonnant les micro-instructions. D'autres techniques, plus radicales, changent l'organisation de la mémoire, le nom des identifiants, ajoute du code parasite ou des "goto" : le bytecode est souvent légèrement moins rapide mais surtout très difficile à comprendre.

Quel obfuscateur en Java ?
  • RetroGuard : un des meilleurs obfuscateurs Open Source.



Ce document issu de http://www.developpez.com est soumis à la licence GNU FDL traduit en français ici.
Permission vous est donnée de distribuer, modifier des copies de cette page tant que cette note apparaît clairement.