{"id":31646445,"url":"https://github.com/vakho10/jlectron","last_synced_at":"2026-05-14T21:36:57.523Z","repository":{"id":314255584,"uuid":"1054792059","full_name":"vakho10/jlectron","owner":"vakho10","description":"Electron-like cross-platform framework for building Desktop Java apps using Swing and JCEF","archived":false,"fork":false,"pushed_at":"2025-11-13T06:16:58.000Z","size":569,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-13T08:25:25.544Z","etag":null,"topics":["desktop-app","electronjs","java","jcef","swing"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vakho10.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-11T10:36:57.000Z","updated_at":"2025-11-13T06:17:02.000Z","dependencies_parsed_at":"2025-09-11T13:25:04.805Z","dependency_job_id":"533c20c4-07be-4c36-96a2-8a875f191359","html_url":"https://github.com/vakho10/jlectron","commit_stats":null,"previous_names":["vakho10/jlectron"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/vakho10/jlectron","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vakho10%2Fjlectron","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vakho10%2Fjlectron/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vakho10%2Fjlectron/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vakho10%2Fjlectron/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vakho10","download_url":"https://codeload.github.com/vakho10/jlectron/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vakho10%2Fjlectron/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33044387,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["desktop-app","electronjs","java","jcef","swing"],"created_at":"2025-10-07T05:50:15.454Z","updated_at":"2026-05-14T21:36:57.518Z","avatar_url":"https://github.com/vakho10.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ![](frontend/public/images/logo_32.png) Jlectron\n\nJlectron is a Java desktop application framework that combines **Spring Boot**, **Angular**, and **JCEF (Java Chromium\nEmbedded Framework)** to create cross-platform, Electron-like applications using Java and web technologies. This repository\ncontains a multi-module Maven project with frontend, backend, and packaging modules.\n\n---\n\n## Table of Contents\n\n- [Project Structure](#project-structure)\n- [Modules](#modules)\n    - [Frontend](#frontend)\n    - [App](#app)\n    - [Bundle](#bundle)\n- [Build and Packaging](#build-and-packaging)\n- [Running the Application](#running-the-application)\n- [Configuration Notes](#configuration-notes)\n- [Developer Notes](#developer-notes)\n\n---\n\n## Project Structure\n\n```\njlectron/\n├── frontend/      # Angular frontend\n├── app/           # Spring Boot + JCEF backend\n├── bundle/        # Packaging module with jpackage and JRE\n├── pom.xml        # Parent POM\n````\n\n- The project uses **Maven multi-module** layout.\n- Java 21 is used for compilation and runtime.\n- The `bundle` module creates a native installer using `jpackage` and bundles a JRE and JCEF.\n\n---\n\n## Modules\n\n### Frontend\n\n- Path: `frontend/`\n- Purpose: Builds the Angular frontend application.\n- Maven Plugin: `frontend-maven-plugin`\n- Steps:\n    1. Installs Node.js and npm locally.\n    2. Runs `npm install` to install dependencies.\n    3. Builds Angular app with `ng build`. Output is placed in `dist/frontend/browser`.\n\n### App\n\n- Path: `app/`\n- Purpose: The Java backend that embeds the frontend and JCEF for rendering web content.\n- Dependencies:\n    - Spring Boot (Web, Thymeleaf, DevTools, Configuration Processor)\n    - JCEF Maven wrapper (`jcefmaven`)\n- Build:\n    - Uses `maven-resources-plugin` to copy Angular `dist` folder to `target/classes/static`.\n    - Spring Boot Maven Plugin creates a **fat JAR** (`app.jar`) including backend code and Angular frontend static\n      files.\n- Notes:\n    - Angular build must exist before packaging `app.jar`.\n    - JCEF native libraries are loaded at runtime via `-Djava.library.path`.\n\n### Bundle\n\n- Path: `bundle/`\n- Purpose: Creates a native application package with JRE and JCEF.\n- Steps:\n    1. Copies `app.jar` from `app/target`.\n    2. Copies JCEF folder into the bundle (`app/jcef`).\n    3. Downloads and unpacks a JRE (Temurin 21) to bundle runtime.\n    4. Uses `jpackage-maven-plugin` to create a **native launcher** (Windows `.exe`) with proper JVM options:\n        - `--enable-preview`\n        - `-Dfile.encoding=UTF-8`\n        - `-Djava.library.path=app/jcef/bin/lib/win64`\n\n---\n\n## Build and Packaging\n\n### From Command Line\n\n```bash\n# Clean and build everything\nmvn clean package\n````\n\nThis will execute modules in the following order:\n\n1. `frontend` - builds Angular app\n2. `app` - packages backend and copies frontend static files\n3. `bundle` - packages native app with JRE and JCEF\n\n### Output\n\n* `app/target/app.jar` – Spring Boot fat JAR with embedded Angular frontend.\n* `bundle/target/dist/` – Native application image with bundled JRE and JCEF.\n\n---\n\n## Running the Application\n\n### From Fat JAR\n\n```bash\njava -Djava.library.path=path/to/jcef/bin/lib/win64 -jar app/target/app.jar\n```\n\n### From Native Installer\n\n* Navigate to `bundle/target/dist/` and run `Jlectron.exe`.\n* JCEF native libraries and JRE are bundled, no external dependencies required.\n\n---\n\n## Configuration Notes\n\n* **Angular build output folder:** Configured in `app/pom.xml` as `frontend.build.dir`.\n* **JCEF path:** Configured in `bundle/pom.xml` as `jcef.dir`.\n* **JRE download URL:** Configured in `bundle/pom.xml` as `jre.download.link.windows`.\n* **Static files in JAR:** `maven-resources-plugin` copies frontend output into `target/classes/static` before Spring\n  Boot packaging.\n* **JCEF library path:** Must match your system architecture (Windows x64 in this configuration).\n\n---\n\n## Developer Notes\n\n* Angular changes require rebuilding the frontend (`mvn -pl frontend clean package` or `ng build` manually).\n* App module depends on frontend module; ensure frontend is built before packaging.\n* Native packaging bundles its own JRE; Java installation on the target machine is not required.\n* JVM options for enabling JCEF and encoding are set in `bundle/pom.xml` via `jpackage-maven-plugin`.\n* For debugging JCEF issues, run the fat JAR with `-Djava.library.path` pointing to the JCEF folder.\n\n---\n\n## References\n\n* [Spring Boot Maven Plugin](https://docs.spring.io/spring-boot/docs/current/maven-plugin/reference/htmlsingle/)\n* [JCEF Maven Wrapper](https://github.com/friwi/jcefmaven)\n* [Frontend Maven Plugin](https://github.com/eirslett/frontend-maven-plugin)\n* [JPackage Maven Plugin](https://github.com/panteleyev/jpackage-maven-plugin)\n\n---\n\n## Summary\n\nThis project combines:\n\n* **Frontend:** Angular application for UI.\n* **Backend:** Spring Boot + JCEF to render frontend inside a desktop app.\n* **Packaging:** Native Windows application with embedded JRE and Chromium engine.\n* Multi-module Maven structure ensures build order and proper packaging of static resources and native libraries.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvakho10%2Fjlectron","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvakho10%2Fjlectron","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvakho10%2Fjlectron/lists"}