zoukankan      html  css  js  c++  java
  • java运行环境和运行机制

    先来介绍三个概念:

    JVM----JAVA virtual machine

           java虚拟机:对字节码提供相同的接口,对操作系统提供不同的接口,以适应各个OS

    JRE----JAVA runtime environment

              java运行时环境

    JDK----java SE Development kit

               java 标准版开发包

    这是学习java最基础的三个概念,他们的关系如下

        JDK(开发必备) -|-----JAVA 类库    
       |-----JAVA编译器    
       |-----JRE(运行Java必装) -|-----JVM  
         |-----类加载器 -|
         |-----字节码校验器  |---运行java程序的其它环境支持
         |-----基础类库 _|
           

     如图,平常跑跑java 程序 安装对应的JRE即可,如果需要开发 则需要jkd,单纯的jvm是没意义的(官方也没有对应的下载)

     java从代码到运行:

                java源文件(.java 文件)----->java编译器(使用javac编译)----->字节码文件(.class文件)---|

                 特定平台的机器码(OS可以运行的)<--  java虚拟机运行(使用java解释执行)<---|

    java编译器生成的是与各个平台无关的字节码,这些字节码不面向任何的平台,他们只面向JVM,与此同时不同平台的JVM都是不同的,但是他们都提供了相同的接口来处理字节码,于此同时产生不同的接口对应不同的平台(linux/win)JVM可以说就是一个转换器。

       另外jar包:

        我们还会遇到.jar包。  jar (Java Archive File 译为java 存档文件)。直白点说就是一个压缩.class的zip包,但是由于他里边包含一个文件

    META-INF/MANIFEST.MF(生成jar包时就有),使得里边的.class文件之间具有一定的结构。我们的程序就可以直接引用这些jar包(这里有点像C#中的dll文件),或者直接运行这个jar包

          此处要注意

           (1).java文件的名字是随意起的,但是倘若java 文件中有public 类,则.java文件的名字必须与这个类名保持一致,所以最多只能有一个public class。

           (2)1、命名时大小写是敏感的(同时请记住,所有的关键字都是小写)。

                  2、默认的路径(jdk默认的路径)是 program files 中间有空格,最好选择无空格的路径(以及不要有中文字符,以免莫名其妙的错误)


    环境变量:

        为什么要设置环境变量呢?

         在我们装好jdk后,如果不设置:在我们敲入java 或者javac命令时会提示:java、javac不是内部或外部命令,也不是可以运行的程序或批处理文件。这是因为:虽然我们已经在计算机上安装了JDK,而且JDK的路径下野有java和javac 这两个命令,但是计算机并不知道去哪里找这两个命令(换句话说计算机并不知道自己有这两个功能),所以我们需要设置一个指引(路径),告诉OS可以去这里看看。

       Path:java编译运行工具的目录

       ClassPath:java调用需要工具类所在的地址

       JAVA_Home java安装目录的公有名字(就是JDK的安装目录)


    java的内存回收机制(GC)

    这个与C#的大同小异,这里就不多加赘述。只简单提下

    (1)不及时回收内存--->可以用内存的数量空间就会变小--->回收的频率就会变高--->性能下降

    (2)java始终都无法强制回收内存,只能建议jvm回收。

  • 相关阅读:
    程序为什么加载到内存中
    cortex-A cortex-R cortex-M处理器的性能比较
    makefile 中的赋值方式
    python(老男孩全栈观后感------文件处理)
    python------lambda(匿名函数)
    python------filter(过滤器)
    Express深入解读
    nodejs安装
    一道有意思的题目
    charAt获取数组,测试
  • 原文地址:https://www.cnblogs.com/jilodream/p/4275990.html
Copyright © 2011-2022 走看看