- Java est connu pour convenir aux projets de grande envergure et de longue durée, mais peut aussi être un excellent outil pour les petites tâches
- La vérification statique des types et l’excellent support des outils constituent aussi de grands avantages pour les petites tâches
- Les améliorations récentes du langage rendent Java encore plus utile
Exécuter sans compilation
Syntaxe concise : méthode main d’instance et classe implicite
- JEP 477 : simplifie l’écriture de petits programmes et scripts
- Suppression de la syntaxe auparavant lourde (
public static void main) :
var someVariable = initialValue;
String helper(int param) { ... }
void main(String[] args) {
...
}
- Import automatique du module
java.base, pour plus de confort
- Les méthodes
println, print, readln sont également importées automatiquement
Records et enums
- Records : permettent de représenter des données structurées à la place des dictionnaires Python
record Window(int id, int desktop, int x, int y, int width, int height, String title) {}
- Enums : une façon plus intuitive d’exprimer des types énumérés qu’en Python
enum Direction { NORTH, EAST, SOUTH, WEST };
Fonctionnalités utiles du langage et des API
- Utilisation de
var : permet d’employer des variables sans déclaration explicite de type dans les scripts
static import : permet d’écrire des calculs mathématiques plus concis
import static java.lang.Math.*;
var diagonal = sqrt(pow(width, 2) + pow(height, 2));
- Blocs de texte : améliorent la lisibilité en gardant code et données ensemble
- Bibliothèques puissantes pour les chaînes de caractères, les expressions régulières, les collections, ainsi que la gestion des dates et heures
- Lecture de fichier :
var content = Files.readString(Path.of(filename));
- Exécution de processus externes :
String run(String... cmd) throws Exception {
var process = new ProcessBuilder(cmd).redirectErrorStream(true).start();
process.waitFor();
return new String(process.getInputStream().readAllBytes());
}
Gestion des dépendances et JBang
- JBang : permet d’ajouter directement des dépendances Maven dans le fichier source
//DEPS org.eclipse.angus:jakarta.mail:2.0.3
- Il devient alors possible d’exécuter ceci :
jbang MailMerge.java
- Transformer un script en exécutable :
///usr/bin/env jbang "$0" "$@" ; exit $?
Environnement notebook
Avantages des notebooks
- Programmation exploratoire : adaptée à la manipulation de données et à l’exécution de code ponctuel ou de petite taille
- Structure en cellules de code et de texte :
- Les résultats des cellules de code peuvent s’afficher sous forme de texte, tableaux, images, audio ou vidéo
- Il est possible de répéter les essais et erreurs jusqu’à obtenir le résultat souhaité, puis d’ajouter des commentaires
- Supérieur à JShell :
- Le travail par cellule est plus simple
- Les tableaux de données et graphiques peuvent être consultés visuellement
- L’enregistrement et le partage sont faciles
Jupyter et les notebooks Java
- Notebooks Jupyter : outil largement utilisé par les data scientists Python
- Peuvent s’exécuter en local ou dans le cloud (par ex. Google Colab)
- La technologie Jupyter est indépendante du langage :
- Il est possible d’installer des kernels pour divers langages (par ex. IJava, JJava, Ganymede, Rapaio)
- Jupyter Java Anywhere : simplifie l’installation d’un kernel Java en s’appuyant sur JBang
- Limites :
- La gestion des dépendances et l’affichage des résultats non textuels diffèrent selon les kernels
- Le kernel IJava présente quelques problèmes de résolution des dépendances
- Oracle ou les principaux fournisseurs devraient proposer un service type Colab dédié à Java
Traitement de données et visualisation en Java
- Python facilite le traitement des données grâce à des bibliothèques comme NumPy et Matplotlib
- Java ne dispose pas encore d’un écosystème équivalent aussi riche
- tablesaw :
- Peut servir d’alternative à NumPy
- Prend en charge la visualisation via le package JavaScript Plot.ly
Projet JTaccuino
- JTaccuino :
- notebook Java en cours de développement par Sven Reimers
- fournit une interface conviviale basée sur JavaFX
- utilise JShell comme backend
- en est à ses débuts, mais son potentiel d’évolution est élevé
Notebook Kotlin
- Le plugin IntelliJ Kotlin Notebook est disponible pour les développeurs Kotlin
Conclusion
- Avec les bons outils, Java peut être un choix très efficace pour traiter de petites tâches
- JBang facilite l’écriture de scripts utilisant des bibliothèques tierces
- Java a aussi du potentiel pour la programmation exploratoire, mais le support outillage doit encore s’améliorer
2 commentaires
Pour du scripting simple, les langages à typage dynamique sont tellement plus pratiques...
Bien sûr, dès qu’on sort du prototype, j’utiliserais plutôt un langage statique.
Avis Hacker News
A découvert une manière d’exécuter très simplement un programme « Hello World ». C’est devenu bien plus simple qu’avec le code complexe d’autrefois.
varetrecordsont particulièrement utiles.java myfile.java, et la fonctionnalité qui importe automatiquementjava.baseest pratique.Il utilise Java, JavaScript et TypeScript, mais pour le scripting il utilise .NET et LINQPad. Grâce à LINQ, le scripting est plus facile.
À l’époque du développement de JDK 1.1, il n’y avait pas de consensus sur une suite de tests. Mark Reinhold a refusé des tests sous forme de JCK et a écrit un harnais de test simple.
Les langages évoluent avec le temps. Java est désormais rapide, et l’ajout des génériques ainsi que d’une inférence de type simple a réduit le code boilerplate.
PHP est aussi un langage utile. Il est préinstallé sur de nombreux systèmes *nix et dispose d’une bibliothèque standard pratique pour gérer les fichiers, le JSON et les requêtes réseau.
En Java 23, trois méthodes de
java.io.IOsont importées automatiquement. Il s’agit d’un nouveau type, utilisable avec l’option--enable-preview.Il a appris le « Java en fichier unique » sur Hacker Rank, et cela lui est utile pour résoudre des problèmes de code sur tableau blanc.
Si vous voulez comprendre la raison d’une méthode main simplifiée, JEP 495 mérite le détour. Son intégration est prévue dans le JDK 24.
Il utilise Java pour tous ses scripts et tâches de code, et l’utilise en entreprise depuis plus de 5 ans. Il est satisfait de l’évolution continue de Java.