• 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回收。

  • 相关阅读:
    delphi 多线程定时执行程序如何写
    delphi 把多个线程的请求阻塞到另一个线程 TElegantThread
    delphi 对TThread扩充TSimpleThread
    Delphi 线程Timer (TThreadTimer)
    vue-01-插值表达式、事件修饰符
    ORA-12516:监听程序找不到服务协议堆栈要求的可用处理程序(转)
    Io 异常: The Network Adapter could not establish the connection(转)
    "Cannot read property 'xxx' of undefined" js问题之某属性未定义
    数据库用日期作为条件来查询数据
    Docker Registry配置客户端
  • 原文地址:https://www.cnblogs.com/jilodream/p/4275990.html
Copyright © 2020-2023  润新知