Un interpréteur graphique pour le langage ROBI avec architecture client-serveur, supportant plusieurs modes de rendu et d'exécution.
EL OUAZIZI Walid
- Lien : https://gluonhq.com/products/javafx/
- Téléchargez la version correspondant à votre système (Windows/Linux/macOS)
- Lien : https://central.sonatype.com/namespace/com.fasterxml.jackson.core
- Téléchargez les 3 JAR suivants :
jackson-core.jarjackson-annotations.jarjackson-databind.jar
Créez l'arborescence suivante à la racine du projet :
projet/
├── lib/
│ ├── javafx/
│ └── fasterxml/
└── resources/
JavaFX :
- Décompressez le SDK JavaFX téléchargé dans
lib/javafx/
Jackson :
- Placez les 3 fichiers JAR dans
lib/fasterxml/:jackson-core.jarjackson-annotations.jarjackson-databind.jar
Si vous êtes sous Linux, modifiez les scripts de lancement :
- Remplacez les
;par des:dans les flags-cp(classpath)
Utilisez les scripts présents dans le dossier resources/ :
# Lancer le serveur
./resources/start-server.sh # ou .bat sous Windows
# Lancer le client
./resources/start-client.sh # ou .bat sous WindowsLe serveur offre deux modes de fonctionnement :
Communication via sockets pour une exécution temps réel.
Caractéristiques :
- 🔹 Mode mono-client : Un client à la fois
- 🔹 Mode multi-client : Gestion de plusieurs connexions simultanées
- 🔹 Rendu côté client : Le serveur envoie les données, le client effectue le rendu
- 🔹 Format JSON : Requêtes et réponses au format JSON
Rendu côté serveur avec animation automatique.
Fonctionnalités :
- ✅ Génère une page HTML complète
- ✅ Script JavaScript avec
setTimeoutpour l'animation - ✅ Images encodées en Base64
- ✅ Rendu automatique dans une balise
<img id="renderer"> - ❌ Ne supporte pas le mode pas-à-pas
Retour : Page HTML prête à l'affichage
Mode pas-à-pas pour un contrôle fin de l'exécution.
Fonctionnalités :
- ✅ Exécution étape par étape
- ✅ Historique complet de l'exécution
- ✅ Inspection de l'environnement
Réponse JSON :
{
"responses": [
{
"feedback": "...",
"world": { /* Arbre graphique */ },
"lastExpression": "...",
"environment": {
"references": [...],
"primitives": [...],
"scripts": [...]
},
"delay": 1000
}
]
}Le plus complet - Interface graphique JavaFX
Fonctionnalités :
- ✅ Mode pas-à-pas et animation
- ✅ Consultation de l'environnement (références, scripts, primitives)
- ✅ Pile d'appels des S-expressions
- ✅ Export/Import JSON des requêtes/réponses
- ✅ Sauvegarde/Chargement de scripts ROBI
- ✅ Images chargées depuis le client (pas de transfert serveur)
Simplicité maximale - Rendu serveur
Fonctionnalités :
- ✅ Interface web légère
- ✅ Rendu côté serveur
- ❌ Pas de mode pas-à-pas
- 🔹 Système de templates et pré-compilation
- 🔹 Images transmises au serveur via templates
Moderne et interactif - Rendu client
Fonctionnalités :
- ✅ Mode pas-à-pas et animation
- ✅ Rendu côté client (performances optimales)
- ✅ Interprétation locale des images
- ✅ Consultation de l'environnement
- ✅ Pile d'appels des S-expressions
- ✅ Interface moderne et réactive
| Fonctionnalité | Java | Web Simple | Web React |
|---|---|---|---|
| Mode pas-à-pas | ✅ | ❌ | ✅ |
| Animation | ✅ | ❌ | ✅ |
| Rendu côté | Client | Serveur | Client |
| Environnement | ✅ | ❌ | ✅ |
| Pile d'appels | ✅ | ❌ | ✅ |
| Export JSON | ✅ | ❌ | ❌ |
| Save/Load | ✅ | ❌ | ❌ |
{
"script": "(define x 10) (draw x)",
"mode": "step-by-step"
}{
"status": "success",
"feedback": "Exécution terminée",
"world": { /* ... */ },
"environment": { /* ... */ }
}- Les images peuvent être transmises en Base64 pour éviter les problèmes de chemins
- Le mode multi-client utilise des threads pour gérer les connexions simultanées
- Le serveur HTTP est idéal pour des démos rapides
- Le mode Socket TCP offre plus de flexibilité pour les clients personnalisés
Erreur de classpath sous Linux :
- Vérifiez que les
;ont bien été remplacés par des:dans les scripts
JavaFX non trouvé :
- Vérifiez que le SDK est bien décompressé dans
lib/javafx/ - Vérifiez les chemins dans les scripts de lancement
Jackson non trouvé :
- Assurez-vous que les 3 JAR sont présents dans
lib/fasterxml/