41、低占用的 Java 到本地代码编译方案:使用形式化方法

低占用的 Java 到本地代码编译方案:使用形式化方法

1. 引言

在嵌入式和资源受限系统中启用 Java 是当今行业和研究团体面临的重要挑战。Java 具有执行安全和低占用程序代码等特性,这使其在内存受限的嵌入式设备中颇具吸引力,Java 卡的成功就是例证。然而,Java 的内存占用和安全特性是以程序执行速度较慢为代价的,对于处理能力有限的主机设备而言,这可能是个问题。目前,智能卡对 Java 的需求仍在增长,下一代智能卡操作系统更接近标准 Java 系统,但运行时性能仍是一个亟待解决的问题。

为提高 Java 系统的运行时性能,常见做法是将部分程序字节码转换为本地代码。这样做虽然能去除解释层,提高执行速度,但会大幅增加程序的内存占用。通常,本地代码的大小约为 Java 代码的三到四倍,这是由于本地指令的紧凑性较差,以及虚拟机实现的许多安全检查必须在本地代码中重现。

运行时检查对于 Java 虚拟机的安全至关重要,但大多数情况下,它们是作为防止编程错误或恶意代码的保护机制。运行时异常通常是由异常、意外的程序行为导致的,在执行正常代码时很少抛出,因此安全检查大部分时间是无效的,在本地代码中还会无谓地增加代码体积。此前虽有研究提出对这些检查进行分解或在某些情况下消除它们,但都未能在不危及系统安全的前提下完全消除。本文将使用形式化证明确保程序中的运行时检查永远不会为真,从而安全地从生成的本地代码中完全消除这些检查。

2. Java 与提前编译
2.1 提前编译(AOT)和即时编译(JIT)

提前编译(AOT)和即时编译(JIT)是提高 Java 程序效率的常见方法。二者都以 Java 字节码为输入,生成虚拟机运行架构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值