• 第一章 JAVA语言概述


    1.1 JAVA概述

    Java语言是詹姆士·高斯林发明的,Java的名字来自于一种咖啡的品种名称,所以Java语言的Logo是一杯热气腾腾的咖啡。詹姆斯·高斯林等人于1990年初开发Java语言的雏形,最初被命名为Oak。随着1990年代互联网的发展,Sun公司看见Oak在互联网上应用的前景,于是改进了Oak,并于1995年5月以Java的名称正式发布。

    在这里插入图片描述

    1.1.1 JAVA语言发展历史

    • 1991年, Green项目,开发语言最初命名为Oak (橡树)
    • 1994年,开发组意识到Oak 非常适合于互联网
    • 1995年,Java语言诞生
    • 1996年,发布JDK 1.0,约8.3万个网页应用Java技术来制作
    • 1997年,发布JDK 1.1,JavaOne会议召开,创当时全球同类会议规模之最
    • 1998年,发布JDK 1.2,同年发布企业平台J2EE
    • 1999年,SUN公司发布Java的三个版本:标准版(J2SE)、企业版(J2EE)和微型版(J2ME)
    • 2001年,J2EE 1.3发布
    • 2002年,J2SE 1.4发布,自此Java的计算能力有了大幅提升
    • 2004年,J2SE 1.5的发布成为Java语言发展史上的又一里程碑。为了表示该版本的重要性,J2 SE 1.5更名为Java SE 5.0
    • 2005年,J2SE -> JavaSE,J2EE -> JavaEE,J2ME -> JavaME
    • 2009年,Oracle公司收购SUN,交易价格74亿美元
    • 2011年,发布JDK 7.0
    • 2014年,发布JDK 8.0,是继JDK 5.0以来变化最大的版本(市场主流版本)
    • 2017年,发布JDK 9.0,最大限度实现模块化
    • 2018年3月,发布JDK 10.0
    • 2018年9月,发布JDK 11.0
    • 2019年3月,Oracle公司发布Java SE12
    • 2019年9月,Oracle公司发布Java SE13

    1.1.2 JAVA技术体系平台

    针对不同的开发市场,SUN公司将Java划分为三个技术平台,它们分别是JavaSE、JavaEE和JavaME。

    1. Java SE(Java Standard Edition)标准版

    Java SE(Java Platform Standard Edition)标准版,是为开发普通桌面和商务应用程序提供的解决方案。JavaSE是三个平台中最核心的部分,JavaEE和JavaME都是从JavaSE的基础上发展而来的,JavaSE平台中包括了Java最核心的类库,如集合、IO、数据库连接以及网络编程等。

    1. Java EE(Java Enterprise Edition)企业版

    Java EE(Java Platform Enterprise Edition) 企业版,是为开发企业级应用程序提供的解决方案。Java EE可以被看作一个技术平台,该平台用于开发、装配以及部署企业级应用程序,主要包括Servlet、JSP、JavaBean、JDBC、EJB、Web Service等技术。

    1. Java ME(Java Micro Edition)小型版

    Java ME(Java Platform Micro Edition) 小型版,是为开发电子消费产品和嵌入式设备提供的解决方案。JavaME主要用于小型数字电子设备上软件程序的开发。例如,为家用电器增加智能化控制和联网功能,为手机增加新的游戏和通讯录管理功能。此外,Java ME还提供了HTTP等高级Internet协议,使移动电话能以Client/Server方式直接访问Internet的全部信息,提供高效率的无线交流。

    1.1.3 JAVA在各领域的应用

    从Java的应用领域来分,Java语言的应用方向主要表现在以下几个方面:
    • 企业级应用:主要指复杂的大企业的软件系统、各种类型的网站。Java的安全机制以及它的跨平台的优势,使它在分布式系统领域开发中有广泛应用。应用领域包括金融、电信、交通、电子商务等。
    • Android平台应用:Android应用程序使用Java语言编写。Android开发水平的高低很大程度上取决于Java语言核心能力是否扎实。
    • 大数据平台开发:各类框架有Hadoop,spark,storm,flink等,就这类技术生态圈来讲,还有各种中间件如flume,kafka,sqoop等等 ,这些框架以及工具大多数是用Java编写而成,但提供诸如Java,scala,Python,R等各种语言API供编程。
    • 移动领域应用:主要表现在消费和嵌入式领域,是指在各种小型设备上的应用,包括手机、PDA、机顶盒、汽车通信设备等。

    1.1.4 JAVA语言主要特征

    1. 简单性

    Java语言是一种相对简单的编程语言,它通过提供最基本的方法完成指定的任务。程序设计者只需理解一些基本的概念,就可以用它编写出适用于各种情况的应用程序。Java丢弃了C++中很难理解的运算符重载、多重继承等概念;特别是Java语言使用引用代替指针,并提供了自动的垃圾回收机制,使程序员不必担忧内存管理。

    1. 面向对象

    Java语言提供了类、接口和继承等原语,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C++语言只对虚函数使用动态绑定。总之,Java语言是一个纯粹的面向对象程序设计语言。

    1. 安全性

    Java安全可靠,例如,Java的存储分配模型可以防御恶意代码攻击。此外,Java没有指针,因此外界不能通过伪造指针指向存储器。更重要的是,Java编译器在编译程序时,不显示存储安排决策,程序员不能通过查看声明猜测出类的实际存储安排。Java程序中的存储是在运行时由Java解释程序决定。

    1. 跨平台性

    Java通过JVM(虚拟机)以及字节码实现跨平台。Java程序由javac编译器编译成为字节码文件(.class)文件, JVM中的Java解释器会将.class文件翻译成所在平台上的机器码文件,执行对应的机器码文件就可以了。Java程序只要“一次编写,就可到处运行”。

    1. 支持多线程

    Java语言支持多线程。所谓多线程可以简单理解为程序中多个任务可以并发执行,多线程可以在很大程度上提高程序的执行效率。

    1. 分布性

    Java是分布式语言,既支持各种层次的网络连接,又可以通过Socket类支持可靠的流(stream)网络连接。用户可以产生分布式的客户机和服务器,在这个过程中,网络变成软件应用的分布式运载工具。

    1.2 JAVA程序运行机制

    1.2.1 JAVA语言的特点

    1.面向对象

    两个基本概念:类、对象

    三大特性:封装、继承、多态

    2.健壮性

    吸收了C/C++语言的优点,但去掉了其影响程序健壮性的部分(如指针、内存的申请与释放等),提供了一个相对安全的内存管理和访问机制

    3.跨平台性

    跨平台性:通过Java语言编写的应用程序在不同的系统平台上都可以运行。“Writeonce , Run Anywhere”
    原理:只要在需要运行 java 应用程序的操作系统上,先安装一个Java虚拟机 (JVM JavaVirtual Machine) 即可。由JVM来负责Java程序在该系统中的运行。

    在这里插入图片描述

    1.2.2 JAVA两种核心机制

    1. JAVA虚拟机(Java Virtal Machine)
    • JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器。
    • 对于不同的平台,有不同的虚拟机。
    • 只有某平台提供了对应的java虚拟机,java程序才可在此平台运行
    • Java虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行”

    在这里插入图片描述

    1. 垃圾收集机制(Garbage Collection)
    • 不再使用的内存空间应回收—— 垃圾回收。
      • 在C/C++等语言中,由程序员负责回收无用内存。
      • Java 语言消除了程序员回收无用内存空间的责任:它提供一种系统级线程跟踪存储空间的分配情况。并在JVM空闲时,检查并释放那些可被释放的存储空间。
    • 垃圾回收在Java程序运行过程中自动进行,程序员无法精确控制和干预。
    • Java程序还会出现内存泄漏和内存溢出问题吗?Yes!

    1.3 JDK的使用

    1.3.1 什么是JDK,JRE

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

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

    在这里插入图片描述

    1.3.2 下载JDK

    官方网址:

    • www.oracle.com

    从Oracle官网下载安装文件“jdk-8u212-windows-x64.exe”

    • java.sun.com

    1.3.3 安装JDK

    • 傻瓜式安装,下一步即可。
    • 建议:安装路径不要有中文或者空格等特殊符号。
    • 如果操作系统是64位的,软件尽量选择支持64位的(除非软件本身不区分)。
    • 当提示安装 JRE 时,正常在JDK安装时已经装过了,但是为了后续使用Eclipse等开发,可以继续安装。
    • 工具不报错,建议也根据提示安装JRE。

    安装流程:

    1. 开始安装JDK

    从Oracle官网下载安装文件“jdk-8u201-windows-x64.exe”,双击文件,进入JDK 8安装界面

    在这里插入图片描述

    1. 自定义安装功能和路径

    在步骤1图中,单击【下一步】按钮进入JDK自定义安装界面,如图。

    在这里插入图片描述

    在本步骤图中,左侧有三个功能模块,每个模板具有特定功能如下:

    • 开发工具:开发工具是JDK中的核心功能模块,包含一系列可执行程序,如javac.exe、java.exe等,还包含了一个专用的JRE环境。
    • 源代码:是Java提供公共API类的源代码。
    • 公共JRE:是Java程序的运行环境。由于开发工具中已经包含了一个JRE,因此没有必要再安装公共的JRE环境,此项可以不作选择。

    开发人员可以根据自己的需求选择所要安装的模块,本教材选择“开发工具”模块。另外,在图中所示的界面右侧有一个【更改】按钮,单击该按钮进入更改JDK安装目录的界面,如图。

    在这里插入图片描述

    1. 完成JDK安装

    在步骤2中选择安装路径之后,单击【下一步】按钮开始安装JDK。安装完毕后会进入安装完成界面,如右图。

    在这里插入图片描述

    JDK安装完毕后,会在磁盘上生成一个目录,该目录被称为JDK安装目录,如图。

    在这里插入图片描述

    1. bin目录:该目录用于存放一些可执行程序,如javac.exe(Java编译器)、java.exe(Java运行工具)、jar.exe(打包工具)和javadoc.exe(文档生成工具)等。其中最重要的就是javac.exe和java.exe。
    • javac.exe是Java编译器,它可以将编写好的Java文件编译成Java字节码文件(可执行的Java程序)。Java源文件的扩展名为.java,如HelloWorld.java。编译后生成对应的Java字节码文件,字节码文件的扩展名为.class,如HelloWorld.class。
    • java.exe是Java运行工具,它会启动一个Java虚拟机(JVM)进程,Java虚拟机相当于一个虚拟的操作系统,专门负责运行由Java编译器生成的字节码文件(.class文件)。
    1. db目录:db目录是一个小型的数据库。从JDK 6开始,Java中引入了一个新的成员JavaDB,这是一个纯 Java 实现、开源的数据库管理系统。这个数据库不仅轻便,而且支持JDBC 4所有的规范,在学习JDBC时,不需要再额外地安装一个数据库软件,选择直接使用JavaDB即可。
    2. jre目录:jre是Java Runtime Environment的缩写,意为Java程序运行时环境。该目录是Java运行时环境的根目录,它包含Java虚拟机、运行时的类包、Java应用启动器以及一个bin目录,但不包含开发环境中的开发工具。
    3. include目录:由于JDK是使用C和C++开发的,因此在启动时需要引入一些C语言的头文件,该目录就是用于存放这些头文件的。
    4. lib目录:lib是library的缩写,意为Java类库或库文件,是开发工具使用的归档包文件。
    5. src.zip文件与javafx-src.zip文件:这两个文件中放置的是JDK核心类的源代码和JavaFX源代码,通过这两个文件可以查看Java基础类的源代码。

    1.3.4 配置环境变量

    根据windows系统在查找可执行程序的原理,可以将java工具所在路径定义到
    path 环境变量中,让系统帮我们去找运行执行的程序。

    配置方法:

    • 我的电脑–属性–高级系统设置–环境变量
    • 编辑 path 环境变量,在变量值开始处加上java工具所在目录,后面用 “ ; ”和其他值分隔
    • 开即可。
    • 打开DOS命令行,任意目录下敲入javac。如果出现javac 的参数信息,配置成功。

    在这里插入图片描述

    path路径中输入:

    %JAVA_HOME%\bin;
    
    • 1

    1.3.5 验证是否安装成功

    在这里插入图片描述

    1.4 第一个JAVA程序

    1.4.1 编写程序

    class HelloWorld {
        public static void main(String[] args) {
            System.out.println("hello world");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • class是一个关键字,用于定义一个类。在Java中,一个类就相当于一个程序,所有的代码都需要在类中书写。
    • HelloWorld是类的名称,简称类名。class关键字与类名之间需要用空格、制表符、换行符等任意的空白字符进行分隔。类名之后要写一对大括号,它定义了当前这个类的作用域。
    • 第2~4行代码定义了一个main()方法,该方法是Java程序的执行入口,程序将从main()方法开始执行类中的代码。
    • 第3行代码在main()方法中编写了一条执行语句“System.out.println(“hello world”);”,它的作用是打印一段文本信息并输出到屏幕,执行完这条语句,命令行窗口会输出“hello world”。

    在编写程序时,程序中出现的空格、括号、分号等符号必须采用英文半角格式,否则程序会出错。

    1.4.2 运行程序

    单击【开始】→【所有程序】→【附件】→【运行】(或者使用快捷键Win+R),打开程序运行窗口,如图。

    在这里插入图片描述

    在上图的运行窗口中输入“cmd”,单击【确定】按钮打开命令行窗口,如图:

    在这里插入图片描述

    编译Java源文件,输入“javac HelloWorld.java”命令,编译HelloWorld.java源文件。

    在这里插入图片描述

    运行Java程序,编译文件之后,javac命令执行完毕后,会在bin目录下生成HelloWorld.class字节码文件。在命令行窗口输入“java HelloWorld”命令,运行编译好的字节码文件,运行结果如图。

    在这里插入图片描述

    在Java程序编写、编译以及运行的过程。第一,在使用javac命令进行编译时,需要输入完整的文件名。第二,在使用java命令运行程序时,需要的是类名,而非完整的文件名。

    在使用javac命令编译HelloWorld.java程序时,可能会出现“找不到文件”的错误。
    原因:
    可能是文件的扩展名被隐藏了,虽然文本文件被重命名为“HelloWorld.java”,但实际上该文件的真实文件名“HelloWorld.java.txt”,文件类型并没有得到修改。
    解决方法:
    让文件显示扩展名,文件显示出扩展名.txt后,将其重命名为HelloWorld.java即可。

    1.5 编辑器

    1.5.1 Notepad++

    1.5.2 eclipse

    1.5.3 IDEA

    IDEA(全称IntelliJ IDEA)是用于Java程序开发的集成环境(也可用于其他语言),它在业界被公认是最好的Java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、创新的GUI设计等方面的功能可以说是超常的。IDEA是JetBrains公司开发的产品,开发人员是以严谨著称的东欧程序员为主。

    1. 安装IDEA开发工具
  • 相关阅读:
    ctfshow MengXIn misc1
    19. 内置 Tomcat 配置和切换
    ISO IEC 27001-2022 《信息安全、网络安全和隐私保护 信息安全管理系统 要求》
    RabbitMQ 集群
    「算法小记」-1:Ackermann函数/阿克曼函数的一点思考解法【递归/非递归/堆栈方法】(C++ )
    STM32_PID通用算法增量式和位置式
    Swin Transformer 论文精读,并解析其模型结构
    快速排序详解
    JVM_类加载过程
    HTML世界核心
  • 原文地址:https://blog.csdn.net/shield911/article/details/126773526