À propos du projet

JUI est un framework Java léger pour créer des applications web interactives avec une surface d'application délibérément réduite. L'API canonique se trouve sous `it.jui.framework` et suit un modèle simple : implémentez `JuiApp`, recevez un `UIContext`, et décrivez l'application en utilisant des appels Java compacts tels que `ui.title(...)`, `ui.textInput(...)`, `ui.button(...)`, `ui.table(...)` et `ui.map(...)`. JUI gère ensuite HTTP, le rendu navigateur et l'état de session. Une application minimale implémente `JuiApp` et redéfinit `run(UIContext ui)`, en appelant des méthodes comme `ui.title(...)` et `ui.text(...)`. Les applications interactives peuvent lire des entrées telles que `ui.textInput(...)` et `ui.slider(...), et réagir à `ui.button(...)`, qui utilise une sémantique d'événement à usage unique : un clic évalue à `true` pour le rendu déclenché par ce clic, puis est consommé. L'état des widgets est clé de manière déterministe à partir du libellé du widget dans l'API actuelle. Les API orientées texte échappent le HTML par défaut, tandis que le HTML brut doit être explicite via `ui.html(...)`. Une CLI prend en charge la création d'un fichier source à partir du modèle canonique (`init`), son exécution (`run`) et sa surveillance (`watch`). JUI compile le code source de l'application en utilisant le JDK actuel et le sert via un serveur HTTP intégré. Le projet est organisé en modules : `jui-core` est l'implémentation actuelle et l'API canonique, tandis que `jui-core-old` est une implémentation héritée conservée uniquement à des fins historiques ou de référence. D'autres modules et le code de démonstration peuvent encore contenir des exemples hérités et ne doivent pas être traités comme la source de vérité de l'API. Un objectif de conception à long terme est de rendre JUI particulièrement adapté à la génération de code par de petits LLM locaux, en privilégiant peu de jetons source, peu de contexte de framework et des API déterministes. Le principe de conception est décrit comme « Minimum de jetons de l'intention utilisateur à l'application en cours d'exécution ». Les travaux futurs devraient privilégier des primitives d'application à haute densité sémantique, un modèle/IR d'application validé et compact, des métadonnées d'API générées par machine pour le contexte LLM, et un packaging/déploiement déterministe. Le projet se construit avec `mvn test` ; la suite de tests unitaires normale doit se terminer automatiquement, et les tests manuels qui démarrent un serveur bloquant sont désactivés du cycle de vie des tests unitaires Maven. JUI est sous licence Apache License 2.0.