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 文件

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

    编写 .java 文件

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

    编译 .java 文件

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

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

    运行 .class 文件

4. 备注

参考 B站《动力节点》。


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