知识卡片
元循环运行时消除了托管语言与实现语言之间的信任边界
内容
大多数运行时(如JVM)本身是用C/C++这种被托管语言不信任的语言写的——即使应用代码内存安全,运行时自身的内存安全缺陷照样能破坏这份保证。元循环运行时反其道而行:用要运行的那门语言(Java)实现运行时本身,也天然继承该语言的内存安全、垃圾回收保证。这不只是自己吃自己的狗粮,而是从根本上消除托管语言承诺里用不受管语言实现的薄弱环节。
参考来源
- 位置:《架构之美》第10章《元循环虚拟机的力量:Jikes RVM》10.1节《背景》(源文件:程序之美系列套装(6册)团队之美、项目管理之美、架构之美、数据之美、测试之美、安全之美/_epub-src/OEBPS/Text/part0211.xhtml)
- 结论依据:原文明确"许多运行时环境不是由它们通常运行的语言编写的。例如,一个用C或C++编写的运行时可能会运行Java应用程序。如果这个运行时存在一个与内存安全相关的缺陷,它就会破坏Java应用程序,即使这个Java应用程序本身内存安全。消除缺陷是拥有一个自足执行的运行时的重要理由"。
- 原始内容:许多运行时环境不是由它们通常运行的语言编写的。例如,一个用C或C++编写的运行时可能会运行Java应用程序。如果这个运行时存在一个与内存安全相关的缺陷,它就会破坏Java应用程序,即使这个Java应用程序本身内存安全。