精华内容
下载资源
问答
  • java运行原理

    千次阅读 2016-05-14 14:34:13
    java运行原理 一、JAVA语言运行过程 java程序需要【编译】和【解释】且装载到JVM虚拟机才能运行,就是需要编译器、解释器和JVM虚拟机。 1、【编译器】,将我们编写的.java文件编译为.class文件(不同的...
    java运行原理
    一、JAVA语言运行过程

    java程序
    需要【编译】和【解释】且装载到JVM虚拟机才能运行,就是需要编译器、解释器和JVM虚拟机。

    图片

    1、【编译器】,将我们编写的.java文件编译为.class文件(不同的操作系统编译的.class文件是相同的)。
    2、【JVM虚拟机】,是让JAVA程序运行起来的系统环境(软件虚拟环境),虚拟机控制管理java运行流程。
    3、【解释器】,负责将.class文件解释成当前机器匹配的程序(不同操作系统需要的解释器是不同的)。
    4、虚拟机包含解释器,虚拟机读取不了.class文件程序,只能读取解释器解释出来的程序。

    jdk包含:编译器、解释器、虚拟机。
    jre包含:解释器、虚拟机。
     

    二、虚拟机运行原理

    虚拟机是软件虚拟的,所以虚拟机是存在于内存中的。

    类加载器将类实例化出来,宏观上
    类加载器就是将.class文件从硬盘读取到内存。

    虚拟机中的类加载器有三种:Bootstrap Loader  - 负责加载系统类 
                                                  ExtClassLoader  - 负责加载扩展类 
                                                  AppClassLoader  - 负责加载应用类

    加载过程:
    1、执行java **.class的时候,java.exe帮我们找到JRE,接着找到JRE内部的JVM.DLL虚拟机,加载动态库,激活虚拟机。
    2、虚拟机做初始化动作,比如读取系统参数等。
    3、产生第一个类加载器【
    Bootstrap Loader  - 负责加载系统类】(由C++撰写,可能是硬件调用等)。
    4、Bootstrap Loader 做基本初始化,Bootstrap Loader 加载【ExtClassLoader  - 负责加载扩展类】和【AppClassLoader  - 负责加载应用类】。
    5、Launcher是JRE中用于启动程序入口main()的类(该类主要功能是:创建ExtClassLoader和AppClassLoader,还根据配置创建SercurityManager,设置进程上下文类加载器。)。


    参考资料:
    http://hi.baidu.com/fevelen/item/01c947c4421a2166f7c95db4
    http://blog.sina.com.cn/s/blog_51cc717501009tqz.html
    http://samuschen.iteye.com/blog/1119539
    http://blog.csdn.net/a379039233/article/details/6160800


    三、web应用加载顺序
     
    1、启动一个web项目,web容器(Tomcat)读取项目的web.xml配置文件。
    2、读取web.xml的
    <context-param><listener>两个结点。
    3、web容器新建ServletContext对象实例,且将<context-param>转换成键值对交给ServletContext。
    4、web容器读取<listener>创建监听器对象。

    加载顺序
    context-param -> listener -> filter -> servlet(Servlet的加载顺序由<load-on-startup>值而定
    其他的元素按照顺序加载。

    web.xml(context-param,listener,filter,filter-mapping,servlet,servlet-mapping,display-name,description,session-config,mime-mapping,welcome-file-list,error-page,taglib,resource-env-ref,resource-ref,security-constraint,login-config,security-role,env-entry,ejb-ref,ejb-local-ref)

    注:如果一个web项目对于web.xml中的所有元素都不需要初始化,则可以没有web.xml文件。

    参考资料:http://blog.sina.com.cn/s/blog_4553489c01010jao.html
    展开全文
  • Java 运行原理

    千次阅读 2012-12-19 17:35:16
    在研究Java运行原理之前,我们先把视野放宽一点:一般的高级语言是如何工作的?我们在编辑器或者IDE里根据每种语言的语法规则敲入源代码,这些代码我们很容易理解。很显然,这些代码肯定是以二进制存储在我们的硬盘...

    在研究Java运行原理之前,我们先把视野放宽一点:一般的高级语言是如何工作的?我们在编辑器或者IDE里根据每种语言的语法规则敲入源代码,这些代码我们很容易理解。很显然,这些代码肯定是以二进制存储在我们的硬盘当中,当我们再次打开的时候,编辑器读取这些二进制,还原成我们能读懂的英文。当我们真正运行程序的时候,CPU是读不懂这些英文的,所以我们需要先转化成可执行的二进制文件,这个过程通常由编译器完成。有些编译器直接将源代码编译成机器码,载入内存后CPU可以直接运行。而机器码的格式是跟具体的CPU架构相关的,Intel的CPU机器码对于ARM CPU来说是无法理解的。因此,同样的源代码需要根据不同的硬件进行特定的编译。好了,高级语言到低级语言的桥梁就是编译器。我们写好源代码,编译器将源码编译成可执行的机器码,然后CPU读取机器码,执行程序。


    可以说,Java这一语言的执行过程也遵循这样的过程:源代码--->机器码。 但是,从源代码到机器码之间,究竟经过什么样的过程,则是Java独一无二的了。宽泛地讲,Java源代码(.java)经过java编译器(javac.exe)编译之后,并没有直接转化为机器码,而是转化成一种中间格式,成为字节码(.class),字节码再经过java虚拟机转化成特定CPU架构的机器码。也正是因为这一中间物,java才有所谓的跨平台。在windows平台上编译好的字节码,copy到linux平台后,经过为linux而设计的Java虚拟机解释后即可执行。跨平台这一特征,是通过字节码和JVM来实现的。因此,想搞清楚java程序到底是如何运行的,重点在于弄明白字节码是如何被转化成跟CPU架构相关的机器码然后被执行的。也就是要理解JVM到底是如何工作的。


    在了解JVM之前,我们再跳出来一下,先看看什么是虚拟机。所谓虚拟机,我是这么理解的:用软件的方式模拟出跟硬件类似的环境,比如说寄存器、存储器等等。当然,所有最终的工作还是由原来的CPU来完成。比如说VirtualBox这个虚拟机产品,它其实就是一个应用程序,用某种编程语言编写的应用程序。当运行这个应用程序时,它会要求操作系统给它独立施展手脚的空间:给我一些内存,给我一定的CPU时间片,然后不用管我了。你可能会问,寄存器是硬件啊,它怎么能划分啊,难道是时间划分?不是的,像内存这样的硬件,可以给虚拟机一块独立的内存块,但是寄存器之后的,则需要用“模拟仿真”的方式来模拟。OK,回到Java虚拟机。到底什么是Java虚拟机,很难有一个十分明确的定义,狭窄一点说,它就是一个应用程序,大部分用C++编写的。宽泛地说,它就是执行字节码的一整个环境。



    从上面这一张图可以看出来,JVM完成了字节码带机器码的所有相关工作。它从文件系统中将字节码文件载入到操作系统分配给Java虚拟机的内存当中,然后解释字节码,转化成机器码,然后经由操作系统到达CPU运行。整个执行过程如下图所示:

                            

    至于java虚拟机到底是如何实现,如何工作的,则是一片值得研究的广阔天地。

    展开全文
  • 我们使用的Java是开源的,但是Java...而想要运行一个Java程序,就必须安装相应的JRE,这是Java的专门的运行软件。 首先我们要去安装一个JDK,在下载好一个JDK 的安装包之后,直接打开安装包进行安装即可。 万事开...

      我们使用的Java是开源的,但是Java是有自己的开发工具包和运行环境的。开发工具是一个叫做Java Development Kit的软件开发工具包(简称JDK),可以说没有JDK的话,就无法编译Java程序。而想要运行一个Java程序,就必须安装相应的JRE,这是Java的专门的运行软件。

      首先我们要去安装一个JDK,在下载好一个JDK 的安装包之后,直接打开安装包进行安装即可。


      万事开头难,我们在安装JDK的在选择文件夹的时候是有讲究的,我们首先要创建一个文件夹命名为Java,然后再这里边再创建一个文件夹命名为JDK,然后把JDK安装到这个文件夹里边去,这样做的目的是方便我们以后去寻找。

      在JDK的安装过程中,会自动的弹出另外一份程序的安装界面,我们不要关闭它,因为这是JRE的安装界面,它是与JDK的安装相互关联的。在刚才的Java文件夹里面建立另外一个文件夹,命名为JRE,然后安装在这里面即可。


      在安装了JDK之后,我们还不能运用它,我们还需要将它设置成环境变量。在这里需要解释一下,有的JDK在安装完毕之后,是可以直接在dos命令窗口里运行的,这是因为在安装的过程中,有的JDK安装程序会自动创建一个环境变量。但是我们要的不是这样子的,因为在以后的学习和开发过程中,有时是不识别这种方式的。我们打开刚才的JDK文件夹,并复制这个文件夹的地址所在地。


      接下来就是右击此电脑,然后依次进入属性——高级系统设置——环境变量,点击新建变量名设置为JAVA_HOME,将刚才复制的地址粘贴到变量值一栏中,然后点击确定。在变量中找到Path,进入之后把其中一个带有JDK的变量删除(这个就是刚才所说的在安装过程中自动配置的环境变量),然后我们在新建一个变量,输入%JAVA_HOME%\bin,然后一直点击确定退出即可。




      然后我们验证一下环境变量是否设置成功。打开DOS命令窗口,输入java -version并点击回车键,如果显示下面的画面,据说明我们可以正常的使用JDK去编译Java程序了。

      JVM虚拟机是一个可以执行Java字节码的虚拟机进程。用Java编写的程序(存放在扩展名为java的文件当中)经过JDK的bin目录中的javac.exe编译成字节码文件(扩展名为class),但是这个字节码文件并不是针对具体的某一个操作平台的,而是针对抽象的JVM虚拟机而言的。Java虚拟机屏蔽了不同操作平台的差异,在不同的操作平台上,都可以通过JVM虚拟机去运行一个Java程序。



    展开全文
  • JAVA和JVM运行原理

    2019-12-05 21:43:50
    它是一种利用软件方法实现的抽象的计算机基于下层的操作系统和硬件平台,可以在上面执行java的字节码程序。 编译器负责把Java程序转成Class文件,方便Jvm来读取它. Jvm是java虚拟机,其实它就是解释器,把Class文件中的...

    JVM是java的核心和基础,在java编译器和os平台之间的虚拟处理器。它是一种利用软件方法实现的抽象的计算机基于下层的操作系统和硬件平台,可以在上面执行java的字节码程序。

    编译器负责把Java程序转成Class文件,方便Jvm来读取它.

    Jvm是java虚拟机,其实它就是解释器,把Class文件中的命令转成某种平台的命令,比如把Java命令转成Windows下的命令,然后Java程序就执行了.

    这里和大家简单分享一下JAVA和JVM运行的原理,Java语言写的源程序通过Java编译器,编译成与平台无关的‘字节码程序’(.class文件,也就是0,1二进制程序),然后在OS之上的Java解释器中解释执行,而JVM是java的核心和基础,在java编译器和os平台之间的虚拟处理器

    JAVA和JVM运行的原理

    1.Java语言运行的过程

    Java语言写的源程序通过Java编译器,编译成与平台无关的‘字节码程序’(.class文件,也就是0,1二进制程序),然后在OS之上的Java解释器中解释执行。

    Java语言运行的过程Java语言运行的过程

    file

    也相当与

    file

    Java语言运行的过程

    注:JVM(java虚拟机)包括解释器,不同的JDK虚拟机是相同的,解释器不同。

    2.JVM:

    JVM是java的核心和基础,在java编译器和os平台之间的虚拟处理器。它是一种利用软件方法实现的抽象的计算机基于下层的操作系统和硬件平台,可以在上面执行java的字节码程序。

    java编译器只要面向JVM,生成JVM能理解的代码或字节码文件。Java源文件经编译成字节码程序,通过JVM将每一条指令翻译成不同平台机器码,通过特定平台运行。

    JVM执行程序的过程 :

    I.加载。class文件

    II.管理并分配内存

    III.执行垃圾收集

    JRE(java运行时环境)由JVM构造的java程序的运行环境

    JVM执行程序的过程

    file

    欢迎添加小编的Java学习群,不管你是小白还是大牛,小编我都欢迎,不定期分享干货,包括小编自己整理的一份2019年最新的Java资料和0基础入门教程视频,欢迎初学和进阶中的小伙伴。在不忙的时间我会给大家解惑

    file

    本文由博客一文多发平台 OpenWrite 发布!

    展开全文
  • [Java] JAVA和JVM运行原理

    千次阅读 2020-02-29 14:12:41
    它是一种利用软件方法实现的抽象的计算机基于下层的操作系统和硬件平台,可以在上面执行java的字节码程序。 编译器负责把Java程序转成Class文件,方便Jvm来读取它. Jvm是java虚拟机,其实它就是解释器,把Class文件中...
  • java运行原理(一)

    万次阅读 2018-02-27 15:52:31
    本文转载地址:http://blog.csdn.net/bingduanlbd/article/details/8332664在研究Java运行原理之前,我们先把视野放宽一点:一般的高级语言是如何工作的?我们在编辑器或者IDE里根据每种语言的语法规则敲入源代码,...
  • JAVA程序运行原理——知其然,而知其所以然

    万次阅读 热门讨论 2015-09-30 16:23:43
    最近看书被几个有意思的问题吸引: 你写java程序吗? 它的运行机制你懂多少?...然后,让我就接着看了看,然后,让我们一起来看看java语言原理。【哈哈】 编译型语言 VS 解释型语言 编译型语言
  • JAVA和JVM运行原理揭秘

    千次阅读 2015-01-05 14:26:48
    JVM是java的核心和基础,在java编译器和os平台之间...这里和大家简单分享一下JAVA和JVM运行原理Java语言写的源程序通过Java编译器,编译成与平台无关的‘字节码程序’(.class文件,也就是0,1二进制程序),然后在O
  • 简单精辟: JAVA编译过程理解: Java源文件 xxx.java --->javac.exe编译器--->xxx....--->把xxx.class文件加载到JVM中去运行--->JVM加载在RAM中运行。 ps:(因此JVM作用:屏蔽各种OS)--->JAVA的跨平台性得以实
  • Java运行机制以及Java跨平台的原理

    千次阅读 2019-05-02 22:43:40
    JDK(Java Development Kit)是 Java 语言的软件开发工具包,它包含有JRE、编译器和调试器等用于程序开发的文件。抛开JRE不谈,它主要能干编译和调试两件事。 JRE(Java Runtime Environment)即java运行环境,它包含了...
  • Java JVM 运行机制及基本原理

    万次阅读 2017-04-12 17:45:44
    Java JVM 运行机制及基本原理 将知识用文字记录下来,供以后温故知新。 JVM的基础概念 JVM的中文名称叫Java虚拟机,它是由软件技术模拟出计算机运行的一个虚拟的计算机。 JVM也充当着一个翻译官的角色,我们...
  • B/S架构及其运行原理

    万次阅读 多人点赞 2018-03-23 22:31:19
    目录 一. B/S的概念 二. B/S工作原理 三....四....五....一.... B/S(Brower/Server,浏览器/服务器)模式又称B/S结构,是Web兴起后...Web浏览器是客户端最主要的应用软件。 这种模式统一了客户端,将系统功能实现的核心部分...
  • JVM运行原理

    千次阅读 多人点赞 2016-08-02 21:34:46
    JVM是运行原理,Class文件介绍,虚拟机类加载机制,类加载的全过程,虚拟机执行引擎
  • 1.1 Java程序介绍 在开始案例之前,我们需要了解一下Java应用程序的编写流程。通过上图我们可以了解到编写的程序大致如下;1. 源文件:编写Java源文件(我们也称之为源代码文件),它的扩展名为.java;2. 编译:...
  • Java技术原理详解

    千次阅读 2015-10-20 22:15:47
    一、Java的起源 最早大概可追溯至1991年四月份,Sun MicroSystems公司的一个工程师Patrick Naughton 二、Java 运行原理 1、高级语言运行过程 2、Java语言的执行过程 三、 JVM的体系结构 四、JVM垃圾回收 五、JRE...
  • java虚拟机工作原理

    千次阅读 2016-10-12 20:58:28
     jav虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。java虚拟机有自己想象的硬件,如处理器、堆栈、寄存器、还有相应的指定系统。   总结:java虚拟机--处理器、堆栈、寄存器、指令系统。  二...
  • Java语言写的源程序通过Java编译器,编译成与平台无关的‘字节码程序’(.class文件,也就是0,1二进制程序),然后在OS之上的Java解释器中解释执行,而JVM是java的核心和基础,在java编译器和os平台之间的虚拟处理器...
  • Java跨平台原理理解

    千次阅读 2016-10-27 21:50:05
    使用Java语言编写应用程序最大的优点在于“一次编译,处处运行”,但也并不是说所有的Java程序都具有Java跨平台的特性,事实上,相当一部分的Java程序是不能在别的操作系统上正确运行的, Java跨平台的原理: ...
  • Java工作原理

    千次阅读 2016-12-19 18:56:03
    Java工作原理  Java由四方面组成,当编辑并运行一个Java程序时,需要同时涉及到这四种方面。  1、Java编程语言  2、Java类文件格式  3、Java虚拟机  4、Java应用程序接口  使用文字编辑软件(例如记事本、...
  • java程序运行顺序

    千次阅读 2018-03-11 12:37:03
    一个Java程序运行从上到下的环境次序 Java程序、JRE/JVM、操作系统、硬件 java编译完的class字节码文件,先放到...这也是java跨平台的原理,即字节码文件只要有对应的操作系统的虚拟机,字节码就可以运行。  ...
  • Java Obfuscator的原理

    千次阅读 2010-11-15 11:48:00
    Java Obfuscator的原理就是将字节码转换为一个逻辑上的对等物,这种转换后的版本极难拆散。即使有人试图去反编译,过程将极其艰难复杂,并很难绕过转换后模糊晦涩的编码。主要的过程如下: 用一个常规...
  • JAVA异常处理原理

    千次阅读 2018-05-25 22:54:05
    一、Java异常处理机制的优点在一些传统的编程语言,如C语言中,并没有专门处理异常的机制,程序员通常用方法的特定返回值来表示异常情况,并且程序的正常流程和异常流程都采用同样的流程控制语句。Java语言按照面向...
  • JAVA虚拟机工作原理

    千次阅读 2011-10-13 09:45:48
    Java虚拟机处于机器和编译...Java源程序经过编译器编译后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后在特定的机器上运行。  Java虚拟
  • java 程序执行原理

    万次阅读 2011-04-28 14:07:00
    java 应用可以打包成jar 格式, jar格式其实只是一种很普通的压缩格式,与zip格式一样,只不过是它会在压缩文件的目录结构中增加一个META-INF/ MANIFEST.MF 的元文件。 我们知道,经过编译的字节码class文件可以...
  • Java程序执行原理简介

    千次阅读 2009-07-03 13:10:00
    Java程序执行原理 首先了解一下什么是计算机程序。计算机的作用在于它可以帮助人类完成计算功能,它由硬件和软件两部分组成,硬件包括中央处理器(CPU)、存储器、输入输出设备等,软件包括计算机程序、相关文档及...
  • 理解Java类加载原理

    千次阅读 2011-04-27 17:31:00
    Java类加载器对Java系统的运行是至关重要的,但是却常常被我们忽略。Java类加载器负载在运行时查找和加载类。自定义类加载器可以完全改变类的加载方式,以自己喜欢的方式来个性化你的Java虚拟机。本文简要的介绍Java...
  • java反射原理

    千次阅读 2018-07-31 10:32:46
    这种动态(在运行时)获取类的信息以及动态调用对象的方法的功能称为java语言的反射机制。简单来说,就是Java对每一个类和类中的所有成员都进行了封装,这样每个类都有一个与之对应的Class对象(编译之后产生的class...
  • Java程序执行原理 字节码

    千次阅读 2015-11-18 16:34:51
    Java程序执行原理  首先了解一下什么是计算机程序。计算机的作用在于它可以帮助人类完成计算功能,它由硬件和软件两部分组成,硬件包括中央处理器(CPU)、存储器、输入输出设备等,软件包括计算机程序、相关...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 148,743
精华内容 59,497
关键字:

java软件运行原理

java 订阅