프로젝트 소개

JUI는 의도적으로 작은 애플리케이션 표면을 가진 대화형 웹 애플리케이션을 만들기 위한 경량 Java 프레임워크입니다. 표준 API는 `it.jui.framework` 아래에 있으며 간단한 모델을 따릅니다: `JuiApp`을 구현하고 `UIContext`를 받은 다음 `ui.title(...)`, `ui.textInput(...)`, `ui.button(...)`, `ui.table(...)`, `ui.map(...)` 같은 간결한 Java 호출로 애플리케이션을 설명합니다. 그러면 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, LLM 컨텍스트용 기계 생성 API 메타데이터, 결정적 패키징/배포를 선호할 것으로 예상됩니다. 프로젝트는 `mvn test`로 빌드됩니다. 일반 단위 테스트 스위트는 자동으로 종료되어야 하며, 차단 서버를 시작하는 수동 테스트는 Maven 단위 테스트 수명 주기에서 비활성화됩니다. JUI는 Apache License 2.0에 따라 라이선스가 부여됩니다.