JavaNote-概述及安装

1. Java语言概述

1.1 Java概述

  • SUNStanford University Network,斯坦福大学网络公司)1995年推出的一门高级编程语言。

  • 是一种面向Internet的编程语言。Java一开始富有吸引力是因为Java程序可以在Web浏览器中运行。这些Java程序被称为Java小程序(Applet),内嵌在HTML代码中。

  • 伴随着互联网的迅猛发展,以及Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。

1.2 Java语言简史

起步阶段:

1991年,Sun公司的工程师小组想要设计一种语言,应用在家用电器的控制和通信。由于这些设备的处理能力和内存都很有限,并且不同的厂商会选择不同的中央处理器(CPU),因此这种语言的关键是:代码短小、紧凑且与平台无关

Gosling团队率先创造了这个语言,并命名为“Oak"。后因智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。

随着20世纪90年代互联网的发展,Sun公司发现该语言在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。

发展阶段:

发行版本 发行时间 备注
Java 1.0 1996.01.23 Sun公司发布了Java的第一个开发工具包
Java 1.1 1997.02.19 JavaOne会议召开,创当时全球同类会议规模之最。
Java 1.2 1998.12.08 Java拆分成:J2SE(标准版)、J2EE(企业版)、J2ME(小型版)
Java 1.3 2000.05.08
Java1.4 2004.02.06
Java 5.0 2004.09.30 ①版本号从1.4直接更新至5.0;②平台更名为JavaSE、JavaEE、JavaME
Java 6.0 2006.12.11 2009.04.20 Oracle宣布收购SUN公司
2009.04.20 Oracle公司收购SUN,交易价格74亿美元。
Java 7.0 2011.07.02
Java 8.0 2014.03.18 此版本是继Java 5.0以来变化最大的版本。是长期支持版本(LTS)
Java 9.0 2017.09.22 ①此版本开始,每半年更新一次;②Java 9.0开始不再支持windows 32位系统
Java 10.0 2018.03.21
Java 11.0 2018.09.25 JDK安装包取消独立JRE安装包,是长期支持版本(LTS)
Java 12.0 2019.03.19
... ...
Java17.0 2021.09 发布Java 17.0,版本号也称为21.9,是长期支持版本。
... ...
Java19.0 2022.09 发布Java19.0,版本号也称为22.9。
... ...

补充:Java之父——詹姆斯·高斯林(James Gosling)

image

詹姆斯·高斯林(James Gosling)先生以“Java 技术之父”而闻名于世。他是Java 技术的创始人,他亲手设计了Java语言,并开发了Java编译器和Java虚拟机,使Java成为了世界上最流行的开发语言。

James Gosling于1984 年加入Sun公司,并一直服务于Sun公司,直至2010年前后,Sun被Oracle并购而加入Oracle,担任客户端软件集团的首席技术官; 2010年4月从Oracle离职。

1.3 Java技术体系平台

  • Java SE(Java Standard Edition)标准版
    • 支持面向桌面级应用(如Windows下的应用程序)的Java平台,即定位个人计算机的应用开发
    • 包括用户界面接口AWT及Swing,网络功能与国际化、图像处理能力以及输入输出支持等。
    • 此版本以前称为J2SE
  • Java EE(Java Enterprise Edition)企业版
    • 为开发企业环境下的应用程序提供的一套解决方案,即定位在服务器端的Web应用开发
    • JavaEE是JavaSE的扩展,增加了用于服务器开发的类库。如:Servlet能够延伸服务器的功能,通过请求-响应的模式来处理客户端的请求;JSP是一种可以将Java程序代码内嵌在网页内的技术。
    • 版本以前称为J2EE
  • Java ME(Java Micro Edition)小型版
    • 支持Java程序运行在移动终端(手机、机顶盒)上的平台,即定位在消费性电子产品的应用开发
    • JavaME是JavaSE的内伸,精简了JavaSE 的核心类库,同时也提供自己的扩展类。增加了适合微小装置的类库:javax.microedition.io.*等。
    • 此版本以前称为J2ME

image

注意:Android开发不等同于Java ME的开发。

2. Java开发环境搭建

2.1 什么是JDK、JRE

  • JDK(Java Development Kit):是Java程序开发工具包,包含JRE 和开发人员使用的工具。
  • JRE(Java Runtime Environment):是Java程序的运行时环境,包含JVM 和运行时所需要的核心类库

如下是Java 8.0 Platform:

image

image

2.2 JDK版本选择

  • 八爷党:坚守Java的阵地,虽然Java如今都已经进入了20年代,但是依然是一些开发环境的主阵地。
  • 革命党:适应接受新的稳定版本。给开发者带来更加便利高效的体验。例如:
    • G1收集器:最受欢迎的GC算法。Java 11及更高版本的G1收集器是默认的GC,而Java 8中并不是。
    • 框架反推着开发人员使用更高的版本。在Java 17正式发布之前,Java开发框架Spring率先在官博宣布,Spring Framework 6和Spring Boot 3计划在2022年第四季度实现总体可用性的高端基线。意味着springboot3.0 是需要用java17和spring6.0为基础建设。如果从企业选型最新springboot3.0作为架构来说,它搭配jdk17肯定是标配了。

2.3 JDK的下载

  • 下载网址(Oracle公司官网):www.oracle.com
  • 下载步骤:如图所示,在官网底部选择Developers开发者

image

(1)在Developers页面中间的技术分类部分,选择Java,单击进入,如图所示:

image

(2)这里展示的是最新Java版本,例如Java20。下滑到 Java SE 栏目的位置。单击Download Oracle JDK,然后选择具体的版本下载。

image

image

(3)选择Download Oracle JDK按钮后,进入Download Java界面。选择对应版本点击下载链接下载。

image

(4)如果想安装Java 8版本的话,可以在当前页面继续下滑到如下位置:

image

(5)选择Accept License Agreement,点击下载。

image

(6)注册或登录后下载:

(7)如果需要安装其它历史版本,可以选择 Java archive

image

接着进行选择下载即可。

2.4 JDK的安装

  • 安装说明
    • 傻瓜式安装,下一步即可。
    • 建议:安装路径不要有中文或者空格等特殊符号。
    • 以JDK17版本为例。
  • 安装步骤:

(1)双击jdk-17_windows-x64_bin.exe文件,并单击下一步,如图所示:

image

(2)修改安装路径,单击更改,如图所示:

image

(3)将安装路径修改为D:\develop_tools\jdk\jdk-17.0.2\,并单击下一步,如图所示:

image

(4)稍后几秒,安装完成,如图所示:

image

image

2.5 配置path环境变量

为什么配置path?

  • path环境变量是window操作系统执行命令时,所要搜寻的路径。
  • 希望在命令行使用javac.exe等工具时,任意目录下都可以找到这个工具所在的目录。

JDK8配置方案:配置JAVA_HOME+path(推荐)

  • 步骤:

(1)打开桌面上的计算机,进入后在左侧找到计算机,单击鼠标右键,选择属性,如图所示:

image

(2)选择高级系统设置,如图所示:

image

(3)在高级选项卡,单击环境变量,如图所示:

image

(4)在系统变量中,单击新建 ,创建新的环境变量,如图所示:

image

(5)变量名输入JAVA_HOME,变量值输入 D:\develop_tools\jdk\jdk1.8.0_271 ,单击确定,如图所示:

image

(6)选中Path 环境变量,双击或者点击编辑 ,如图所示:

image

(7)在变量值的最前面,键入%JAVA_HOME%\bin。如图所示:

image

注意:强烈建议将%JAVA_HOME%\bin声明在path环境变量中所有变量的最前面!

(8)环境变量配置完成,重启DOS命令行,在任意目录下输入javac 或java命令或java -version,运行成功。

配置classpath,用于指名class文件识别的路径。其实是没必要的。

小结如下:

image

JDK17配置方案:自动配置

在我们安装完JDK17之后,理应按JDK8的方式配置path环境变量。但是,我们发现在安装完JDK17以后,配置环境变量之前,执行CMD指令:

image

竟然成功了!而且是17.0.2版本。因为JDK17在安装之后,自动进行了环境变量的配置。如下:

image

这里建议,将JDK17安装的路径,设置为JAVA_HOME,并将%JAVA_HOME%\bin上移到首位。

image

image

3. Java API文档

  • API (Application Programming Interface,应用程序编程接口)是 Java 提供的基本编程接口。

  • Java语言提供了大量的基础类,因此 Oracle 也为这些基础类提供了相应的说明文档,用于告诉开发者如何使用这些类,以及这些类里包含的方法。大多数Java书籍中的类的介绍都要参照它来完成,它是编程者经常查阅的资料。

  • Java API文档,即为JDK使用说明书、帮助文档。类似于字典。

  • 下载API文档:

4. Java核心机制:JVM

4.1 Java语言的优缺点

4.1.1 优点

  • 跨平台性:这是Java的核心优势。Java在最初设计时就很注重移植和跨平台性。比如:Java的int永远都是32位。不像C++可能是16,32,可能是根据编译器厂商规定的变化。

    • 通过Java语言编写的应用程序在不同的系统平台上都可以运行。“Write once , Run Anywhere”。
    • 原理:只要在需要运行 java 应用程序的操作系统上,先安装一个Java虚拟机 (JVM ,Java Virtual Machine) 即可。由JVM来负责Java程序在该系统中的运行。
  • 面向对象性:面向对象是一种程序设计技术,非常适合大型软件的设计和开发。面向对象编程支持封装、继承、多态等特性,让程序更好达到高内聚低耦合的标准。

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

  • 安全性高:Java适合于网络/分布式环境,需要提供一个安全机制以防恶意代码的攻击。如:安全防范机制(ClassLoader类加载器),可以分配不同的命名空间以防替代本地的同名类、字节代码检查。

  • 简单性:Java就是C++语法的简化版,我们也可以将Java称之为“C++--”。比如:头文件,指针运算,结构,联合,操作符重载,虚基类等。

  • 高性能:

    • Java最初发展阶段,总是被人诟病“性能低”;客观上,高级语言运行效率总是低于低级语言的,这个无法避免。Java语言本身发展中通过虚拟机的优化提升了几十倍运行效率。比如,通过JIT(JUST IN TIME)即时编译技术提高运行效率。

    • Java低性能的短腿,已经被完全解决了。业界发展上,我们也看到很多C++应用转到Java开发,很多C++程序员转型为Java程序员。

4.1.2 缺点

  • 语法过于复杂、严谨,对程序员的约束比较多,与python、php等相比入门较难。但是一旦学会了,就业岗位需求量大,而且薪资待遇节节攀升
  • 一般适用于大型网站开发,整个架构会比较重,对于初创公司开发和维护人员的成本比较高(即薪资高),选择用Java语言开发网站或应用系统的需要一定的经济实力。
  • 并非适用于所有领域。比如,Objective C、Swift在iOS设备上就有着无可取代的地位。浏览器中的处理几乎完全由JavaScript掌控。Windows程序通常都用C++或C#编写。Java在服务器端编程和跨平台客户端应用领域则很有优势。

4.2 JVM功能说明

JVMJava Virtual Machine ,Java虚拟机):是一个虚拟的计算机,是Java程序的运行环境。JVM具有指令集并使用不同的存储区域,负责执行指令,管理数据、内存、寄存器。

image

4.2.1 功能1:实现Java程序的跨平台性

我们编写的Java代码,都运行在JVM 之上。正是因为有了JVM,才使得Java程序具备了跨平台性。

image

使用JVM前后对比:

image

4.2.2 功能2:自动内存管理(内存分配、内存回收)
  • Java程序在运行过程中,涉及到运算的数据的分配存储等都由JVM来完成
  • Java消除了程序员回收无用内存空间的职责。提供了一种系统级线程跟踪存储空间的分配情况,在内存空间达到相应阈值时,检查并释放可被释放的存储器空间。
  • GC的自动回收,提高了内存空间的利用效率,也提高了编程人员的效率,很大程度上减少了因为没有释放空间而导致的内存泄漏

即使有GC的自动回收功能,Java程序还会出现内存溢出和内存泄漏问题!

猜你喜欢

转载自blog.csdn.net/2301_78834737/article/details/131990547