Le projet Scriptool, successeur d'Openjdk 7
Tout d'abord, un fait juridique important : « l'usage légitime »
Les interfaces Java 7 sont « clean », c'est-à-dire qu'elles n'utilisent pas d'implémentation dans leur définition. Cela permet de s'assurer que l'utilisation des API Java 7 respecte la règle d'usage légitime (en Anglais « fair use »).
Dépendances sources pour le développement d'un projet
Une première règle que j'ai apprise avec Java et les langages contemporains est qu'utiliser des bibliothèques de bytecode pour les dépendances d'un projet source est une erreur.
À long terme, vous risquez de vous retrouver avec une bibliothèque dont vous n'avez pas les sources et dont vous ne pourrez donc pas compiler dans une autre version des standards exécutables.
Cela signifie que lorsqu'un projet source dépend d'une autre bibliothèque développée dans Scriptool, cette bibliothèque doit être importée sous forme source pour compiler le projet.
Par conséquent, si la bibliothèque n'est pas disponible sous forme source, vous ne pourrez pas l'utiliser.
Si vous souhaitez publier une bibliothèque réutilisable, vous devrez publier son code source.
Langage de script comme Python
Le langage Scriptool doit vous permettre d'écrire un programme et de l'exécuter immédiatement sans avoir besoin de mettre en place un projet ou d'avoir à le compiler avant de pouvoir l'exécuter.
Vous ouvrez un fichier texte ; Vous écrivez le programme dans votre éditeur de texte. Vous enregistrez le fichier et s'il ne contient pas d'erreurs, il s'exécute simplement en tapant le nom du fichier dans un terminal.
C'est ce qu'on appelle le scripting.
API propres (interface de programmation d'applications)
Les scripts sont une bonne chose pour pouvoir écrire et exécuter rapidement un petit programme. Mais lorsque l'on développe un programme qui contient plusieurs milliers d'instructions ou plus d'une centaine de classes, il faut s'organiser lors de la mise en place d'un projet.
Le langage Scriptool intègre le projet dans le script lui-même sous la forme d'une archive binaire qui peut être décompressée pour développer et compiler le projet.
Le projet doit contenir un système de compilation qui doit aboutir à l'installation du projet exécutable pour les utilisations ultérieures du script.
Ainsi, un script est composé de trois parties :
1) la classe de script telle que présentée dans le paragraphe précédent.
2) un fichier json contenant des champs pour choisir la langue, la version, Scriptool et d'autres données utiles.
3) un fichier d'archive binaire décompressable contenant l'intégralité de l'arborescence du projet.
Cette troisième partie mérite des explications : non seulement, lors de son installation, ce projet doit placer les bibliothèques compilées de manière à ce qu'elles puissent être invoquées à partir de la classe de script du point 1, mais il doit également publier un ensemble d'interfaces qui seront les seules parties de la bibliothèque du projet visibles à partir des programmes qui utilisent ce script.
Ainsi, pour utiliser une librairie développée dans Scriptool, la liste des noms d'interfaces qualifiés (les noms de leurs paquets et leurs noms) sera renseignée dans le fichier json défini au point 2.
De cette façon, nous réaliserons une encapsulation des classes du projet afin qu'aucune de ces classes n'apparaisse en dehors de ce projet.
Pour résumer, une API Scriptool, sera constituée uniquement de la classe script dans le code source et de toutes les interfaces (telles que définies par Java 7) que cette classe peut mettre directement ou indirectement à disposition de ses appelants.
Publication sous GPL v2
Openjdk 7 est publié sous une licence libre qui comprend conjointement une licence Oracle et une licence GPLv2 de ce code.
Pour les portions de code héritées d'Openjdk 7, il faut respecter la GPLv2. Le projet sera donc sous GPLv2 (tout comme le noyau Linux).
Il y a, éparpillées dans le code Java d'Openjdk 7, certaines parties qui sont (par exemple fournies par IBM) sous licence exclusive pour Openjdk 7 et autorisées par leur fournisseur uniquement pour Openjdk 7. Il faudra donc prévoir une implémentation de ces classes sans utiliser de code dont la licence ne permet pas une évolution libre.
De cette façon, Scriptool sera en mesure de maintenir la rétrocompatibilité avec Openjdk 7.
Originalité de Scriptool
Scriptool n'est pas un idiome Java. Scriptool est un langage de programmation innovant qui possède ses propres règles et spécificités qui en font un langage original.
Pour cela, Scriptool se base sur un alphabet de codage spécifique. Cet alphabet ne comporte que 64 caractères. Il y a 32 caractères pour les lettres et 32 caractères pour les symboles dans le langage de programmation.
Cet encodage en code source est disponible en 3 versions :
Marscii-16,
Marscii-32 et
Marscii-64.
D'où vient le nom Marscii ?
L'idée originale de Marscii est venue d'un film de science-fiction intitulé « Seul sur Mars». Dans ce film, le héros (Matt Damon) se retrouve abandonné seul sur la planète Mars et doit survivre par lui-même. Pour communiquer avec la Terre, il dispose d'une bande passante réduite (la largeur du canal de communication). Il a alors eu l'idée d'utiliser du code Ascii pour contourner ce problème.
Il est évident que dans le domaine spatial, la bande passante est un problème critique pour toute communication.
Voyant cela, j'ai tout de suite eu l'idée de Marscii-16 : utiliser 16 symboles pour transmettre des messages texte en anglais. J'ai appelé cette langue Xalphabet, pour hexa-alphabet.
Les symboles de Marscii-16 sont les dix chiffres décimaux (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) et les six lettres a, b, c, d, e et f.
Des règles strictes indiquent comment convertir un texte écrit uniquement avec les 26 lettres de l'alphabet anglais pour créer un texte sans espaces ni ponctuation.
Le choix du code « Marscii » m'a donc semblé facile en interpolant Mars et Ascii.
Maintenant, notre Marscii-64 est prêt à être utilisé pour écrire en anglais ou pour écrire des programmes Scriptool.
Webmiel
Christophe Roux
Développeur Logiciel
Copyright ©. Tous droits réservés.
Nous avons besoin de votre consentement pour charger les traductions
Nous utilisons un service tiers pour traduire le contenu du site web qui peut collecter des données sur votre activité. Veuillez consulter les détails dans la politique de confidentialité et accepter le service pour voir les traductions.