摘要:虚拟机可以说就是,她能让程序运行起来。编译器的工作是要确保铁定不能跑的东西不会过关。编译器作为安全的第一线,能防止人们动不到不可以碰的程序代码与其他类的重要数据。
熟悉Java的朋友都知道虚拟机还有编译器,那么它们各自主要的功能是什么?谁比较重要呢?让我们来了解一下这两位美女的故事。
虚拟机可以说就是Java,她能让程序运行起来。
但是编译器却能产生文件,毕竟java是直译语言,如果需要一边运行一边解译纯文字是不能运行得快速的,而我们程序员也不可能直接写二进制代码给虚拟机,而需要编译器帮我们生成二进制文件。
还有就是编译器会报错!Java是强类型语言,编译器不允许变量保存类型的数据,这是很关键的类型安全性功能,编译器会提前抓出问题。
但也不是所有问题都抓出来,虚拟机运行中依旧会遇到错误类型的数据塞进数组中,而不得不抛出的异常等等
而这些类似的问题,在运行中发生,其实是为了容许动态绑定的功能,Java可以在执行期引用连程序员也没有预期会碰到的类型,所以编译器保留了一些运用性。编译器的工作是要确保铁定不能跑的东西不会过关。
虚拟机呢?好像这么一说就没什么用了?其实不然,一些真正的Boss也是要虚拟机来处理的,比如存取权限的安全问题。
编译器作为安全的第一线,能防止人们动不到不可以碰的程序代码与其他类的重要数据。
而虚拟机也能确保不会有人在执行前修改二进制代码
.......
.......
说起来,好像还有很多很多点能提及,那就等下次再聊吧!
本文已转载个人技术公众号:UncleCatMySelf
欢迎留言讨论与点赞
上一篇推荐:【Java猫说】Java基本概念二
下一篇推荐:【Java猫说】案例谈面向对象
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/71641.html
摘要:当虚拟机启动执行时,它会寻找你在命令列所指定的类。每个程序最少都会有一个类以及一个。每个应用程序只有一个函数。 当Java虚拟机启动执行时,它会寻找你在命令列所指定的类。每个Java程序最少都会有一个类以及一个main()。每个应用程序只有一个main()函数。然后它会锁定像下面这样一个特定的方法: public static void main ( Stirng[] args ) {...
摘要:以下我们使用一个案例来举例说明面向对象的编程方法,案例的要求是在图形接口画出四方形圆形与三角形。本文已转载个人技术公众号欢迎留言讨论与点赞上一篇推荐猫说编译器与虚拟机哪个重要下一篇推荐猫说类与对象的那些事 有人告诉我那里遍地都是对象——我们把所有的程序代码放在main()里面,事实上,那根本就不是面向对象的做法,在Java的面向对象中,我们也会看到类和对象的不同,以及对象是如何让你的生...
摘要:来用来表示程序的一个组件,小程序不是微信小程序可能只有一个类,类的内容必须包在花括号里面。类带有一个或多个方法,方法带有如何行走的指令,方法必须在类的内部声明。如下图本文已转载个人技术公众号欢迎留言讨论与点赞。下一篇推荐猫说基本概念二 Java曾以什么优点吸引你走上程序员这条不归路? 友好的语法、面向对象、内存管理和最棒的跨平台可移植性、write-once/run-anywhere ...
摘要:阅读本文约分钟变量有两种主数据类型和引用。主数据类型用来保存基本类型的值,包括整数,布尔和浮点数等,而对象引用保存的是对象的引用。而在中,主数据类型也有不用的大小与名称。 阅读本文约2.3分钟 变量有两种:primitive主数据类型和引用。 Java注重类型。它不会让你做出把长颈鹿类型变量装进兔子类型变量中这种诡异又危险的举动——如果有人对长颈鹿调用跳跃这个方法会发生什么悲剧?并且...
摘要:也可以这么说,对象就好像通讯簿中的一笔数据。对象有已知的事物,并能执行工作。对象本身已知道的事物成为实例变量,它代表对象的状态。对象可执行的动作称为方法,它代表对象的行为。 阅读本文约2.1分钟。 当你在设计类时,要记得对象时靠类的模型塑造出来的,你可以这样看: ——对象是已知事物 ——对象会执行的动作 对象本身已知的事物称为实例变量,它们代表对象的状态(数据),且该类型的每一个对象...
阅读 800·2021-11-24 09:38
阅读 1030·2021-10-08 10:05
阅读 2525·2021-09-10 11:21
阅读 2772·2019-08-30 15:53
阅读 1781·2019-08-30 15:52
阅读 1891·2019-08-29 12:17
阅读 3357·2019-08-29 11:21
阅读 1551·2019-08-26 12:17