JAVA 程序的一生

从本科开始就一直用Java, 但是基本上只是使用IDE比如eclipse 进行敲代码而已, 然后编译、执行,程序跑通就行,但是随着学习的深入 ( 虽然还是很渣), 慢慢的想知道我们点击 编译、执行的时候,系统内部到底做了什么,今天我们就来看看是什么魔力让我们写的java 源代码 有了生命。


首先来了解下一些基本的概念。


JAR: jar 包, Java Archive, 就是对一些文本、图像等资源、.class 文件等的集成压缩包,用来给我们的Java 程序提供支持的文件。

JRE: Java Runtime Environment, 就是java程序的运行环境,包括JVM (java 虚拟机) + JARs + 其他文件。如下图

                                        

JDK: Java Development Kit, 就是Java 开发组建等。 包含 JRE 和 Compiler + Debugger等. 

                           



JVM : Java Virtual Machine.  对于JVM的每个组件。

         1. ClassLoader: 1). 装载 .class 文件到内存中 2). 核实byte code 的操作这就是为什么说,java 程序相对安全,因为在装载byte code到内存中时,classloader的verifier会核实下这个code中有没有什么指令能对我们的系统产生伤害。3). 为程序分配内存.

         2. Run time data area: JVM 运行程序时所使用的内存区域。

               2.1 Method area: 存储class 代码和 method 代码

               2.2 Heap: 对象在Heap(堆)中被创建

               2.3 Java Stacks: 用来运行java 方法的frame. 方法在这里运行

               2.4 Program counter registers: 用来存放指令的内存地址

               2.5 Native Method Stacks: 用来运行 native language method 的地方. 

                                                         native language:  不需要转换和解释,能直接在机器上运行的语言比如C

                                                                      Managed language: 必须被转换和解释才能运行的语言比如Java

                                                                      Dynamic language: python.

           3. Native method interface: 是native method的接口, 用来连接native language libraries 和 JVM

         4. Native method library: 存储native language 的libraries的信息

         5. Execution Engine: 包含 解释器 和 JIT 编译器 - 转换byte code 到 machine code。 


以上是了解java 程序开发与运行的知识储备。



Java Source Code< .java file> --------  Compiler -------> Java Byte Code< .class file> --------- JVM -------  在JVM中由JIT Compiler 将Java Byte Code 转换成Machine Code然后运行 --------> result



有错误欢迎指出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值