java虚拟机编译器_编译器和Java虚拟机的故事

(Fireside Chats)

今晚的话题:

编译器与虚拟机JVM争辩谁比较重要?

Java虚拟机

什么?你开玩笑吧?这位大婶,我可是Java 啊。只有我才难让程序运行起来。你只是产 生文件而已。做个文件有什么了不起,没有我,文件没有用!

编译器:

请你放尊重点,不然我要叫了。

Java虚拟机:

还有,你得理不饶人,每天老是警告人,小小一点语法错误也不放水……

编译器:

对不起,没有我你能运行什么?Java会设 计成这样是有原因的。如果Java只是个直译语言,要一边运行一边解释纯文件的程序,我就不相信你能运行有多快。

Java虚拟机:

抗议啦,我又没有说你一点用处都没有。但说真的,我根本搞不懂你在做什么。程 序员可以直接编写二进制代码给我运行, 那你就失业了,哇哈哈………哇哈哈哈……

编译器:

我实在懒得理你。没错,虽然说只要是合格的二进制代码就可以运行,不一定是要编译器编译出来的,但实际上不会有人傻成这样的。让程序员直接写出二 进制代码就好像要组装计算机的人自己得作出来CPU一样。还有,你可不可以不要笑得那么难听?

Java虚拟机:

先不要管笑声的问题。你还是没有回答我你到底有什么用处?

编译器:

还记得Java是个强类型语言吗,这代表 我不能容许变量保存类型的数据。这是很关键的类型安全性功能,我能够让大部分的错误在到你那边之前就被抓到。还有…………

Java虚拟机:

又不是全部抓光光!我还是会因为遇到将错误类型的数据塞进数组中而不得不抛出异常,并且…………

编译器:

没礼貌,别打断我说话…………是有些数据类型的错误会在运行时发生, 但这也是为了要容许动态绑定这样的功能。Java可以在执行期引用连程序员也 没有预期会碰到的类型,所以我得留一些运用性。我的工作就是要确保铁定不能跑的东西不会过关。通常我会抓得到错误,例如说把文字字符串除以某个数这种问题就会被我发现。

Java虚拟机:

ok, 当然。但是存取权限的安全问题呢?还不是靠我把关,而你事不过是作些标点符号的检查摆了。还真谢谢你把这些问题留给我呢。

编译器:

对不起,大家都知道我才是安全的第一线。 我刚刚说的数据类型错误如果没有处理好可是一个漏洞呢。像是违反调用private方法的程序等也是由我检查的。我能够防止人们动到不可以碰的程序代 码与其他类的重要数据。如果要把我的功能说完可能要说到天亮。

Java虚拟机:

随你怎么说。我也得相同的事情,确保不会有人在执行前修改二进制代码。

编译器:

是啦,如果没有我挡住上述的问题,你老早就挂掉了。没时间了,下回再说吧。

Java虚拟机:

ok,等一下要不要吃宵夜?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值