Programmer en JAVA

Introduction

Cet article n'est pas un cours complet sur le langage de programmation Java mais récapitule l'ensemble des paquets à installer sous Linux Ubuntu pour bénéficier d'un environnement de développement Java, avec notamment Eclipse en français.

Sommaire de cette page

Qu'est-ce que Java ?

Compilation et exécution d'un programme Java

Structure générale d'un programme Java

Installation d'un compilateur Java

Premier programme en Java

Installation d'Eclipse en français

Apprenez à programmer grâce au club informatique

Exemple de programme : test des nombres premiers

Autres programmes sources en Java : le MasterMind et le jeu des allumettes

Programmer rapidement en Java sous Windows

 

 

Qu'est-ce que Java ?

Java est un langage de programmation orienté objet qui se base sur le langage C++. Il a été conçu par Sun en 1996. Au départ, il s’appelait Oak, mais ce nom était déjà utilisé pour un autre langage : c’est pendant une pause café que les informaticiens de chez Sun ont trouvé ce nom. En effet, JAVA désigne à la fois une graine de café et un terme argotique (équivalent de « kawa » en français).

Avant l’apparition de JAVA, la programmation de l’interface graphique n’était pas portable. En effet, on distingue la programmation du serveur X (Linux) de Windows (fichiers dll).

L’objectif de JAVA était de concevoir un langage de programmation multi plateformes (Unix, Microsoft et Apple), totalement portable. L’autre objectif était d’implémenter la programmation Internet.

 

 

Retour en haut de la page

 

Compilation et exécution d'un programme Java

On distingue 2 types de programmes en JAVA : les applications, c'est-à-dire les exécutables « classiques », et les applets. Ce sont des programmes qu’on intègre dans une page HTML.

Actuellement, la plupart des navigateurs Internet interprètent les applets JAVA, mais il est préférable d’installer soi même la machine virtuelle de chez Sun puisque Internet explorer contient la machine virtuelle de Microsoft, qui est totalement inefficace (Microsoft tente d’imposer « son JAVA »).

On peut aussi télécharger le kit de développement JAVA : JDK. Celui-ci admet plusieurs versions : les versions plus anciennes sont plus portables. Par ailleurs, il existe un mécanisme de dépréciation des méthodes : lorsqu’une méthode est remplacée par une autre (plus efficace …), celle-ci est toujours disponible, mais dépréciée à le compilateur nous l’indique par un warning.Ce kit contient entre autre un compilateur, un interpréteur, un inspecteur d’applet et un visionneur de documentation.Pour compiler notre code source, on utilise le compilateur javac suivi du nom du programme. Il est obligatoire de donner le même nom à la classe principale du programme et au fichier source :javac nomClassePrincipale.javaLe compilateur ne crée pas un exécutable, mais une sorte de code objet è c’est ce fichier qui est portable. Il crée autant de fichier objet (extension class) que de classes contenues dans le programme.Une fois le (ou les) fichier class obtenu, on peut les interpréter avec l’utilitaire java :java nomClassePrincipaleComme l’interpréteur exécute le programme ligne par ligne, la plupart des applications JAVA sont beaucoup plus lentes que les programmes faits en C ou en C++.Autre remarque, le JAVA tourne dans une machine virtuelle : quel que soit le système, il n’est pas possible d’accéder aux périphériques. Il doit tout de même exister des possibilités d’importer du code source C …La compilation s’applique aussi pour les applets. On doit ensuite intégrer les fichiers class dans une page HTML ; en voici la syntaxe de base :

<HTML>
<APPLET CODE="nomClassePrincipale.class" width
=largeur height=hauteur>
</APPLET>
</HTML>

La largeur et la hauteur concernent la taille de l’applet dans la page.On peut aussi visionner les applets à l’aide de l’utilitaire appletviewer, suivi du fichier HTML.

La commande javadoc permet de visionner la documentation à partir d’un code source (commentaires spécifiques).

 

 

Retour en haut de la page

 

Structure générale d'un programme Java

Le JAVA est un langage orienté objet : un programme JAVA est une suite de déclarations de classes. Contrairement au C++, il n’y a pas de définition : les méthodes sont directement déclarées à l’intérieur de la classe à il n’y a pas de portée.

En ce qui concerne les applications, on fera la différence entre la classe principale, qui contient la méthode main et qui doit être déclarée publique, et les autres classes. On rappelle que la classe principale est celle qui porte le nom du fichier source …Les méthodes situées en dehors de la classe principale doivent être publiques (pour pouvoir être appelées). Celles situées à l’intérieur doivent être statiques pour pouvoir être appelées dans la méthode main. Cette dernière doit être publique et statique à la fois.Pour les applets, il n’y a pas de méthode principale.On peut importer des paquetages avec l’instruction import suivie du nom du paquetage, nom généralement constitué de 3 parties (java.io.* pour les entrées).On peut aussi étendre la classe définie avec l’instruction extends (héritage simple), ou avec l'instruction implements (pseudo héritage multiple).

Structure générale d’une application :

import nomPaquetage;

class nomClasse

{

            /* attributs et méthodes */

            public type nomMéthode(arguments)

            {

                        /* instructions */

            }

}

public class nomClassePrincipale

{

            static type nomMéthode(arguments)

            {

                        /* instructions */

            }

            public static void main(String args[])

            {

                        /* instructions : appel de methodes … */

            }

}

Structure générale d’une applet :

import nomPaquetage; //java.awt.* ou javax.swing.*

public class nomClasse extends java.applet.Applet

{

            /* attributs et méthodes */

}

 

 

Retour en haut de la page

 

Installation d'un compilateur Java sous Linux

Le compilateur Java utilisable en ligne de commande se nomme javac. Sous Ubuntu 10.04 LTS il faut installer le paquet openjdk-6-jdk pour bénéficier d'un JDK (Java Development Kit), contenant notamment le compilateur Javac.

Pour installer le JDK sous Ubuntu on pourra taper la commande suivante en tant que root :

apt-get install openjdk-6-jdk (ou utiliser l'interface graphique Synaptic d'apt-get).

 

Retour en haut de la page

 

Premier programme pour tester la compilation Java

Editons un nouveau fichier texte dans Gedit nommé toto.java :

gedit toto.java

Voici le code source en Java de ce premier programme qui se contente d'afficher "Bonjour" sur la sortie standard :

class toto {
   public static void main(String[] arguments)
   {
   System.out.print("Bonjour\n");
   }
}

Remarques :

Compilons le programme source toto.java en utilisant le compilateur en ligne de commande Javac :

javac toto.java

Remarques :

Exécutons le programme toto.class :

java toto

Remarques :

 

Retour en haut de la page

 

Installation de l'EDI (Environnement de Développement Intégré) Eclipse en français

Pour installer Eclipse il suffit d'installer le paquet nommé eclipse :

apt-get install eclipse

Mais par défaut l'interface utilisateur d'Eclipse est en anglais. Voici la procédure pour obtenir Eclipse Galileo 3.5.2 en français :

Télécharger le "langagepack" à l'adresse http://download.eclipse.org/technology/babel/babel_language_packs/R0.8.1/galileo.php

Pour obtenir Eclipse Galileo 3.5.2 en français le fichier est :

http://www.eclipse.org/downloads/download.php?file=/technology/babel/babel_language_packs/R0.8.1/BabelLanguagePack-eclipse-fr_3.5.0.v20101211082259.zip

Décompacter le fichier ZIP puis copier les fichiers dans le répertoire /usr/lib/eclipse en complétant les sous-répertoires features et plugins puis lancer Eclipse : il est en français !

Pour plus de détail voir le site http://doc.ubuntu-fr.org/eclipse

On regrètera cependant qu'à chaque nouvelle version d'éclipse la procédure pour le franciser change du tout au tout et que plusieurs heures de recherche soient nécessaires pour obtenir une interface en français. Jusqu'à la version 3.3 d'Eclipse la simple installation du paquet eclipse-nls via Synaptic suffisait ...

 

Retour en haut de la page

 

Exemple de programme : recherche des nombres premiers

Le programme suivant permet de tester si un nombre entier est premier ou pas. Vous pouvez le tester sur ma page consacrée aux nombres premiers.

/***************************************************************************/
/* Programme en JAVA réalisé par Jean-Christophe MICHEL le 22 Janvier 2002 */
/* JBuilder 5.0 JDK 1.3                                                    */
/***************************************************************************/
/*                                                                         */
/* Le but de ce programme est de tester la primalité d'un nombre entier    */
/*                                                                         */
/* L'interface utilisateur de ce programme est réalisée avec l'API AWT     */
/*                                                                         */
/***************************************************************************/
package nombres_premiers;

import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class premier extends Applet {
private AudioClip sound;
boolean isStandalone = false;
Button bouton_valider = new Button();
Label label1 = new Label();
TextField ligne_de_saisie = new TextField();
Label label_signature_1 = new Label();
Label label_signature_2 = new Label();
Label label_resultat = new Label();
/**Get a parameter value*/
public String getParameter(String key, String def) {
return isStandalone ? System.getProperty(key, def) :
(getParameter(key) != null ? getParameter(key) : def);
}

/*************************************************************************************************/

/**Construct the applet*/
public premier() {
}

/*************************************************************************************************/

/**Initialize the applet*/
public void init() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}

/*************************************************************************************************/

/**Component initialization*/
private void jbInit() throws Exception {
bouton_valider.setLabel("Tester le nombre");
bouton_valider.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
bouton_valider_actionPerformed(e);
}
});
label1.setText("Entrer un nombre entier à 7 chiffres maximum :");
ligne_de_saisie.setText("Entrez un nombre ici");
label_signature_1.setText("Applet Java réalisée par Jean-Christophe MICHEL");
label_signature_2.setText("http://www.gecif.net");
label_resultat.setAlignment(1);
label_resultat.setFont(new java.awt.Font("Dialog", 0, 18));
label_resultat.setForeground(Color.red);
label_resultat.setText("Test de primalité d\'un nombre");
this.add(label1, null);
this.add(ligne_de_saisie, null);
this.add(bouton_valider, null);
this.add(label_resultat, null);
this.add(label_signature_1, null);
this.add(label_signature_2, null);
}

/*************************************************************************************************/

/**Get Applet information*/
public String getAppletInfo() {
return "Applet Information";
}

/*************************************************************************************************/

/**Get parameter info*/
public String[][] getParameterInfo() {
return null;
}

/*************************************************************************************************/

void bouton_valider_actionPerformed(ActionEvent e) {
String s;
int a=3,nbr_original,fin=0;
float r;
Float obj;
double d;

s=ligne_de_saisie.getText();
obj=Float.valueOf(s);
nbr_original=obj.intValue();
d=obj.intValue();

if (d%2==0) { fin=2; }
if (d<=0) { fin=2; }
if (d==1) { fin=2; }
if (d==2) { fin=1; }
while (fin==0)
{
if (a>=Math.sqrt(d)+1)
{
fin=1;
}
if ((fin!=1) && ((d % a)==0)) {
fin=2;
}

a=a+2;
}

s=String.valueOf(nbr_original);
if (fin==1) {
label_resultat.setText(s+" est premier");

try {
sound = getAudioClip(getCodeBase(), "premier_oui.au");
}
catch(Exception toto) {
}
sound.play();

}
if (fin==2) {
label_resultat.setText(s+" n'est pas premier");
try {
sound = getAudioClip(getCodeBase(), "premier_non.au");
}
catch(Exception toto) {
}
sound.play();
}
}
}


/*************************************************************************************************/
/*                                       Fin du programme                                        */
/*************************************************************************************************/

Retour en haut de la page

 

Les fiches du club informatique

Le club informatique permet à des lycéens d'apprendre les bases de la programmation en Java (à l'époque sous Linux RedHat 9). Voici les fiches pratiques distribuées dans les séances du club informatique :

Les objectifs du club informatique

Eléments de base d’un programme en Java

Opérations sur les variables numériques en Java

Les tests et les conditions en Java

La boucle while en Java

Création d’une applet Java avec JBuilder 9 sous Linux

Intégration d’une applet Java dans une page web

 

Retour en haut de la page

 

Autres programmes sources en Java

Voici les jeux que j'ai programmé en Java sous Linux. Pour chacun d'entre eux vous trouverez l'applet Java (pour jouer !) et le code source :

 

Retour en haut de la page

 

Programmer rapidement en Java sous Windows

Plusieurs logiciels facilitant la programmation d'application en Java sous Windows existent. Plus simple d'emploi qu'un JDK avec un compilateur en ligne de commande, ces logiciels permettent d'obtenir rapidement des résultats (valeurs numériques, traçage immédiat de formes géométriques, etc.) sans perdre de temps à chercher à comprendre la structure du programme, la mise en place de pilotes ou l'accès à des interfaces de programmation complexes.

Parmi ces logiciels on peut citer Java's Cool et Processing :

Télécharger Java's Cool 4

Un site sur Java's Cool

Site officiel de Processing

Site OpenProcessing

 

 

Conclusion

Cette page vous a donné tous les éléments de base pour pouvoir commencer à programmer en Java sous Linux comme sous Windows.