浅谈java实现桌面小程序

一直在用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

图片来自gitee
(图片来自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 的变迁。
既然选择就不要去后悔,适合自己的才是最重要的

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值