为什么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 从代码到运行的过程相关推荐

  1. java花开程序_java代码的运行流程

    1. 运行流程的概览图 2.  具体流程 2.1 java源文件编译为class字节码 java代码是运行在Java虚拟机上的.但是java是一门面向对象的高级语言,它不仅语法非常复杂,抽象程度也非常 ...

  2. 把一个数组的值存入二叉树中,然后利用前序、中序、后序3种方式进行遍历(完整代码以及运行结果)(Java)

    把一个数组的值存入二叉树中,然后利用前序.中序.后序3种方式进行遍历(完整代码以及运行结果) 在最近的面试过程中,听说有小伙伴被面试官要求创建二叉树,然后对该二叉树进行遍历,感觉这一直以来都是一个大家 ...

  3. java程序代码的运行机制_1.4Java程序的运行机制

    Java 程序的运行必须经过编写.编译和运行 3 个步骤. 编写:是指在 Java 开发环境中进行程序代码的输入,最终形成后缀名为 .java 的 Java 源文件. 编译:是指使用 Java 编译器 ...

  4. java swing最小化_Java swing 窗口最小化到任务栏 点击右键显示菜单(复制代码即可运行查看效果)...

    Java swing 窗口最小化到任务栏 点击右键显示菜单(复制代码即可运行查看效果) package swing; import java.awt.AWTException; import java ...

  5. 循环队列真的没那么难,就那么几个注意点,附Java代码及运行效果

    1. 队列 队列是一种常见的线性数据结构,满足先进先出(First In First Out),简称为FIFO,第一次看到FIFO还以为是单片机的输出输出什么的,见笑了.数据结构不太了解的话可以看看我 ...

  6. java面试题4 牛客:运行下列代码,运行结果为

    第四题:运行下列代码,运行结果为() class A {public A() {System.out.println("class A");}{ System.out.printl ...

  7. 怎么运行java虚拟机_Java代码如何运行在Java虚拟机中

    我们都知道要运行Java代码就必须要有JRE,也就是Java运行时环境,JRE中包含了Java程序的必需组件,包括Java虚拟机以及Java核心类库,然而运行C++代码则不需要额外的运行时环境,只需要 ...

  8. java main函数_一行JAVA代码如何运行起来?

    在程序员的世界中,你总会听到一句"PHP是世界上最好的语言"的调侃.然而在你进入软件程序开发之后,你会发现即使开发语言千千万,最盛行的还是JAVA.从淘宝的技术变迁中我们可以见一些 ...

  9. Java 在线编程编译工具上线,直接运行Java代码

    前言 大家好,我是小哈~ 周末没出去浪,花了点时间,在我的个人网站上线了一款小工具.啥工具呢?一款可以在线编译 Java 代码并运行输出结果的小工具. 大家都知道,甲骨文刷 Java 版本号非常积极, ...

最新文章

  1. 【计算机视觉征稿】EI会议推荐|计算机多主题征稿,往届已被EI检索,ICCVDM 2021诚邀您投稿参会!...
  2. Web API应用架构设计分析(1)
  3. Lintcode 167. 链表求和 221. 链表求和 II 题解
  4. [原]SDL开发教程
  5. 【Python】又一个可视化神器Highcharts,Python版也有哦!
  6. Modelsim仿真流程
  7. 【SpringBoot】SpringBoot 操作 Excel 完整示例(含源码GitHub)
  8. c语言函数的程序设计,C语言程序设计第3版,第6章函数程序设计.ppt
  9. 如何正确创建DLL和使用DLL
  10. 纸盒叠成的长方形竟然能自己动?
  11. P1344-[USACO4.4]追查坏牛奶Pollutant Control【网络流,最小割】
  12. java登录界面命令_Java命令行界面(第7部分):JCommander
  13. 微信(支付宝)小程序蓝牙4.0线上项目
  14. Angular Material 阴影使用
  15. 满满干货!mysql无法修改表的数据
  16. 服务器系统2008网络发现,Windows Server 2008中解决局域网共享发现问题
  17. [RK3288][Android6.0] 用户空间对音频寄存器的控制
  18. 将.pyc反编译成.py
  19. 2019级吉林大学计软实验题目解析
  20. 一个完整的嵌入式程序_放下偏见,原来嵌入式程序员如此“妖娆”!

热门文章

  1. **PHP中替换换行符
  2. SQL 年龄段 品牌分类 分组统计
  3. 浅析权限认证中的有状态和无状态
  4. js 取html自定义属性,JS操作html中的自定义属性
  5. 基于python的作业管理系统_python day18 作业 Django 开发主机管理系统
  6. flexible.js 移动端自适应方案
  7. ThinkPHP实现支付宝接口功能
  8. BootStrap入门教程 (二)
  9. 简单Linux磁盘管理
  10. 【SpringMVC框架】非注解的处理器映射器和适配器