学习java前需要了解的东西

Java底层原理,基础知识

首先由javac编译器编译java程序,形成java字节码文件.class文件,之后.class文件被加载到jvm中,进行执行。总的来说,先编译,后执行。
基本概念:
1.javac编译器:编译器的作用就是使一套语法规则,编译成符合另一种语法规则。
而javac编译器就是将java语法规则 变成能够被jvm(虚拟机)能够识别的字节码。
2.jvm :是虚拟机,也就是虚拟计算机,他通过模拟一个计算机来达到计算功能。他作用就是执行被javac编译后的java程序。
由于java程序都有jvm来执行,因此java程序能够在不同的平台上运行。
3.jdk:java开发工具包。里面包含了javac编译器,jvm等。
4.jre: jre也是开发工具包,只是内容没有jdk多,jre只是包含了支持java运行的 运行环境。jdk是包含了jre的。不禁包含java运行环境,还有开发环境。

4.SDK:软件开发工具包。jdk可以认为是SDK的子集,SDK还包含其他语言的开发工具包。

一.javac 编译原理

1.Javac是什么?

javac是java的编译器,能将java源码编译成另一种语言规范,形成.class文件。这种语言规范是jvm能够识别的。通常编译器的作用是将人易于理解的语言,转换成机器容易识别的语言规范,比如C++或者汇编不能语言都是将源码直接编译成目标机器码,这个目标机器码指的是我们的电脑cpu直接执行的指令集合。

而java有些不同,他有jvm虚拟机,模拟真实的计算机,从而拥有计算相关的能力, 每次程序运行都是加载进入jvm虚拟机中运行的,这样java程序也不用受限于不同的平台。

那么java程序运行的过程是怎样的呢?

首先javac编译器的任务就是讲Java源码编译成java字节码,也就是JVM能够识别的二进制码。表面上看仅仅是将.java文件转换成.class文件,实际上是将java源码转换成了一串二进制数字,这些二进制数字是有格式的,只有JVM能够识别他们是什么意思,从而我们的java程序才可以被执行。

2.javac编译器是如何编译java程序的呢?

2.1 javac编译器结构与各部分的功能

四部分组成:

1.词法分析器 -----找到java程序中的关键字,for while if等关键字,识别分析哪些关键字是合法的,那些不是。

2.语法分析 ------检查这些关键字组合在一起是否符合语言规范, 就好比人类语言 有主谓宾规范,看是否符合主谓宾语法。

3.语义分析 ------将复杂的语法转换为简单的语法

4.字节码生成器 -------将语义分析结果形成的抽象语法树转换为字节码

二.JVM体系结构

JVM全称是(Java Vitural Machine)JAVA虚拟机,他通过模拟计算来达到一个计算机所具有的计算功能。

以计算为核心,来看看计算机体系结构的结构

  • 指令集,这个计算机cpu能够识别的机器语言的命令集合。

  • 计算单元,能够识别并控制指令执行的模块

  • 寻址方式,地址的位数,最小地址和最大地址范围,以及地址运行的规则

  • 寄存器定义, 包括操作数寄存器,变址寄存器,控制寄存器等的定义,数量和使用方式

  • 存储单元 , 能存储操作数和保存操作结构的单元,比如内核级缓存,内存和磁盘。

什么是指令集?有何作用?

所谓指令集就是在cpu中用来计算和控制计算机系统的一套指令,通常cpu的指令有1/200个。指令集不一定都是一模一样的,不同的cpu是不全一致的,每一种新型的cpu在设计时都规定了一些与硬件配合的指令系统。

JVM除了指令集之外还有几部分组成:
  • 类加载器 将需要的类的class文件加载进jvm
  • 执行引擎 负责执行class文件中包含的字节码指令,相当于cpu
  • 内存区
  • 本地方法调用 调用jdk中include文件下的C++/C实现的方法,来执行代码。

在这里插入图片描述

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读