用rust写了一个桌面app,就不再想用kmp了

最近用两周的时间,从原来的kmp桌面平台的pdf阅读器迁移过来70%的功能后,就再也回不去了.

除了rust语言不太好学这算缺点外,几乎没有大的缺点了.对比kotlin与kmp全是优点.

目前rust写的app的缺点:

  • 第三方的库相对java,kotlin是较少的.已经足够用了.
  • ui稍微有点丑,没有一个完善的ui库,不过相比javafx也丑不到哪里去,kmp据说是javafx基础上运行的桌面端.做工具不太需要那么漂亮.
  • 语言难一些,ai有不少时间都搞不定编译.
  • 所有权一旦发生变化,或者类似的涉及到了重构,是有点小灾难的意思.
  • 编译时间太长,编译产物太大了,我不到5000行的源码,依赖也只是十几个,生成了6个g的debug产物

优点:

  • 启动速度快.
  • ui库虽然难看点,但是写起来是真不慢,代码快速完成.
  • cpu,内存的占用真是优秀.kmp运行起来,不动还好,一动cpu一下就上去了.
  • 代码行数明显下降,编译过了后,不需要太担心运行后的问题.至少调试的时候,编译过了,调试很少出问题.kmp这些,debug还一堆毛病
  • 如果涉及到jni这些要编译的库,在windows上编译起来是真恶心.rust没有这么困难.
  • 打包后的体积也是小,kmp要180mb,rust出的包23mb.
  • 运行后的线程数,rust的13个,kmp要53个,一堆系统线程,虚拟机线程等.
  • cargo领先gradle,他们出厂时间不算太早吧.gradle编译依赖问题占了项目调试时间比例不低.cargo没有这方面的问题,或者我暂时只遇到一个链接问题.而gradle依赖下载一堆,版本众多,错一个可能又下不了,又编译失败,冲突.
  • 与c,c++兼容性强过jni.

用flutter写多平台的应用,如果有现成的插件是容易的.dart容易,但写起来总是感觉那么恶心.这恐怕永远改变不了对它的态度.

做了一两年flutter应用都快要吐了,尤其没有多线程,isolate都快用吐了.

ffi调用,依然慢的要命,比kmp通过jni还慢很多.

它的优势就是官方文档全,从环境到编译,打包都是全的.

写一个应用主要是为了对rust更熟悉一些.下一步打算做点别的.

相关推荐
aifannihao5 小时前
Rust 1.100 的 DropGuard:用 Python 实测失败回滚与吞异常
python·rust·异常处理·标准库·contextlib
码农小河666 小时前
基于PHP的电商后台蜜罐系统
开发语言·php
starzy19906 小时前
深入理解Scala柯里化函数:函数链式变换
开发语言·scala
stark张宇6 小时前
Vibe Coding 入门实战:用 Claude Code 跑通 AI 产品开发流程(上)
后端·claude·vibecoding
ShineWinsu7 小时前
对于Qt:QTreeWidget常见属性以及QTreeWidgetItem类的解析
开发语言·c++·qt·gui·客户端·多叉树·qtreewidget
落羽的落羽7 小时前
【C++】C++17的主要特性
linux·服务器·开发语言·c++·算法·机器学习
考虑考虑7 小时前
JDK27中的Set.ofLazy
java·后端·java ee
总要学点什么7 小时前
第108篇:三维特效-图片轨迹线效果——把贴图滚成一串箭头,想用它的本色反而整条消失
开发语言·javascript·ecmascript·gis·webgl·材质·cesium
乌暮9 小时前
Spring AOP 与 Spring 事务:用大白话彻底理解原理与实践
java·数据库·spring boot·后端·sql·学习·spring
我不会起名字3229 小时前
未接入最终读上限的参数:`websocketMaxMsgLen` 与 12.5 倍差距
后端·websocket·go·即时通讯·im·故障排查