Об этом проекте
JUI — это легковесный Java-фреймворк для создания интерактивных веб-приложений с намеренно небольшой площадью приложения. Канонический API находится в пакете `it.jui.framework` и следует простой модели: реализуйте `JuiApp`, получите `UIContext` и опишите приложение, используя компактные вызовы Java, такие как `ui.title(...)`, `ui.textInput(...)`, `ui.button(...)`, `ui.table(...)` и `ui.map(...)`. Затем JUI обрабатывает HTTP, рендеринг в браузере и состояние сессии.
Минимальное приложение реализует `JuiApp` и переопределяет метод `run(UIContext ui)`, вызывая такие методы, как `ui.title(...)` и `ui.text(...)`. Интерактивные приложения могут считывать входные данные, такие как `ui.textInput(...)` и `ui.slider(...)`, и реагировать на `ui.button(...)`, который использует семантику событий однократного срабатывания: нажатие оценивается как `true` для рендера, вызванного этим нажатием, а затем потребляется. Состояние виджетов детерминированно привязано к метке виджета в текущем API.
API, ориентированные на текст, по умолчанию экранируют HTML, тогда как необработанный HTML должен быть явно указан через `ui.html(...)`. CLI поддерживает создание исходного файла из канонического шаблона (`init`), запуск его (`run`) и отслеживание изменений (`watch`). JUI компилирует исходный код приложения с использованием текущего JDK и обслуживает его через встроенный HTTP-сервер.
Проект организован в модули: `jui-core` является текущей реализацией и каноническим API, в то время как `jui-core-old` — это устаревшая реализация, сохраненная исключительно в исторических/справочных целях. Другие модули и код песочницы могут по-прежнему содержать устаревшие примеры и не должны рассматриваться как источник истины для API.
Заявленная долгосрочная цель проектирования состоит в том, чтобы сделать JUI особенно подходящим для генерации кода небольшими локальными LLM, отдавая предпочтение малому количеству токенов исходного кода, небольшому контексту фреймворка и детерминированным API. Принцип проектирования описывается как «Минимум токенов от намерения пользователя до работающего приложения». Ожидается, что будущая работа будет отдавать предпочтение прикладным примитивам с высокой семантической плотностью, компактной валидированной модели приложения/IR, метаданным API, генерируемым машиной для контекста LLM, и детерминированной упаковке/развертыванию.
Проект собирается с помощью `mvn test`; обычный набор модульных тестов должен завершаться автоматически, а ручные тесты, запускающие блокирующий сервер, отключены в жизненном цикле модульных тестов Maven. JUI распространяется под лицензией Apache License 2.0.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.