为什么Sun 不做C# 到Java 字节码编译器?

2024-01-13

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

我的公司拥有庞大的 C# 代码库。超过一半的代码是我们用于创建、读取、修改、计算和编写 Excel 工作簿的核心引擎。我们经常收到客户和潜在客户的问题,询问我们是否要构建引擎的 Java 版本 - 他们中的许多人对 UI 根本不感兴趣。我们甚至有一些客户不厌其烦地从他们的 Java 应用程序中使用我们的 .NET 库。

因此,我们希望构建核心引擎的 Java 版本,最好不要维护单独的 Java 源代码库。

埃里克·辛克描述了这个问题 http://www.ericsink.com/bos/Geeks_Rule.html很好。我的情况与此类似,只是我们的软件许可证包括免版税部署,这使得 Eric 选择 Mainsoft 对我们来说是不可能的。

我一直在谷歌上搜索类似的现在几年来,每隔几个月就会有一次,没有任何快乐。我花了大约 7 年的时间为 Java 开发类似的软件,我相信我们在核心引擎中使用的 .NET API 可以轻松封装,并且我们可以使用 Java 库完成我们需要的一切。因此,如果我们只有一个 C# -> JVM 编译器,我们就可以为 Java 构建核心引擎,并且我们将不再需要拒绝想要使用它的 Java 开发人员。

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

我并不是要求再就为什么一种语言/堆栈可能比另一种更好进行辩论。我们业务的实际情况是,有大量潜在客户在使用每种产品。

Sun 为什么要开发 C# 编译器? (当然是国际海事组织)

使在 Java 平台上运行 C# 代码变得更容易意味着该平台将有更多的开发人员和更多的软件。对于一个平台的成功还有什么更重要的吗?乔纳森·施瓦茨 http://en.wikipedia.org/wiki/Jonathan_I._Schwartz是一个软件人。我将让其他比我聪明的人来决定他是否接受了 Sun 总裁兼首席执行官这一不可能的工作,但在乔纳森加入 Sun 后不久与他会面后,我的印象是他了解软件以及对大型软件的需求。开发商基础。

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

  1. NIH http://en.wikipedia.org/wiki/Not_Invented_Here综合症?
  2. 的鬼魂斯科特·麦克尼利 http://en.wikipedia.org/wiki/Scott_McNealy?
  3. 太多 Java 开发人员不喜欢或不信任与 Microsoft 相关的任何东西?
  4. 他们同意不作为采取行动的一部分大笔钱 http://www.internetnews.com/bus-news/article.php/3334991?
  5. ???

一定有一个很好的理由。我只是一生都无法弄清楚它是什么......


首先,Sun 没有动力在 JVM 上实现 C# 编译器,因为他们有非常相似的东西,称为 Java 编程语言。

它也不像仅仅实现一个编译器那么简单,因为 Java 标准类库与 .net 基类库不同。您最终必须将所有 .NET API 调用更改为 Java API 调用。

Micrsoft 有一款名为 J# 的产品,旨在用于 Java 到 .NET 的转换,但最终没有人使用它,因为该 API 仅限于 Java 2 之前的 API,所以它几乎没有用处。如果 Sun 实现了 .NET BCL 的一部分,情况也是一样的,因为只有它的核心部分是标准化的且免版税的。 ASP.NET 和 WPF、WCF 等部分不属于 ECMA 标准,因此 Sun 需要 Microsoft 的许可才能实现这些 API。

如果足够多的客户想要一个具有商业意义的 Java 版本,以便将您的应用程序移植到 Java,那么您就不会通过 C# 到 JVM 编译器从 Sun 获得任何帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么Sun 不做C# 到Java 字节码编译器? 的相关文章

  • 家庭自动化图书馆[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我是一名 C 开发人员 希望将家庭自动化作为一种 爱好 我做了一些研究 但想知道是否有人知道支持 In
  • Spring boot JPA不使用findById返回现有结果

    我使用 Oracle 数据库和一些 JPA 查询创建了一个非常小且简单的 Spring Boot 应用程序 这是不返回数据的代码片段 该数据实际上存在于数据库中 letterRecipientNonOas letterRecipientNo
  • 多次重定义错误

    在了解了有关类和指针的更多信息后 我重构了一个程序并删除了超过 200 行代码 在此过程中创建了另外两个类 Location and Piece 问题是 在编译完所有内容后 链接器抱怨构造函数Piece被定义了多次 有很多错误 In fun
  • 如何使用 iText7 将 .p7s 字节数组插入 PDF 中?

    我正在尝试将 p7s 字节数组信息插入签名字段 我按照下面的图片操作 我的步骤 准备签名容器 原始PDF是 tmp example pdf 这部分的输出是 results prepared pdf PdfSigner signer new
  • spring-data-mongodb 在重新水化对象时到底如何处理构造函数?

    我读过了http static springsource org spring data data mongo docs 1 1 0 RELEASE reference html mapping chapter http static sp
  • 创建一个重复 char n 次的编译时字符串

    我正在使用这样的函数将数据导出到 xml 文件中 注意 愚蠢的示例 void write xml file const std string path using namespace std string view literals Use
  • 使用 enum.values() 与字符串数组相比,性能是否会受到影响?

    我正在使用枚举来替换String我的 java 应用程序 JRE 1 5 中的常量 当我在不断调用的方法中将枚举视为名称的静态数组时 例如 在渲染 UI 时 是否会对性能造成影响 我的代码看起来有点像这样 public String get
  • 无法在 Eclipse IDE 中使用 java 建立与 SQL Server 2008 的数据库连接

    我正在尝试在 Eclipse IDE 中使用 Java 代码连接到 HP Operations Manager 数据库 我能够通过 Microsoft SQL Server Management Studio 2008 成功连接 但通过代码
  • 用于将 cython 中的许多 C++ 类包装到单个共享对象的项目结构

    我在文档 邮件列表和这个问题在这里 https stackoverflow com questions 10300660 cython and distutils 但我想得到一个更直接的答案来解决我的具体情况 我正在通过尝试一点一点地包装我
  • WP8.1:Cortana uri 关联?

    Cortana 是否有 uri 关联 或者从其他应用程序启动的其他方式 我已经尝试过了 await Launcher LaunchUriAsync new Uri cortana await Launcher LaunchUriAsync
  • 为什么 C# 不支持类构造函数中的隐式泛型类型?

    如果编译器可以推断出泛型类型参数 C 并不要求您指定它 例如 List
  • 将 C++ 连接到 C#

    我一直在用 C 编写一个程序 注意到 C 中有一个库 别人写的 我想链接到我的代码 但我不知道该怎么做 有人可以提出建议吗 怀疑这很重要 但我正在使用带有 MSVC2010 的 Windows 7 提前致谢 您可以尝试在 C CLI 模式下
  • 如何使用 JNDI 和 Digest-MD5 对 LDAP 进行身份验证

    我正在尝试使用 DIGEST MD5 加密对 LDAP 服务器进行身份验证 使用简单加密时 它工作得很好 但由于显而易见的原因 我无法通过网络以纯文本形式发送密码 奇怪的是 在使用 Softerra LDAP 浏览器时 我可以使用 Dige
  • JPA中flush的确切目的是什么

    一些令人困惑的解释 冲洗 刷新是将底层持久存储与内存中保存的持久状态同步的过程 它将更新或插入到正在运行的事务中的表中 但它可能不会提交这些更改 如果无论如何更改仅在提交后才会保留在数据库中 那么为什么要在代码中间刷新呢 运行刷新后 如果对
  • 委托给子组件的模式

    在我正在工作的产品中 非常基本的场景之一是类的序列化 通常 要序列化的类会在其子组件上调用序列化 例如如果有一个类 s t 班级 A B C D 那么A Pack会调用pack B C D 上的函数 由于有很多这样的类 因此必须一遍又一遍地
  • 当 xml 具有名称空间前缀时,为什么只有某些 XPath 表达式才能找到节点

    在下面的示例代码中 任何采用 形式的 XPath元素名称 当源 xml 有命名空间前缀时返回 null 请参阅testWithNS 在底部的代码中 当源 xml 没有名称空间前缀时 所有列出的 XPath 表达式都会返回一个节点 请参阅te
  • 在 JsonConverter 中递归调用 JsonSerializer

    我正在写一个JsonConverter要执行一些我需要在读 写时完成的转换任务 特别是 我采用现有的序列化行为 并在写入 读取时添加一些附加属性 在 的里面JsonConverter 我想利用通过的JsonSerializer实例来执行大部
  • 良好的类似 STL 的 C 库 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 对于具有向量 双端队列 堆栈 哈希图 树形图 集合等数据结构的 C 语言来说 有哪些好的库 请使用纯 C 并且与平台无关 The Glib
  • 使用 Boost::Spirit 解析 time_period 表达式

    我需要使用 Boost Spirit 解析以下 EBNF 表达式 period date part time part date part time part time part hours minutes seconds date par
  • hibernate外键问题:执行DDL“alter table...”时出错

    我有一个非常简单的对象结构 它给了我一个我无法解决的错误 已经做了很多搜索 我认为这一定是一个非常常见的用例 所以不确定问题是什么 我有这三个课程 Entity public class Widget Id GeneratedValue s

随机推荐

  • 如何使用 ffmpeg 应用多个过滤器和输入

    我不仅有多个过滤器 而且有多个要覆盖的输入 我通常需要 2 3 个步骤来完成它们 并且想知道如何用一个命令完成所有这一切 因为这应该是最有效的方法 1和2字面意思相同 为了便于阅读 我删除了非常长且复杂的实际过滤器 图像向左滑到视频上 取1
  • 获取 char 输入并将其存储在数组中

    我想获取 n 个输入并将其保存在数组 c 和 p 中 然后使用它们 我目前已经写了这个 但我没有得到想要的输出 include
  • sympy 中的复数:解析欧拉恒等式

    我正在使用 sympy python 3 中的复杂函数 但无法让 sympy 简化方程 特别是我无法使用欧拉恒等式将复指数分解为实部和虚部 这是我的代码 import sympy as sym from sympy import I ini
  • 查询数据表字段包含列表中任何项目的行

    我是 LINQ 的新手 我想查询描述列字符串 示例值 我今天感觉很幸运 包含 匹配 a 中的任何项目的所有行List
  • S3 存储桶操作不适用于任何资源

    我正在按照以下指示进行操作这个答案 https stackoverflow com a 23102551 773263生成以下 S3 存储桶策略 Id Policy1495981680273 Version 2012 10 17 State
  • 如何使用 com.android.camera.action.CROP 设置输出图像

    我有裁剪图像的代码 如下所示 public void doCrop Intent intent new Intent com android camera action CROP intent setType image List
  • 如何为python3.4.2安装pysqlite

    i use kali linux and i need sqlite3 driver for python3 4 2 i tried the pysqlite install but get an erorr pls help me how
  • JS SDK 与 PHP SDK

    从我对各个网站的简要探索来看 JS SDK 似乎比 PHP SDK 更常用 即使是用 PHP 实现的网站也使用 JS SDK PHP 参考页面有 776 个赞 而 JS 参考页面有 20k 个赞 PHP 参考页面说 PHP SDK 可以帮助
  • 任何 redis 调用的 ioredis send 命令的默认超时是多少

    我将 ioredis 与节点应用程序一起使用 由于集群中的一些问题 我开始得到 集群重定向过多 最后一个错误 错误 连接已关闭 由于这个原因 我的所有 redis 调用都失败了 并且经过了很长一段时间 从 1 秒到 130 秒 ioredi
  • “精化”的反义词是什么

    在世界上通用编程的概念细化很常见 特别是给定一个概念C1 那么我们说一个概念C2提炼C1如果它提供了所有功能C1甚至可能更多 怎么称呼逆关系呢 因此 如果C2是一个细化C1 then C1是一个什么C2 语言学中有两个术语定义了本主题中讨论
  • 如何在 BigQuery UDF 主体内声明变量?

    我试图在 BigQuery 上创建一个带有 while 循环的 UDF 函数 但我在文档中没有看到任何专门解决这种情况的语法指南 也没有解决 UDF 正文中变量的声明 上下文 我正在尝试构建一个函数来将标题大小写应用于字符串 I tried
  • 将 dplyr tbl 列提取为向量

    是否有一种更简洁的方法可以从具有数据库后端的 tbl 中获取 dplyr tbl 的一列作为向量 即数据框 表不能直接成为子集 require dplyr db lt src sqlite tempfile create TRUE iris
  • 如何在Python中删除重复的短语?

    假设我有一个字符串 例如 I hate some kinds of duplicate This string has a duplicate phrase duplicate phrase 我想删除第二次出现的duplicate phra
  • 更改日历项目的前景色

    我正在 WPF 中自定义日历控件 并且可以调整背景颜色 标题前景色等 但我找不到如何编辑 1 31 天日历项目的外观 在 截屏 正如您所看到的 这些数字都是深灰色的 几乎不可读 我还想去掉鼠标悬停时的蓝色覆盖层 Code
  • 图层列表忽略标签

    我想创建一个自定义单选按钮 我使用与
  • 如何通过Windows命令行关闭TCP和UDP端口

    有人知道如何通过 Windows 命令行关闭单个连接的 TCP 或 UDP 套接字吗 谷歌了一下 我看到有人问同样的问题 但答案看起来像是 netstat 或 netsh 命令的手册页 重点关注如何监视端口 我不需要有关如何监控它们的答案
  • 如何将 Postgres 中两个数组的值插入表中?

    假设 我有一张桌子 create table mytable x text y text 我有一些数组 其值为x并为y called arr x and arr y x1 x2 x3 y1 y2 y3 我想通过一个查询插入这些值 期望的结果
  • 版本控制为了版本控制?

    我在公司的上一个版本中负责监督分支和合并 并且多次必须修改我们的 Subversion 预提交挂钩 以强制执行对签入注释等的不同要求 每次编辑这些文件时我都有点紧张 因为 a 它们是现场制作系统的一部分 尽管仅在内部使用 而且我们不是一个庞
  • 用于带有数据的 Union 类型的 Elm JSON 解码器

    我的 json 看起来像这样 name providerWithVal value example 或者像这样 name provider2 or name provider3 我的 Elm 联合类型定义如下 type Provider P
  • 为什么Sun 不做C# 到Java 字节码编译器?

    我们想要在 JVM 上运行 C 代码 我的公司拥有庞大的 C 代码库 超过一半的代码是我们用于创建 读取 修改 计算和编写 Excel 工作簿的核心引擎 我们经常收到客户和潜在客户的问题 询问我们是否要构建引擎的 Java 版本 他们中的许