Java新手之Java 从代码到运行的过程
为什么80%的码农都做不了架构师?>>>
转自51cto.com
写程序的得将代码的执行过程牢记于心,了解了规则,才能更好的写出健全,高效的代码。
Java 从代码到运行的过程:
1:编写代码
首先把我们想要计算机做的事情,通过Java 表达出来,写成Java 文件,这个过程就是编写代码的过程。如上图所示的Hello.java 文件。
2:编译
写完Java 代码后,机器并不认识我们写的Java 代码,需要进行编译成为字节码,编译后的文件叫做 class文件。如上图所示的 Hello.class文件。
3:类装载ClassLoader
类装载的功能是为执行程序寻找和装载所需要的类。
ClassLoader能够加强代码的安全性,主要方式是:把本机上的类和网络资源类相分离,在调入类的时候进行检查,因而可以限制任何“特洛伊木马”的应用。
4:字节码(byte-code)校验
功能是对class 文件的代码进行校验,保证代码的安全性。
Java 软件代码在实际运行之前要经过几次测试。JVM 将代码输入一个字节码校验器以测试代码段格式并进行规则检查--检查伪造指针、 违反对象访问权限或试图改变对象类型的非法代码。
注意----所有源于网络的类文件都要经过字节码校验器
字节码校验器对程序代码进行四遍校验,这可以保证代码符合JVM 规范并且不破坏系统的完整性。如果校验器在完成四遍校验后未返回出错信息,则下列各点可被保证:
- 类符合JVM规范的类文件格式
- 无访问限制异常
- 代码未引起操作数栈上溢或下溢
- 所有操作代码的参数类型将总是正确的
- 无非法数据转换发生,如将整数转换为对象引用
- 对象域访问是合法的
5:解释(Interpreter)
可是机器也不能认识 class 文件,还需要被解释器进行解释,机器才能最终理解我们所要表达的东西。
6:运行
最后由运行环境中的Runtime对代码进行运行,真正实现我们想要机器完成的工作。
7:说明
由上面的讲述,大家看到,Java通过一个编译阶段和一个运行阶段,来让机器最终理解我们想要它完成的工作,并按照我们的要求进行运行。
在这两个阶段中,需要我们去完成的就是编译阶段的工作,也就是说:我们需要把我们想要机器完成的工作用Java 语言表达出来,写成Java 源文件,然后把源文件进行编译,形成class文件, 最后就可以在Java 运行环境中运行了。 运行阶段的工作由Java 平台自身提供,我们不需要做什么工作。
转载于:https://my.oschina.net/staraf/blog/98496
Java新手之Java 从代码到运行的过程相关推荐
- java花开程序_java代码的运行流程
1. 运行流程的概览图 2. 具体流程 2.1 java源文件编译为class字节码 java代码是运行在Java虚拟机上的.但是java是一门面向对象的高级语言,它不仅语法非常复杂,抽象程度也非常 ...
- 把一个数组的值存入二叉树中,然后利用前序、中序、后序3种方式进行遍历(完整代码以及运行结果)(Java)
把一个数组的值存入二叉树中,然后利用前序.中序.后序3种方式进行遍历(完整代码以及运行结果) 在最近的面试过程中,听说有小伙伴被面试官要求创建二叉树,然后对该二叉树进行遍历,感觉这一直以来都是一个大家 ...
- java程序代码的运行机制_1.4Java程序的运行机制
Java 程序的运行必须经过编写.编译和运行 3 个步骤. 编写:是指在 Java 开发环境中进行程序代码的输入,最终形成后缀名为 .java 的 Java 源文件. 编译:是指使用 Java 编译器 ...
- java swing最小化_Java swing 窗口最小化到任务栏 点击右键显示菜单(复制代码即可运行查看效果)...
Java swing 窗口最小化到任务栏 点击右键显示菜单(复制代码即可运行查看效果) package swing; import java.awt.AWTException; import java ...
- 循环队列真的没那么难,就那么几个注意点,附Java代码及运行效果
1. 队列 队列是一种常见的线性数据结构,满足先进先出(First In First Out),简称为FIFO,第一次看到FIFO还以为是单片机的输出输出什么的,见笑了.数据结构不太了解的话可以看看我 ...
- java面试题4 牛客:运行下列代码,运行结果为
第四题:运行下列代码,运行结果为() class A {public A() {System.out.println("class A");}{ System.out.printl ...
- 怎么运行java虚拟机_Java代码如何运行在Java虚拟机中
我们都知道要运行Java代码就必须要有JRE,也就是Java运行时环境,JRE中包含了Java程序的必需组件,包括Java虚拟机以及Java核心类库,然而运行C++代码则不需要额外的运行时环境,只需要 ...
- java main函数_一行JAVA代码如何运行起来?
在程序员的世界中,你总会听到一句"PHP是世界上最好的语言"的调侃.然而在你进入软件程序开发之后,你会发现即使开发语言千千万,最盛行的还是JAVA.从淘宝的技术变迁中我们可以见一些 ...
- Java 在线编程编译工具上线,直接运行Java代码
前言 大家好,我是小哈~ 周末没出去浪,花了点时间,在我的个人网站上线了一款小工具.啥工具呢?一款可以在线编译 Java 代码并运行输出结果的小工具. 大家都知道,甲骨文刷 Java 版本号非常积极, ...
最新文章
- 【计算机视觉征稿】EI会议推荐|计算机多主题征稿,往届已被EI检索,ICCVDM 2021诚邀您投稿参会!...
- Web API应用架构设计分析(1)
- Lintcode 167. 链表求和 221. 链表求和 II 题解
- [原]SDL开发教程
- 【Python】又一个可视化神器Highcharts,Python版也有哦!
- Modelsim仿真流程
- 【SpringBoot】SpringBoot 操作 Excel 完整示例(含源码GitHub)
- c语言函数的程序设计,C语言程序设计第3版,第6章函数程序设计.ppt
- 如何正确创建DLL和使用DLL
- 纸盒叠成的长方形竟然能自己动?
- P1344-[USACO4.4]追查坏牛奶Pollutant Control【网络流,最小割】
- java登录界面命令_Java命令行界面(第7部分):JCommander
- 微信(支付宝)小程序蓝牙4.0线上项目
- Angular Material 阴影使用
- 满满干货!mysql无法修改表的数据
- 服务器系统2008网络发现,Windows Server 2008中解决局域网共享发现问题
- [RK3288][Android6.0] 用户空间对音频寄存器的控制
- 将.pyc反编译成.py
- 2019级吉林大学计软实验题目解析
- 一个完整的嵌入式程序_放下偏见,原来嵌入式程序员如此“妖娆”!