截至 .NET 6, C# 在后端开发领域的生态与 Java 还有哪些差距?

2022-04-07 17:10:55 +08:00
 wdhwg001

如题,这里的“生态差距”不包括岗位、薪酬、求职与招工难度等人力资源生态问题。

就我个人感觉来说,C# 在语法上确实要香的多,性能更好,而且 VM 也远不需要 Java 的那些黑魔法。

但是,总有人说 C# 的生态很不好,想知道到底二者之间有哪些差距?有哪些库或中间件是 Java 特供而 C# 没有或发展极不完善的呢?对于实际的后端开发会有多少影响?

以及,也常听说全球范围内的 C# 生态好一些,那么如果忽视掉这些 Java 非全球范围的大厂自研开源和中文社区特供的部分的话,C# 和 Java 在后端领域的差距又有多少呢?

( PS:这里讨论的 C# 特指 .NET 6, 不讨论 Mono 、.NET Framework 以及各 AOT ,也不讨论 IIS 及早已不存在了的 Windows/Linux 平台问题。)

8483 次点击
所在节点    程序员
83 条回复
INCerry
2022-04-07 20:48:54 +08:00
招人这个问题。举个例子,去年发生的,某个行业内做计算平台的在某新一线城市开研发中心,招.NET 中高级 30 来人,其它语言若干,给的薪资均高于本地平均 20%,一个多月就招满。我们组今年同事离职,空缺几个位置,薪资高于本地平均 15%,几个 offer 一天之内就发完了。
ration
2022-04-07 21:06:12 +08:00
做过多年 C#,也做过半年 java,我说说自己的看法。
1.通用的中间件基本的 java 有的,.c#都有,但是呢,比如你找找腾讯阿里这些大厂的中间件的示例和客户端封装,有些 C#是没有的,但是基本都有通用 api 接口,不过你还是得自己写或者从 java 翻译过来。
2.大型应用方面,java 国内能找到很多框架,比如 spring 全家桶,spring cloud alibaba ,大厂都在用,因此坑多也能填平。而从 C#貌似只有微软提供的那个官方微服务示例,其他的在 github 上找到的就是各种小型的中间件了。
3.大型中间件,C#能拿出来的很少,java 有 hadoop,elasticsearch,go 有 docker,kubernetes 。这些我认为也是生态,基于这些可以开发插件之类的,也提供了不少工作岗位。
4.桌面 windows 应用开发的话,因为是微软的,C#比较有优势。
arthur1024
2022-04-07 22:45:29 +08:00
@INCerry 感谢提供机会啊,是成都的吗?
wdhwg001
2022-04-07 22:59:20 +08:00
@paccco 人力资源生态不比较是因为没有意义,是个人都知道 Java 好找工作。

其他的限制我觉得更接近扫盲而不是限制,毕竟一提到.net 脱口而出仅 win 的大有人在,我不希望这些过时的评价掺杂进来也是正常考虑吧。至于运行时的考虑,就像我们在这里讨论的 Java 当然不是 Dalvik 虚拟机一样,但这一点在 Java 语境下完全不需要提及。

同时,你也可以从我没有限制 Java 版本和授权限制这一点理解到:我完全没有打算缩小有效讨论范围。
whx
2022-04-07 23:26:00 +08:00
C#用来写了一些小工具,写起来确实比较舒服。语法方面对比 Java 简直是降维打击。
.net 生态具体有多差不清楚,感觉有点混乱。
光服务端开发就有两个不同的版本,之前是.net core ,现在是.net 6 。
有些包支持了.net core ,但是没支持.net 6 ,还有些包是只支持.net framework 的。
对比 Java 举一个例子,有个老古董包,08 年就没更新了。
运行环境更新到 jdk17 ,依然跑的稳得一批。
着实让人有点惊讶,之前还一直没留意。
NoNewWorld
2022-04-07 23:28:28 +08:00
其实现在更多去考虑 go 相关的了。。
yazinnnn
2022-04-07 23:43:40 +08:00
感觉楼主好像懂得很多,而且在等自己想要的答案

不过没多少人既是 java 专家又是.net 专家吧
Osk
2022-04-08 00:06:50 +08:00
c# 语言 /CLR 方面没问题, 甚至可以说总体感觉挺优秀的, 有问题的是微软...


以前不跨平台, 想跨还得用第三方的 mono. 这是作死原因之一, 以前 c# 在 Windows 上有多方便, 在其它平台上就有多难.

第二个个人很讨厌的地方就是以前不能打包时带上运行时, 不像 java 那样可以带上 jre 分发, 徒增麻烦.


当然, 现在微软在努力改变以前的风格, 然而, 开发者都被微软坑怕了, 特别是这几年, 疯狂的搞新平台, 然后放弃. 再加上现在 pc 端不再辉煌, 显得 c# 快完了一样.

顺便多嘴一句, uwp/uap 无人问津的原因有太多, 但不像后(win 7) 兼容是严重问题之一, 开发一个软件时, 考虑到当时 win 7 恐怖的市占率, 恐怕没有几个开发商会傻乎乎的只做 uwp/uap, 不然还要再做一个 win 32 版本, 既然都做 win 32 了, 谁愿意再做 uwp 呢, 虽然微软声称大量代码可以复用...
总结就是: 微软有时总会搞一些骚操作, 总想教用户怎样做, 然而它不是 apple...


不过很多客户端开发, 需要性能或者与硬件交互的(IoT, 工业软件)等还是大量用 c#/c++
wdhwg001
2022-04-08 02:11:05 +08:00
@yazinnnn 并没有,只是微软其实花了大量精力和资金在各简中社区进行垃圾布道,以至于这种垃圾布道真的吸引了非常多的支持者。

所以,更想听到更客观,更有深度的声音和评判。
ragnaroks
2022-04-08 08:41:07 +08:00
语言和平台都没问题,确实是微软自己作死,而最近的就是 dotnet 6 模板的问题,即微软强推所谓 TopLevelStatements 和隐式命名空间
mosfet
2022-04-08 08:43:33 +08:00
@Cbdy 因为同类岗位,c#给的钱比 java 少不少
sjzjams
2022-04-08 08:44:36 +08:00
Cbdy
2022-04-08 08:54:51 +08:00
@mosfet 照理说这种小众技术应该给钱多才对,比如 Ruby 程序员一般薪资对比 Java 高
hbing
2022-04-08 09:02:30 +08:00
工作用了 C# N 年,很少接触其它语言, 最近刚好在学习 Spring boot, 学习新語言完全靠自己,安裝-配置-導包到
hello World, 用了五六天才搞定。C#就简单多了,安装-新建项目-hello world (win10)。
chengyiqun
2022-04-08 09:12:26 +08:00
@hbing 那能一样么,springboot 是一个全家桶框架的基础,C#是编程语言,你用一个框架和一个语言比,这有什么科比的。
java 也能新建项目 main 方法 hello world 啊。
banmuyutian
2022-04-08 09:17:09 +08:00
@hbing #34
Spring boot 是框架,C#是编程语言,这咋比较
janus77
2022-04-08 09:37:55 +08:00
中间件、数据库这类?感觉这类东西可以多一些方案吧,而不用一个轮子一统天下。
另外不知道 c#有没有比较多的商业 /收费框架(比如 sqlserver 这种),如果这样的话也是一个负担
ivyliner
2022-04-08 09:39:10 +08:00
不是后端开发回答一下.

C# 或者 .NET 的生态的差距是 "作为一个非后端开发人员不知道在 macOS 上是否可以开发并运行 .NET, 但是我知道 Java 可以. "
感觉这个在某些程度上可以反应出两个生态的差距.
吐槽一下微软在各种命名上的糟糕品位, 特别让人容易搞混.
BenX
2022-04-08 09:43:25 +08:00
作为一个 C# 老屁股,并且多年不写 C# 的中年人。。。。。

C# 问题主要在国内比较严重,受众公司少,要不就是非常传统行业还在用。暂时无解
至于优势没啥好说的,说多了又要被扣帽子。
BenX
2022-04-08 09:44:19 +08:00
@ivyliner .NET core 或者现在叫 6.0 ,毫无问题啊。不知道为啥这样说

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/845526

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX