J-IDE Lite is an Android Java editor for quick on-device experiments. It includes a Compose UI (explorer + editor + terminal), built-in formatting/highlighting tools, and a local compile/run pipeline that does not depends remote services.
- Compose-based multi-pane UI with file explorer, java editor, and terminal output (read-only)
- Local app-private workspace with support for
.javaandpom.xml - Local SQLite state database (
jide-state.db) for workspace/editor/build metadata - Quick file creation (
Main.java,Main2.java,Main3.java, ...) - One-tap actions for save, format, run, clear terminal, and dependency resolve
- Java syntax highlighting and editor shortcuts (indent, smart newline, copy/cut/paste/select all)
- Embedded compile/run flow: Janino -> D8 -> in-memory DEX execution
- Maven dependency resolution with local artifact caching
- JDK 17
- Android SDK Platform 34
- Android Build-Tools containing
d8.jar(prefers34.0.0, then falls back to latest installed) - Android device/emulator running Android 8.0+ (API 26+)
- Internet access on device for Maven dependency downloads
Builds fail early if no d8.jar can be found in installed Android Build-Tools.
# macOS / Linux
./gradlew assembleDebug
# Windows
.\gradlew.bat assembleDebugInstall on connected device/emulator:
./gradlew installDebug
# Windows: .\gradlew.bat installDebug- Package name:
com.goriant.jidelite - Signing template:
keystore.properties.example - Full checklist:
docs/playstore-release.md - Note: release
.aabmust be signed with your upload key before Play Console upload.
./gradlew test
# Windows: .\gradlew.bat testUnit tests currently cover formatter/editor helpers, storage behavior, local runner behavior, Maven parser/dependency resolution logic, and output formatting. An instrumentation integration test is included for the main activity.
- Launch the app. Workspace is created in app-private storage.
- On first launch, a sample Maven workspace is seeded (
pom.xml+src/main/java/demo/Main.java). - Tap
DEPSto resolve and download dependencies declared inpom.xml. - Open a
.javafile withpublic static void main(String[] args)and tapRUN. - Use
NEW,SAVE,BEAUTIFY, and terminalCLEARas needed.
- Allowed workspace files are
.javaandpom.xml. - If
pom.xmlexists, sources are compiled fromsrc/main/java. - If
pom.xmldoes not exist, sources are compiled from workspace root. - Running a selected
.javafile requires that file to definemain(String[] args). - Running from a non-Java selection (for example
pom.xml) scans for runnable classes:- If exactly one runnable class exists, it runs automatically.
- If multiple runnable classes exist, open the target
.javafile first and run from there.
- Collect source files from active source roots.
- Resolve project dependencies from
pom.xml(if present). - Compile Java sources to
.classusing Janino. - Convert compiled classes (plus runtime dependency jars) to
.dexwith D8. - Load DEX in memory and invoke
main(String[] args). - Capture
stdoutandstderrand render in terminal pane.
- Supports:
dependencies,repositories, placeholder properties, and parent fallback forgroupId/version - Included scopes: default,
compile,runtime - Ignored scopes:
test,provided,system,import - Optional dependencies are skipped
- Runtime dependency packaging is currently
jaronly - Downloaded artifacts are cached in app files directory under
m2/repository - Workbench-like UI state is persisted in SQLite (
ItemTable) as key/value entries
- User code is compiled with Java 8 source/target compatibility inside Janino.
- Console stdin input is not supported.
- Maven support is lightweight and not a full Maven lifecycle engine.
- Code executes inside the app process; avoid running untrusted code.
- Termux integration is intentionally disabled; embedded local runner is the supported path.
.
|-- app/
| |-- src/main/java/com/goriant/jidelite/
| | |-- MainActivity.kt
| | |-- data/
| | |-- editor/
| | |-- model/
| | |-- runner/
| | |-- storage/
| | `-- ui/
| |-- src/main/res/
| |-- src/test/
| `-- src/androidTest/
|-- build.gradle
|-- settings.gradle
|-- gradle.properties
`-- README.md
MainActivity: Compose entry pointMainViewModel: workspace/editor actions, run flow, and status updatesFileStorageHelper: workspace initialization, file validation, and file I/OLocalJavaRunner: compile, dex, and execute pipelineMavenProjectDependencyResolver: resolves transitive dependencies frompom.xmlJavaCodeFormatterandJavaSyntaxHighlighter: formatting and syntax highlightingRunOutputFormatter: normalizes terminal/status messages