大江东去,浪淘尽,千古风流人物。

——苏轼《念奴娇》

[TOC]

Java语言概述,JDK安装和环境变量的配置

1. Java基础知识图解

JavaSE基础是学习JavaEE、大数据、Android开发的基石!

1568533435076

1.1 程序设计

  • 定义:创建(或开发)软件。软件包含了指令,告诉计算机做什么。
  • 应用场景:软件遍布我们周围。除了个人计算机,飞机、汽车、手机甚至烤面包机中,同样运行着软件。

1.2 程序设计语言

如何选择该学习哪种程序设计语言?

  • 程序设计语言有很多种,每种语言都是为了实现某个特定的目的而发明的。
  • 你会困惑哪种语言是最好的。事实上,没有“最好”的语言。每种语言都有它的长处和短处。
  • 关键是学习如何使用程序设计方法来解决问题。

1.3 软件开发介绍

  • 软件开发
    • 软件,即一系列按照特定顺序组织的计算机数据和指令的集合。
    • 有系统软件和应用软件之分。
    • 不同的计算机语言针对不同的软件各有各的优势。
  • 人机交互方式
    • 图形化界面(Graphical User Interface GUI)这种方式简单直观,使用者易于接受,容易上手操作。
    • 命令行方式(Command Line Interface CLI):需要有一个控制台,输入特定的指令,让计算机完成一些操作。较为麻烦,需要记录住一些命令。
语言发展趋势图统计网站:https://www.tiobe.com/tiobe-index/

2.计算机结构:硬件和软件

计算机包括硬件(hardware)和软件(software)两部分。

  • 硬件包括计算机中可以看得见的物理部分。

    • CPU:中央处理器,负责计算机的核心运算,它是计算机的最核心部件,指挥官。
    • 内存:临时存储区域,程序在运行的过程当中,一些数据的临时存储区域。
    • 主板:链接各个部件
    • 显卡、声卡
    • 鼠标、键盘
    • 硬盘[外存]:永久性保存,断电之后再启动,数据仍然存在,等。
  • 软件提供看不见的指令。这些指令控制硬件并且使得硬件完成特定的任务。

    • 系统软件
    • 应用软件

应用软件是运行在系统软件当中的,系统软件和底层硬盘交互。

2.1 计算机硬件

计算机组成图

计算机内部执行流程图

冯.诺依曼体系结构是现代计算机的基础,现在大多计算机仍是冯.诺依曼计算机的组织结构,只是作了一些改进而已,并没有从根本上突破冯体系结构的束缚。冯.诺依曼也因此被人们称为“计算机之父”。

2.1.1 中央处理器CPU

  • 中央处理器(Central Processing Unit,CPU)是计算机的大脑。它从内存中获取指令,然后执行这些指令。
  • 包括
    • 控制单元:用于控制和协调其他组件的动作。
    • 算术/逻辑单元:用于完成数值运算(+、-、*、/)和逻辑运算(比较)。
  • 每台计算机都有一个内部时钟,该时钟以固定速度发射电子脉冲。时钟速度越快,在给定的时间段内执行的指令就越多。速度的计量单位是赫兹(Hz),1Hz 相当于每秒1个脉冲。随着CPU速度不断提高,目前以千兆赫(GHz)来表述。
  • 最初一个CPU只有一个核(core)。核是处理器中实现指令读取和执行的部分。一个多核CPU是一个具有两个或者更多独立核的组件。可提高CPU的处理能力。

2.1.2 比特(bit)和字节(byte)

  • 计算机就是一系列的电路开关。每个开关存在两种状态:关(off)和开(on)。如果电路是开的,它的值是1。如果电路是关的,它的值是0。

  • 一个0或者一个1存储为一个比特(bit)。

  • 计算机中字节(byte)是最基本的存储单元。每个字节由8个比特构成。

  • 计算机的存储能力是以字节和多字节来衡量的。如下:

    千字节(kilobyte,KB) = 1024B
    兆字节(megabyte,MB) = 1024KB
    千兆字节(gigabyte,GB) = 1024MB
    万亿字节(terabyte,TB) = 1024GB

2.1.3 内存

  • 内存(也叫 Random-Access Memory,RAM):由一个有序的字节序列组成,用于存储程序及程序需要的数据。
  • 一个程序和它的数据在被CPU执行前必须移到计算机的内存中。
  • 每个字节都有一个唯一的地址。使用这个地址确定字节的位置,以便于存储和获取数据。
  • 一个计算机具有的RAM越多,它的运行速度越快,但是此规律是有限制的。
  • 内存与CPU一样,也构建在表面嵌有数百万晶体管的硅半导体芯片上。但内存芯片更简单、更低速、更便宜。

2.1.4 存储设备

  • 内存中的信息在断电时会丢失。那我们可以考虑将程序和数据永久的保存在存储设备上。当计算机确实需要这些数据时,再移入内存,因为从内存中读取比从存储设备读取要快得多。

  • 存储设备主要有以下三种:

    • 磁盘驱动器

      每台计算机至少有一个硬盘驱动器。硬盘(hard disk)用于永久的 保存数据和程序。

    • 光盘驱动器(CD和DVD)

      CD的容量可达700MB。
      DVD的容量可达4.7GB。

    • USB闪存驱动器

      USB: Universal Serial Bus,通用串行总线
      可以使用USB将打印机、数码相机、鼠标、外部硬盘驱动器连接到计算机上。USB闪存驱动器很小,可用于存储和传输数据的设备。

2.1.5 输入和输出设备

  • 常见的输入设备:键盘(keyboard)和鼠标(mouse)
  • 常见的输出设备:显示器(monitor)和打印机(printer)
  • 显示器屏幕分辨率:是指显示设备水平和垂直方向上显示的像素数。分辨率可以手工设置。分辨率越高,图像越锐化、越清晰。

2.1.6 通信设备

  • 计算机可以通过通信设备进行联网。
  • 常见的设备有:
    • 拨号调制解调器:使用的是电话线,传输速度可达56 000bps(bps:每秒比特)
    • DSL(数字用户线):使用的也是电话线,但传输速度叫上面的快20倍
    • 电缆调制解调器:利用有线电视电缆进行数据传输,通常速度比DSL快。
    • 网络接口卡(NIC):将计算机接入局域网(LAN)的设备。局域网通常用于大学、商业组织和政府组织。速度甚至可达1000Mbps
    • 无线网络:在家庭、商业和学校中极其常见。计算机可通过无线适配器连接到局域网或 Internet 上。

windows操作系统默认情况下是不显示文件扩展名的,作为程序员必须将文件的扩展名显示出来:

  • 计算机 –> 组织 –> 文件夹和搜索选项 –> 查看 –> 隐藏已知文件类型的扩展名。

2.2 操作系统 OS

操作系统(Operating System)是运行在计算机上的最重要的程序,它可以管理和控制计算机的活动。

  • 硬件、操作系统、应用软件和用户之间的关系如下图。

    1549020645519

  • 操作系统的主要任务:

    • 控制和监视系统的活动
    • 分配和调配系统资源
    • 调度操作

3. 计算机发展史上的鼻祖

3.1.阿兰·图灵(Alan Turing)

​ 最近半个世纪以来,世界计算机科学界的重大进步,离不开图灵等人的理论奠基作用和多方面的开创性研究成果。图灵是当之无愧的计算机科学和人工智能之父。甚至认为,他在技术上的贡献及对未来世界的影响几乎可与牛顿、爱因斯坦等巨人比肩。

​ 图灵论文中的“用有限的指令和有限的存储空间可算尽一切可算之物”理论让当时所有的科学家震惊.

​ 美国计算机学会(ACM)的年度“图灵奖”,自从1966年设立以来,一直是世界计算机科学领域的最高荣誉,相当于计算机科学界的诺贝尔奖。至今,中国人只有姚期智院士获该奖项。

3.2.冯·诺依曼(John von Neumann)

​ 20世纪最重要的数学家之一,在现代计算机、博弈论、核武器和生化武器等诸多领域内有杰出建树的最伟大的科学全才之一,被后人称为“计算机之父”和“博弈论之父”。

​ 计算机基本工作原理是存储程序和程序控制,它是由世界著名数学家冯·诺依曼提出的。最简单的来说,冯诺依曼理论的要点是:数字计算机的数制采用二进制;计算机应该按照程序顺序执行。

​ 同样有着“计算机之父”称号的冯·诺依曼的助手弗兰克尔在一封信中写到:“……计算机的基本概念属于图灵。按照我的看法,冯·诺依曼的基本作用是使世界认识了由图灵引入的计算机基本概念……

根据冯诺依曼体系结构构成的计算机,必须具有如下功能:

  • 把需要的程序和数据送至计算机中。
  • 必须具有长期记忆程序、数据、中间结果及最终运算结果的能力。
  • 能够完成各种算术、逻辑运算和数据传送等数据加工处理的能力。
  • 能够根据需要控制程序走向,并能根据指令控制机器的各部件协调操作。
  • 能够按照要求将处理结果输出给用户。

4. 万维网

万维网(World Wide Web, www)是从世界上任何地方的Internet都可以访问的电子信息宝库。Internet作为万维网的基础架构已经问世四十多年。丰富多彩的万维网和设计精良的Web浏览器是Internet流行的主要原因。

还记得推动Java发展的两大动力吗?

Java一开始富有吸引力是因为Java程序可以在Web浏览器中运行。这些java程序被称为java小程序(applet)。applet使用现代的图形用户界面与Web用户进行交互, applet内嵌在HTML代码中。万维网的兴起造就了如今Java语言的蓬勃发展。然而随着JDK版本的不断更新,在JDK9版本中已把applet标记为“不推荐使用”,取而代之的是更好的技术。

5. Java语言概述

5.1 Java技术体系平台

  1. Java SE ( Java Standard Edition ) 标准版
    • 支持面向桌面级应用(如Windows下的应用程序)的Java平台,提供了完整的Java核心API,此版本以前称为J2SE。
  2. Java EE ( Java Enterprise Edition )企业版
    • 是为开发企业环境下的应用程序提供的一套解决方案。该技术体系中包含的技术如:Servlet 、Jsp等,主要针对于Web应用程序开发,版本以前称为J2EE。
  3. Java ME(Java Micro Edition)小型版
    • 支持Java程序运行在移动终端(手机、PDA)上的平台,对Java API有所精简,并加入了针对移动终端的支持,此版本以前称为J2ME。
  4. Java Card
    • 支持一些Java小程序(Applets)运行在小内存设备(如智能卡)上的平台。

5.2 Java在各领域中的应用

从Java的应用领域来分,Java语言的应用方向主要表现在以下几个方面:

  • 企业级应用:主要指复杂的大企业的软件系统、各种类型的网站。Java的安全机制以及它的跨平台的优势,使它在分布式系统领域开发中有广泛应用。应用领域包括金融、电信、交通、电子商务等。
  • Android平台应用:Android应用程序使用Java语言编写。Android开发水平的高低很大程度上取决于Java语言核心能力是否扎实。
  • 移动领域应用,主要表现在消费和嵌入式领域,是指在各种小型设备上的应用,包括手机、PDA、机顶盒、汽车通信设备等。

5.3 Java语言的特点

  1. 面向对象
    • 两个基本概念:类、对象
    • 三大特性:封装、继承、多态
  2. 健壮性
    • 吸收了C/C++语言的优点,但去掉了其影响程序健壮性的部分(如指针、内存的申请与释放等),提供了一个相对安全的内存管理和访问机制。
  3. 跨平台性
    • 跨平台性:通过Java语言编写的应用程序在不同的系统平台上都可以运行。“Write once , Run Anywhere”
    • 原理:只要在需要运行 java 应用程序的操作系统上,先安装一个Java虚拟机 (JVM Java Virtual Machine) 即可。由JVM来负责Java程序在该系统中的运行。

5.4 Java两种核心机制

  • Java虚拟机 (Java Virtal Machine)

    • JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器。
    • 对于不同的平台,有不同的虚拟机。
    • Java虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行”
    • 推荐研究…
  • 垃圾收集机制 (Garbage Collection)

  • 在C/C++等语言中,由程序员负责回收无用内存。

    • Java 语言消除了程序员回收无用内存空间的责任:它提供一种系统级线程跟踪存储空间的分配情况。并在JVM空闲时,检查并释放那些可被释放的存储空间。
    • 垃圾回收在Java程序运行过程中自动进行,程序员无法精确控制和干预。

6. 搭建Java语言的环境

​ 首先要下载安装JDK,在目前的学习中推荐使用JDK7和JDK8以及JDK9,在学习的过程中可以钻研其中的更新以及带来对开发的影响,建议:安装路径不要有中文或者特殊符号如空格等。。

官网下载地址:https://www.oracle.com/downloads/
百度网盘:链接:https://pan.baidu.com/s/18khMY6bcJ0Rn1tYHW5JcEA 提取码:htku

6.1 JDK、JRE和JVM

JDK = JRE + 开发工具集(例如Javac编译工具等)
JRE = JVM + Java SE标准类库

  1. JDK( Java Development Kit Java开发工具包 )

    • JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE,所以安装了JDK,就不用在单独安装JRE了。其中的开发工具:编译工具(javac.exe) 打包工具(jar.exe)等
  2. JRE( Java Runtime Environment Java运行环境 )

    • 包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。
  3. JVM( Java Virtual Machine Java虚拟机 )

    • JRE由Java API和JVM组成,JVM通过类加载器(Class Loader)加类Java应用,并通过Java API进行执行。

6.2 JDK目录结构

目录 作用/功能
bin目录 Java工具的可执行文件,包括: java、Java编译器javac、反编译.class文件javap、密钥管理工具keytool、Java文档工具javadoc等。
db目录 Java实现的数据库。
include目录 .h头文件,C语言开发时用到的头文件。比如jni.h是开发jni程序时必须引用的头文件。
jre目录 Java运行环境。
lib目录 Java类库,我们经常看到的dt.jar和tools.jar就在这个目录下。
src.zip文件 Java类库源码,包括了rt.jar库中的关键部分;除了Java类库,还包含了启动器(launcher)的源码(C语言实现)。
COPYRIGHT文件 版权信息。

6.3 配置环境变量

为什么要配置环境变量?

  • 在dos命令行中敲入java.exe 报错:“java.exe” 不是内部或外部命令,也不是可以运行的程序。

错误原因:

​ 当前执行的程序在当前目录下如果不存在,windows系统会在系统中已有的一个名为path的环境变量指定的目录中查找。如果仍未找到,会出现以上的错误提示。所以进入到 jdk安装路径\bin目录下,执行java.exe,会看到java.exe 参数提示信息。

​ 每次执行 java 的工具都要进入到bin目录下,是非常麻烦的。可不可以在任何目录下都可以执行java的工具呢?根据windows系统在查找可执行程序的原理,可以将java工具所在路径定义到 path 环境变量中,让系统帮我们去找运行执行的程序。

环境变量配置方法:

==我的电脑–属性–高级系统设置–环境变量==

1568540478632

1568540519212

打开DOS命令行,任意目录下敲入javac。如果出现javac 的参数信息,配置成功。这样配置的目的是:方便我们在JDK各个版本之间进行过切换,而且后面运行tomcat的时候如果不通过JAVA_HOME来配置,我们就不能运行(tomcat文件夹里面bin目录中的setclasspath.bat文件),有兴趣的童鞋可以看一下。