跟基哥学Java,学必会!微信号:qinjiquan927

原来的认识

JDK就是一个Java开发工具集,先从oracle的官网下载,再安装,配置好path环境变量就可以使用了,基本在使用javac 和 java这两个命令。
image.png
image.png

JDK的架构图

image.png
JDK可以说是整个Java的一个核心,JDK包含了两个产品:JDK和JRE!
JDK里面就包含了JRE,所以我们搞定JDK一个产品就完事!
JDK = Java Language + Tools和Tool APIs + JRE
JRE = Deployment + Java SE API + Java Virtual Machine
Java SE API = User Interface Toolkits + Compact Profiles
Compact Profiles = Integration Libraries + Other Base Libraries + lang and util base Libraies
其实作为一个普通的开发人员,我们基本都是在调用Java SE API

Tools & Tool APIs(工具和工具API)

image.png

java

Java运行时启动器,在jdk和jre的bin目录下都存在这样的命令。

java [ 选项 ] 类名 [ args ]
java [ 选项 ] -jar 文件名 [ args ]
javaw [ 选项 ] 类名 [ args ]
javaw [ 选项 ] -jar 文件名 [ args ]
java命令和javaw命令差不多,只是java有命令窗口,而javaw没有。

javac

Java编程语言编译器javac读取用Java编程语言编写的源文件,并将它们编译为字节码类文件。可选地,编译器还可以使用可插拔注释处理API处理在源文件和类文件中找到的注释。编译器是命令行工具,但也可以使用Java Compiler API调用。编译器接受Java语言规范(JLS)定义的源代码,并生成Java虚拟机规范(JVMS)定义的类文件。

javadoc

Javadoc是一种工具,用于解析一组源文件中的声明和文档注释,并生成一组描述类,接口,构造函数,方法和字段的HTML页面。
一般都是使用工具来生成:idea
image.png
image.png
image.png

jar

JAR(Java存档)是一种与平台无关的文件格式,可将许多文件聚合为一个文件。可以将多个Java小程序及其必需的组件(.class文件,图像和声音)捆绑到JAR文件中,然后通过一次HTTP事务将其下载到浏览器中,从而大大提高了下载速度。JAR格式还支持压缩,从而减小了文件大小,从而进一步缩短了下载时间。

javap


反汇编一个或多个类文件。

jdeps


Java类依赖性分析器。

Scripting

可以使用以下工具来运行与Java平台进行交互的脚本。
image.png

Security

这些安全工具可帮助您在系统上设置安全策略,并创建可以在远程站点设置的安全策略范围内工作的应用程序。
image.png

Monitoring

您可以使用以下工具来监视JVM性能统计信息。
image.png

JConsole

Java故障排除,性能分析,监视和管理工具
兼容JMX的图形工具,用于监视Java虚拟机。它可以监视本地和远程JVM。它还可以监视和管理应用程序。
image.png

VisualVm

一种图形工具,提供有关基于Java技术的应用程序(Java应用程序)在Java虚拟机中运行时的详细信息。Java VisualVM提供内存和CPU性能分析,堆转储分析,内存泄漏检测,对MBean的访问以及垃圾回收。

JMC

Java Mission Control(JMC)客户端包括用于监视和管理Java应用程序的工具,而不会引入通常与这些类型的工具相关的性能开销。

JFR

java飞行记录器JFR(java flight recorder)快速的查看诊断工具的,如果要深入分析还是需要使用JMC

JPDA

Java平台调试器体系结构(JPDA)
Java平台调试器体系结构(JPDA)包含三个接口,供调试器在桌面系统的开发环境中使用。Java虚拟机工具接口(JVM TI)定义了VM必须提供的用于调试的服务。Java调试线协议(JDWP)定义了在正在调试的进程与调试器前端之间传输的信息和请求的格式,该格式实现了Java调试接口(JDI)。Java调试接口在用户代码级别定义信息和请求。

JVM TI

JVM工具接口(JVM TI)是供工具使用的本机编程接口。它提供了一种检查状态并控制Java虚拟机(JVM)中运行的应用程序执行的方式。JVM TI支持需要访问JVM状态的全部工具,包括但不限于:性能分析,调试,监视,线程分析和覆盖率分析工具。

IDL-远程调用测试工具

当创建使用OMG标准IDL和CORBA / IIOP的应用程序时,将使用这些工具。
image.png

RMI-远程访问调用工具

这些工具有助于创建通过Web或其他网络进行交互的应用程序。
image.png

Java DB-数据库

Java DB是基于Java编程语言和SQL的关系数据库管理系统。Java DB是Apache Derby项目(Apache软件基金会(ASF)的开源关系数据库项目)的Oracle版本

Deployment-部署工具

与在网络上部署Java应用程序和小程序结合使用的实用程序。
image.png

Internationalization-国际化工具

该工具有助于创建可本地化的应用程序。
image.png

Web Services

Java web Services Tools.
image.png

Troubleshooting

故障排除工具

以下工具可用于特定的故障排除任务。本节中描述的工具本质上不受支持并且是 实验性的,应牢记使用它们。它们可能在将来的JDK版本中不可用。
其中一些工具当前在Windows平台上不可用
image.png

Deployment

image.png

Java Web Start

Java Web Start是一种应用程序部署技术,使您能够从Web浏览器中单击以启动功能齐全的应用程序。您现在可以下载并启动应用程序,例如完整的电子表格程序或Internet聊天客户端,而无需执行复杂的安装过程。
Java Web Start包含Java平台的安全性功能,因此您的数据和文件的完整性不会受到损害。此外,Java Web Start技术使您可以在任何浏览器中使用最新的Java SE技术。
使用Java Web Start,您只需单击网页链接即可启动应用程序。如果您的计算机上没有该应用程序,则Java Web Start将自动下载所有必需的文件。然后,它将文件缓存在您的计算机上,以便您随时可以通过桌面上的图标或浏览器链接重新启动该应用程序。无论使用哪种方法启动应用程序,都会始终为您提供应用程序的最新版本。

Applet/Java Plug-in


ava运行时环境(JRE)中包含的Java插件技术(以下称为“ Java插件”)使Java小程序能够在桌面上的Web浏览器中运行。Java插件为Web浏览器中的小程序提供了强大的功能,同时以向后兼容的方式提高了小程序的整体可靠性和功能。
Java插件运行一个或多个Java虚拟机实例(JVM),这些实例重新连接到浏览器,以实现与周围网页的完全互操作性
image.png

User Interface Toolkits

image.png

JavaFx

JavaFX是一组图形和媒体包,使开发人员能够设计,创建,测试,调试和部署可在不同平台上一致运行的富客户端应用程序。

Swing

Swing实现了一组用于构建图形用户界面(GUI)并向Java应用程序添加丰富的图形功能和交互性的组件。Swing组件完全用Java编程语言实现。可插入的外观使您可以创建在各个平台上看起来相同可以采用当前OS平台(例如Microsoft Windows,Solaris™或Linux)外观的GUI 。

Java 2D

Java 2D API是用于高级2D图形和成像的一组类。它在单个综合模型中包含线条图,文本和图像。该API为图像合成和Alpha通道图像提供了广泛的支持,提供了准确的色彩空间定义和转换的一组类,以及一系列面向显示的图像运算符。这些类是对java.awt和java.awt.image软件包的补充

AWT

抽象窗口工具包(AWT)支持图形用户界面(GUI)编程。AWT功能包括:

  • 一组本机用户界面组件
  • 强大的事件处理模型
  • 图形和成像工具,包括形状,颜色和字体类
  • 布局管理器,用于不依赖于特定窗口大小或屏幕分辨率的灵活窗口布局
  • 数据传输类,用于通过本机平台剪贴板进行剪切和粘贴

Swing类是建立在AWT架构之上。

Accessibility-辅助

本指南包含以下部分:

  • 启用辅助功能:如果您具有设计用于Microsoft Windows辅助技术的Java应用程序,请参阅本节以启用Java Access Bridge。
  • 程序员指南:如果要开发可访问的Java应用程序或与Java应用程序一起工作的辅助技术产品,请参阅本节。

    Drag and Drop

    通过拖放,可以在Java编程语言和本机应用程序之间,Java编程语言应用程序之间以及单个Java编程语言应用程序内进行数据传输。
    对拖放的支持主要是在AWT包中实现的,但Swing GUI类还内置了其他支持。在许多情况下,可以通过在Swing组件上调用单个方法来启用拖放支持。

    Input Methods

    输入法框架使文本编辑组件和用于输入文本的输入法之间的协作成为可能。输入法是软件组件,使用户可以通过键盘上的简单键入以外的其他方式输入文本。它们通常用于在键盘上使用较少键的键盘上输入日文,中文或韩文(使用数千个不同字符的语言)。但是,该框架还支持其他语言的输入方法,并支持使用完全不同的输入机制,例如手写或语音识别。

    Image I/O

    通过JSR-015开发的Java Image I / O API 提供了一种可插拔的体系结构,用于处理存储在文件中并通过网络访问的图像。与以前的用于加载和保存图像的API相比,它提供了更大的灵活性和功能。
    该API提供了用于添加特定于格式的插件的框架。Java Image I / O包含几种常用格式的插件,但是第三方可以使用此API创建自己的插件来处理特殊格式。

    Print Service

    Java Print Service API允许在所有Java平台上进行打印,包括需要占用空间小的平台,例如Java ME概要文件,但也支持该 java.awt.print.PrinterJobAPI。Java Print Service API包括一个可扩展的打印属性集,该属性集基于IETF的Internet打印协议(IPP)1.1中指定的标准属性。借助属性,客户端和服务器应用程序可以发现并选择具有属性所指定功能的打印机。除了所包含的StreamPrintService(允许应用程序将数据转码为不同格式)外,第三方还可以通过服务提供商接口动态安装其自己的打印服务。

    Sound

    Java平台包括一个强大的API,用于捕获,处理和播放音频和MIDI(乐器数字接口)数据。该API由高效的声音引擎支持,可确保平台的高质量音频混合和MIDI合成功能。

    Integration Libraries-集成块

    image.png

    IDL

    Java IDL技术向Java平台添加了CORBA(通用对象请求代理体系结构)功能,从而提供了基于标准的互操作性和连接性。Java IDL使启用Web的分布式Java应用程序可以使用对象管理组定义的行业标准IDL(对象管理组接口定义语言)和IIOP(Internet间ORB协议)透明地调用远程网络服务上的操作。运行时组件包括Java ORB,用于使用IIOP通信进行分布式计算。

    JDBC

    Java数据库连接(JDBC)API提供了从Java编程语言进行的通用数据访问。使用JDBC API,您几乎可以访问任何数据源,从关系数据库到电子表格和平面文件。JDBC技术还为构建工具和备用接口提供了通用基础。

    JNDI

    Java命名和目录接口(JNDI)为使用Java编程语言编写的应用程序提供命名和目录功能。它被设计为独立于任何特定的命名或目录服务实现。因此,可以以通用方式访问各种服务(新的,新兴的和已部署的服务)。

    RMI

    Java远程方法调用(Java RMI)使程序员能够创建基于分布式Java技术的应用程序到基于Java技术的应用程序,其中可以从其他Java虚拟机(可能在不同的主机上)调用远程Java对象的方法。RMI使用对象序列化来封送和取消封送参数,并且不截断类型,支持真正的面向对象的多态性。

    RMI-IIOP

    Internet上的ORB协议间Java远程方法调用(RMI-IIOP)是Java平台标准版(Java SE)的一部分。RMI编程模型允许通过rmi API 对CORBA服务器和应用程序进行编程。您可以选择完全使用Java远程方法协议(JRMP)作为传输工具在Java编程语言中工作,或者选择使用Internet InterORB协议(IIOP)与其他符合CORBA的编程语言一起工作。
    RMI-IIOP利用Java CORBA对象请求代理(ORB)和IIOP,因此您可以用Java编程语言编写所有代码,并使用rmic编译器生成通过Internet InterORB协议连接应用程序所需的代码( IIOP),以其他任何CORBA兼容语言编写。要使用其他语言的CORBA应用程序,可以使用带有-idl选项的rmic编译器从Java编程语言界面生成IDL 。要生成IIOP存根和联系类,请使用带有-iiop选项的rmic编译器。

    Scripting

    脚本和动态类型化语言的许多实现都生成Java字节码,因此程序可以像实际Java程序一样在Java平台上运行。以这种方式实现语言(或作为脚本语言的Java解释器类)实现Java平台的所有优点:脚本实现可以利用Java平台的二进制可移植性,安全性和高性能字节码执行功能。

    Other Base Libraries

    image.png

    Beans

    JavaBeans组件API将Java平台的一次写入,随处运行功能扩展为可重用的组件开发。实际上,JavaBeans体系结构使互操作性向前迈出了重要的一步-您的代码可以在每个OS上以及任何应用程序环境中运行。基于JavaBeans架构(beans)创建组件的开发人员可以确保新兴网络软件市场的未来,而不会失去使用专有平台的客户,因为bean与ActiveX,OpenDoc和LiveConnect互操作。JavaBeans的长期持久性使您可以读写bean作为其属性值的文本表示形式。

    Security

    Java安全技术包括大量的API,工具和常用安全算法,机制和协议的实现。Java安全API涵盖了广泛的领域,包括加密,公共密钥基础结构,安全通信,身份验证和访问控制。Java安全技术为开发人员提供了用于编写应用程序的全面安全框架,并且还为用户或管理员提供了一套用于安全管理应用程序的工具。

    Serialization

    对象序列化支持将对象和可从它们访问的对象编码为字节流。序列化还支持从流中补充重建对象图。序列化用于轻量级的持久性,以及用于通过套接字或Java远程方法调用(Java RMI)进行通信。对象的默认编码可保护私有数据和瞬态数据,并支持类的演变。一个类可以实现自己的外部编码,然后单独负责外部格式。
    现在,序列化包含一个API,该API允许独立于类的字段指定对象的序列化数据,并允许使用现有协议将这些序列化数据字段写入流或从流中读取,以确保与默认写入和阅读机制。

    Extension Mechanism-

    此功能已被弃用,并将在以后的版本中删除。
    可选软件包是应用程序开发人员可以用来扩展核心平台功能的类(以及任何相关的本机代码)的软件包。扩展机制允许Java虚拟机(VM)使用可选扩展的类,其方式与VM使用Java平台中的类的方式几乎相同。扩展机制还提供了一种方法,当尚未在JDK或JRE中安装所需的可选软件包时,它们可以从指定的URL中检索。

    JMX-Java Management Extensions (JMX)

    Java管理扩展(JMX)API是用于管理和监视资源(例如应用程序,设备,服务和Java虚拟机)的标准API。JMX技术最初是通过Java社区流程(JCP)作为Java规范请求(JSR)3(Java管理扩展)和JSR 160(JMX远程API)开发的。
    JMX技术的典型用途包括:

  • 咨询和更改应用程序配置

  • 累积有关应用程序行为的统计信息并使它们可用
  • 通知状态更改和错误条件。

JMX API包括远程访问,因此,出于这些目的,远程管理程序可以与正在运行的应用程序进行交互。

XML JAXP

XML(可扩展标记语言)是一种灵活的方式来创建通用信息格式,并在万维网,Intranet和其他地方共享格式和数据。想要以一致的方式共享信息的任何个人或团体或公司可以使用XML。XML,是万维网联盟(W3C)的正式建议),类似于当今的网页语言,即超文本标记语言(HTML)。XML和HTML都包含描述页面或文件内容的标记符号。但是,HTML仅根据网页的显示和交互方式来描述网页的内容(主要是文本和图形图像)。例如,

开始一个新段落。XML根据正在描述的数据来描述内容。例如,可能指示其后的数据是电话号码。这意味着XML文件可以由程序纯粹作为数据处理,也可以与类似数据一起存储在另一台计算机上,或者可以像HTML文件一样显示。例如,根据接收计算机中的应用程序希望如何处理电话号码,可以对其进行存储,显示,

Networking

网络设施概述java.net,包括寻址,建立TCP连接,通过UDP发送/接收数据报包,定位/识别网络资源以及安全性。

Override Mechanism

JNI

Java本机接口(JNI)是用于编写Java本机方法并将Java虚拟机嵌入本机应用程序的标准编程接口。主要目标是本机方法库在给定平台上的所有Java虚拟机实现之间的二进制兼容性。

Date and Time

JDK 8中引入的Date-Time API是一组用于对日期和时间的最重要方面进行建模的软件包。java.time包中的核心类使用ISO-8601(基于Gregorian日历系统)中定义的日历系统作为默认日历。可以使用java.time.chrono包表示其他非ISO日历系统,并提供几种预定义的时间顺序,例如Hijrah和Thai Thai。

Input/Output

Java I / O支持包含在java.iojava.nio 软件包中。这些软件包一起包括以下功能:

  • 通过数据流,序列化和文件系统进行输入和输出。
  • 字符集,解码器和编码器,用于在字节和Unicode字符之间进行翻译。
  • 访问文件,文件属性和文件系统。
  • 使用异步或多路复用的非阻塞I / O构建可扩展服务器的API。

    Inernationalization

    国际化是设计应用程序的过程,这样它可以在不进行工程更改的情况下适应各种语言和地区。有时,国际化一词缩写为i18n,因为第一个“ i”和最后一个“ n”之间有18个字母。

    Lang and util Base Libraies

    image.png

    lang and util

    java.langjava.util包提供所使用的几乎所有应用程序的基本功能。其他软件包的名称以特定功能开头 java.langjava.util提供补充API。

    Math

    数学功能包括浮点库(java.lang.Mathjava.lang.StrictMath)和任意精度数学(java.math包)。

    Collections

    集合框架是用于表示和操作集合的统一体系结构,使它们可以独立于其表示的细节进行操作。它减少了编程工作,同时提高了性能。它实现了不相关的API之间的互操作性,减少了设计和学习新API的工作量,并促进了软件重用。该框架基于十几个收集接口。它包括这些接口的实现和用于操纵它们的算法。

    Ref Object

    提供引用对象类,该类支持与垃圾回收器进行有限程度的交互。

    Regular Expressions

    用于将字符序列与正则表达式指定的模式进行匹配的类。

    Logging

    包java.util.logging中引入的Java Logging API 通过生成适合最终用户,系统管理员,现场服务工程师和软件开发团队进行分析的日志报告,促进了客户站点的软件服务和维护。日志API捕获信息,例如安全失败,配置错误,性能瓶颈和/或应用程序或平台中的错误。
    核心软件包包括支持将纯文本或XML格式的日志记录传递到内存,输出流,控制台,文件和套接字。此外,日志记录API能够与主机操作系统上已经存在的日志记录服务进行交互。

    Management

    Java Platform Standard Edition为Java平台提供了全面的监视和管理支持。

    Instrurmentation

    java.lang.instrument软件包提供了Java™编程语言API,可用于检测Java编程语言应用程序的工具-例如,监视它们或收集性能信息。工具用于 java.lang.instrument修改定义类的类文件-通常,通过将将执行检测的其他字节码插入方法的字节码中。

    Concurrency Utilities

    并发实用程序包为高性能线程实用程序(例如线程池和阻塞队列)提供了功能强大的可扩展框架。该软件包使程序员无需手工制作这些实用程序,这与集合框架对数据结构的处理方式几乎相同。此外,这些软件包为高级并发编程提供了低级原语。

    Reflection

    反射使Java代码可以发现有关已加载类的字段,方法和构造函数的信息,并在安全性限制内使用反射的字段,方法和构造函数对其基础副本进行操作。该API容纳需要访问目标对象的公共成员(基于其运行时类)或给定类声明的成员的应用程序。它还允许程序禁止默认的反射访问控制。

    Versioning

    版本控制功能支持程序包级别的版本控制,以便应用程序和小程序可以在运行时标识特定Java Runtime Environment,VM和类程序包的版本。

    Preferences API

    应用程序需要首选项和配置数据,以适应不同用户和环境的需求。所述的java.util.prefs包提供应用程序存储和检索用户和系统参数和配置数据的方法。数据永久存储在与实现相关的后备存储中。偏好节点有两棵单独的树,一棵用于用户偏好,一棵用于系统偏好。

    JAR

    JAR(Java存档)是一种与平台无关的文件格式,可将许多文件聚合为一个文件。可以将多个Java小程序及其必需的组件(.class文件,图像和声音)捆绑到JAR文件中,然后通过一次HTTP事务将其下载到浏览器中,从而大大提高了下载速度。JAR格式还支持压缩,从而减小了文件大小,从而进一步缩短了下载时间。此外,小程序作者可以对JAR文件中的各个条目进行数字签名以验证其来源。它是完全可扩展的。

    Zip

    提供用于读取和写入标准ZIP和GZIP文件格式的类。

    Java Virtual Machine

    Java HotSpot Client and Server VM