Débuter JAVA

Pourquoi une suite de tutoriels Java? Et qui reprennent toutes les bases alors qu’il y en a déjà plein sur internet. Et bien en réalité, écrire un tutoriel est un excellent moyen de vérifier pour l’auteur qu’il maîtrise bien lui-même le sujet. Dans notre cas, nous étions quelques-uns à parler de passer la certification “programmer” de Sun pour Java. Mais après avoir essayé d’organiser des séances de révision et de subir la démotivation des uns et des autres, il m’a semblé qu’écrire une suite de tutoriels serait le meilleur moyen pour moi de m’assurer que j’avais bien le niveau.Maintenant, avancer seul sur une série de tutoriel me semblait encore une activité démotivante à la longue. Alors j’ai proposé à deux amis de les co-rédiger. Au final, nous sommes trois à écrire ces tutoriels. Chaque tutoriel est le fruit de séances de tests du contenu et de plusieurs lectures et corrections. L’équipe est composée de Kraft et moi même, qui n’avons pas perdu l’espoir d’un jour passer cette damnée certification, et de Fabien qui profite de l’occasion pour apprendre java. Nous testons et construisons les tutoriels lors de séances de pratiques. Il nous semble que ce contexte est pertinent pour vous offrir des tutoriels abouttis.

Ces tutoriels sont co-rédigés via mon wiki et publiés en version finale sur mon blog. Dans les deux cas, il est possible aux lecteurs de nous laisser des commentaires. Ne vous en privez pas, c’est comme ça qu’on progresse tous, vous et nous.

Première approche

Vocabulaire minimum

Dans cette première partie, nous allons revenir sur un vocabulaire de base qu’il peut être intéressant de connaître. Ce n’est pas que ce vocabulaire vous servira à coder à proprement parler, mais il vous permettra de mieux naviguer dans le monde JAVA. Et puis si au hasard d’une discussion votre interlocuteur utilise l’un de ces termes, ça vous évitera de passer pour un ***.
IDE : Integrated Development Environment. C’est un espace de développement. Donc un ensemble de programmes vous permettant de développer et de tester votre code sans sortir de l’espace de développement. En gros, l’espace de développement doit vous fournir un éditeur de code, un compilateur et vous permettre de lancer l’éxécution de vos programmes et de suivre le déroulement de ceux-ci. C’est un moyen de gagner du temps, beaucoup de temps.

JVM : Java Virtual Machine. C’est un ensemble de programmes et de structures de données qui permet d’interpréter des scripts ou programmes écrits dans un langage particulier, le bytecode java. Vous écrivez vos programmes dans un langage dit naturel et vous les compilez dans un autre langage, le bytecode. Celui-ci est interprétable, compréhensible, par toute JVM. C’est ce qui permet à java d’être un langage de programmation multi-plateformes. Chaque Architecture, chaque OS, a sa propre machine virtuelle. Ainsi un programme écrit en java et traduit en bytecode java est compréhensible sur toutes les plateformes ayant une JVM.

JRE : Jave Runtime Environment. C’est ce qui va vous permettre de comprendre le java. En fait, c’est là que se trouve votre JVM. Le JRE, c’est en gros l’ensemble du code nécessaire pour lancer une JVM. Quand un programme java est lancé, le JRE crée une JVM qui interpréte le bytecode du programme.

JDK : Java Development Kit. Le JDK est en gros le complément du JRE. Si le JRE permet d’interpréter un byte code, le JDK lui permet de compiler du bytecode à partir du code java dit “naturel”.

API : Application Programming Interface. C’est l’ensemble des fonctions et leurs descriptions mises à disposition des développeurs. C’est essentiel pour pouvoir partager le travail d’un développeur à l’autre. Dans le cas de Java, il existe une API des packages de bases. Mais chacun peut éditer la documentation de ses propres développements grâce à la javadoc. L’URL de l’api java 6: http://java.sun.com/javase/6/docs/api

Les bases java

Dans cette partie, nous allons vous faire écrire, compiler et exécuter un premier programme JAVA. Et ce premier programme sera un HelloWorld (comme c’est original). Ecrire ce programme vous aménera à écrire une première classe JAVA et nous allons tenter d’expliquer au fur et à mesure les éléments mis en jeux. Ce premier exercice doit être vu comme une initiation. C’est l’occasion de vérifier que vous avez bien tout ce qu’il faut pour faire du java (JRE, JDK). Les différents éléments sur lesquels nous allons revenir risquent donc de paraître survolés pour les développeurs avancés (mais pourquoi diable lieraient-ils ce tuto!!) et un brin compliqués voir flous pour les novices. Mais que les novices se rassurent, les tutos à venir reviendrons sur les points importants concernant la syntaxe java et la programmation objet.

1) Donc créons un fichier HelloWorld.java.

Dans ce fichier on déclare la classe HelloWorld :

public class HelloWorld
{

}

Alors de suite, ce qu’il faut retenir sur la déclaration de classes dans un fichier .java :

  • On peut déclarer autant de classes que l’on souhaite dans un fichier java.
  • On ne peut déclarer qu’une seule classe public.
  • Le fichier doit porter le même nom que la classe public s’il y en a une.
  • S’il n’y a pas de classe public dans le fichier, le nom du fichier n’a pas d’importance.

Du coup on va expliquer ce à quoi sert le mot-clef “public”.En java, il y a des niveaux d’accessibilité. Ces niveaux sont indiqués via des mots-clefs appelés “modifiers” en Anglais. En ce qui concerne les classes, il y a deux modifiers d’accessibilité possibles :

  • default. Le mot-clef default correspond au niveau de droit d’accés par défaut. On n’est pas obligé de l’écrire d’ailleurs. Ne rien marquer ou marquer default revient au même. Dans ce cas, la classe n’est visible que par les autres classes de son package.
  • public. Le mot-clef public correspond au niveau d’accés publique. C’est à dire qu’elle est visible par toutes les autres classes, même les classes qui ne sont pas du même package.

Arf, on tire sur la pelotte de laine. On se dit qu’on va juste expliquer à quoi sert le mot-clef public et on se retrouve à utiliser un nouveau gros mot qu’il faut définir.Qu’est-ce qu’un package? Un package est un regroupement de classes. C’est un peu le même principe qu’un répertoire. Un package peut aussi contenir d’autres packages.

L’idée est que, en programmation, on peut avoir envie de réutiliser un ensemble de classes d’un projet à un autre. Regrouper des classes qui se suffisent entre elles dans un même package permet de réutiliser ce package d’une application à une autre. On importe un package via le mot clef import en début de fichier. On déclare que les classes d’un fichier font partie d’un package par le mot-clef package.

2) Le but de notre classe : afficher “HelloWorld” dans une console.

Donc pour afficher HelloWorld, il va nous falloir faire une méthode main. C’est la méthode appelée au lancement d’un programme java…

C’est quoi une méthode?

Pourquoi la méthode main est appelée au lancement?

Comment l’application sait quelle méthode main lancer?

On répondra à toute ces questions juste après ce petit bout de code :

public class HelloWorld
{
public static void main(String[] args)
{
}
}

Alors c’est quoi une méthode? Il faut penser comportement. Une méthode est un comportement pour une instance d’une classe. … On s’enfonce là. Il va falloir tout un cours de programmation objet avec ça. Et bien oui, si vous voulez vraiment faire du java, il va falloir faire un minimum de programmation objet. Mais on y reviendra plus tard, promis. Pour l’instant, pensez plutôt fonction, c’est plus simple. Une méthode est une fonction ayant un ensemble d’arguments passés en paramétre.

Alors pourquoi main est appelée au lancement? Parce que c’est comme ça.

Comment l’application sait quel main lancer? Tout d’abord, une classe ne peut pas déclarer deux méthodes ayant exactement la même signature. La signature c’est le nom de la méthode et le type des arguments passés en paramétre. Donc, on ne peut pas avoir deux méthodes main ayant la même signature dans une même classe. Et si vous vous rappelez bien que l’on ne peut pas avoir deux classes public dans un même fichier et que je vous dis en plus qu’une méthode main ne peut pas être déclarée dans une classe autre que public, alors vous comprenez bien qu’il ne peut y avoir qu’une seule méthode main prenant un tableau de String en paramétre dans un fichier .java.

Mais c’est quoi ce static ? static est un autre mot-clef. Il peut s’appliquer notamment sur des méthodes. Cette méthode est alors spécifique de la classe. Tous les objets instances de cette classe auront alors exactement le même comportement lors de l’appel de cette méthode. En outre, une méthode static peut-être appelée sans avoir besoin d’instancier la classe. Une méthode static ne peut faire appel qu’à des méthodes ou attributs statics. Bon c’est un peu compliqué tout ça si on ne fait pas un peu d’objet avant. Donc on y reviendra quand on fera de l’objet.

Mais c’est quoi ce void ? C’est  encore un mot-clef. Void veut dire que la méthode ne renvoie rien en retour. Quand on écrit une méthode, on est censé déclarer le type de retour. C’est à dire préciser la nature de l’élément retourné par la méthode une fois qu’elle a fini son exécution. Ici on déclare que la méthode ne renvoie rien.

3) Mettons un peu de corps dans notre méthode.

public class HelloWorld
{
public static void main(String[] args)
{
System.out.print(”HelloWorld”);
}
}

System.out : on demande l’attribut public “out” de la classe System (donc out est un attribut static). Si vous ne me croyez pas vous pouvez aller faire un premier tour sur l’api java. “out” est de type PrintStream et posséde une méthode print qui prend en paramétre une String. Pour ceux qui en doutent, “HelloWorld” est une String (chaîne de caractéres).

4) Maintenant il faut qu’on compile ce fichier HelloWorld.java en un bytecode que l’on appelera HelloWorld.class. On pourra ensuite exécuter ce bytecode sur n’importe quelle JVM.

Lancez une console, ou un terminal, comme vous préférez. Ce qui vous semble le moins lourd. :)

Tapez une ligne de commande qui ressemble à ça, modulo le chemin de votre JDK :

/chemin_de_jdk/bin/javac HelloWorld.java

Normalement, si tout se passe bien, vous avez compilé votre première classe java en bytecode. Vous demandez à l’application javac de compiler le fichier HelloWorld.java plus précisément. Cela a pour conséquence de créer un fichier HelloWorld.class.

Maintenant tapez :

/chemin_de_jdk/bin/java HelloWorld

Et là dans votre terminal devrait s’afficher : HelloWorld. Vous avez demandé à l’application java d’interpréter le bytecode HelloWorld.class

Vous avez codé, compilé et exécuté votre premier programme Java. Félicitations!!! ;)

Mots-clefs :

3 commentaires sur “Débuter JAVA”

  1. admin dit :

    Je pars du principe dans ce tutoriel que vous avez correctement installé JAVA.
    Notamment que vous avez correctement défini votre variable d’environnement JAVA_HOME…
    sous linux export JAVA_HOME=chemin_jdk
    sous winbdows : http://wso2.org/project/wsas/java/2.0/docs/setting-java-home.html

  2. [...] vous recommande de lire notre premier tutoriel débuter java. Nous ne détaillons toujours pas dans ce tutoriel tous les usages de tous les mots clefs java [...]

Laisser une réponse