虚拟机 – 中间表示(如字节码或.net IL)仍然是一个优势吗?
中间表示 – IR – 如
Java
bytecodes或.net
CIL,仍然是一个优势吗?我们不能只在源代码中部署软件组件吗?
支持IR的一个论点是软件组件的可移植性,这避免了为每个目标体系结构编译源代码的需要(关于该体系结构的虚拟机的存在). IR提供了对每个体系结构特性的抽象.以同样的方式并与元数据一起,它在实现安全保障方面带来了其他优势;检查安全通道;等等 今天,一些技术,如Node.js(带有V8引擎),在源代码中引入了可部署组件的想法,在Node.js中称为包(我不确定它是否是Node.js中的一个开创性的想法).源代码包含IR元数据的相同信息.此外,使用源代码中的组件不会阻止运行时引擎使用现代虚拟机的相同原理,例如即时编译和后期绑定数据类型,这允许自适应优化,因此理论上可以更快地产生执行. 那么,在源代码中的组件中部署IR中的软件组件是否有任何优势? 解决方法
在某些情况下,区别开始模糊,我将在下面说明.但总的来说:
> IR字节码的一个优点是混淆了您创建的逻辑.然而,缩小的javascript也是如此,在某些情况下也是如此. 现在,区别可能变得模糊.人们可以想象一个相当重量级的字节码格式,可能是由于需要支持大量硬件,或者可能是由于设计不佳,这可能比机器代码更远,而不是解释ANSI C.但是,如果我们假设字节码是接近机器指令的合理尝试,并假设“源代码”表示高于C或更高级别的东西,那么上述优点应该成立. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |