软件开发 | JVM 解释和编译指南 (linux.cn)

【简介】

Java 是一种跨平台的编程语言。程序源代码会被编译为 字节码bytecode,然后字节码在运行时被转换为 机器码machine code。解释器interpreter 在物理机器上模拟出的抽象计算机上执行字节码指令。即时just-in-time(JIT)编译发生在运行期,而 预先ahead-of-time(AOT)编译发生在构建期。

本文将说明解释器、JIT 和 AOT 分别何时起作用,以及如何在 JIT 和 AOT 之间权衡。

点击查看全文 >>

@技术头条 2023-11-06 22:57 / 原作者微博:@Linux中国 / 0个评论
赞过的人: @IT技术博客大学习
要不要再学学下面的文章?
软件开发 | 服务器推送事件:一种从服务器流式推送事件的简易方法 (linux.cn)
昨天见识到了一种从没见过的从服务器推送事件的炫酷方法:服务器推送事件server-sent events!如果你只需要让服务器发送事件,相较于 Websockets,它们或许是一个更简便的选择。本文聊一聊它们的用途、运作原理,以及昨日在试着运行它们的过程中遇到的几个错误。
by @技术头条 2023-06-24 23:32 查看详情
zip 命令的解释与示例 (linux.cn)
zip 文件是一个包含一个或多个文件的压缩档案。它作为一种无损数据压缩技术被广泛使用。由于压缩,它占用的磁盘空间更少,在计算机网络上传输时需要的数据也更少。

这些压缩文件可以在 Linux、Windows 和 macOS 中轻松提取。有各种支持压缩 zip 文件的软件,也提供提取它们的功能。

由于它很流行,几乎所有的操作系统都内置了这个功能。

在本教程中,我们将谈论几种基于终端的方法来压缩 Linux 中的文件。
by @技术头条 2023-02-16 00:18 查看详情
软件开发趋势大预测! (mp.weixin.qq.com)
2020 年是近代史上史无前例的一年。人类在过去一百年中都没有经历过像 COVID-19 这样的全球性大流行病。它影响了我们星球上所有的国家、部门和几乎所有的个人。
by @code小生 2021-12-05 19:26 查看详情
类型流建模和软件开发标准化 (insights.thoughtworks.cn)
类型流是针对大团队、细分工组织设计的方法论。 高级程序员团队画类型流图建模,利用工具生成代码骨架,初级程序员填空。高级程序员团队仍然是一个敏捷团队,而初级程序员只有基本的编程要求。甚至单元测试能力也不要求。
by @Thoughtworks 2021-11-26 15:48 查看详情
虽然这样解释有点污,但是秒懂(23种设计模式) (mp.weixin.qq.com)
追 MM 少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是 MM 爱吃的东西,虽然口味有所不同,但不管你带 MM 去麦当劳或肯德基,只管向服务员说「来四个鸡翅」就行了。麦当劳和肯德基就是生产鸡翅的 Factory 工厂模式:客户类和工厂类分开。
by @code小生 2021-10-11 20:04 查看详情
软件开发管理的11条真理 (mp.weixin.qq.com)
软件开发过程管理被比作放养猫。换句话说,你不能真的做到这件事,但你可以尽你最大的努力去做。再换句话说,软件项目就像试图在 NBA 防守勒布朗·詹姆斯 (LeBron James) 一样。你根本就阻止不了他,最多只能希望牵制到他。
by @code小生 2021-09-30 21:42 查看详情
6年软件开发,我的那些变与不变 (mp.weixin.qq.com)
随着时间的流逝,人们对某些事情的看法会不断改变。在软件开发这个行业,这个道理依然适用。作为一名程序员,Chris Kiehl 在工作 6 年后,他原有的许多想法有所改变,但也有一些保持不变的旧观点。
by @code小生 2021-09-26 21:22 查看详情
软件开发中的时区问题 (insights.thoughtworks.cn)
本文总结几类项目中跟时区相关的问题,给大家分享一些基本的时区知识,以及如何在软件开发和测试中注意考虑时区因素,以避免因时区而导致系统功能的问题。
by @Thoughtworks 2021-08-30 17:09 查看详情
JVM优化之逃逸分析及锁消除 (it.deepinmind.com)
逃逸分析——我们在上一篇文章中所介绍的由编译器完成的一项的分析技术——使得删除锁的优化成为了可能。如果它能确认某个加锁的对象不会逃逸出局部作用域,就可以进行锁删除。这意味着这个对象同时只可能被一个线程访问,因此也就没有必要防止其它线程对它进行访问了。这样的话这个锁就是可以删除的。这个便叫做锁消除,本文是JVM实现机制的系列文章,这也正是今天要讲的主题。

众所周知,java.lang.StringBuffer是一个使用同步方法的线程安全的类,它可以用来很好地诠释锁消除。StringBuffer是Java1.0的时候开始引入的,可以用来高效地拼接不可变的字符串对象。它对所有append方法都进行了同步操作,以确保当多个线程同时写入同一个StringBuffer对象的时候也能够保证构造中的字符串可以安全地创建出来。
by @技术头条 2021-06-13 23:06 查看详情
JVM优化之逃逸分析与分配消除 (it.deepinmind.com)
在Java Magazine的前几期文章中,我们介绍了just-in- time (JIT) 编译技术的一些理论基础,以及如何使用Java Microbenching Harness(JMH)和开源工具JITWatch来进行可视化分析,以便搞清楚HotSpot VM的内部机制。在这期文章中,我们将要深入介绍一下逃逸分析(escape analysis)技术,这是JVM最有意思的优化手段之一。逃逸分析是JVM的一项自动分析变量作用域的技术,它可以用来实现某些特殊的优化,后续我们也会分析下这些优化。在开始之前,你只需要掌握一些HotSpot JVM的基本工作原理就可以了。
by @技术头条 2021-06-13 23:06 查看详情