为什么Java被用于低延迟,但C#并不是呢?

4
Java和C#基本相同,都有垃圾回收器,类似的内存模型(至少与C ++相比),类似的内存分配(我想),但Java在低延迟应用程序中经常使用(不如C ++多),而C#则不是非常适用于此。
是否存在任何技术原因,即使它与Java非常相似,为什么没有在这些环境中使用C#?内存模型等方面是否有差异?这是因为Java具有不同的JVM /垃圾收集器吗?更好的调优参数?
编辑:根据下面的评论之一,我认为这个问题的答案是C#将系统限制为基于Windows。 Linux允许调整服务器以更少地进行上下文切换,从而提供更大的低延迟机会,而不是关于C#语言本身的特定性。

1
你指的是哪些低级应用程序? - Daan Timmer
6
你能用事实支持这些主张吗,还是我们必须信你的话? - Jon
1
@user997112:所以听起来似乎有一个原因:所有这些服装公司都已经有了应用程序,这些应用程序是在C#出现之前编写的,他们不想为了没有好处而重新编写它们。因为从纯技术角度来看,我相信你可以同样好地用Perl和Javascript编写它们。 - Jon
3
除了低延迟之外,你应该关注其他原因。Java已经存在于这些公司中并且有一个成熟的代码库,而且不需要Windows操作系统(其他C#实现也可能基于成熟度而未被考虑)可能是主要原因。我认为传统原因确实是一个主要原因。(请记住,传统可能不仅仅与代码有关,还与人有关)。 - nos
1
Java被广泛使用的原因是几乎标准的互操作性库是一个Java库(称为QUICKFIX/J),而这个库具有调用C++、C或汇编代码以实现低延迟目的的能力。因此,由于这个原因,Java已成为大多数组织的标准平台。如果为.NET编写了这样的库,那么.NET也可以做同样的事情...但是到目前为止,据我所知还没有人编写这样的库。(注意:有一个快速修复托管包装器,它包装了c++ dll,但它不是本地库) - Erik Funkenbusch
显示剩余7条评论
1个回答

2

但这不是一个错误的前提...... - user997112
1
@user997112 - 在C#/.Net和Java之间,几乎没有任何技术原因可以使人偏向于其中一个。请看上面的链接。如果某个特定行业偏向于其中一种,我敢打赌那可能是其他问题,例如:a) 对Java已有投资(个人而言,我更喜欢Java),b) 不想依赖于微软平台(例如,即使我愿意使用C#,但我必须在zOs工作站上运行)。 - paulsm4
1
@user997112 在中国,Java比.NET更受欢迎,这背后有原因。我认为,核心原因是$$$。而且我认为C#.NET可以毫无问题地开发一般低延迟应用程序,例如金融市场应用程序。 - Timeless
自从2012年开始这个线程以来,发生了很多事情。其中包括Java在2010年被Oracle收购后变得更加“封闭源”,而随着.NET Core的推出,.Net变得更加“开源”。还有别忘了Mono,它仍然活跃着... - paulsm4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接