小编Joe*_*son的帖子

为什么Sun不用C#来编写Java字节码编译器?

我们想在JVM上运行我们的C#代码

我的公司有一个庞大的C#代码库.超过一半的代码是我们创建,阅读,修改,计算和编写Excel工作簿的核心引擎.我们经常从客户和潜在客户那里得到问题,询问我们是否要构建我们引擎的Java版本 - 其中许多人对用户界面并不感兴趣.我们甚至有一些客户在他们的Java应用程序中使用我们的.NET库时遇到了麻烦.

因此,我们希望构建一个Java版本的核心引擎,理想情况下不需要维护单独的Java源代码库.

Eric Sink 非常好地描述了这个问题.除了我们的软件许可证包含免版税部署这一事实之外,我处于类似的位置,这使得Eric选择Mainsoft对我们来说是不可能的.

我几年每隔几个月一直在谷歌上搜索"c#to jvm"这样的喜欢,但没有任何乐趣.花了大约7年时间开发类似的Java软件,我相信我们在核心引擎中使用的.NET API可以很容易地被封装,我们可以使用Java库完成我们所需的一切.因此,如果我们只有一个C# - > JVM编译器,我们可以构建我们的Java核心引擎,我们就不再需要拒绝那些想要使用它的Java开发人员.

我不是要求Sun为什么不做C#编译器的技术原因.我认识到Java没有属性或无符号64位长等等......为了论证,假设所有这些技术问题都可以通过扩展JVM和/或其他方法来处理.

而且我并没有要求再讨论为​​什么一种语言/堆栈可能比另一种语言/堆栈更好.我们业务的现实是有很多潜在客户使用每个.

Sun为什么要编写C#编译器?(IMO当然)

在Java平台上运行C#代码更容易,这意味着更多的开发人员和更多的平台软件.对平台的成功有什么更重要的吗?乔纳森施瓦茨是一个软件家伙.我会把它留给比我更聪明的人来决定他是否担任Sun的总裁兼首席执行官,但是在他加入Sun之后不久就遇到了Jonathan,我的印象是他了解软件以及对大型软件的需求开发人员的基础.

那么为什么Sun不做C#编译器呢?

  1. NIH综合征?
  2. 斯科特麦克尼利的幽灵?
  3. 太多的Java开发人员不喜欢或不信任与微软有关的任何东西?
  4. 他们同意不参与花大价钱吗?
  5. ???

一定有充分的理由.我不能为我的生活弄清楚它是什么......

.net c# java compiler-construction jvm

46
推荐指数
6
解决办法
1万
查看次数

现在开始设计任务并行库还为时过早吗?

自微软首次宣布以来,我就一直关注着.NET任务并行库(TPL)的开发.

毫无疑问,我们最终会利用TPL.我在质疑的是,在发布Visual Studio 2010和.NET 4.0时是否有必要开始利用TPL,或者等待一段时间是否有意义.

为什么现在开始?

  • .NET 4.0任务并行库看起来设计得很好,一些相对简单的测试表明它在当今的多核CPU上运行良好.
  • 自从七年前购买我的第一台四核处理器Dell Poweredge 6400以来,我一直非常感兴趣使用多个轻量级线程来加速我们的软件.当时的实验表明它不值得付出努力,这主要归功于在每个CPU的缓存(当时没有共享缓存)和RAM之间移动数据的开销.
  • 竞争优势 - 我们的一些客户永远无法获得足够的性能,毫无疑问,我们现在可以使用TPL构建更快的产品.
  • 听起来很有趣.是的,我意识到一些开发人员宁愿用尖锐的棍子捅自己的眼睛,但我们真的很喜欢最大化性能.

干嘛要等?

  • 今天的英特尔Nehalem CPU代表了我们的目标,因为多核支持成熟了吗?您可以购买具有4个内核的Nehalem CPU,它们共享单个3级缓存,并且在Visual Studio 2010/.NET 4.0发布时,很可能是6核CPU共享单个3级缓存.显然,核心数量会随着时间的推移而增加,但架构呢?随着核心数量的增加,它们是否仍会共享缓存?Nehalem的一个问题是,即使内核之间存在非常快速的互连,它们也具有非均匀内存访问(NUMA),这会导致性能降低和结果可预测性降低.未来的多核架构是否能够取消NUMA?
  • 同样,.NET任务并行库是否会随着成熟而发生变化,需要修改代码才能充分利用它?

限制

  • 我们的核心引擎是100%C#,并且必须在没有完全信任的情况下运行,因此我们仅限于使用.NET API.

.net c# vb.net multicore task-parallel-library

11
推荐指数
1
解决办法
819
查看次数