# Java语言概述

**Java基础是JavaEE、大数据、Android开发的基石。**

指令：指挥计算机工作的命令和指令。

程序：为让计算机执行某些操作或解决某种问题而编写的一组有序指令集合。

Java语言由sun（Stanford University Network斯坦福大学网络公司）公司推出。其简史如下：

* 1991  SUN公司Green项目，Oak 橡树
* 1995  Java测试版
* 1996  JDK1.0
* 1997  JDK1.1
* 1998  JDK1.2 革命性版本 更名为Java2
* 2004  J2SE 5.0(JDK 1.5.0) Tiger 老虎
* 2006  J2SE 6.0(JDK 1.6.0) Mustang 斑马
* 2011  JavaSE 7.0(JDK 1.7.0)Dolphin 海豚
* 2014  JDK 8.0
* 2017  JDK 9.0
* 2018  JDK10和JDK11

## Java 三大模块

* 1.JavaSE Java Standard Edition:

**标准版**，定位个人计算机（桌面）。Java平台核心。开发桌面级应用

* 2.JavaEE Java Enterprise Edition:

**企业版**，定位服务器端。主流。开发企业级应用

* 3.JavaME Java Micro Edition:

**微型版**，定位消费性电子产品。开发移动端应用

相互关系：JavaEE包含JavaSE，JavaME包含JavaSE的一些东西。相互关系如下：

![](https://3884904792-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LfnT30K7z1iNbyIaGVh%2F-LxUk24ktLcultFuKdw3%2F-LxUl9bGL0qawCfdU89L%2Fimage.png?alt=media\&token=433adc4a-10b0-4e43-925b-8265839a3979)

企业级应用：复杂的大企业的软件系统、各种类型的网站。Java的安全机制和跨平台的优势，让其在分布式系统领域开发中有广泛应用。应用领域包含金融、电信、交通、电子商务等。

Android平台应用：Android应用程序使用Java语言编写。Android开发水平的高低很大程取决于Java语言核心技术能力。

移动领域应用：主要在消费和嵌入式领域，指在各种小型设备上的应用，包括手机、PDA、机顶盒、汽车通信设备等。

大数据开发

## Java特性

* 1.跨平台性：字节码【bytecode】文件可以在任意具有java虚拟机的计算机和电子设备上运行，java虚拟机中的java解释器JIT【Java in Time Complier，解释器】负责将字节码文件解释成特定的机器码进行运行。其中java针对不同的系统提供相应的java虚拟机，例如java虚拟机 for linux，java虚拟机for Windows等等。记住一点，跨平台是java的核心优势，java虚拟机是跨平台的保证。

![](https://3884904792-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LfnT30K7z1iNbyIaGVh%2F-LxUk24ktLcultFuKdw3%2F-LxUllcdWwHAgjRBNPHa%2Fimage.png?alt=media\&token=b27488b5-13ad-4a17-8ac0-347f70418e3d)

**Java运行过程**

编译：通过javac命令&#x628A;*.java文件编译成*.class文件。

运行：把字节码文件加载至JVM，JVM把它解释成对应的机器码在不同的系统上运行。

* 2.易学性：（C++语法的简化版，也称为c++-）Java语法与C、C++很接近，容易学习和使用。
* 3.面向对象：Java提供类、接口和继承等功能，为安全起见，类与类之间只支持单多层继承，但支持接口与接口间的单多继承，类与接口之间单多实现（关键字implements）。
* 4.分布式：Java语言支持Internet应用的开发，在基本的Java应用编程接口中有一个网络应用编程接口（java net），它提供了用于网络应用编程的类库，包括URL、URLConnection、Socket、ServerSocket等。Java的RMI（远程方法激活）机制也是开发分布式应用的重要手段。
* 5.健壮性。Java的强类型机制、异常处理、垃圾自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。
* 6.解释型语言。Java程序在Java平台上被编译为字节码格式，然后可以在实现这个Java平台的任何系统的解释器中运行。“write once，run everywhere”。
* 7.性能高。与解释型（如Python）语言相比，Java的性能还是较优的。
* 8.支持多线程的。在Java语言中，线程是一种特殊的对象，它必须由Thread类（实现Runnable接口）或其子（孙）类来创建。

## Java核心机制

JVM（Java Virtual Machine）Java虚拟机和GC（Garbage Collection）垃圾回收。

**JVM**：一台虚拟的计算机，具有指令集以及使用不同的存储区域。负责执行指令，管理数据、内存、寄存器。针对不同的平台，有不同的虚拟机。如JVM for Windows、JVM for Mac等。

JVM机制屏蔽了底层运行平台的差别，实现了“一次编译，到处运行”。

![](https://3884904792-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LfnT30K7z1iNbyIaGVh%2F-LxUk24ktLcultFuKdw3%2F-LxUmG56DljyWQ5I_v76%2Fimage.png?alt=media\&token=fa85921b-6027-4850-a5c0-f88f96582b4f)

关系：用户——字节码文件（可执行的Java程序）——JVM——操作系统——硬件。

## JDK、JRE、JVM

* JDK java development kit：Java开发工具，提供给开发人员使用的，包含Java开发工具和JRE。JDK=JRE+Java开发工具集。
* JRE java runtime environment：Java运行环境，包含JVM和Java程序运行所需的核心类库。如果只是运行一个编写好的Java程序，只需安装JRE即可。简单而言，使用JDK的开发工具完成的java程序，交给JRE去运行。JRE=JVM+核心类库。
* JVM java virtual machine：Java虚拟机 保证Java跨平台的核心机制。通过JIT【Java in Time Complier，解释器】把bytecode字节码文件解释成特定的机器码。

联系：包含关系，JDK 包含JRE，JRE包含JVM。

![](https://3884904792-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LfnT30K7z1iNbyIaGVh%2F-LxUk24ktLcultFuKdw3%2F-LxUn0pgeoVPWa1a1zTV%2Fimage.png?alt=media\&token=a1f603b6-dfbe-44c8-9ecb-20bfbfed5fcc)
