知识卡片
用被实现的语言本身来写运行时(元循环),能消除两种语言交界处的风险
内容
绝大多数Java虚拟机是用C/C++写成的,这意味着一个内存安全、有垃圾回收保护的Java程序,其实运行在一个完全不具备这些保护的运行时之上——运行时自身的一个内存错误,就能破坏一个本身完全安全的Java应用。Jikes RVM反其道而行:整个虚拟机(编译器、线程、异常处理、垃圾收集器)全部用Java写成,用Java实现运行Java程序的运行时,这种”自举自己实现自己”的方式称为元循环。这样做的价值不只是概念上优雅——它让运行时的开发者可以直接享受到这门语言本身提供的安全保障,也不再需要维护一层”在两种语言之间转换对象、还要小心不能误回收对方还在用的内存”的胶水层,那层胶水本身往往就是额外复杂度和漏洞的来源。
参考来源
《架构之美》第10章《元循环虚拟机的力量:Jikes RVM》