Java运行程序的原理

或许我们可以熟悉的编写出一个简单的Java程序,例如输出一个Hello World,哈哈,对于一些技术菜鸟而言,相信我们学习一门高级语言的时候编写的第一个程序就是输出一个Hello World了,但我们真的了解系统是怎样将我们的代码解读成我们想要的结果的吗?

众所周知,Java在IT界有着举足轻重的地位。Java一开始出来的时候,跨平台的特性就奠定了它无可动摇的基础。就Java本身而言,Java有着功能齐全、性能极佳的IDE(集成开发环境),而且java的面向对象编程思想非常的符合人的思维方式,浅显易懂,编程语言也相对简单,降低了程序员的成本。而在外部,有许多大公司不遗余力的支持和一堆王者级别的外部插件,这也是成就java今天的一大因素。

初学Java,个人仍然建议先了解它的工作原理,你不了解他,你怎么能够融入它?古语云:知己知彼,百战不殆嘛!下面我将把我所理解的Java原理分享一下,肯定没有大神们那么的全面,但或许还是对菜鸟们有一些帮助的,如果有任何错误,欢迎留言,共同学习,共同进步嘛......


我们都知道Java最大的特性是跨平台,可是什么是跨平台?

所谓的跨平台,是指软件可以不受计算机硬件和操作系统的约束而在任意计算机环境下进行。
是不是仍然困惑着?
比如说,现在计算机硬件的种类繁多,操作系统也各有不同,如果你已经在外面工作了,那么应该知道每个人或每家公司都有自己不同的计算机环境偏好,有的操作系统是Windows,有的是Linux,一些特别屌炸天的用的全是清一色的MAC机......那么你若是下载软件的话就需要在官网上下载相应系统版本的软件,比较麻烦,但Java软件可以在不同平台上跑起来,这就是跨平台!



那么Java是如何实现跨平台的呢?

若是问Java是如何实现跨平台的,就一定要说一下它的运行原理了。当你编写一个Java程序的时候,系统会在你的workspace生成一个后缀名为 .java 的文件,如是你采用记事本的形式打开它时就会发现里面的内容就是你所编写的程序内容。
这样看来,当你编写Java程序的时候(建类),系统首先会生成 .java 文件。
你若是想运行你的源程序,在你看来只是点了一下运行,但系统可不会就这么简单的给出你结果。首先,Java编译器会将生成的 .java 文件编译成 .class 文件,这个文件是以字节码的方式进行编码的,这些字节码实际上是一种伪代码,其中包含了各种指令,但此时生成的 .class 文件是完全脱离平台的,即所有的平台都识别不了的文件,此时已经跳出平台的限制了!
接下来就是如何跨平台了!!!
提到Java的跨平台,就不得不提到 JVM(Java Virtual machine-Java虚拟机)了,由于不同平台JVM提供相同接口,所以即便是不同平台下将 .java 文件编译成.class 文件,但通过相同接口的JVM进行解释,均可将该环境下的字节码解释形成该平台下的可执行的java文件,同时,由于不同操作系统的JVM提供的均相同接口,不同平台的编译器则只需要面对该JVM接口进行编译。
JVM将.class 文件中的字节码加载到内存中;接着在内存中检测代码的合法性和安全性,例如,检测Java程序用到的数组是否越界、所要访问的内存地址是否合法等;然后解释执行通过检测的代码,及根据不同的计算机平台将字节码转化成为相应的计算机平台的机器代码,再交给相应的计算机执行。如果加载的代码不能通过合法性和安全性检测,则JVM执行相应的异常处理程序。JVM不停地执行这个过程直到程序执行结束。虽然Java语言含有编译命令,但是Java虚拟机对字节码的解释执行机制决定了Java语言是一种解释执行的语言。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值