关于现在的图形界面库打包exe的体积

以我个人接触java的感觉和个人偏见来说(毕竟了解的真不多),确实没听说过我周围学软件工程的同学用java写gui……

1 个赞

这类啊,我个人只听说过java和webview结合,你说的真不了解,毕竟我就不是计算机专业 :joy:

java 写 GUI 也有. 比如 xmind 早期版本就是.

我很多年前学java 就支持 GUI 了. 当时的java 分为三类: J2SE、J2EE、J2ME.

java 的 GUI 主要是手机. 从功能机到塞班系统,再到Android.

而有价值的广泛应用是 J2EE. 是很多大公司的首选.

对于pc平台来说, 糟心的效率, 需要 JRE 运行库, 都制约了 java的发展.

而 C# 之前是 win 平台独占, 用来代替 vb的 (vb.net 其实代替不了vb).

后来开源社区 Mono 项目试图实现 C# 语言的跨平台. 但是一直不温不火.

不过, 微软 C# 目前已经官方的跨平台方案, 开发可在 Android、iOS、macOS 和 Windows 上运行的应用.

作为开发语言来说, 其本质与平台无关. 就其语言的素质来说, C# 是非常优秀的编程语言之一.

不过我读书少, 学问浅薄, 与别人的认知差异太大, 也不知道说的对不对.

当然了, 世界上任何角落只要有讨论编程语言的, 一定会有战争.

所以, 我宣布, PHP 是世界上最好的语言.

闲聊灌水区, 扯什么偏离话题? 你俩有矛盾就自己私聊, 在帖子里点名算干嘛的?

我看了所有的回帖, 只有你这个是最偏离话题的。


楼主说的 Python 的确是个问题, 而且打包也不方便, 有时候我扔一个py文件过去, 对方连如何运行都不会。

大小用KB来计算的软件真的很酷啊

不光py有这个问题, 几乎所有的脚本语言以及甚至java都有这样的问题

是啊, 而且不仅仅是装个python就能运行的。

GUI 本身都是冷门。不论是哪个语言,写 GUI 都是这门语言里面的冷门。比如 c# 现在的热门是写游戏写后端,不是写 PC GUI. Java 的现在的热门是写后端和 Android APP,写 PC GUI 非常冷门,比较流行的只有 intellij 系列 IDE,算是行业软件,一般人也用不到。PC GUI 已死,能写 WEB 就尽量写 WEB,好多 go 语言的开发者,写 PC GUI 软件时就写个 HTTP 服务器,在浏览器里面开起来。

如果都是冷门,那选择那个技术方向就不是看谁目前用得多了,要看增长趋势或者下降趋势,以及周边的配套。综合来看,肯定是 electron 第一,它的流行趋势无人能敌,周边配套也非常全,但是打包体积太大开发人员爽了用户不喜欢。第二就是 PyQt/wxPython,进可 AI 退可小软件,Python 库非常丰富,想要什么都有,保密用 cython/nuikta, 简单打包用 pyinstaler,但是体积虽然比 electron 小一些但也要几十兆. 第三个选择是 Qt/duilib,也就是我自己的选择,体积一般是十几M 安装包能做到低于 5M 还不错,但门槛较高需要学习 C++ 语言。第四就是 c#/vb.net 作为 windows 官方编程方案使用方便。第五是 java/go/rust 都各有一套自己的绝活,得益于语言都很流行。第六是 vb6/delphi/c++ builder/mfc/wtl 这类远古方案。

最后一种类型的 exe 体积很小,也是本系列帖子讨论的重点,但我劝程序员和用户,都不要选择最后一种方案,而应该综合考虑软件的功能和开发成本,我们是用软件的功能,不是盯着软件的体积自 high,不要本末倒置。

讲实话,现在用 Java 写 GUI 的极少,而且也还在减少中,我是说实在实在想选 c# 还不如选 java. 非常推荐 Java 代替 C# 写 GUI 主要是因为学会它很容易地就能切换到 Java 的其它应用领域过去,对于学生找工作很好用。Java 早期启动慢 JRE 大的问题现在使用 SSD 之后算是基本不成问题,总比 electron 强吧。C# 写 GUI 对于 Windows 软件有很多好处,毕竟是微软的官方编程语言嘛,目前应该还是市场份额排第二的 PC GUI 开发方案——第一是 C++ Qt/duilib。但我一直强调的是跟着微软走没前途。微软以前大力推广的几个 GUI 技术现在已经基本上停止更新了,包括 WPF,现在微软推广的是另外一个叫做 UWP 的技术,几乎没人使用。C# 的 GUI 技术都没法跨平台,什么 GTK for dotnet 都非常不成熟,mono 现在也衰败了。所以最近的信创招人,也没人玩 c#,基本上都是 Qt. 人才市场上别看招人写 C# 挺多,但一般是招去做外包,非常破败。

我把 C# 单独拿出来讲是因为:

微软卖队友!微软卖队友!微软卖队友!

大家一定要记住,别再迷信微软的开发技术了。

1 个赞

微软一手好牌打的稀碎也不是一次两次了…
真的好心痛

Java的桌面GUI技術就沒流行過一個,你個人的主觀觀點太重了,本貼就是討論桌面GUI,你拿服務端的Java來說Java寫GUI好,服務端和桌面端天差地別,哪有隨便轉一說,討論要就事論事。

2 个赞

您这前后逻辑都不通啊…
最后开始对微软情绪输出,微软扔掉的技术哪个不是因为有缺陷才扔掉的。

试试pyoxidizer?相比于pyinstaller能小很多,不过调校比较麻烦。

比如说我的项目就是用的pyoxidizer:GitHub - WankkoRee/eaio: 一个通过将磁盘上所有 Electron 应用中相同文件硬链接到统一位置来减少磁盘占用的解决方案,就像 pnpm 一样。

如果是简单 GUI 的话,可以考虑 Python+PySimpleGUI+PyInstaller。
PySimpleGUI 是基于 Python 自带的 tkinter 图形界面库。(它还有 PySimpleGUIQt,、PySimpleGUIwx、PySimpleGUIweb 分支分别基于 Qt、WxPython、Remi)
我自己用这个 UI 库写的小程序,PyInstaller 打包出来的 exe 基本在 10MB 左右吧。

1 个赞

Java 的 GUI 从技术上讲确实不如 C#. 这点必须承认。Java 的 Swing 只相当于以前 WinForm 的水平。技术趋势上,你可以看到 Java 的 GUI 被我排到 C# 之后。

所以我又说了啊,考虑 Java 而非 C# 是非技术的原因——微软会卖队友。不信你问问现在还在写 C# 的程序员,WPF 被微软抛弃了他们是什么感受。现在又有谁在跟进 UWP 技术。

Java 和 C# 都不是好的选择,最好都别用,只是 Java 是比 C# 更好的选择。不然还可以看看 go 和 rust 都有相应的 GUI 方案。这一块我就不是很熟悉了:

https://fyne.io/

反正别跟着微软就对了,为了省那么几 KB,让自己的技术栈走入死胡同去。有如当年的 PownerBuilder 和 Visual FoxPro 程序员,现在都找不到了。C# 早晚也一样。

从某方面说,Qt 和 WPF 的优缺点都很有意思:

  • Qt 最大的缺点是 C++,最大的优点也是 C++
  • WPF 最大的优点是 C#,最大的缺点也是 C#

TIOBE 开发语言排行.

C/C++/C++++ 整整齐齐.

C# 第五, 比去年还提高了.

VB 还是老六.

所以, 担心微软卖队友没有必要.

PC领域, 最大的特点就是兼容性. 比如 VB 早就被微软放弃了, 但是 VB开发的程序在Win 平台上, 不论是什么版本的OS都可以运行.

现在就开始担心 C# , 未免太过杞人忧天.

楼上把"编程语言"和"编程平台"和 "GUI 技术"混淆在一起, 其实也是在混淆视听.

以C# 为例, winfrom 是GUI 技术, wpf 是 GUI 技术, MUAI 也是 GUI 技术.

不论微软如何切换 GUI 技术, 包括 Qt ,都可以使用 C# 开发.

因此断言 C# 没未来, 岂不是可笑.

1 个赞

問題Java GUI的工作更是沒有都沒有過。

這些適合懂那些語言的使用者。

還是那事,就事論事,不要有太多個人情緒。

這個說不上抛棄,如果這都算抛棄,你還不如說Objective-C被蘋果抛棄是不是就不整iOS開發了。

如果说谈趋势就能判断某个语言不行的话, 其实JAVA是走下坡路的.

微软从来就没说抛弃过WPF,NET6,NET7照样可以用WPF,到现在WPF依然是开发Windows桌面软件最稳的方案,唯一缺点就是不跨平台。
反倒是你所谓微软推进的UWP已经要被微软抛弃了,UWP是微软为了Windows Phone弄出来的技术,本来说它的优势就是可以同时在桌面端移动端一起跑。微软在移动端完全没抢到市场,UWP自然就逐渐被微软抛弃了,相应的技术应该是转移到了WinUI3上。
对于真正成功的技术微软绝对不会说随随便便就扔的。

1 个赞

说到java写的GUI软件 idea就是java写的,看来语言的选择不仅要看个人努力,也要考虑到历史的进程 :laughing:

虽然WPF被抛弃了,但是我们依然用的挺开心的~不过要实现什么新特效的确就得从头造轮子了。所以干脆前端上web呗~最头铁的不过干上了ASP.net~