java、javac、JDK、JRE

  • DOS常用命令:

    打开运行窗口Win+R
    退出DOS窗口exit
    清屏cls
    DOS窗口下查看目录dir(相当于Linux下的ls命令)
    回到上一级路径cd …
    直接回到根路径cd \
    切换盘符c:回车、d:回车 …
  • Java三大块:

    JavaSEJava标准版
    JavaEEJava企业版
    JavaMEJava微型版
  • Java特性:开源、免费、跨平台、纯面向对象

    简单性不支持多继承(C++支持)、无指针。Java底层是C++实现的。
    面向对象纯面向对象。
    可移植性因为有JVM,所以可以跨平台Java程序可以做到一次编译,到处运行。Java程序可以在Windows操作系统运行,不做任何修改,同样的Java程序可以直接放到Linux操作系统运行。 JVM有Windows版本和Linux版本缺点:麻烦,运行 java 程序必须先有 JVM
    多线程完美支持多线程并发
    健壮性自动垃圾回收机制(GC),不易导致内存溢出。C 或 C++ 使用不当容易导致内存溢出
    安全性java 语言可以编写病毒,但很难让用户中毒,只会让 java 程序猿中毒,所以很少有编写 java 病毒脚本
  • JDK和JRE:

    JDK(Java Development Kit)Java开发工具箱。JDK包含了JRE、javac、很多java程序调试和分析的工具(jconsole,jvisualvm等)、java程序编写所需的文档和demo例子程序
    JRE(Java Runtime Environment)包含了JVM、java的基础类库。只想运行java程序,只需安装JRE即可;若要编写java程序,要安装JDK
    有单独的 JDK 安装包、JRE 安装包,没有单独的 JVM 安装包
  • javac.exejavac java的源文件路径
    java.exejava 类名
  • Java是混合型编程语言
    首先,我们在运行环境中书写java源代码时,每次保存实际上都是自动运行了javac,而这个javac就是java使用的编译器。但是实际上,javac所做的并不是把源码翻译为机器语言,而是翻译为一种字节码.class文件。实际运行时,把class文件交给jre,再由jre对字节码文件翻译为机器码交给操作系统进行运行

    • class文件在翻译为机器码的过程又具体是怎样的呢,这就要看jvm具体是如何实现的了,一般来说是以下形式

      • 运行时,字节码文件会由jvm交给jre,再由jre中的解释器逐条翻译为机器码,再给操作系统进行翻译,和普通的解释型一样
      • 运行时,引入实时编译器JIT(Just In Time compiler),class文件中的部分字节码会被该种特殊编译器实时编译为机器码,而且还会储存起来,由于对所有的代码进行编译反而会降低速度,它通常只会去编译那些经常使用的部分,比如循环等。JIT实际上是java为了提高自己的速度而引入的一项特征,也正是他的引入,使得java现在的运行速度在某些情况下不会比纯编译型语言慢多少
      • rtsj(Real Time Specification for Java),对于javac直接进行二次编译并生成静态的机器码
    • 一般来说,字节码文件的解释过程通常是默认同时使用1和2两种方式,在特殊命令下,会执行第三种方式。所以说,在解释型特征的基础上,java为了提升性能还有编译型的特征,因此,被称为两种特征语言的混种

  • Java的加载和执行:

    编译阶段* 检查Java源程序(xxx.java)是否符合语法,符合则使用Javac工具/命令生成正常的字节码文件(xxx.class)。字节码文件中不是纯粹的二进制,这种文件无法在操作系统中直接行。 .class文件运行在JVM上,故在编译结束后,可将class文件拷贝到其他操作系统中运行。

    * 一个Java源程序可以生成多个.class文件

    * 生成.class文件后,若删除Java源文件,不会影响Java程序的执行,但一般不删除Java源程序。
    运行阶段输入java 类名(如java A)后,java.exe命令会启动JVM,JVM启动类加载器ClassLoader,ClassLoader会去硬盘上搜索A.class文件,找到该文件就将.class文件装载到JVM中。JVM将A.class文件解释成二进制数据。然后操作系统执行二进制和底层硬件平台进行交互。
  • Windows操作系统如何搜索硬盘上某个命令的呢?

    1. 从当前目录下搜索
    2. 没有搜索到的话,会从环境变量 path 指定的路径中搜索(先去用户变量找,再去系统变量找)
    3. 还没有搜索到就报错
  • 环境变量包括 “系统变量” 和 “用户变量”:

    系统变量范围较大,会让计算机所有用户都起作用
    用户变量范围较小,只作用于当前用户
  • JAVA_HOME 目前不需要,不配置不影响当前 java 程序运行。后期学到 JavaWEB 时需要安装 Tomcat 服务器,JAVA_HOME 就必须配置了
pathpath 环境变量本质上隶属于 Windows,跟 Java 没有关系,只是 Java 用了一下 C:\Windows\System32(用于 javac 和 java 命令)
classpathclasspath 是一个环境变量(隶属于 Java),给 ClassLoader 指路。没有配置此路径,默认从当前路径 下加载字节码文件,配置了就只能从指定路径下加载
  • Java程序的种类有:

    (a)内嵌于Web文件中,由浏览器来观看的Applet

    (b)可独立运行的 Application

    (c)服务器端的 Servlets

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐