All Projects → appreciated → maven-springboot-electron

appreciated / maven-springboot-electron

Licence: Unlicense license
Package your Java Web Application with Electron + OpenJDK only using Maven

Programming Languages

javascript
184084 projects - #8 most used programming language
java
68154 projects - #9 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to maven-springboot-electron

awesome-env-config-cn
各种开发语言项目环境国内(中国国内加速镜像)配置教程和部分实践经验,包括github.com, nodejs,npm,nvm, yarn, java, maven, gradle, python, mysys2, elasticsearch, php,golang等等,更多正在加入中...
Stars: ✭ 50 (+13.64%)
Mutual labels:  maven, jdk
Blog Tutorials
⭐️ Codebase for the tutorials on my blog about Java, Spring Boot, AWS, Kotlin and Testing
Stars: ✭ 257 (+484.09%)
Mutual labels:  maven, jdk
maven-sources
Apache Maven Sources
Stars: ✭ 59 (+34.09%)
Mutual labels:  maven
ssm-ishop
项目描述:iShop商店实现浏览商品、下订单,以及参加各种活动和后台管理功能。 技术描述: 1.通过maven来项目构建管理,子系统之间通过服务提供者模块与服务接收者模块相互交互,来实现系统之间的通信,利用ajax异步请求json数据,也利用jsonp跨域请求获取json资源数据。 2.后台技术实现: 利用MyBatis Generator自动生成单表的CRUD功能和对应的model、example、mapper、service代码;3运用分布式数据库redis实现系统大量不实时更新的数据做缓存,同时实现session在redis上共享,使用powerdesinger创建pdm/cdm关系的数据库表,依文档在linux上搭建mysql创建相应的数据库和表。运用springmvc提供的注…
Stars: ✭ 28 (-36.36%)
Mutual labels:  maven
coc-groovy
Groovy language extension for coc.nvim
Stars: ✭ 14 (-68.18%)
Mutual labels:  maven
betca-spring
BETCA (Spring). Back-end con Tecnologías de Código Abierto, versión Java-Spring
Stars: ✭ 27 (-38.64%)
Mutual labels:  maven
spring-boot2-jpa-crud-example
spring boot2 jpa crud REST APIs example
Stars: ✭ 37 (-15.91%)
Mutual labels:  maven
VickyWarAnalyzer
Victoria II war analyzer. Java 8 + JavaFX + Maven
Stars: ✭ 43 (-2.27%)
Mutual labels:  maven
tiny-maven-proxy
A tiny maven proxy
Stars: ✭ 61 (+38.64%)
Mutual labels:  maven
carnotzet
Modular and Re-usable Docker Environments using Maven
Stars: ✭ 44 (+0%)
Mutual labels:  maven
spring-batch
Spring Batch Tutorials
Stars: ✭ 23 (-47.73%)
Mutual labels:  maven
twjitm-core
采用Netty信息加载实现长连接实时通讯系统,客户端可以值任何场景,支持实时http通讯、webSocket通讯、tcp协议通讯、和udp协议通讯、广播协议等 通过http协议,rpc协议。 采用自定义网络数据包结构, 实现自定义网络栈。
Stars: ✭ 98 (+122.73%)
Mutual labels:  maven
billy
An opensource invoicing engine --
Stars: ✭ 28 (-36.36%)
Mutual labels:  maven
nashorn
A fork of Oracle's EcmaScript 5.1 engine Nashorn, compatible with Java 7
Stars: ✭ 29 (-34.09%)
Mutual labels:  jdk
vaadin-context-menu
The responsive Web Component for showing context dependent items for any element on the page. Part of the Vaadin components.
Stars: ✭ 26 (-40.91%)
Mutual labels:  vaadin
LogoRRR
A log viewer which visualises log events such that it is easy to identify problems or events of interest. This app was implemented using Scala and JavaFX, GluonHQ toolchain and GraalVM as platform.
Stars: ✭ 40 (-9.09%)
Mutual labels:  maven
xml-maven-plugin
XML Maven Plugin
Stars: ✭ 18 (-59.09%)
Mutual labels:  maven
database-all
Eloquent ORM for Java 【database-spring-boot-starter】
Stars: ✭ 151 (+243.18%)
Mutual labels:  maven
javaparser-maven-sample
Sample project with a basic Maven + JavaParser setup
Stars: ✭ 56 (+27.27%)
Mutual labels:  maven
base-starter-flow-quarkus
A project base/example for using Vaadin with Quarkus
Stars: ✭ 23 (-47.73%)
Mutual labels:  vaadin

Maven + Springboot + Electron (+ OpenJDK)

This project is a starting point to wrap any Java web application (f.e. using Springboot) with Electron as a native executable. For the build process, only Maven is being used. This project contains all the necessary configurations and some placeholder files to get you started.

This project was inspired a lot by electron-java-app, but it has some key differences:

  • Instead of Gradle only Maven is being used (of course also Node but indirectly)
  • When building the Electron application an OpenJDK will be included to start the Java web application

Proof of concept

The purpose of this project was sole of personal interest to show that this concept (Electron -> shipped JDK -> Java Web Application as Jar) is possible. Before taking it into production, you should check your requirements carefully. On one hand, the project is in its current form far from ideal. Electron wastes out of the box a lot of resources on the client-side, shipping an additional JVM and an embedded web server does not make it better (Why would I need a Browser and an OpenJDK just to use a Java Web application as a desktop application?). If it needs to be Java, why not use Swing or JavaFX? But I can imagine some use cases where this could come in handy, f.e. as an in-between solution before migrating to the cloud.
An improvement to the concept could be done by getting rid of the OpenJDK by using native images of the GraalVM. Getting rid of the browser is currently not possible but could also be improved a lot by using tauri instead of Electron. If PWAs get available for all platforms and can run applications running on localhost, the browser could eventually be dropped entirely. Currently, an updater functionality is missing, also logging needs to be done manually.

How to build

mvn clean install -Pproduction

The artifacts from the electron build will be put into:

  • target\electron\springboot-on-electron-darwin-x64
  • target\electron\springboot-on-electron-win32-x64

When using Mac OS or Linux, wine is required to build windows (check the maven build for further information).

When using Windows, admin privileges are required to build darwin (check the maven build for further information).

Shipping OpenJDK

Since not all your users have a JVM available via the classpath an OpenJDK 8 will be packed into the electron builds

Documentation

Build

When executing mvn clean install -Pproduction by default the windows (x64) and darwin (x64) will be built.

The rest is currently not supported but adding those shouldn't be too hard but some changes will need to be made at the following files:

Pull requests are welcome

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].