java的运行机制(基础)
1:高级语言的运行机制:
我们编程都是用的高级语言(写汇编和机器语言的大牛们除外),计算机不能直接理解高级语言,只能理解和运行机器语言,所以必须要把高级语言翻译成机器语言,计算机才能运行高级语言所编写的程序。
翻译,其实翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。
1.1:编译型语言(c,c++):
使用专门的编译器,针对特定平台(操作系统)将某种高级语言源代码一次性”翻译“成可被该平台硬件执行的机器码(包括机器指令和操作数),并包装成该平台所能识别的可执行性程序的格式。
优点: 运行效率较高
缺点:编译生成的程序无法移植
2.2:解释性语言(ruby,python):
使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行的语言。解释型语言通常不会整体性的编译和链接处理,解释型语言相当于把编译型语言中的编译和解释过程混合到一起同时完成。
优点:跨平台较容易
缺点:效率较低,不能脱离解释器独立运行
2:java的运行机制:
2.1:java是编译型语言与解释型语言的结合体
①首先采用通用的java编译器将java源程序编译成为与平台无关的字节码文件(class文件)
②然后由java虚拟机(JVM)对字节码文件解释执行。

2.2:JVM(Java Virtual Machine Java虚拟机)
(1)JVM是Java字节码执行的引擎,为java程序的执行提供必要的支持,还能优化java字节码,使之转换成效率更高的机器指令。程序员编写的程序最终都要在JVM上执行,JVM中类的装载是由类加载器(ClassLoader)和它的子类来实现的。
(2)ClassLoader是java运行时一个重要的系统组件,负责在运行时查找和装入类文件的类。
(3)JVM屏蔽了与具体操作系统平台相关的信息,从而实现了java程序只需生成在JVM上运行的字节码文件(class文件),就可以在多种平台上不加修改地运行。不同平台对应着不同的JVM,在执行字节码时,JVM负责将每一条要执行的字节码送给解释器,解释器再将其翻译成特定平台环境的机器指令并执行。java语言最重要的特点就是跨平台运行,使用JVM就是为了支持与操作系统无关,实现跨平台运行。
2.3 ClassLoader
(1)是JVM实现的一部分,包括bootstrapclassloader(启动类加载器)
(2)ClassLoader在JVM运行的时候加载java核心的API,通过java程序实现两个ClassLoader:
①ExtClassLoader,它的作用是用来加载java的扩展API,也就是lib\ext类;
②AppClassLoader,用来加载用户机器上CLASSPATH设置目录中的Class.
(3)ClassLoader加载流程:当运行一个程序的时候,JVM启动,运行bootstrapclassloader,该ClassLoader加载java核心API,然后调用ExtClassLoader加载扩展API,最后AppClassLoader加载CLASSPATH目录下定义的Class.
2.4JRE
JRE是JavaRuntimeEnvironment,java运行时环境,它是java程序运行所必须的环境集合,主要由java虚拟机、java平台核心类和若干支持文件组成。其不包含开发工具、编译器、调试器以及其他工具。
在执行java程序的时候,操作系统会按照下面顺序寻找JRE环境。
(1)先查找当前目录下有没有JRE
(2)再查找父目录下有没有JRE
(3)接着在环境变量PATH制定的路径中查找JRE
(4)注册表查看CurrentVersion的键值指向哪个JRE
JRE自带的基础类库主要在JRE\LIB\rt.jar文件中。在程序运行时,JRE由ClassLoader(类加载器)负责查找和加载程序引用到的基类库和其他类库。基础类库,Classloader会自动到rt.jar的位置;其他的类库,ClassLoader在环境变量CLASSPATH制定的路径中搜索。
2.5 JDK
JDK是Java Development Kit,简称java开发工具包。
JDK是java的核心。它包括java运行环境、一堆java工具盒java基础的类库(rt.jar)。
JDK包含JRE的全部内容外,还包含开发者用以编译、调试和运行java程序的工具。
2.6JDK、JRE、JVM之间的关系
JDK、JRE、JVM之间是包含关系。范围由大到小依次为JDK、JRE、JVM。
java的运行机制(基础)的更多相关文章
- 零基础怎么学Java?Java的运行机制是什么?Java入门基础!
Java语言是当前流行的一种程序设计语言,因其安全性.平台无关性.性能优异等特点,受到广大编程爱好者的喜爱. 想学习Java语言的同学对于Java的运行机制是必须要了解的!! 计算机高级语言的类型主要 ...
- 02 基础 卸载JDK 安装JDK Java程序运行机制
基础 JDK:Java Development Kit(Java开发者工具 包含JRE和JVM) JRE:Java Runtime Environment(java运行时环境,包含JVM) JVM:J ...
- Java到处运行的基础之 Class 文件
Java 实现一次编译到处运行的基础,来源于 Java 虚拟机屏蔽了操作系统的底层细节.使用 class 文件存储编译后的源程序,使得 Java 程序的编译与操作系统解耦.正是因为 Java clas ...
- java虚拟机运行机制
转自java虚拟机运行机制 首先简单阐述下解释型语言和编译型语言的联系与区别. 编译型语言是通过编译器将程序编译成目标机器所能识别的机器码,而解释型语言不需要编译过程.由该语言的解释器读取脚本,按照语 ...
- Java学习系列(一)Java的运行机制、JDK的安装配置及常用命令详解
俗话说:“十五的月亮十六圆”.那学习是不是也是如此呢?如果把月亮看成是我们的愿望,那十五便是我们所处的“高原期”,坚持迈过这个坎,我相信你的愿望终究会现实的.记得马云曾说:今天很残酷,明天更残酷,后天 ...
- 第一个java程序以及java的运行机制
课堂要点: 编写第一个java程序以及理解java的运行机制. 1.基本命令介绍: javac命令: 编译java文件得到.class字节码文件 -encoding 参数:指定编译的编码 java命令 ...
- java的运行机制及初步相关配置(jdk)
java的运行机制: 计算机高级语言的类型主要有编译型和解释型两种,而java语言是两种类型的结合. java首先利用文本编译器编写java源程序,源文件的后缀名为.java:再利用编译器(javac ...
- Java的运行机制概括
这次随笔主要记录一下我对Java的平台无关性一些新的理解,以前只知道是Java是一门很容易跨平台的语言,正如 "Compile once, run anywhere" 这句话,也知 ...
- Java多线程运行机制的基本原理
Java多线程运行机制的基本原理 进程和线程的区别 进程 进程是一个程序执行的实例,比如说我们打开10个IE浏览器窗口,那么就有10个进程开启.一个进程可以同时被运行若干次,进程是CPU进行资源分配和 ...
随机推荐
- 51Nod--1085背包问题
1085 背包问题 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 在N件物品取出若干件放在容量为W的背包里,每件物品的体积为W1,W2--Wn(Wi为整 ...
- php结合redis实现高并发下的抢购、秒杀功能 (转载)
抢购.秒杀是如今很常见的一个应用场景,主要需要解决的问题有两个: 1 高并发对数据库产生的压力 2 竞争状态下如何解决库存的正确减少("超卖"问题) 对于第一个问题,已经很容易想到 ...
- 浅谈PipelineDB系列一: Stream数据是如何写到Continuous View中的
PipelineDB Version:0.9.7 PostgreSQL Version:9.5.3 PipelineDB的数据处理组件: 从上图来看主要就是pipeline_streams,strea ...
- Spring Cloud Zuul 添加 ZuulFilter
紧接着上篇随笔Spring Cloud Zuul写,添加过滤器,进行权限验证 1.添加过滤器 package com.dzpykj.filter; import java.io.IOException ...
- 05.haproxy+mysql负载均衡 整合 redis集群+ssm
本篇重点讲解haproxy+mysql负载均衡,搭建完成后与之前搭建的redis+ssm进行整合 (注:这里用到了两台mysql数据库,分别安装两台虚拟机上,已经成功实现主主复制,如果有需要,请查看我 ...
- CSS3基础知识
CSS3基础 1 样式表的使用 1.内联样式表. 只影响单个元素,常用于标签. <p style="color: aqua;font-size: 20px">This ...
- cygwin下java报错“找不到或无法加载主类”的故障排除
win7 下安装了java,命令行下可以正常运行,cygwin下报错:找不到或无法加载主类. 经排查发现是cygwin的~/.bash_profile中画蛇添足的配置了$CLASSPATH: JAVA ...
- 互联网协议(Internet Protocol Suite)
互联网实现分层:有的7层有的4层:阮一峰认为分五层(个人喜欢): 最底下的一层叫做"实体层"(Physical Layer),最上面的一层叫做"应用层"(App ...
- NYOJ127 星际之门(一)(最小生成数的个数+高速幂)
题目描写叙述: http://acm.nyist.net/JudgeOnline/problem.php?pid=127 能够证明.修建N-1条虫洞就能够把这N个星系连结起来. 如今.问题来了.皇帝想 ...
- 设计模式(8) - 迭代器模式(iterator)- 实现ArrayList和linkedList的迭代器
上周六就開始写这篇博客,之后一直耽误了.到前天才開始写.今天醒的早,就把这部分整理一下. 本文内容參考易学设计模式和马士兵的迭代器模式的视频. 了解迭代器模式一个作用就是让你在使用 迭代器遍历集合类的 ...