1.[Java 基础]Java背景概述与开发环境部署


1. Java 语言的发展史

  1. 1990 年: Sun 公司成立由高斯林领导的 “Green 计划” , 计划为下一代智能家电编写一个通用控制系统。
  2. 1992 年: Green计划完成了一部分功能 , 但是并没有使用原计划的 C++ 语言 , 而是开发了一种全新的语言Oak , 这时也完成了对 Oak 语言的程序设计与类库.
  3. 1994 年: 完成第一个网页浏览器(WebRunner) , 同时将 Oak 改名为 Java.
  4. 1995 年: Sun 公司开源 Java
  5. 1996 年: Sun 公司发布 JDK 1.0
  • 这个版本包括两个部分 :

    • JRE (运行环境) : 包括 核心 API , 集成 API , 用户界面 API , 发布技术和JVM(Java 虚拟机) 5 个部分

    • JDK(开发环境) : 包括 编译 Java 程序的编译器(即 javac 命令)

  1. 1997 年: Sun 公司发布了 JDK 1.1 , 该版本增加了 JIT 编译器 (即时编译器)
  2. 1998 年: Sun 公司发布了 Java 历史上最重要的版本 JDK 1.2 , 同时发布的还有 Servlet / JSP , EJB 等规范 , 同时把 Java 分成了J2EE , J2ME , J2SE 三个版本.
  • Java 的三个版本
版本 说明
J2SE 整个 Java 技术的核心和基础 , 也是 J2ME 和 J2EE 的基础.
J2ME 主要控制移动设备和家电等有限存储的设备.
J2EE Java 技术中应用最广的部分 , 提供了企业应用开发相关的完整解决方案.
  • JDK 1.2 中还将 JavaAPI 分成了三个部分:
    API 说明
    核心 API 由 Sun 公司定制的基础 API , 也就是我们常说的 Java 核心类库.
    可选 API 由 Sun 公司提供的扩展 API , 这些 API 可能因平台不同而有些许差异.
    特殊 API 满足特殊要求的 API
  1. 2002 年: Sun 公司发布了当时为止最成熟的 JDK 1.4 , 在此期间 , 涌现出大量使用 Java 编写的优秀开源框架 , 如 Struts , Hibernate , Spring 等.
  2. 2004 年: Sun 公司发布了 JDK1.5 , 增加了泛型 , 增强 for 循环 , 可变数量的形参 , 注解等 , 还将 JDK 1.5 改名为 Java SE 5.0 , 同时将 J2ME 改为 Java ME , J2EE 改名为 Java EE.
  3. 2006 年: Sun 公司发布了 JDK 1.6 也称为 Java 6.0
  4. 2009 年: 没有发布 Java 版本 , 但是Sun公司被 Oracle 收购. Sun 公司虽然不复存在了 , 但是每一个 Java 程序员都应该深深的记住 SUN 这家伟大的公司.
  5. 2011 年: Oracle 发布了收购了 Sun 公司以来的第一个 Java版本 Java SE7 , 引入了 二进制整数 , 支持字符串的 switch 语句 , 菱形语法 , 多异常捕捉 , 自动关闭资源的 try 等新特性.
  6. 2014 年: Oracle 发布了 Java SE8 , 增加了 Lambda 表达式 , 流式编程等大量新特性.
  7. 2017 年: Oracle 发布了 Java SE9 , 增加了更智能的 G1 垃圾回收器 , 升级强化了 Java 的模块化系统.
  8. 2018 年 4 月 : Oracle 发布了 Java SE10 , 增加了 var 局部变量类型推断 , 移除 JDK 中附带的 javah 工具等.
  9. 2018 年 9 月 : Oracle 发布了 Java SE11 , 增加了 ZGC , Http Client 等重要特性. 要注意的是 Java SE11 是一个长期支持版本.
  10. 2021 年 3 月 : Oracle 发布了 Java SE 17 , 这是 Oracle 发布的继 Java SE11 之后的又一个 LTS 版本 , 增加了密封类(Sealed Class) , 增强型伪随机数生成器等诸多新的特性.

2. 高级语言的运行机制

计算机的高级语言按照程序执行的方式可以划分为 编译型解释型 两种:

  • 编译型语言 : 针对不同的平台有不同的编译器 , 将该语言经过编译器编译成平台硬件可执行的编码 , 通常编译型语言在编译完成之后即可脱离开发环境独立运行 , 且通常运行效率较高. 如 C , C++ , Objective-C , Swift 都属于编译型语言.

  • 解释型语言 : 使用专门的解释器对源代码逐行解释成特定平台的机器码并立即执行的语言 , 每次执行解释型语言都需要进行一次编译 , 所以运行效率通常较低 , 且不能脱离解释器独立运行 , 但是解释型语言的跨平台性较高. JavaScript , Ruby , Python 都属于解释型语言.

3. Java 语言的运行机制

Java 语言既有解释型语言的特征也有编译型语言的特征 , 因为 Java 语言需要经过先编译再解释的过程.

Java 语言在编译时 , 生成一种与平台无关的代码 , 即 class 字节码 , 这种字节码是不能够直接执行的 , 需要 Java 的解释器才能够在指定平台上执行.

Java 程序的执行 , 必须经过先编译后解释两个步骤 , 所以说 Java 语言既是编译型语言也是解释型语言.

Java程序编译与解释的过程

4. Java 虚拟机

  • Java 语言中负责解释字节码文件的部分就是 Java 虚拟机 , 即 JVM(Java Vertual Machine) .

  • JVM 是可以运行 Java 字节码文件的虚拟计算机 , 在 Java 支持的所有平台中的 JVM , 都提供着相同的编译接口 , 编译器只需要面向 JVM 生成 JVM 能够解释的字节码 , 再由 JVM 解释和执行编译后的代码.

  • JVM 是 Java程序跨平台的关键 , 只要为不同平台实现了相应的 JVM , 编译的字节码就可以在该平台运行.

  • JVM 是一个抽象的计算机 , 和实际计算机一样 , 具有指令集和不同的存储区域 , 它负责执行指令 , 还要管理数据 , 内存和寄存器.

  • Oracle 公司还定制了 JVM 统一标准的 指令集,寄存器,类的文件格式 ,栈,垃圾回收堆,存储区

JVM 实现跨平台

5. Java 开发环境介绍

在开发 Java 程序之前 , 首先需要安装 Java 开发环境 , 安装和配置 JDK.

JDK 全称是 Java SE Development Kit , 即 Java SE 开发套件 , 提供了编译 , 运行 Java程序所需的各种工具和资源 , 包括 Java 编译器 , Java 运行时环境 , 以及常用的 Java 类库等.

JRE 全称是 Java Runtime Environment , 即Java 运行时环境 , 是 Java程序的必须条件 , 如果只是运行 Java 程序 , 而不进行开发的话 , 只安装 JRE即可 , 无需安装 JDK.

JVM 是运行 Java 程序的核心虚拟机 , 但是运行 Java 程序不光需要 JVM 还需要类加载器 , 字节码校验器 , 和其他核心类库等 , 所以 JRE 除了包含 JVM 之外还有运行 Java 程序所必须的其他要素.

6. 安装 JDK

JDK 下载地址:

http://www.oracle.com/technetwork/java/javase/downloads/index.html

JDK 下载页

安装 JDK 1 安装 JDK 2 安装 JDK 3

JDK 安装完成之后可以在 JDK 安装文件夹中查看到相应的文件:

JDK 安装目录结构
路径 说明
bin 存放了 JDK 的各种工具命令 , 常用的 javac , java 等命令都放在该路径下.
conf 存放了 JDK 的相关配置
include 存放一些平台特定的头文件
jmods 存放了 JDK 的各种模块
legal 存放了 JDK 各个模块的授权文档
lib 存放了 JDK 工具的一些补充 jar 包,
COPYRIGHT 版权说明文件
LICENSE 开源许可证
release 正式版本说明

7. 配置环境变量

配置 Java 环境变量是为了让系统知道 Java 安装位置,使其能够找到 Java 相关的命令 , 如果不设置 Java 环境变量则会在执行 Java 命令时抛出 “xxx” 不是内部或外部命令的错误.

设置环境变量 1 设置 Java home 设置环境变量 在命令行中打印验证信息

到此为止 , Java 开发环境遍搭建完成 , 接下来可以编写一地个 Java 程序了。 下一章节介绍编写第一个 Java 程序


文章作者: hnbian
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 hnbian !
评论
 上一篇
2.[Java 基础]第一个Java程序与Jshell介绍 2.[Java 基础]第一个Java程序与Jshell介绍
1. 第一个 Java 程序 新建一个HelloWorld.java文件,然后在文件内写入如下代码: // Java 的第一个程序 // 对代码的相关说明 // 1. 表示 Hello 是一个public类,公有类 public clas
2018-01-03
下一篇 
hive mapjoin 内存溢出异常 hive mapjoin 内存溢出异常
1. 问题描述在hive中两张表进行join操作时有时会出现如下错误: Total MapReduce jobs = 4 2014-10-22 05:45:06 Starting to launch local task to p
2017-09-05
  目录