当前课程知识点:JAVA程序设计进阶 >  第六章 Java虚拟机 >  6.1 Java虚拟机概念 >  Video

返回《JAVA程序设计进阶》慕课在线视频课程列表

Video在线视频

Video

下一节:Video

返回《JAVA程序设计进阶》慕课在线视频列表

Video课程教案、知识点、字幕

这一节我们将介绍

Java虚拟机的概念

包括它的体系结构

和它的生命周期

我们首先来看一下

什么是Java虚拟机

Java虚拟机是一个想象中的机器

在实际的计算机上

通过软件模拟来实现

Java虚拟机有自己想象的硬件

比如说处理器堆栈 寄存器

还有相应的指令系统

如果把我们的Java程序

比喻成为一辆汽车的话

那我们Java虚拟机

就是运行这辆汽车的道路

那Java虚拟机有一个非常厉害的地方

就是说它已经在不同的计算机上面

都已经实现了它的Java虚拟机

那它的作用就相当于是

我们这个搭建桥梁的部队

那它就是逢山开路逢水架桥

那我们为什么一定要实现

这个Java虚拟机

或者为什么一定要用Java虚拟机

来运行我们的Java程序

那这个里面一个最主要的原因

就是要实现Java的跨平台特性

那我们都知道Java程序

它可以运行在不同的操作系统之上

那之所以能够这么做

实际上是因为这个Java的提供者

把我们的Java平台实现在很多的

计算机和操作系统之上

那当我们的Java原代码

编译完成了以后

我们只需要把我们原代码

编译成为这个字节码

也就是我们Java的

这个目标代码

那这样的一个目标代码

可以在网络上进行传播

那当它碰到这个Java虚拟机的时候

这些Java代码就可以在这上面

进行运行

如果把我们的计算机的

这个硬件到软件系统

简单的分成这四个层面的话

可以从下面的硬件层

其次是操作系统层

接着是Java平台层

再上面是应用程序层

那我们大家最常见的硬件层的话

它所采用的应用是X86的这个芯片

那再往上我们通常用的比较多的是

windows操作系统

然后在windows操作上

有一个Java虚拟机

然后我们就可以运行Java应用程序了

如果我们的硬件的芯片组

是SPARC的话

它在操作系统上面

可以运行UNIX Linux

那在这之上的话

我们同样可以架设我们的Java虚拟机

然后运行我们的Java应用程序

那如果是一些嵌入式的

这个硬件系统的话

那它的芯片组

可能是MIPS或者是PPC

那它的操作系统层

可以是一些时时的操作系统

但在这个上面一样可以架设Java虚拟机

然后就可以去运行Java应用程序了

那从这张图上可以看出来

只要在不同的硬件和操作系统上

分别去实现我们的Java虚拟机

那我们的Java应用程序

就可以在不同的计算机上

去进行运行

所以我们Java虚拟机

正是实现Java跨平台性的关键

我们来看一看Java虚拟机

它的生命周期是怎样的

那当我们开始运行一个

一个虚拟机的时候

它都有一个非常清晰的任务

这个程序在开始执行的时候

它就会运行它相应的Java代码

当然我们在运行相应的

Java代码的时候

最主要是要通过我们的命令

来启动我们的Java虚拟机

如果大家曾经在命令行底下

去启动Java虚拟机的话

你其实用的命令就是Java

后面跟着某某类

那这个Java其实就是启动了

Java虚拟机

那Java虚拟机它要去开始运行的时候

它必须从我们提供的类的main方法

来开始运行

那这个main方法

之前大家已经用的很多了

那它必须是一个有固定格式的

main方法

必须是public statlc vold main

然后它的参数是String args

是一个字符串数组

那在这个Java程序运行过程当中

main方法就是程序的起点

那它被执行的线程初始化为

程序的初始线程

那我们程序当中的其他线程

都是由它来启动的

那我们可以把我们Java当中的线程

分为两种

一种叫守护线程也叫daemon

另一种叫普通线程

也可以称之为nondaemon

那守护线程是Java虚拟机

自己使用的线程

比如说我们后面要讲到的

这个负责垃圾回收的这个线程

那它就属于一个守护线程

那我们在写程序过程当中

也可以把自己的程序

设置成为守护线程

那往往的话

我们包含main方法的初始线程

它一般不是初始线程

如果我们的Java虚拟机中

还有普通的线程在执行的话

我们的Java虚拟机就不会停止

当然如果我们的程序

有足够的权限的话

也可以调用exit方法

来去终止这个程序的执行

下面我们来看一下Java虚拟机的

体系结构

在Java虚拟机当中

它的规范定义了一系列的子系统

内存区域 数据类型和使用指南

那所有这些组件

都构成了我们Java虚拟机的

内部结构

那它不仅仅为我们的

虚拟机的实现

提供了非常清晰的内部结构

更是严格规定了Java虚拟机

所实现的外部行为

比如说我们每一个Java虚拟机

都有一个类加载子系统

英文简称为class loader subsystem

那它的功能是负责

加载程序中的类型

比如说一个class

或者一个借口interface

并赋予它唯一的名字

每一个Java虚拟机

都有一个执行引擎execution englne

负责来执行我们加载类中

所包含的指令

那在Java虚拟机中

我们都会使用到哪些数据类型呢

Java虚拟机对此都有非常明确的

这个确定和定义

我们数据类型的操作

都是在Java虚拟机当中

当然是规范中严格定好的

它的数据类型

可以分为原始数据类型

primitive types

和引用数据类型reference type

那引用类型的话

依赖于它实际的对象

它不是对象本身

而原始数据类型

不依赖于任何东西

它们就是本身所表示的这个数据

那么如果在之前

大家学的过程当中也知道

我们的原始数据会包括四类八种

比如说我们有整型类的

会包括byte short int long

如果我们是浮点数列的话

包括float double

如果我们是字符型的话

我们就会char

如果是布尔的话

是包括boolean

所以这个原始数据类型四类八种

而引用数据类型的话

就比较丰富了

那你自己定义的任何一个类的话

它都可以成为一个引用类型

那在Java虚拟机当中

还存在着一个

不能使用的原始数据类型

叫返回值类型 return value

这种类型被用来实现

Java程序中的finally Classes

那当我们用到引用类型的时候

它可以被创建为这么几种类型

一种是类类型

就是class type

另外一类是接口类型

也就是interface type

此外还有数组类型 array type

那之前在我们学习过数组的

基本概念的时候

其实大家应该明白

我们所定义的任何一个数组

那其实在Java中实现的时候

都是用reference来帮助它实现的

那上述这三种类型

都引用被动态创建的对象

那当引用类型

这个它的引用在null时

说明没有引用任何的具体的对象

那这一节的内容

我们就介绍到这里

JAVA程序设计进阶课程列表:

第一章 线程(上)

-1.0 导学

--Video

-1.1 线程的基本概念

--Video

-1.1 线程的基本概念--作业

-1.2 通过Thread类创建线程

--Video

-1.2 通过Thread类创建线程--作业

-1.3 线程的休眠

--Video

-1.3 线程的休眠--作业

-1.4 Thread类详解

--Video

-1.5 通过Runnable接口创建线程

--Video

-1.5 通过Runnable接口创建线程--作业

-1.6 线程内部的数据共享

--Video

第二章 线程(中)

-2.0 导学

--Video

-2.1 线程同步的思路

--Video

-2.2 线程同步的实现方式—Synchronization

--Video

-2.3 线程的等待与唤醒

--Video

-2.4 后台进程

--Video

-2.5 线程的生命周期与死锁

--Video

-2.6 线程的调度

--Video

第三章 线程(下)

-3.0 导学

--Video

-3.1 线程安全与线程兼容与对立

--Video

-3.2 线程的安全实现-互斥同步

--Video

-3.3 线程的安全实现-非阻塞同步

--Video

-3.4 线程的安全实现-无同步方案

--Video

-3.5 锁优化

--Video

第四章 网络编程(上)

-4.0 导学

--Video

-4.1 URL对象

--Video

-4.2 URLConnection对象

--Video

-4.3 Get请求与Post请求

--Video

-4.4 Socket通信原理

--Video

-4.5 Socket通信实现

--Video

第五章 网络编程(下)

-5.0 导学

--Video

-5.1 Socket 多客户端通信实现

--Video

-5.2 数据报通信

--Video

-5.3 使用数据报进行广播通信

--Video

-5.4 网络聊天程序

--Video

第六章 Java虚拟机

-6.0 导学

--Video

-6.1 Java虚拟机概念

--Video

-6.2 Java虚拟机内存划分

--Video

-6.3 Java虚拟机类加载机制

--Video

-6.4 判断对象是否存活算法及对象引用

--Video

-6.5 分代垃圾回收

--Video

-6.6 典型的垃圾收集算法

--Video

-6.7典型的垃圾收集器

--Video

第七章 深入集合Collection

-7.0 导学

--Video

-7.1 集合框架与ArrayList

--Video

-7.2 LinkedList

--Video

-7.3 HashMap与HashTable

--Video

-7.4 TreeMap与LinkedHashMap

--Video

-7.5 HashSet

--Video

第八章 反射与代理机制

-8.0 导学

--Video

-8.1 Java反射机制

--Video

-8.2 Java静态代理

--Video

-8.3 Java动态代理

--Video

-8.4 Java 反射扩展-jvm加载类原理

--Video

-8.5 Java进阶课程总结

--Video

Video笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。