五: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文件,还需要被解释器进行解释,机器才能最终理解我们所

要表达的东西。

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn

Java私塾跟我学系列——JAVA篇  网址:http://www.javass.cn  电话:010-68434236

6:运行

最后由运行环境中的Runtime对代码进行运行,真正实现我们想要机器完成的工作。

7:说明

由上面的讲述,大家看到,Java通过一个编译阶段和一个运行阶段,来让机器最终理解

我们想要它完成的工作,并按照我们的要求进行运行。

在这两个阶段中,需要我们去完成的就是编译阶段的工作,也就是说:我们需要把我们

想要机器完成的工作用Java语言表达出来,写成Java源文件,然后把源文件进行编译,形

成class文件,最后就可以在Java运行环境中运行了。运行阶段的工作由Java平台自身提供,

我们不需要做什么工作。

java私塾 java篇_Java私塾跟我学系列——JAVA篇 五、相关推荐

  1. Java私塾跟我学系列——JAVA篇 第四章Java类和对象

    教学目标: i面向对象基础 i掌握对象的三大特性 i掌握Java类的构建 i掌握如何使用Java类 i理解引用类型 i理解按值传递和按引用传递 i深入理解变量 i掌握包装类 i理解类型转换 i理解Ja ...

  2. JAVA工程师定向招聘_Java工程师面试题整理[社招篇]

    http://blog.csdn.net/jackfrued/article/details/44921941 1.面向对象的特征有哪些方面? 2.访问修饰符public,private,protec ...

  3. java记事本应用程序_Java教程:使用记事本编写运行Java程序

    Java教程经过上节的操作已经配置完了 Java 的开发环境,但并不清楚所配置的开发环境是否真的可以运行 Java 应用程序.为了解除这个疑虑,也为了使读者对开发 Java 应用程序的步骤有一个初步的 ...

  4. java反射机制深入详解_Java基础与提高干货系列——Java反射机制

    前言 今天介绍下Java的反射机制,以前我们获取一个类的实例都是使用new一个实例出来.那样太low了,今天跟我一起来学习学习一种更加高大上的方式来实现. 正文 Java反射机制定义 Java反射机制 ...

  5. java输入输出实验报告_JAVA实验报告(河北工业大学)

    实验一Application与Applet程序调试运行 实验目的:熟悉所用系统的上机方法与步骤. 实验内容:编写一个Java Application和一个Applet程序,输出以下信息:Hello,J ...

  6. java工程师占比_Java工资怎么样?哪个地方Java工作机会最多?

    随着IT产业的发展,JAVA语言因其独有的特点,使其在各项服务器中应用程序的开发所占有一定的优势,随着JSP技术的发展,使Java语言的网络应用更为实际化.更高效快捷,成为IT产业常用的技术. 越来越 ...

  7. java中clone方法_Java Object clone()方法– Java中的克隆

    java中clone方法 Cloning is the process of creating a copy of an Object. Java Object class comes with na ...

  8. java jvm内存模型_Java(JVM)内存模型– Java中的内存管理

    java jvm内存模型 Understanding JVM Memory Model, Java Memory Management are very important if you want t ...

  9. java编程基础笔记_Java编程基础阶段笔记 day01 Java语言概述

    常用的DOS命令 dir :    列出当前目录下的文件以及文件夹 md :   创建目录 rd :     删除目录 cd :    进入指定目录 cd.. :  退回到上一级目录 cd\:     ...

最新文章

  1. 修改模拟器的IMEI号
  2. C#百度OCR-本地和网络图片识别文字
  3. 联想按f2进不了bios设置_华硕笔记本win10装win7bios设置方法分享
  4. 在notebook中如何能完整的显示长文本内容
  5. C++ 百炼成钢20
  6. Android之版本检测和更新
  7. 水解聚丙烯酰胺 php,聚丙烯酰胺水溶液的流变性质
  8. 容器编排技术 -- 创建Kubernetes集群
  9. 万有引力的意思_万有引力和引力有什么不同?四种基本性质力中电磁力最多
  10. VMware SDS 之四: VSAN的技术细节 (含VSAN 6.0、6.1版的新内容)
  11. 第二章 算法——程序的灵魂
  12. [Flash开发笔记] AS中保留多少位小数的函数
  13. linux抓不到终端的包,Linux终端捕获
  14. matlab读取excel、text文件 || xlsread textread
  15. data在c语言中的作用,data是什么意思
  16. 电源管理芯片LDO(Low Dropout Regulator)分析1
  17. HBuilderX发布小程序打不开微信小程序开发工具
  18. 74HC138芯片简析
  19. 卷积神经网络学习路线(五)| 卷积神经网络参数设置,提高泛化能力?
  20. 搞“两弹一星”也离不开计算尺

热门文章

  1. 关于头文件是否参与编译的讨论
  2. 建立丰富多彩的toast的简单实例
  3. 集中管理:领导者,不能不考虑的几件事之——“挖”出来的无限可能
  4. python csv转excel_将Excel文件转为csv文件的python脚本
  5. Android点击返回键销毁自己,Activity界面销毁 软键盘未收回
  6. linux lvm 查看,Linux LVM 详解
  7. html5画分形图形,2.5 绘制透明图形 - HTML5 Canvas 实战
  8. 穿越迷宫c语言程序设计教程课后答案,实验二 迷宫实验.doc
  9. 小样本点云深度学习库_合成鲁棒的对抗样本来欺骗深度学习分类器
  10. vb 导出整数 科学计数法_可整数组的计数