当前位置: 首页 > 面试题库 >

为JVM实现C#

沃威
2023-03-14
问题内容

是否有人尝试为JVM实现C#?作为Java开发人员,我一直羡慕C#,但不愿放弃JVM的可移植性和成熟度,更不用说针对它的各种工具了。

我知道JVM和CLR之间有一些重要的区别,但是有没有什么是最流行的?


问题答案:

CLR和JVM之间有很大的不同。

一些例子:

  • Java没有用户定义的值类型
  • Java泛型与.NET泛型 完全 不同
  • C#的许多方面都依赖于框架的元素-委托等。您还需要移植库,即使在 语言 方面也是如此。
  • Java不支持JVM级别的属性和事件之类的东西。您可以伪造其中的一些,但事实并非如此。
  • 我不认为Java即使在JVM级别也没有等效于按引用传递参数的方法
  • 尽管我不确定C#规范中包含多少内容,但是与不同的内存模型有关的微妙之处可能会咬人。
  • 通常,Java中不可能出现不安全的代码
  • JNI和P / Invoke之间与本机代码的互操作性非常不同。对您来说,这可能不是什么大问题。
  • 您必须伪造运算符重载和用户定义的转换

您可能会移植 很多 C#,但是IMO会让您感到非常不满意。

换一种方式,您知道IKVM吗?它允许您在.NET中运行Java代码。



 类似资料:
  • 问题内容: 是否有 JavaScript jvm实现 ? 如果没有,您能给我一些为什么它还没有意识到的原因吗?(可能不可能吗?)我试图了解创建一个缺少什么? 我问的原因是我想创建具有编译功能的Web浏览器ide,而无需在计算机上安装jdk或jre(仅在浏览器中)。 问题答案: 不确定jsJVM的成熟程度如何,但是您可能会对您感兴趣的东西看起来很像。如页面所示,它是用Javascript编写的JVM

  • 问题内容: 最近,我对Java中的这种功能感兴趣,因为它具有可变数量的参数。这是一个非常酷的功能。但是我很感兴趣: 如何在运行时级别上实际实现呢?我想到的是,当我们打来电话时: 最后两个参数在内部转换为数组,然后传递给方法。我对此是否正确,或者JVM实际上将堆栈引用插入了字符串,而不仅仅是对数组的引用? 问题答案: 它在编译时级别实现。您的方法被编译为字节码为 相当于 与标志。 和 编译为

  • 无法连接实现cucumber-jvm 4.2.3版并行执行所需的所有内容 我的环境-cucumberv4.2.3硒v3.8.1 Junit-4.2 下面是eclipse控制台的输出。但是什么都不执行 我也在使用Pico容器来实现DI。 请指导这里缺少什么,或者实现cucumber-jvm v4并行执行的步骤是什么。如果有人可以分享详细的步骤,这将是感激的,因为我一直试图实施了一个星期,但没有成功至

  • 问题内容: JVM实现在哪些方面有所不同(许可除外)?每个JVM是否都为通用处理实现类型清除? 之间的区别在哪里: JRockit IBM JVM SUN JVM Open JDK power failure Kaffi .....处理其中之一的尾部呼叫优化吗? 问题答案: JVM实现在实现JIT编译,优化,垃圾回收,支持的平台,支持的Java版本等方面可以有所不同。它们都必须满足一组功能和行为,

  • 本文向大家介绍jvm是如何实现线程的?相关面试题,主要包含被问及jvm是如何实现线程的?时的应答技巧和注意事项,需要的朋友参考一下 考察点:JVM 线程是比进程更轻量级的调度执行单位。线程可以把一个进程的资源分配和执行调度分开。一个进程里可以启动多条线程,各个线程可共享该进程的资源(内存地址,文件IO等),又可以独立调度。线程是CPU调度的基本单位。 主流OS都提供线程实现。Java语言提供对线程

  • 问题内容: 在寻找有关如何在Java中实现引用变量的解释时,我遇到了一个问题: Java的引用变量内部是什么? Samuel_xL在评论中说,指定供应商名称将是一个更好的问题。所以我的问题是,如何在Oracle JVM中实现实例变量?它是指向地址的指针吗?我知道引用包含告诉JVM如何访问对象的位。但是它的结构如何? 问题答案: 根据我的判断,对象引用存储为称为(普通对象指针)或的类型,具体取决于J