Histoire
Un langage pour définir des blueprints
déclaratifs pour générer des classes Java.
Prend en charge la génération automatique et personnalisable de :
Arborescences d’héritage (
extend,implement,permits)Attributs
Getters/setters
méthode
hashCodeméthode
equalsméthode
toStringStubs de méthode
Fonctionnalités supplémentaires :
Classes imbriquées et statiques
Blocs de code Java arbitraires
Avantages par rapport aux extraits
Un blueprint Jslave est autonome et peut être automatisé, contrairement aux extraits/raccourcis qui dépendent de l’IDE et nécessitent une saisie manuelle. Cette approche présente les avantages suivants :
Les blueprints peuvent être transmis sous forme de fichiers
Les blueprints peuvent être générés vers autre chose que Java
La génération est prévisible et déterministe
La génération peut être automatisée dans un script
Inconvénients :
Étant donné que nous ne sommes plus dans un contexte Java, nous ne recevrons pas beaucoup d’aide de l’IDE lors de l’écriture de JSlave (coloration syntaxique, auto-complétion…). Ce problème est atténué par la simplicité du langage et la future extension VS Code.
Premiers pas
1. Écrivez votre fichier JSlave
Votre fichier JSlave (appelé idiomatiquement un blueprint) définit la structure de votre code Java et fournit la syntaxe des modèles courants afin d’éviter d’écrire tout ce code Java répétitif.
Vous trouverez plus de détails sur la syntaxe dans la documentation, mais l’idiome principal est le suivant :
Un blueprint est une liste de définitions qui génèrent le type Java correspondant (classes, enregistrements, interfaces…). Chaque définition contient zéro ou plusieurs membres qui déterminent le contenu du type.
Les membres peuvent être de deux types :
Les attributs définissent les champs de données du type. Ils génèrent des attributs de classe Java et des méthodes getter/setter.
Les méthodes définissent les comportements du type. Les méthodes qui ont une signification particulière en Java (
equals,hashCode,toString) sont appelées méthodes spéciales. Elles peuvent être exprimées sous trois formes :Stub : une méthode vide à implémenter soit à partir du code Java généré, soit avec un bloc de code
Implémentation par défaut : une implémentation par défaut à usage général qui devrait fonctionner dans la plupart des cas
Implémentation personnalisée : l’implémentation par défaut, personnalisée en passant des arguments à la méthode
2. Générez-le
À partir de l’interface graphique de l’extension VSCode ou en utilisant le binaire autonome, générez votre blueprint.
Plusieurs cibles sont disponibles