Une interaction entre l''homme et la machine grâce à une console ? Cela ressemble à l''image véhiculée par les films science-fiction des années 1980-1990. Mais grâce à une classe Java, cette échange est possible dans le monde réel.
La classe java.io.Console permet à une personne physique de communiquer avec une console sur la base des questions - réponses. Le principe peut être utilisé par exemple dans un système d''authentification où l''on vérifie si les informations saisies par l''utilisateur l''autorisent à accéder au système. Regardons comment cet exemple peut être implémenté dans le code :
import java.io.Console; public class ConsoleTest { public static void main(String args[]) { Console console = System.console(); if (console == null) { System.err.println("Console is not active."); System.exit(1); } String login = console.readLine("Enter your login: "); console.format("Hello %s. Please, introduce your password. \n", login); char[] password = console.readPassword("Enter your password : "); User user = new User(login, String.valueOf(password)); console.format("New User instance created : %s \n", user); while(!user.isCorrectPassword()) { console.format("Your login - password pair is incorrect. Please, introduce the right credentials \n"); password = console.readPassword("Introduce the correct password :"); user.setPassword(String.valueOf(password)); console.format("User's password changed %s. \n", user); } console.format("Your password matches your login. You were correctly authentified \n"); } } class User { private String login; private String password; public User(String l, String p) { login = l; password = p; } public void setPassword(String p) { password = p; } public boolean isCorrectPassword() { return login.equals(password); } public String toString() { return "User [login="+login+", password="+password+"]"; } }
Maintenant, sur l''écran on verra (le résultat variera en fonction des réponses fournies) :
Enter your login: bartosz Hello bartosz. Please, introduce your password. Enter your password : New User instance created : User [login=bartosz, password=bartosz2] Your login - password pair is incorrect. Please, introduce the right credentials. Introduce the correct password : User's password changed User [login=bartosz, password=bartosz3]. Your login - password pair is incorrect. Please, introduce the right credentials. Introduce the correct password : User's password changed User [login=bartosz, password=bartosz]. Your password matches your login. You were correctly authentified
Le code est très intuitif. Au tout début on vérifie si la console existe. Dans le cas contraire, on peut l''activer dans le panneau de configuration Java (voir comment activer la console). Ensuite on passe à la première question, affichée avec la méthode readLine(). Cette fonction permet en même temps un affichage de la question et la saisie de la réponse. On affiche l''identifiant renseigné grâce à la méthode format(). Ensuite, via un autre moyen (les caractères ne s''afficheront pas sur l''écran) readPassword(), on récupère le mot de passe. Désormais on dispose de deux éléments obligatoires pour authentifier l''utilisateur. Le reste du code se charge de le faire.
Les petites applications basées sur Console peuvent être utiles dans le couplage entre le Java et d''autres langages de script. Elles peuvent servir, entre autres, à authentifier l''utilisateur, mais aussi à transmettre les paramètres aux scripts (bien qu''on peut toujours le faire directement en ligne de commande).