# 基础知识

# Java 简介

# Java 是什么

Java 最早是由 SUN 公司(Stanford University Network 已被 Oracle 收购)的詹姆斯·高斯林(高司令,人称 Java 之父)在上个世纪 90 年代初开发的一种编程语言,最初被命名为 Oak,目标是针对小型家电设备的嵌入式应用,结果市场没啥反响。谁料到互联网的崛起,让 Oak 重新焕发了生机,于是 SUN 公司改造了 Oak,在 1995 年以 Java 的名称正式发布,原因是 Oak 已经被人注册了,因此 SUN 注册了 Java 这个商标。随着互联网的高速发展,Java 逐渐成为最重要的网络编程语言。

# Java 的发展

随着 Java 的发展,SUN 给 Java 又分出了三个不同版本:

Java SE:Standard Edition

Java EE:Enterprise Edition

Java ME:Micro Edition

这三者之间有啥关系呢?

┌───────────────────────────┐
│Java EE                    │
│    ┌────────────────────┐ │
│    │Java SE             │ │
│    │    ┌─────────────┐ │ │
│    │    │   Java ME   │ │ │
│    │    └─────────────┘ │ │
│    └────────────────────┘ │
└───────────────────────────┘

# Java 名词解释

名词解释 初学者学 Java,经常听到 JDK、JRE 这些名词,它们到底是啥?

JDK:Java Development Kit JRE:Java Runtime Environment 简单地说,JRE 就是运行 Java 字节码的虚拟机。但是,如果只有 Java 源码,要编译成 Java 字节码,就需要 JDK,因为 JDK 除了包含 JRE,还提供了编译器、调试器等开发工具。

二者关系如下:

┌─    ┌────────────────────────────┐
│     │ Compiler, debugger, etc.   │
│     └────────────────────────────┘
JDK┌─ ┌────────────────────────────┐
│  │  │                            │
│ JRE │ JVM + Runtime Library      │
│  │  │                            │
└─ └─ └────────────────────────────┘
┌───────┐┌───────┐┌───────┐┌───────┐
│Windows││ Linux ││ macOS ││others │
└───────┘└───────┘└───────┘└───────┘

# 安装 JDK

因为Java程序必须运行在JVM之上,所以,我们第一件事情就是安装JDK。

# 下载 JDK

搜索JDK 19,确保从Oracle的官网下载最新的稳定版JDK

https://www.oracle.com (opens new window)

# 设置环境变量

安装完JDK后,需要设置一个JAVA_HOME的环境变量,它指向JDK的安装目录。在Windows下,它是安装目录,类似:

C:\Program Files\Java\jdk-19

# 可执行文件

细心的童鞋还可以在JAVA_HOME的bin目录下找到很多可执行文件:

java:这个可执行程序其实就是JVM,运行Java程序,就是启动JVM,然后让JVM执行指定的编译后的代码; javac:这是Java的编译器,它用于把Java源码文件(以.java后缀结尾)编译为Java字节码文件(以.class后缀结尾); jar:用于把一组.class文件打包成一个.jar文件,便于发布; javadoc:用于从Java源码中自动提取注释并生成文档; jdb:Java调试器,用于开发阶段的运行调试。

# 第一个Java程序

# 编写 Java 程序

我们来编写第一个Java程序。

打开文本编辑器,输入以下代码:

public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello, world!");
    }
}

这个定义被称为class(类),这里的类名是Hello,大小写敏感,class用来定义一个类,public表示这个类是公开的

Hello是类的名字,按照习惯,首字母H要大写。而花括号{}中间则是类的定义。

注意到类的定义中,我们定义了一个名为main的方法,public、static用来修饰方法,这里表示它是一个公开的静态方法。

方法的代码每一行用;结束,这里只有一行代码,就是:

  System.out.println("Hello, world!");

Java规定,某个类定义的public static void main(String[] args)是Java程序的固定入口方法,因此,Java程序总是从main方法开始执行。

# 如何运行Java程序

Java源码本质上是一个文本文件,我们需要先用javac把Hello.java编译成字节码文件Hello.class,然后,用java命令执行这个字节码文件:

┌────────────┐
│ Hello.java │◀── source code
└────────────┘
      │ compile
      ▼
┌─────────────┐
│ Hello.class │◀── byte code
└─────────────┘
      │ execute
      ▼
┌─────────────┐
│ Run on JVM  │
└─────────────┘
# 第一步,在保存Hello.java的目录下执行命令javac Hello.java
$ javac Hello.java
$ ls
Hello.class  Hello.java
# 第二步,执行Hello.class,使用命令java Hello
$ java Hello
Hello, world!

# 小结

一个Java源码只能定义一个public类型的class,并且class名称和文件名要完全一致;

使用javac可以将.java源码编译成.class字节码;

使用java可以运行一个已编译的Java程序,参数是类名。

# 使用 IDE

IDE是集成开发环境:Integrated Development Environment的缩写。

使用IDE的好处在于,可以把编写代码、组织项目、编译、运行、调试等放到一个环境中运行,能极大地提高开发效率。

IDE提升开发效率主要靠以下几点:

  • 编辑器的自动提示,可以大大提高敲代码的速度;
  • 代码修改后可以自动重新编译,并直接运行;
  • 可以方便地进行断点调试。

# 安装Eclipse

Eclipse的发行版提供了预打包的开发环境,包括Java、JavaEE、C++、PHP、Rust等,我们需要下载的版本是Eclipse IDE for Java Developers。

在官方网站下载 (opens new window) 在国内网站下载 (opens new window)

# 设置Eclipse

下载并安装完成后,我们启动Eclipse,对IDE环境做一个基本设置:

选择菜单“Eclipse/Window”-“Preferences”,打开配置对话框:

General > Editors > Text Editors

钩上“Show line numbers”,这样编辑器会显示行号;

General > Workspace

钩上“Refresh using native hooks or polling”,这样Eclipse会自动刷新文件夹的改动;
对于“Text file encoding”,一定要改为“Other:UTF-8”,所有文本文件均使用UTF-8编码;
对于“New text file line delimiter”,建议使用Unix,即换行符使用\n而不是Windows的\r\n。

Java > Compiler

将“Compiler compliance level”设置为19,本教程的所有代码均使用Java 19的语法,并且编译到Java 19的版本。
去掉“Use default compliance settings”并钩上“Enable preview features for Java 19”,这样我们就可以使用Java 19的预览功能。