[Topic DIscussion] Linux桌面应用开发应该学什么知识?
Tofloor
poster avatar
沈拙言
deepin
2022-01-07 00:48
Author

有点c,java,python的语法基础和一点点java项目的经验。所以想做桌面应用。

 

Reply Favorite View the author
All Replies
deepin-mq
deepin
2022-01-07 01:30
#1

C++

Reply View the author
神末shenmo
deepin
Spark-App
Q&A Team
2022-01-07 01:36
#2

桌面应用,Linux的话可以用qt/GTK,但是相对来说国内用qt多,qt是c++/qml,GTK不清楚,不知道为啥不行

现在国内很多糊弄应用用的electron,主要是开发方便而且现成的跨平台

java开发桌面应用的不太多吧,我记忆里的只有一些IDE和MC在用,一般显示的效果不咋样,我目前见过最好看的java桌面应用就hmcl了,你可以看看那玩意有多卡,而且用的是javafx,标准的openjre不带的,需要用full jre才能跑。。。

Reply View the author
138******58
deepin
2022-01-07 01:43
#3

Qt/c++,有余力再学点qt集成的qml脚本,开发界面很快,可以和c++集成

Reply View the author
zerofancy
deepin
2022-01-07 02:09
#4

学个合适的轮子

C++有Qt
python有pyqt/pyside
java有Swing和javaFX——我是觉得都不好用
会java学Kotlin大概也不是很难的事情,Kotlin这里最近Jetpack Compose已经是正式版了

学习难易方面,我个人觉得Qt上手最快,Swing和javaFX最坑

跨平台方面,上述均可在Windows、Linux和macOS运行,Qt和Compose还可以在安卓上运行。不过Qt做的应用风格更像桌面应用,Compose做的更像移动应用。

高分屏和输入法适配,javaFX又落后几分。截至上次我尝试学的时候,javaFX只支持1x缩放和2x缩放,哪个看着都不舒服。输入法在我的Ubuntu默认无法输入中文,当时网上找了好久,好像说和GTK3不兼容啥的,要指定一个启动参数。

开发环境方面,Swing配置起来最简单,javaFX在其次。Compose对java版本要求很严格——低于java15无法打包,高于java16不支持。Qt的环境比较重,一般安装没啥问题,但安装失败的时候我看不懂原因,只得重装系统。

打包发布方面,我更喜欢Compose,能直接打包出deb/msi/dmg安装包,带jre。swing的话要自己考虑打包的问题。javaFX比较坑,1.8还好,java 11后不是jre的一部分了,拆出来了openjfx——于是就有jre版本问题、openjfx版本问题。Qt的打包没怎么研究。

以上都是我的个人感受,不是专业建议。我的本职工作是搞安卓的,这些都只是自己折腾接触过。

Reply View the author
zerofancy
deepin
2022-01-07 02:17
#5
It has been deleted!
Maicss
deepin
2022-01-07 03:09
#6

c++/qt比较普遍,而且还可以用deepin的dtk

c/gtk比较难,门槛特别高,中文资料也比较少。

c++/gtkmm相对简单,门槛和qt差不多,但是中文资料没有qt丰富,遇到问题需要自己翻文档解决。

java也可以,和win下应该区别不大。

python/qt,我没用过,但是应该比较简单

python/gtk,没用过,不太了解

还有一些用前端的技术开发的

Reply View the author
gfdgd_xi
deepin
Ecological co-builder
2022-01-07 03:27
#7

我补充一下,pyhon的话可以用tkinter,配置没有那么麻烦,就是界面默认不咋滴,我写过一点点tkinter的项目:https://gitee.com/gfdgd-xi/uengine-runner

Reply View the author
enforcee
deepin
2022-01-07 07:59
#8
神末shenmo

桌面应用,Linux的话可以用qt/GTK,但是相对来说国内用qt多,qt是c++/qml,GTK不清楚,不知道为啥不行

现在国内很多糊弄应用用的electron,主要是开发方便而且现成的跨平台

java开发桌面应用的不太多吧,我记忆里的只有一些IDE和MC在用,一般显示的效果不咋样,我目前见过最好看的java桌面应用就hmcl了,你可以看看那玩意有多卡,而且用的是javafx,标准的openjre不带的,需要用full jre才能跑。。。

GTK是用C语言搭建的GObject写的,是用C语言的宏硬生生模拟出一个面向对象的系统。GNU/Linux界用GObject的项目还是很多的,不只是GTK。如果只会C语言而对GObject理解不够,也是没办法弄明白GTK的原理。尽管GNOME意识到这个问题并搞了个vala语言,但是文档太少,里面的示例也基本上照搬了C语言的GObject代码,不明白的人还是看不懂

GTK用不如Qt多我觉得不只是C++比GObject流行,Qt跨平台的能力更强一点,而且本来在Windows和其他流行平台上用Qt的就很多。GTK的结构更清晰,体积更小,语言绑定也多,其实有很多可取之处的

blush

Reply View the author
Barry-okx
Junior Packager
2022-01-08 06:02
#9

Flutter 2 试试 谷歌的跨平台语言

Reply View the author