Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么';Sun做一个C#到Java字节码编译器吗? 我们希望在JVM上运行C#代码_C#_Java_.net_Compiler Construction_Jvm - Fatal编程技术网

为什么';Sun做一个C#到Java字节码编译器吗? 我们希望在JVM上运行C#代码

为什么';Sun做一个C#到Java字节码编译器吗? 我们希望在JVM上运行C#代码,c#,java,.net,compiler-construction,jvm,C#,Java,.net,Compiler Construction,Jvm,我的公司有一个庞大的C#代码库。这段代码的一半以上是我们创建、阅读、修改、计算和编写Excel工作簿的核心引擎。我们经常收到客户和潜在客户的问题,询问我们是否要构建引擎的Java版本——他们中的许多人对UI一点也不感兴趣。我们甚至有一些客户不厌其烦地从Java应用程序中使用我们的.NET库 因此,我们希望构建核心引擎的Java版本,理想情况下不需要维护单独的Java源代码库 埃里克沉得很好。除了我们的软件许可证包括免版税部署,这使得Eric选择Mainsoft对我们来说是一个不成功的选择之外,我

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

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

埃里克沉得很好。除了我们的软件许可证包括免版税部署,这使得Eric选择Mainsoft对我们来说是一个不成功的选择之外,我也处于类似的地位

几年来,我每隔几个月就在谷歌上搜索一次类似的搜索结果,但没有任何乐趣。花了大约7年的时间为Java开发类似的软件,我相信我们在核心引擎中使用的.NETAPI可以很容易地进行封装,我们可以使用Java库完成我们需要的一切。因此,如果我们只有一个C#->JVM编译器,我们就可以为Java构建核心引擎,而不再需要拒绝愿意使用它的Java开发人员

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

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

为什么Sun要做C#编译器?(当然是海事组织) 使在Java平台上运行C#代码更容易意味着该平台有更多的开发人员和软件。平台的成功还有什么更重要的因素吗?他是个软件人。我会让比我更聪明的人来决定他是否担任了Sun的总裁兼首席执行官这一不可能的工作,但在他加入Sun后不久与乔纳森会面后,我的印象是,他了解软件以及对大量开发人员的需求

那么为什么Sun不做C#编译器呢?
  • 综合症
  • 鬼魂
  • 太多Java开发人员不喜欢或不信任任何与Microsoft相关的东西
  • 他们同意不参加
  • 一定有很好的理由。我一辈子都搞不懂它是什么

    乔·埃里克森写道:

    使在计算机上运行C#代码变得更容易 Java平台意味着更多的开发者 还有更多的平台软件

    这是一个不真实的说法。在JVM上运行C#代码并不会产生Java程序员,它会产生可以在JVM上执行的C#程序员。它只是扩展了C#的范围,假设JVM还将任何特定于microsoft的调用(即win32)转换为平台无关的调用。因此,如果Sun将IL翻译成Java字节码,它唯一能帮助的群体就是:微软。而且,考虑到Sun在最初的C#-Java分裂/Visual J++诉讼中与微软的合作历史

    另外,无论你愿意与否,你都必须面对技术上的不可行性。字节码的执行方式存在根本性差异,这比是否存在无符号长数据类型更重要


    如果您必须在非Microsoft平台上使用C#,请使用

    首先Sun没有在JVM上实现C#编译器的动机,因为它们有一种非常类似的称为Java编程语言的东西

    它也没有实现编译器那么简单,因为Java标准类库与.net基类库不同。您将不得不将所有.NETAPI调用更改为JavaAPI调用

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


    如果有足够多的客户想要一个java版本,以便将您的应用程序移植到java,那么就这样做吧,您永远不会通过C#to JVM编译器从Sun获得任何帮助

    为什么微软不做C到Java字节码编译器?你为什么不做呢?每一面都有开放的规格…

    玩得开心

  • 必须中断已检查的异常
  • 必须找到一种实现委托的方法(类似于在加载时间之前添加的单一方法接口)

  • 您可以在同一解释器中运行.NET代码和Java代码!请参阅基于.NET的JVM和wiki页面以获取示例用例(使用基于.NET的Boo语言使用Java库编写应用程序)。

    Joe,我建议您。你可能会发现一些让你抓狂的东西

    将你的.NET API公开为ASMX web服务,你应该准备好了

    <>编辑:对于更重的使用场景,它将是值得研究的Windows通信基础(WCF)。它具有内置的、可配置的对安全、流、不同传输场景(HTTP、TCP/IP、本地命名管道)的支持。您不局限于SOAP消息编码,但这可能是与Java互操作的最简单方法

    我不太确定您的具体情况,但是如果您处理的是大文件,并且.NET代码和Java代码都在本地运行,那么您可以使用.NET将文件保存到用户的硬盘上,然后从Java a获取它