一直在用java开发web程序, 从maven-web 至springboot ,但是有时候想写一些单机的小程序,作为2022小的flag.

java开发桌面小程序当然不是很好的选择, 所以抛开

  • 语言的优越性(学习成本)
  • 内存占用问题 (运行成本)
  • 性能问题 (体验感)
  • 打包大小 (空间占用)

一、套壳web实现

方案一: electron +h5+java

需要1个运行程序(exe) 和1个服务程序(java server) ,
通过restful接口或socket 通信,GUI页面和服务完全解耦,需要学习nodejs 、electron相关知识。

方案二:webview+h5+java

借助JavaFX的webview 实现,静态资源与后台程序打包在一起作为web服务访问,但是webview约等于ie11 (稍微好点),需要考虑h5的兼容性。

方案三:jxbrower+h5+java

jxbrower集成chrome的v8引擎,与方案二类似,但是不用考虑h5的兼容性,需要寻找破解资源。上图为该方案实现

方案四:jcef+h5+java

jcef也是集成chrome的v8引擎,与方案三类似,是开源选择,但是性能与稳定性、文档、简易性不及jxbrower (毕竟商用)

二、swing实现

如果对比h5来说,如果想实现上图的效果,我觉得需要了解swing的布局、组件、节点、事件 等等,学习成本不小,感兴趣也可以作为选择。

gif是我在学习swing中一些示例,皮肤和布局都使用第三方包flatlaf和miglayout

    <dependency><groupId>com.formdev</groupId><artifactId>flatlaf</artifactId><version>0.38</version></dependency><dependency><groupId>com.miglayout</groupId><artifactId>miglayout-swing</artifactId><version>5.2</version></dependency>

JavaFX实现

可以参考xJavaFxTool项目:gitee: xJavaFxTool


(图片来自xJavaFxTool)

JavaFX是新一代java的GUI开发技术,追求简单、丰富的样式和3D的突破,如果按照前后端的分离来看,其实view层和controller类的解耦是更符合人们期望的一种方式。
但是我不喜欢fxml, 就和我不喜欢jsp一样(但是有时候不得不这么干)。

还有一些其他的GUI技术,不在此讨论,比如SWT +JFACE(eclipse底层)、AWT (不太了解)。

就像vscode选择electron ,微信选择nw.js,idea选择swing, eclipse选择swt 等等一样,从实际的需求出发选择适合自己的才是重要的,可能某一天vscode会去选择webview2放弃electron, idea放弃了swing ,静静的看待jquery的没落,layui的落幕,拥抱vue react angular 的绽放 ,感受go flutter rust 的变迁。
既然选择就不要去后悔,适合自己的才是最重要的

浅谈java实现桌面小程序相关推荐

  1. 浅谈高大上的微信小程序中渲染html内容—技术分享

    大部分Web应用的富文本内容都是以HTML字符串的形式存储的,通过HTML文档去展示HTML内容自然没有问题.但是,在微信小程序(下文简称为「小程序」)中,应当如何渲染这部分内容呢? 解决方案 wxP ...

  2. 浅谈我对微信小程序云开发的认识与见解

    一.微信小程序云开发的优点 1.无需自建服务器 2.项目快速上线 3.轻轻松松获取用户凭证 二.微信小程序云开发的坑 1.基础版CDN流量太少 2.云数据库限制多 (1)小程序端读取限制 (2)云数据 ...

  3. 猿来小课Java视频教程讲师浅谈JAVA体系结构

    猿来小课Java视频教程讲师:Java体系结构中不仅定义了Java的开发编译环境,也定义了Java的运行环境.为运行Java应用程序和applet,计算机上应安装JVM和Java运行时解释器,这两个部 ...

  4. java编程double相乘_浅谈Java double 相乘的结果偏差小问题

    看下面的一段代码的运行结果: public class TestDouble { public static void main(String[] args) { double d =538.8; S ...

  5. 浅谈JAVA程序破解(原创)

    浅谈JAVA程序破解 作者:舵手 申明:如转载请保证文章的完整性以及出处 最近对JAVA程序的破解比较感兴趣,拿几个行业软件练了一下手,略有心得,拿出来与菜鸟分享!注意只是一点心得, 本文并不涉及具体 ...

  6. 浅谈JAVA程序破解

    浅谈JAVA程序破解 http://www.blogjava.net/galaxyp/archive/2006/04/19/41833.html 作者:舵手 申明:如转载请保证文章的完整性以及出处 最 ...

  7. java方法区对象类型_浅谈Java内存区域与对象创建过程

    一.java内存区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域.这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有的区域则 ...

  8. 浅谈 Java VM 发展

    浅谈 Java VM 发展 Jim Huang <jimchyun @ ccns.ncku.edu.tw> <jserv @ kaffe.org> 略为整理笔者对 Java V ...

  9. java中单例的应用_浅谈Java中单例模式的几种应用

    目录 浅谈Java中单例模式的几种应用 第一种:懒汉式 第二种:饿汉式 第三种:双重检索式 第四种:注册登记式 第五种:内部类形式 浅谈Java中单例模式的几种应用 日常开发中,为了提高我们系统中对象 ...

  10. 浅谈Java多线程机制

    浅谈Java多线程机制 (-----文中重点信息将用红色字体凸显-----) 一.话题导入 在开始简述Java多线程机制之前,我不得不吐槽一下我国糟糕的IT界技术分享氛围和不给力的互联网技术解答深度. ...

最新文章

  1. 王坚十年前的坚持,才有了今天世界顶级大数据计算平台MaxCompute...
  2. 万字详文告诉你如何做 Code Review
  3. opencv图像处理
  4. 8148和8127中的ezsdk和dvrsdk
  5. IOS15.0的适配
  6. 优秀!复旦直博生一作发15篇SCI,并担任12本SCI期刊审稿人
  7. Java工具方法——属性拷贝方法:BeanUtils.copyProperties(Object, Object)
  8. Vue+elementUI时间选择器的应用
  9. python 字符串操作list【:-1】的几种用法
  10. 【等价变换】—— 指数对数函数
  11. 搭建Jetbrains家族IDE授权服务器
  12. 20150109--面向对象+对象传值-01
  13. 如何搭建远程访问服务器?外网访问数据库实操教程
  14. c语言编程猪八戒吃西瓜,儿童故事:猪八戒吃西瓜
  15. <论文阅读> DI-FODO — 3D距离传感器的快速视觉里程计
  16. 计算机的软硬件发展进程,计算机的发展史
  17. 阿里云RPA(机器人流程自动化)干货系列之五:业务流程梳理方法...
  18. Elasticsearch——Bboss
  19. PS 的常见抠图工具
  20. 出主意:阻止了对方倒苦水(错误行为)

热门文章

  1. Angr安装与使用之使用篇(十五)
  2. Python Selenium set Chrome Preference Download Location.
  3. 【开源.NET】 分享一个前后端分离的轻量级内容管理框架
  4. 数据库开发基础-教案-2
  5. 使用 :after伪元素撑开 div
  6. 多说评论系统API调用和本地身份说明(JWT)
  7. 身体排毒,自己就可以轻松搞定 - 生活至上,美容至尚!
  8. HTML如果属性值包含多个字母,HTML笔记
  9. Error [ERR_INSPECTOR_ALREADY_ACTIVATED]解决方案
  10. 彻底理解SVD奇异值分解(singular value decomposition)