前言

计算机语言

  1. 第一代语言
    机器语言。指令以二进制代码形式存在。
  2. 第二代语言
    汇编语言。使用助记符表示一条机器指令。
  3. 第三代语言
    高级语言。
    • C、Pascal、Fortran 面向过程的语言
    • C++ 面向过程/面向对象
    • Java 跨平台的纯面向对象的语言
    • .NET 跨语言的平台
    • Python、Scala、……

      Java 语言概述

      什么是 Java 语言

      SUN (Stanford University Network,斯坦福大学网络公司) 1995 年推出的一门高级编程语言。
      一种面向 Internet 的编程语言。Java 一开始富有吸引力是因为,Java 程序可以在 Web 浏览器中运行。这些Java 程序被称为 Java 小程序(applet)。applet 使用现代的图形用户界面与 Web 用户进行交互。applet 内嵌在 HTML 代码中。
      随着 Java 技术在 Web 方面的不断成熟,已经成为 Web 应用程序的首选开发语言。

      后台开发:Java、PHP、Python、Go、Node.js

01-Java语言之父.jpg

Java 语言发展历史

  • 1995 年 Sun 公司发布 Java 1.0 版本
  • 1997 年发布 Java 1.1 版本
  • 1998 年发布 Java 1.2 版本
  • 2000 年发布 Java 1.3 版本
  • 2002 年发布 Java 1.4 版本
  • 2004 年发布 Java 1.5 版本(Java 5)
  • 2006 年发布 Java 1.6 版本(Java 6)
  • 2009 年 Oracle (先知, 神谕) 甲骨文公司收购 Sun 公司
  • 2011 年发布 Java 1.7 版本(Java 7)
  • 2014 年发布 Java 1.8 版本(Java 8)
  • 2017 年发布 Java 1.9 版本(Java 9)
  • 2018 年发布 Java 10 版本

    Java 语言的特性

    可以将 Java 语言看成是类 C 语言发展和衍生的产物。
    是一个纯粹的面向对象的程序设计语言。

    舍弃了 C 语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性。增加了垃圾回收器功能,用于回收不再被引用的对象所占据的内存空间。

  1. 易学
  2. 强制面向对象(类、对象;封装、继承、多态)
  3. 分布式
  4. 健壮(指针、垃圾回收)
  5. 安全
  6. 体系结构中立(跨平台性)(JVM, Java Virtual Machine)
  7. 解释型
  8. 性能略高
  9. 原生支持多线程

    Java 的两种核心机制

    Java 虚拟机(Java Virtal Machine)

    image.png
    JVM 是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器。Java 虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行”。对于不同的平台,有不同的虚拟机。

    垃圾收集机制(Garbage Collection)

    垃圾回收在 Java 程序运行过程中自动进行,程序员无法精确控制和干预。

    Java 语言的应用

    Java 语言主要应用在互联网程序的开发领域。

    如天猫、京东、物流系统、网银系统,以及服务器后台处理大数据的存储、查询、数据挖掘等应用。

image.png image.png
image.png image.png

Java 技术体系平台

  • Java SE(Java Standard Edition)标准版
  • Java EE(Java Enterprise Edition)企业版
  • Java ME(Java Micro Edition)小型版

    企业级应用、Android 平台应用、大数据平台开发

Java 开发环境的搭建

Java 虚拟机——JVM

JVM (Java Virtual Machine)

Java 虚拟机,简称 JVM,是运行所有 Java 程序的假想计算机,是 Java 程序的运行环境,是 Java 最具吸引力的特性之一。我们编写的 Java 代码,都运行在 JVM 之上。

跨平台

任何软件的运行,都必须要运行在操作系统之上,而我们用 Java 编写的软件可以运行在任何的操作系统上,这个特性称为 Java 语言的跨平台特性。该特性是由 JVM 实现的,我们编写的程序运行在 JVM 上,而 JVM 运行在操作系统上。
image.png

Java 的虚拟机本身不具备跨平台功能的。Java 程序的跨平台性,基于每个操作系统下都有不同版本的虚拟机。

JRE 和 JDK

JRE (Java Runtime Environment)

Java 程序的运行时环境,包含 JVM 和运行时所需要的核心类库。

我们想要运行一个已有的Java程序,那么只需安装JRE 即可。

JDK (Java Development Kit)

Java 程序开发工具包,包含 JRE 和开发人员使用的工具。

我们想要开发一个全新的Java程序,那么必须安装JDK 。

07-JDK&JRE&JVM关系示意图.png

JDK > JRE > JVM。

环境变量 JAVA_HOME 的配置

安装 JDK 时,路径中不要包含中文和空格,这样可以免去乱码和转义的麻烦。

image.png

配置环境变量作用

Java 程序开发所需的 JDK 工具在 Java 安装路径的 bin 目录下。
在命令行下使用这些工具,就要先进入 JDK 的 bin 目录。这个过程非常繁琐。否则,不进入 bin 目录,就无法使用这些工具而报错。
为了开发方便,需要在任意的目录下都可以使用 JDK 的开发工具。实现以上性质,需要为 Java 配置环境变量(意在于为操作系统声明 JDK 开发工具的位置。)

配置环境变量步骤

以 Windows 10 为例。

  1. 按下 Win 键,直接键入中文:高级系统设置,打开该面板。

image.png

  1. 选择进入环境变量

image.png

  1. 为系统变量新建一个键JAVA_HOME,其值设为 JDK 的安装目录。如:E:\Java\AdoptOpenJDK11\;选中系统变量的键Path双击或选择编辑新建,键入%JAVA_HOME%\bin

    配置环境变量时,path变量中值的设置,用于在 Windows 执行命令时,需要进行搜寻的路径。

image.png
image.png

  1. 环境变量配置完成。重启命令行,即可在任意目录下使用 JDK 的工具。

image.png

HelloWorld 入门程序

Java 开发步骤

Java 程序开发 3 步骤:编写编译 (compile) → 运行
00 前言、入门程序 - 图15

编写 Java 源代码

  1. 新建文本文档并重命名为HelloWorld.java,用文本编辑器(如记事本)等打开。
  2. 键入以下代码并保存:
    1. public class HelloWorld {
    2. public static void main(String[] args) {
    3. System.out.println("Hello World!");
    4. }
    5. }

    必须保证文件名和类名完全一致,且区分大小写。 字母和符号必须与示例代码一模一样。

编译 Java 源文件

在命令行中,进入 Java 源文件(.java)的目录,使用 javac 编译源文件。
命令:javac <源文件名>.<后缀名>。如:javac HelloWorld.java

由于 Windows 系统的资源管理器不区分大小写,所以<源文件名>可以不区分大小写。 若源码中含有中文,需要在编译时声明文件的编码:-encoding utf-8

编译完成后,命令行虽然没有任何提示,但源代码文件所在目录下,产生了一个同名的可运行字节码文件HelloWorld.class

Java 源文件的编译工具javac.exe在 JDK 安装目录的 bin 路径下。得益于环境变量的配置,可在任意目录下使用它。

运行 Java 程序

在命令行中,进入 Java 字节码文件(.class)的目录,使用 java 运行字节码文件。
命令:java <类名>。如:javac HelloWorld.java

Java 语言是大小写敏感的,因此<类名>不可混用大小写。 不要误将命令java HelloWord写成了java HelloWord~~.class~~。 有“c”就有扩展名,没有“c”就没有扩展名。

image.png

说明

编译 ≠ 运行

编译

将 Java 源文件“翻译”成 JVM 可识别的字节码.class文件。
这个过程中,javac 编译器会检查代码是否有错误。若有错误则会报错,没有错误就编译成功。

运行

将字节码.class文件交给 JVM 运行以执行程序了。

main 方法(主方法)

写法固定,格式不可以更改。
main方法作为程序的入口,无论编写多少程序,都只会从main开始执行。

public class <类名>,“类”是 Java 代码的组织单位。