Building¶
Prerequisites¶
- macOS with Xcode (project targets the Xcode 26.x toolchain family)
- Git with submodule support
- JDK on the Mac host for classpath compilation scripts (Temurin 17+ recommended)
- Optional: OpenJDK Mobile static libs for device linking (see
scripts/openjdk-mobile/)
Clone¶
App target¶
- Select the
JavaOnescheme. - Choose a simulator or connected iOS device.
- Build & run from Xcode.
Signing: use your personal team for device runs. CI docs builds do not require iOS signing.
Embedded FreeJ2ME classpath¶
Staging into the app bundle is handled by OpenJDK Mobile copy scripts (see scripts/openjdk-mobile/copy-ios-runtime-into-app.sh and scripts/embedded-jvm/README.md).
OpenJDK Mobile (device)¶
Follow scripts/openjdk-mobile/README.md:
- Configure iOS device Zero build
- Build static libs
- Stage artifacts
- Generate Xcode link xcconfig when
libjvm.ais available
These steps are heavy and cached locally — build outputs under ThirdParty/OpenJDKMobile/ and artifacts/openjdk-mobile/ are gitignored.
Documentation site¶
python3 -m venv .venv-docs
source .venv-docs/bin/activate
pip install -r requirements-docs.txt
mkdocs serve
Production docs deploy automatically via GitHub Actions on pushes to main that touch documentation paths.
Tests¶
- Unit tests:
JavaOneTests - Device UI tests:
JavaOneUITests(require a paired iPhone and seeded fixtures)
Validation helpers live under scripts/validation/.