rv54ntjwfm3ug8
V2EX  ›  Java

想写个高性能版 Nextcloud 后端,用 Rust 还是 Java 好?

By rv54ntjwfm3ug8 at 2021 年 9 月 16 日 · 9157 次点击

不考虑 Go,非常不喜欢 Go 这个语言。 Rust 部署方便,社区支持好,但貌似还不是成熟,很多包连 1.0 都没发出来。 Java 目前还是后端第一语言,比 Rust 成熟不少,但部署不是很方便(虽然打 Docker 镜像都差不多),资源占用也比 Rust 高。

57 条回复  •  2025-03-28 17:21:19 +08:00
ipwx
   1
ipwx  
   2021 年 9 月 16 日
用 Java 你就很难部署到比如低内存的 Nas 上了。。。
agagega
   2
agagega  
   2021 年 9 月 16 日
自己写着玩的话就 Rust 呗,有时候踩坑也是种乐趣。不过听说 Rust 的 async/await 这块还没定稿?不应该哇。
wangxn
   3
wangxn  
   2021 年 9 月 16 日
Rust 并不适合来做后端吧,它的优势在后端开发上几乎没有任何应用场景。用 Rust 写后端大致等同于用 C/C++ 写后端,你可以想象这个流行度。
现在 Rust 被用得最多的地方是重写各种命令行工具,都需要大量时间来慢慢磨细节、优化性能。
基本上动态语言凭借专门优化了的 IO 处理和 JIT 在评测上就能打平原生语言,实际应用不好说。
6IbA2bj5ip3tK49j
   4
6IbA2bj5ip3tK49j  
   2021 年 9 月 16 日   ❤️ 23
你排除了最合适的答案……
anyxchachapoly
   5
anyxchachapoly  
   2021 年 9 月 16 日   ❤️ 4
这帖子让我产生难得一见的好奇心,看了下楼主过往发帖

1. 楼主 59 天前发布的『第一次用 go 写爬虫那篇』,包含他人回覆概览了下,恍然大悟,原来是非常多基础不懂所以不喜欢。

2. Java...后端第一,比 Rust 成熟不少,资源占用比 Rust 高,连个基本的 engineering 选择 tech stack 时所需要拿捏的平衡点到底是哪些都不理解。

加油,我非常看好楼主写出一个所谓高性能的 nextcloud 『后端』
xupefei
   6
xupefei  
   2021 年 9 月 16 日 via iPhone
楼主一个人搞?这工程量挺大的啊。
owncloud 有一个团队在用 go 重写服务器端,楼主可以加入一下
icy37785
   7
icy37785  
   2021 年 9 月 16 日 via iPhone
都发在 java 分区了那肯定就是已经决定 java 了吧。
有一说一 go 是最合适的。
Mohanson
   8
Mohanson  
   2021 年 9 月 16 日 via Android   ❤️ 1
对裹脚布过敏
Hanggi
   9
Hanggi  
   2021 年 9 月 16 日   ❤️ 2
一个成熟的开发者不会用非常不喜欢一个语言这种无厘头的理由做技术选型。
redr41n
   10
redr41n  
   2021 年 9 月 16 日   ❤️ 1
刚想来回答 golang,结果看到楼主第一句话
quan01994
   11
quan01994  
   2021 年 9 月 16 日
为什么不用 dotnet 呢 。。
MeatIndustry
   12
MeatIndustry  
   2021 年 9 月 16 日
为什么不考虑 Kotlin 呢,都考虑到 Java 了
seven123
   13
seven123  
   2021 年 9 月 16 日
现在这个情况,首选就是 golang,又要占用小,性能还要不错,还得方便部署
2i2Re2PLMaDnghL
   14
2i2Re2PLMaDnghL  
   2021 年 9 月 16 日
我不知道你怎么想的。
nc 21 已经有 rust 写的高性能文件后端了。
oc 则是挑选了 go 的样子
看来是 PHP 积重难返
# docker 不适合运行时带虚拟机语言
a22271001
   15
a22271001  
   2021 年 9 月 16 日
java 不便于在树莓派 3 之类的小内存设备上部署,用 Go 挺合适的
顺便吐槽一句 nextcloud 是真的卡
witcherhope
   16
witcherhope  
   2021 年 9 月 16 日
GraalVM 试试,可以减少 Java 内存占用
chiuan
   17
chiuan  
   2021 年 9 月 16 日
golang 最舒服最强目前。
x940727
   18
x940727  
   2021 年 9 月 16 日
GraalVM 试试呗,Native 无论是启动速度还是内存占用已经好很多了,优化优化估计能和 Go 掰掰手腕。
byte10
   19
byte10  
   2021 年 9 月 16 日
@a22271001 nextcloud 为啥会那么卡,我也是郁闷。这么简单的一个网盘不至于会卡吧。。
@icy37785 go 确实是比较合适,小服务器也可以运行起来,要知道很多小玩具都是 1-2g 内存的。

go 语言目前比较合适的。话说 nodejs 能搞吗,python 呢?按道理这是一个非常简单的服务啊,业务也简单。
xieren58
   20
xieren58  
   2021 年 9 月 16 日
绝对 rust
seakingii
   21
seakingii  
   2021 年 9 月 16 日
网络服务,GOLANG 首选
Ayanokouji
   22
Ayanokouji  
   2021 年 9 月 16 日
java + graalvm native ?
systemcall
   23
systemcall  
   2021 年 9 月 16 日
用 C#试试吧
现在的生态也不错了。而且性能也有保障,低内存设备其实也还好,部署非常方便
Wincer
   24
Wincer  
   2021 年 9 月 16 日   ❤️ 6
问得出这样问题的人,我不觉得楼主能写出来高性能的 NextCloud 客户端~当然,欢迎楼主打我脸
a22271001
   25
a22271001  
   2021 年 9 月 16 日
@byte10 网上一堆参数优化文章杂七杂八的,我看了下干脆放弃了。。。
mmdsun
   26
mmdsun  
   2021 年 9 月 16 日 via Android
Java 云原生还是不行至少等 spring 6 出来,spring native GraalVM 还有很多小 bug.

不想用 go 可以考虑 .NET core,C#。

https://dotnet.microsoft.com
ming2050
   27
ming2050  
   2021 年 9 月 16 日
个人感觉,还是用自己比较熟悉的语言写起来,之后想改成其他语言再说就好。
zysuper
   28
zysuper  
   2021 年 9 月 16 日
个人喜欢不喜欢重要吗? 能方便的干活赚钱不香吗?
villivateur
   29
villivateur  
   2021 年 9 月 16 日 via Android
你确定你要重写 nextcloud ?
这个工作量可不是几天几个月能搞定的
DsuineGP
   30
DsuineGP  
   2021 年 9 月 16 日
@agagega async/await 我上生产环境都一年了。
但是有一说一,只是用来写 web 的话真不如 spring 一把梭
用了 Rust 各种轮子都得自己造,开源的轮子要么没有要么不圆
devcat9
   31
devcat9  
   2021 年 9 月 16 日
@DsuineGP Rust 范型好用吗?除了轮子的话,写业务逻辑还有什么坑?
GBdG6clg2Jy17ua5
   32
GBdG6clg2Jy17ua5  
   2021 年 9 月 16 日
为啥 不用 php 写呢,狗头
dimlau
   33
dimlau  
   2021 年 9 月 16 日
喜欢不喜欢的……

OwnCloud 在用 Go 重写啊:

https://github.com/owncloud/ocis
DsuineGP
   34
DsuineGP  
   2021 年 9 月 16 日   ❤️ 1
@devcat9 比较大的坑是要避免在异步运行时( tokio )里面运行另一个异步运行时( tokio )
比如一开始是在异步函数内部调用一个同步函数,之后需求改了你想在同步函数内部再调了另一个异步函数(比如网络请求之类的)就很困难
范型的话,只要不涉及到生命周期参数就还挺好理解的,但是因为不像 java 有类继承,Rust 要想代码优雅至少得学会声明宏和派生宏的使用
allanpk716
   35
allanpk716  
   2021 年 9 月 16 日 via iPhone
楼主的意思是 rust 比 java 容易部署吗? doge
NjcyNzMzNDQ3
   36
NjcyNzMzNDQ3  
   2021 年 9 月 16 日
nextcloud 卡是因为用户关闭窗口,后台程序还在读取文件,读到结束才关闭。

借楼推荐下 php 版本的 filerun 自用啥问题都没有。
https://filerun.com/
PDX
   37
PDX  
   2021 年 9 月 16 日 via iPhone
用 quarkus 写,然后编译成 native
devcat9
   38
devcat9  
   2021 年 9 月 16 日
@DsuineGP 感谢!写业务代码的效率看起来还行?

宏会不会过多影响可读性?
wph95
   39
wph95  
   2021 年 9 月 16 日
> Java 目前还是后端第一语言,比 Rust 成熟不少,但部署不是很方便(虽然打 Docker 镜像都差不多),资源占用也比 Rust 高。

graalvm 了解一下 quarkus 了解一下
littlewing
   40
littlewing  
   2021 年 9 月 16 日
php
earneet
   41
earneet  
   2021 年 9 月 16 日 via iPhone
当然是 java 了,虚拟机得天下,裸语言实现虚拟机呀!
0ZXYDDu796nVCFxq
   42
0ZXYDDu796nVCFxq  
   2021 年 9 月 16 日
这种重 IO 的场景,换个语言有效果吗
sky96111
   43
sky96111  
   2021 年 9 月 16 日 via Android
用 Rust 重写的话…全人类感谢你.jpg
mxT52CRuqR6o5
   44
mxT52CRuqR6o5  
   2021 年 9 月 16 日 via Android
@gstqc +1,顶多省点内存
watcher
   45
watcher  
   2021 年 9 月 16 日
用 php 啊 大哥
zxCoder
   46
zxCoder  
   2021 年 9 月 16 日
dotnet
iyear
   47
iyear  
   2021 年 9 月 16 日
java 适合企业用,个人如果就一个星际蜗牛或者其他矿渣组的 nas,跑都跑不起来
netcan
   48
netcan  
   2021 年 9 月 16 日
不要浪费时间精力在 Rust 上,这个没啥前途。
namelosw
   49
namelosw  
   2021 年 9 月 16 日
这种钓鱼贴,你们顺着他说不就完了…

就算不是钓鱼贴,鼓励他一下,哪个费事用哪个,让他勇往直前不好吗
jiayong2793
   50
jiayong2793  
   2021 年 9 月 16 日
C#?
iseki
   51
iseki  
   2021 年 9 月 17 日
JVM 吃资源确实有点严重,虽然我很反感 Go 这个残废语言,但还是不得不说,如果 Rust 不合适,可能 Go 就是无法规避的选择了,也许你可以考虑下 dot Net 系?
saltbo
   52
saltbo  
   2021 年 9 月 17 日
欢迎使用 zpan https://zpan.space
zxCoder
   53
zxCoder  
   2021 年 9 月 17 日
@iseki 话说感觉 Java 和.Net 很相似,为啥都说 JVM 吃资源严重,而.Net 不会呢?是因为微软比较 nb 吗
comoyi
   54
comoyi  
   2021 年 9 月 17 日
你的内心还是想用 Rust 的,那就用吧
iseki
   55
iseki  
   2021 年 9 月 17 日 via Android
@zxCoder 个人不太熟悉.net ,直觉上好像在起始阶段资源消耗略小一点,可能是策略不一样吧
wapollo9
   56
wapollo9  
   2023 年 1 月 12 日
Nextcloud 部分好像已经开始用 Rust 重写了?现在文件推送部分是已经重写了
YANGGGGGG
   57
YANGGGGGG  
   2025 年 3 月 28 日
@dimlau emmm 现在怎么样了,成熟了吗。一直用 nextcloud 。试试 go 重写的 own 丑陋的。
© 2026 V2EX · 200ms · 3.9.8.5