Java运行时环境与.NET框架在编译过程方面如何比较?

2023-11-25

我正在通过以下方式学习源代码到机器代码的转换.NET and JRE构架。首先,我做了一些研究,比较了这两个过程并创建了这个图。我需要一些帮助来批评它的正确性,更重要的是添加我错过的任何严重的事情,以更好地理解编译路径。

enter image description here


.NET 和 Java 都编译为字节码,这是一种包含虚拟机指令的中间语言。它不是机器代码,因为它不能直接在物理机器上运行。相反(至少在今天;Java 在这方面有更黑暗的历史)发生的是,在运行时运行一个即时编译器,它将 VM 指令转换为本机代码,然后直接运行。与仅解释它相比,这具有重大的性能优势。

他们在这方面略有不同。 Oracle 的 Java 实现(Hotspot)巧妙地结合了解释、测量和 JIT 编译,仅编译频繁使用的部分,并解释其他部分。这是为了减少 JIT 编译器的初始影响(否则需要预先运行,从而延长进程启动时间),同时仍然在需要时提供良好的性能。另一方面,.NET 总是 JIT 编译所有使用的代码(但不编译未使用的代码)。

编辑(2019):到目前为止,.NET 还具有分层编译功能,根据运行次数较多的代码,该代码将得到进一步优化。

至于你在评论中提到的一个问题:是的,CLR和JVMare这些程序运行的平台。虚拟机也是机器,只是硬件较少。它们都与相应的框架、.NET 的基类库和 Java 的 Java 类库紧密集成。这些是框架。

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

Java运行时环境与.NET框架在编译过程方面如何比较? 的相关文章

  • 使用 HTTPServletRequestWrapper 包装请求参数

    我有一个可以验证 授权 REST 调用的过滤器 该过滤器需要访问请求参数 因此我为此编写了一个自定义 HTTPServletRequestWrapper import java util Collections import java ut
  • MFC:如何设置CEdit框的焦点?

    我正在开发我的第一个简单的 MFC 项目 但我正在努力解决一个问题 想要设置所有的焦点CEdit其中一个对话框中的框 我的想法是 当打开对话框时 焦点位于第一个编辑框上 然后使用 选项卡 在它们之间交换 我看到了方法SetFocus 但我无
  • 将接口转换为其具体实现对象,反之亦然?

    在 C 中 当我有一个接口和几个具体实现时 我可以将接口强制转换为具体类型 还是将具体类型强制转换为接口 这种情况下的规则是什么 Java 和 C 中都允许这两个方向 向下转型需要显式转型 如果对象类型不正确 可能会抛出异常 然而 向上转换
  • UI 函数在快速事件完成之前触发

    我有一个停靠在 Silverlight 应用程序中的 Web 浏览器框架 有时会在其上弹出全窗口 XAML Silverlight UI 元素 我已经或多或少修复了一个老问题 即 Web 框架的内容似乎与 Silverlight 内容不能很
  • Java8:流映射同一流中的两个属性

    我有课Model带有以下签名 class Model private String stringA private String stringB public Model String stringA String stringB this
  • 如何对 NServiceBus.Configure.WithWeb() 进行单元测试?

    我正在构建一个 WCF 服务 该服务接收外部 IP 上的请求并将其转换为通过 NServiceBus 发送的消息 我的单元测试之一调用Global Application Start 它执行应用程序的配置 然后尝试将 Web 服务解析为 验
  • 析构函数中的异步操作

    尝试在类析构函数中运行异步操作失败 这是代码 public class Executor public static void Main var c1 new Class1 c1 DoSomething public class Class
  • 从BackgroundWorker线程更新图像UI属性

    在我正在编写的 WPF 应用程序中 我有一个 TransformedBitmap 属性 该属性绑定到 UI 上的 Image 对象 每当我更改此属性时 图像就会更新 因此显示在屏幕上的图像也会更新 为了防止在检索下一张图像时 UI 冻结或变
  • 英文日期差异

    接近重复 如何计算相对时间 https stackoverflow com questions 11 how do i calculate relative time 如何在 C 中计算某人的年龄 https stackoverflow c
  • Linux mremap 不释放旧映射?

    我需要一种方法将页面从一个虚拟地址范围复制到另一个虚拟地址范围 而无需实际复制数据 范围很大 延迟很重要 mremap 可以做到这一点 但问题是它也会删除旧的映射 由于我需要在多线程环境中执行此操作 因此我需要旧映射能够同时使用 因此稍后当
  • Java String ReplaceAll 方法给出非法重复错误?

    我有一个字符串 当我尝试运行时replaceAll方法 我收到这个奇怪的错误 String str something op str str replaceAll o n it works fine str str replaceAll n
  • 选择查询不适用于使用Parameters.AddWithValue 的参数

    C 中的以下查询不起作用 但我看不出问题所在 string Getquery select from user tbl where emp id emp id and birthdate birthdate cmdR Parameters
  • 如何停止无限循环?

    我正在编写一个程序 该程序将计算三角形或正方形的面积 然后提示用户是否希望计算另一个 我的代码已经运行到可以计算任一形状的面积的程度 但随后不再继续执行代码的其余部分 例如 如果选择了正方形 则计算面积 然后返回到正方形边长的提示 我假设这
  • 如何清理 Runtime.exec() 中使用的用户输入?

    我需要通过命令行调用自定义脚本 这些脚本需要很少的参数并在 Linux 机器上调用 当前版本容易出现各种shell注入 如何清理用户给出的参数 参数包括登录名和路径 Unix 或 Windows 路径 用户应该能够输入任何可能的路径 该路径
  • 通过 Tab 键浏览 XML 文档字段

    In VB NET you can move through the fields in the XML member documentation with the Tab key 这在 C 中不起作用 还有其他方法吗 除了用鼠标将光标放在
  • 使用自定义比较器在 Java 中创建 SortedMap

    我想创建一个TreeMap在 Java 中具有自定义排序顺序 排序后的键是字符串 需要根据第二个字符进行排序 这些值也是字符串 示例地图 Za FOO Ab Bar 您可以像这样使用自定义比较器 Comparator
  • java.lang.ClassCastException:com.sun.proxy.$Proxy8 无法转换为 org.openqa.selenium.internal.WrapsDriver

    我有以下切入点和 AspectJ 中给出的建议 Pointcut call org openqa selenium WebElement sendKeys public void onWebElementAction After onWeb
  • @Embeddable 中的 @GenerateValue

    我已将实体的 id 分离到一个单独的 Embeddable 类中 该实体如下 Entity Table name users public class Users EmbeddedId private Users pk id private
  • 将数组值导出到 csv 文件 java

    我只需要帮助将数组元素导出到 csv 文件 我不知道我的代码有什么问题 任何帮助将不胜感激 谢谢 for int index 0 index lt cols length index FileWriter fw new FileWriter
  • 如何将 SQL“LIKE”与 LINQ to Entities 结合使用?

    我有一个文本框 允许用户指定搜索字符串 包括通配符 例如 Joh Johnson mit ack on 在使用 LINQ to Entities 之前 我有一个存储过程 该存储过程将该字符串作为参数并执行以下操作 SELECT FROM T

随机推荐

  • List 保证插入顺序吗?

    假设列表中有 3 个字符串 例如 1 2 3 然后我想重新排序它们以将 2 放置在位置 1 例如 2 1 3 我正在使用这段代码 将indexToMoveTo设置为1 listInstance Remove itemToMove listI
  • Flask(带有 Flask-RESTful)不解析 JSON 有效负载

    I m creating a frontend in Angular and the backend in Flask with the RESTful extension By default Angular likes to send
  • 如何在 Oracle PL/SQL where 子句中使用变量

    我似乎无法让变量在 Oracle PL SQL where 子句中工作 我有 Microsoft SQL Server 背景 这很容易 例如 执行类似以下操作所需的所有步骤是什么 declare var int set var 1 sele
  • 尝试理解/确定基本的 Git 工作流程

    我一直在读这个流行文件一遍又一遍地尝试起草我自己的 git 工作流程 我想我已经明白了 但我还是有点失落 这是我目前的理解 我们有两个分支机构将始终保持活跃 Master 这是我将推送实际部署到我的生产服务器并由我的用户使用的代码的地方 开
  • 从父目录导入脚本

    如何导入位于父目录中的模块 python 文件 两个目录都有一个 init py文件 但我仍然无法从父目录导入文件 在此文件夹布局中 脚本 B 尝试导入脚本 A Folder A init py Script A Folder B init
  • 使用javascript上下滚动iframe

    是否可以使用按键或 JavaScript 从父窗口滚动 iframe 窗口 iframe 内容来自另一个域 与父窗口不同 由于 iframe 内容来自另一个域 因此出于安全原因您将无法更改它的 DOM 尽管您可以使用箭头键滚动它 但当您激活
  • 如何在Eclipse中查看Javadoc?

    我正在使用第三方库 我已将其包含到我的项目中 它包含应用程序的类 但没有源代码或 Javadoc 正如预期的那样 将鼠标悬停在导入的对象上不会显示 javadoc Note This element neither has attached
  • Android .aidl 中的单向声明是否保证该方法将在单独的线程中调用?

    我正在为 Android 手机设计一个客户端 服务器应用程序框架 我对 Java 和 Android 都很陌生 但对一般编程 特别是线程编程并不陌生 有时我的服务器和客户端将位于同一进程中 有时它们将位于不同的进程中 具体取决于具体的用例
  • 在基本构造函数中使用 lambda 表达式的极端情况

    在我们正在构建的框架中 我们需要以下模式 public class BaseRenderer Func
  • 通过 JavaScript 打开应用程序 (iOS/Android),并回退重定向到 App/Play 商店(2016 版)

    给定 网站 iOS 和 Android 应用程序 注册 urlscheme myapp 目标 在网站上显示一个指向已安装应用程序的 iOS Android 设备的链接 单击该链接应打开应用程序并调用特定逻辑 由应用程序处理 本质上类似于苹果
  • 将表单中的标签与输入旁边对齐

    我有非常基本且已知的表单场景 我需要正确对齐输入旁边的标签 但是我不知道该怎么做 我的目标是标签与右侧的输入旁边对齐 这是所需结果的图片示例 为了您的方便并澄清我现在所拥有的内容 我做了一个小提琴 http jsfiddle net WX5
  • Dispatcher.Invoke 之后应用程序冻结

    我的这个应用程序在调用任何控件的dispatcher invoke 时都会冻结 当我在单选按钮 网格 图像等中调用调度程序时 应用程序冻结但没有给出错误 请帮忙 谢谢 我调用线程 Method RunClient private void
  • Knockout 和 jQuery Mobile:将数据绑定到选择列表

    我在同一个项目中同时使用 Knockout 版本 2 0 和 jQuery Mobile 版本 1 0 1 问题在于将数据绑定到选择列表 jQuery Mobile 以看似选定的值和实际列表是单独元素的方式呈现选择列表 这是通过执行来修复的
  • 什么是索引单子?

    What is 索引单子这个单子的动机是什么 我读到它有助于跟踪副作用 但类型签名和文档并没有引导我到任何地方 有什么例子可以说明它如何帮助跟踪副作用 或任何其他有效的例子 一如既往 人们使用的术语并不完全一致 有各种受单子启发但严格来说并
  • Python 用函数的输出替换字符串模式

    我有一个Python字符串 比如说The quick red fox jumps over the lame brown dog 我正在尝试替换以 以及以单词作为参数的函数的输出 def my replace match return ma
  • 从另一个java类调用静态方法

    我最近从 PHP 工作转向 Java 工作并有一个查询 想要强调一下我是Java的初学者 本质上 我正在文件 A 具有 A 类 中工作 并且想要引用文件 B B 类 中保存的静态方法 使用 A 类时是否需要引用文件 B 我正在沿着PHP中的
  • 如何在 Windows 上取消 select() 中的等待

    在我的程序中 有一个线程 接收线程 负责从 TCP 套接字接收请求 并且有许多线程 工作线程 负责处理接收到的请求 处理请求后 我需要通过 TCP 发送答案 这是一个问题 我想在用于接收数据的同一个线程中发送 TCP 数据 该线程接收数据后
  • Windows 容器无法访问互联网,但 Linux 容器可以访问互联网 - VPN 客户端在主机上处于活动状态

    我的主机上安装了 Stonesoft VPN Client 和 Docker for Windows 我的 Windows 容器似乎无法解析任何主机 甚至是 www google com 然而我的 Linux 容器工作得很好 当我禁用网络适
  • 如何在 r 中为 ggplot 自定义调色板?

    我使用此代码绘制北美温度变化地图 ggplot maps aes y Latitude x Longitude z variable ggtitle title scale fill brewer palette Spectral geom
  • Java运行时环境与.NET框架在编译过程方面如何比较?

    我正在通过以下方式学习源代码到机器代码的转换 NET and JRE构架 首先 我做了一些研究 比较了这两个过程并创建了这个图 我需要一些帮助来批评它的正确性 更重要的是添加我错过的任何严重的事情 以更好地理解编译路径 NET 和 Java