Java介绍


Java语言诞生于1995年。其实在1995年之前SUN公司(已被Oracle收购)为了占领只能电子消费产品市场,派James Gosling领导团队开发了一个Oak语言,后来改名为Java。1996年 JDK1.0 诞生。

Java包括三大块:JavaSE(Java标准版);JavaEE(Java企业版);JavaEE(Java微型版)。其中JavaSE是基础。

1. Java中的JDK、JRE、JVM

经常听到Java的几个名词:JDK,JRE,JVM。

1.1 JDK

JDK是Java Development Kit的缩写,即Java开发工具包,里面包含了开发Java程序必备的包,如:java.long、java.util等等。

1.2 JRE

JRE是Java Runtime Environment的缩写,即Java运行时环境,就是Java程序运行时需要这个环境。

1.3 JVM

JVM是Java Virtual Machine的缩写,即Java虚拟机。为了实现跨平台,Java程序是在虚拟机上执行的。

可以看出,从范围上来说,JVM最小,JRE次之,JDK最大。一般情况下,JRE是包括JVM的;而JDK也会自带JRE的(但JRE也可以单独安装)。我们在部署项目的时候,不需要在客户机上安装JDK,只需要安装JRE即可,使得项目可以运行。

2. Java语言特性

  • 简单性

    相对而言,例如Java不再支持多继承,C++是支持多继承的。C++有指针,Java中屏蔽了指针的概念。所以相对来说,Java是简单的。Java语言底层是C++实现的,不是C语言。

  • 面向对象

    Java是纯面向对象的,更符合人的思维模式。更容易理解。

  • 可移植性

    Java程序可以做到一次编译,到处运行。也就是说Java程序可以在Windows操作系统上运行,不做任何修改,同样的程序可以直接放到Linux操作系统上运行。这就被称为Java程序的可移植性,或者叫做跨平台。

    Windows操作系统内核和Linux操作系统的内核肯定不同,他们这两个操作系统执行指令的方式也是不一样的。那么Java程序只有一份,而两个系统执行程序的原理不一样,显然Java程序肯定不能和操作系统直接交互。Java团队让Java程序运行在一个虚拟的计算机上,即Java虚拟机,JVM。然后让JVM和操作系统进行交互。不同操作系统有不同版本的JVM,可以认为JVM屏蔽了操作系统的差异。

  • 健壮性

    和自动垃圾回收机制有关,自动垃圾回收机制简称GC机制(Garbage Collection)。Java语言运行过程中产生的垃圾是自动回收的,不需要程序员关心。而C/C++则需要手动编程内存开辟和销毁程序。

  • 多线程

  • 安全性

3. Java的加载与执行

Java程序的运行包括两个非常重要的阶段:编译阶段和运行阶段。

3.1 编译阶段

编译阶段的主要任务是检查Java源程序是否符合Java语法,符合Java语法则能够生成正常的字节码文件,不符合Java语法规则则无法生成字节码文件。这个阶段是将.java文件生成.class文件。一个类会被生成一个.class文件。注意,如果一个.java文件中包含多个class,则会生成多个.class文件。

平时写的Java代码文件是以.java结尾,称为源文件;将原文件编译后生成的文件以.class结尾,称为字节码文件,该文件不是纯粹的二进制文件,这种文件无法在操作系统中直接运行,需要JVM。

.class文件是最终要执行的文件,所以说编译之后,.java原文件删除之后并不会影响Java程序的执行,但是一般.java文件不要删除,因为.class文件最终执行效果可能不是想要的,这时需要重新修改.java文件,然后重新编译生成新的.class文件,再次运行程序。

编译执行结束之后,可以将.class文件拷贝到其他操作系统中运行(已安装JVM),这就是所说的跨平台。

3.2 运行阶段

在运行过程中,java.exe命令会启动JVM,JVM会启动类加载器ClassLoader,接着ClassLoader会去硬盘上搜索指定文件(类名.class),找到该文件后,则将字节码文件装载到JVM中,然后JVM将字节码文件解释成二进制数据,操作系统执行二进制数据和底层硬件平台进行交互,从而执行程序。

加载与执行
加载与执行

3.3 指令

和C/C++、Python一样,Java程序可在命令行编译执行。

  • javac 文件名.java

    编译指定的文件,生成对应的.class文件。javac命令的用法就是后面跟要编译的文件名(注意有后缀),结束之后生成特定的类名.class文件。(取决于源文件中有几个类,就生成几个类名.class文件)。

  • java 类名

    运行指定的字节码文件。注意不带后缀.class

除此之外,上述命令还可附加一些参数,如指定文件生成的路径,指定传入参数等等。一般情况下不常用,这里不再介绍。

3.4 安装

略,去官网下载想要的JDK版本,安装即可。注意需要设置环境变量,这样才能将上述的编译运行指令作为全局命令使用。

3.5 补充

前期学习基础知识的时候,尽量使用上述命令在DOS窗口运行,这样可以了解命令的使用以及后续类、包等机制,之后再用成熟的IDE。

  1. 右击新建txt文件,修改后缀名为.java

    新建 .java 文件
    新建 .java 文件

    新建 .java 文件
    新建 .java 文件

  2. 编写代码,注意类名和文件名要一致。

    编写 .java 文件
    编写 .java 文件

  3. 在DOS窗口下,切换到源文件所在目录下,运行 编译命令。

    编译 .java 文件
    编译 .java 文件

    注意,因为上述源文件中只有一个HelloWorld类,所以编译之后,只生成了一个.class文件,且文件名和类名一致。

  4. .class文件所在目录下,运行 运行命令。

    运行 .class 文件
    运行 .class 文件

4. 备注

参考 B站《动力节点》。


文章作者: 浮云
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 浮云 !