[DTK] 采用Java开发的软件,性能就真的不行吗?请深入了解
Tofloor
poster avatar
deepin
2023-02-18 03:31
Author

adc91c948f55f33a26a026d15f2c3303.png
在操作系统中使用指针类型的编程语言开发软件,可能有些程序员会首选C++,这个我不否认,但是java就真的不行吗?我确实有点怀疑。

首先,Java编程语言在国内已经有非常庞大的社区资源和编程使用者,比如github\gitee、CSDN,Linux很多服务器中的web软件也大量使用了Java代码。

其次,Java面向对象的写法和用法确实比C++简单、调试也很容易,主要是差在内存管理这块,虽然是动态内存管理需要虚拟机进行编译,但是谷歌安卓新的虚拟机编译机制和华为鸿蒙的方舟编译器的出现,也告诉我们Java代码可以间接变为完整的二进制机器码,再上传到系统应用商店直接使用,软件的运行性能和响应速度会提高。

最后,国内很多互联网公司比如阿里巴巴对于Java jdk、java语法都有相应的改进和开发规范,Java开发的软件必定在性能上会提升不少。


个人观点:使用Java编程语言搭建新的GUI开发套件,实际上也不错,尽管内存管理方面不如C++更灵活,但是它的使用量和社区资源恰恰是我非常看重的。一个软件或平台的性能好坏,不在于是选择哪种编程语言,而是程序员的水平高低

Reply Favorite View the author
All Replies
Lwh2008-Equinox
deepin
2023-02-18 03:35
#1

DTrace感觉没什么人知道就感觉可惜。。。

Reply View the author
jiandanlangman
deepin
2023-02-18 03:39
#2

并没有

先说网上吐槽的缺点,实际上

Java的执行效率虽然没有优势但绝对算不上劣势。

至于内存占用,大哥这都2023年了,加点内存会死么?

再说优点:

Java庞大的社区支持和第三方组件是任何一门语言都无法媲美的,着可以让Java的开发效率极高

Java并不是不适合做游戏,只是由大的发展方向决定了它更偏向于后端,相应的游戏UI组件比较欠缺,当然如果你愿意从0开始写,写出来的效果肯定是不输与任何一门语言的

Reply View the author
deepin
2023-02-18 04:41
#3
jiandanlangman

并没有

先说网上吐槽的缺点,实际上

Java的执行效率虽然没有优势但绝对算不上劣势。

至于内存占用,大哥这都2023年了,加点内存会死么?

再说优点:

Java庞大的社区支持和第三方组件是任何一门语言都无法媲美的,着可以让Java的开发效率极高

Java并不是不适合做游戏,只是由大的发展方向决定了它更偏向于后端,相应的游戏UI组件比较欠缺,当然如果你愿意从0开始写,写出来的效果肯定是不输与任何一门语言的

Java确实可以做。

Reply View the author
deepin
2023-02-18 04:41
#4
Lwh2008-Equinox

DTrace感觉没什么人知道就感觉可惜。。。

没用过,我先了解一下

Reply View the author
出淤泥而挑染
deepin
2023-02-18 05:50
#5

编程语言没有好坏之分,个人认为JAVA仍然是最好的自治区使用自治范围内语言,假如自治区内开发和使用不好完全不涉及和影响到其他区域,不像markdown这类链式架构。

Reply View the author
枫叶
deepin
2023-02-18 06:07
#6

1、做服务器应用类软件,java是不二之选

等服务器上线达到稳定后,java代码执行效率不比c++差,但类库、开发效率,可维护性 都是NO.1

2、做纯网关、游戏后台,c++更有优势(nginx)。

3、做桌面软件

(1)只是做个demo--随意

(2)管理后台这种,只有界面展示相关的,没有三维加速--electron更好点,java swing、javafx也有很多国外人在用,但对比electron并没有啥优势。

(3)做个测试界面,界面不复杂,对java更了解--java 还挺香

(4)涉及系统调用,嵌入式信号处理,三维加速,游戏,科学计算等等-- C++是不二之选(winform/wpf 更好用)

(5)桌面跨平台 管理界面-electron, 其他 无脑使用QT


1、java 并不是不能做界面,idea全家桶就是最成功的案例,但idea 界面组件是完全新写的,跟swing 差距很大。而且Java开发相关,java 做IDE 自然是最好的,但那个内存占用真的高。全部都是java开发的软件,其实PC也吃不消。

2、安卓那个虚拟机是寄存器模式(性能好),PC上java虚拟机是栈式(移植性好),两者并不是完全相同的。如果把安卓那个虚拟机搞到PC上做个人应用,那一般来说比electron更适合做桌面软件。

3、GraalVM和方舟编译器 对应的虚拟机都是寄存器模式,而且将各大语言的内存模型统一,也就是各种语言混合编译,这样直接降低了跨语言调用成本。而且采用的计数的方式进行垃圾回收,技术思路跟IOS那套一样,后期更适合桌面软件。

4、flutter也好,.net maui也好,Java Jetpack Compose 桌面版也好,都还没真正成熟。从技术方案看,flutter 最好,Jetpack Compose 桌面版完全是swing 套壳,执行效率起不来。 .net 也是栈式虚拟机,执行效率仍然很高,但官方不支持linux。flutter底层更是开始替换skia, 从底层包括语言、虚拟机都是在适配图形界面开发,google 是真的强。


综上:当下跨平台,就是electron、QT二选一。

Reply View the author
redmibook
deepin
2023-02-18 06:19
#7

electron、QT二选一,正经人谁用 java.

Reply View the author
deepin
2023-02-18 07:28
#8
枫叶

1、做服务器应用类软件,java是不二之选

等服务器上线达到稳定后,java代码执行效率不比c++差,但类库、开发效率,可维护性 都是NO.1

2、做纯网关、游戏后台,c++更有优势(nginx)。

3、做桌面软件

(1)只是做个demo--随意

(2)管理后台这种,只有界面展示相关的,没有三维加速--electron更好点,java swing、javafx也有很多国外人在用,但对比electron并没有啥优势。

(3)做个测试界面,界面不复杂,对java更了解--java 还挺香

(4)涉及系统调用,嵌入式信号处理,三维加速,游戏,科学计算等等-- C++是不二之选(winform/wpf 更好用)

(5)桌面跨平台 管理界面-electron, 其他 无脑使用QT


1、java 并不是不能做界面,idea全家桶就是最成功的案例,但idea 界面组件是完全新写的,跟swing 差距很大。而且Java开发相关,java 做IDE 自然是最好的,但那个内存占用真的高。全部都是java开发的软件,其实PC也吃不消。

2、安卓那个虚拟机是寄存器模式(性能好),PC上java虚拟机是栈式(移植性好),两者并不是完全相同的。如果把安卓那个虚拟机搞到PC上做个人应用,那一般来说比electron更适合做桌面软件。

3、GraalVM和方舟编译器 对应的虚拟机都是寄存器模式,而且将各大语言的内存模型统一,也就是各种语言混合编译,这样直接降低了跨语言调用成本。而且采用的计数的方式进行垃圾回收,技术思路跟IOS那套一样,后期更适合桌面软件。

4、flutter也好,.net maui也好,Java Jetpack Compose 桌面版也好,都还没真正成熟。从技术方案看,flutter 最好,Jetpack Compose 桌面版完全是swing 套壳,执行效率起不来。 .net 也是栈式虚拟机,执行效率仍然很高,但官方不支持linux。flutter底层更是开始替换skia, 从底层包括语言、虚拟机都是在适配图形界面开发,google 是真的强。


综上:当下跨平台,就是electron、QT二选一。

我建议大家都用自己的主力编程语言进行尝试。

Reply View the author
deepin
2023-02-18 07:29
#9
redmibook

electron、QT二选一,正经人谁用 java.

但是你不能否认用Java的人确实很多。

Reply View the author
出淤泥而挑染
deepin
2023-02-18 09:46
#10

不是很理解为什么要用C++跟JAVA比,C++教科书封皮上写的就是面向图形对象的高级语言,跟JAVA这类应用型语言有可比之处吗?如果不需要处理图形图像为什么要用C++呢?不嫌C++的库太大吗?

Reply View the author
deepin
2023-02-18 09:50
#11
出淤泥而挑染

不是很理解为什么要用C++跟JAVA比,C++教科书封皮上写的就是面向图形对象的高级语言,跟JAVA这类应用型语言有可比之处吗?如果不需要处理图形图像为什么要用C++呢?不嫌C++的库太大吗?

不是拿C++和Java比,而是让更多程序员都能用上自己的编程语言在deepin系统中开发软件,Java只不过用户量比较大。

Reply View the author
出淤泥而挑染
deepin
2023-02-18 09:59
#12

不是拿C++和Java比,而是让更多程序员都能用上自己的编程语言在deepin系统中开发软件,Java只不过用户量比较大。

我个人觉得QT就是deepin的最好编程语言,兼顾了轻量和效率

Reply View the author
出淤泥而挑染
deepin
2023-02-18 10:15
#13
出淤泥而挑染

我个人觉得QT就是deepin的最好编程语言,兼顾了轻量和效率

我记得deepin最早期的几个版本调用了很多类java,但是效果不是很理想,后来的开发版本才加重QT

Reply View the author
joo
deepin
2023-02-18 10:36
#14

爱用什么就用什么,如果是你的地盘你做主。

但,行业的趋势是无论服务端还是客户端,除了现存的项目,都在积极替换java(包括各种变体),所有的公司(谷歌、苹果、微软、华为、阿里、腾讯、金蝶、用友......)都是这样,我也不知道为什么,可能时间到了

Reply View the author
deepin
2023-02-18 18:37
#15
joo

爱用什么就用什么,如果是你的地盘你做主。

但,行业的趋势是无论服务端还是客户端,除了现存的项目,都在积极替换java(包括各种变体),所有的公司(谷歌、苹果、微软、华为、阿里、腾讯、金蝶、用友......)都是这样,我也不知道为什么,可能时间到了

那是JS比Java的使用更简单

Reply View the author
枫叶
deepin
2023-02-20 00:51
#16

ArkUI 目前是华为主推的跨平台UI方案,可以考虑跟华为合作,把deepin作为首选适配的桌面环境,后面手机软件移植到deepin 也容易很多。这个ArkUI起来后,开发效率非常高,就以华为那个开发体量和不要命的加班模式,这玩意很有可能超过QT和flutter。

Reply View the author
deepin
2023-02-20 18:14
#17
枫叶

ArkUI 目前是华为主推的跨平台UI方案,可以考虑跟华为合作,把deepin作为首选适配的桌面环境,后面手机软件移植到deepin 也容易很多。这个ArkUI起来后,开发效率非常高,就以华为那个开发体量和不要命的加班模式,这玩意很有可能超过QT和flutter。

主要是“超级终端”很强,但相关代码编辑器IDE目前不支持Linux桌面操作系统平台。

Reply View the author
出淤泥而挑染
deepin
2023-02-22 02:40
#18
枫叶

ArkUI 目前是华为主推的跨平台UI方案,可以考虑跟华为合作,把deepin作为首选适配的桌面环境,后面手机软件移植到deepin 也容易很多。这个ArkUI起来后,开发效率非常高,就以华为那个开发体量和不要命的加班模式,这玩意很有可能超过QT和flutter。

我看着华为余承东嫖了deepin的以往每一个版本代码到华为手机上还没付过钱,其实无所谓的,谁写码不带安全漏洞就属于头批被裁员对象。

Reply View the author
deepin
2023-02-22 05:11
#19
出淤泥而挑染

我看着华为余承东嫖了deepin的以往每一个版本代码到华为手机上还没付过钱,其实无所谓的,谁写码不带安全漏洞就属于头批被裁员对象。

Linux社区,华为也贡献不少源代码,Linux现在不存在谁抄谁,就看谁有本事把自己的发行版搞起来。

Reply View the author
出淤泥而挑染
deepin
2023-03-03 05:23
#20

https://bbs.deepin.org/post/253207

Reply View the author