JDK基本库概述
看脚下,不断行,莫存顺逆。
剖析java的哪些源码
目前主要是java基本库的一些源码的分析,jvm工具的使用等等,后续可能还会结合hotspot源码来分析jvm原理,当然,这是一个比较高级的主题,根据时间和进度来定。
jdk版本
目前选定的是生产环境下使用最多的jdk1.8,具体版本号为 jdk1.8.0_181。
java的基本库包含哪些内容
根据jdk1.8的官方文档,主要分为两大类:
- Lang和util的包 - 提供基本的Object和Class类,原始类型的包装器类,基本的数学类等。
- 其他包 - IO,网络以及对象系列化等等等等。
Lang和Util库
具体包含如下:
库 | 描述 | 进一步了解 |
---|---|---|
Math | 浮点数计算以及任意精度计算 | Math |
监控与管理 | 对Java平台的全面监视和管理支持,包括Java虚拟机的监视和管理API,日志记录工具的监视和管理API,jconsole和其他监视实用程序,开箱即用的监视和管理,Java管理扩展(JMX)和Oracle的Platform Extension。 | 监控与管理 |
引用对象 | 引用对象支持与垃圾收集器的有限程度的交互。程序可以使用引用对象来维护对某个其他对象的引用,以使收集器仍可以回收后者的对象。在收集器确定给定对象的可到达性已更改之后的某个时间,程序也可能会收到通知。因此,引用对象可用于构建简单的缓存以及在内存不足时刷新的缓存,实现不阻止其键(或值)被回收的映射以及更灵活地安排事前清理操作Java终结机制所无法实现的方式。 | 对象引用 |
反射 | 反射使Java代码能够发现有关已加载类的字段,方法和构造函数的信息,并在安全性限制内使用反射的字段,方法和构造函数对对象的基础对象进行操作。 API容纳需要访问目标对象的公共成员(基于其运行时类)或给定类声明的成员的应用程序。程序可以禁止默认的反射访问控制。 | 反射 |
集合框架 | 集合是代表一组对象的对象。集合框架是用于表示集合的统一体系结构,使它们可以独立于表示的细节进行操作。它减少了编程工作,同时提高了性能。它允许无关API之间的互操作性,减少了设计和学习新API的工作量,并促进了软件重用。 | 集合框架 |
并发工具集 | 并发实用程序包提供了高性能线程实用程序(例如线程池和阻塞队列)的强大,可扩展的框架。该软件包使程序员无需手工制作这些实用程序,这与Collections Framework用于数据结构的方式几乎相同。此外,这些软件包为高级并发编程提供了低级原语。 | 并发工具集 |
日志 | 日志API通过生成适合最终用户,系统管理员,现场服务工程师和软件开发团队进行分析的日志报告,促进了客户站点的软件服务和维护。日志API捕获信息,例如安全失败,配置错误,性能瓶颈和/或应用程序或平台中的错误。 | 日志 |
首选项 | 首选项API为应用程序提供了一种存储和检索用户及系统首选项和配置数据的方式。数据永久存储在与实现相关的后备存储中。偏好节点有两棵单独的树,一棵用于用户偏好,一棵用于系统偏好。 | 首选项 |
其他包
具体包含内容如下:
库 | 描述 | 进一步了解 |
---|---|---|
I/O | java.io和java.nio软件包提供了一组丰富的API,用于管理应用程序的I / O。该功能包括文件和设备I / O,对象序列化,缓冲区管理以及字符集支持。此外,API支持可伸缩服务器的功能,包括多路复用,非阻塞I / O,内存映射和文件锁定。 | I/O |
对象系列化 | 对象序列化通过支持对象扩展了核心Java输入/输出类。对象序列化支持对象的编码以及从对象可访问的对象到字节流的编码。它支持从流中补充重建对象图。序列化用于轻量级的持久性,并用于通过套接字或远程方法调用(RMI)进行通信。 | 对象序列化 |
网络 | 提供用于网络功能的类,包括地址,用于使用URL和URI的类,用于连接到服务器的套接字类,网络安全功能等。 | 网络 |
安全 | 用于与安全相关的功能的API,例如可配置的访问控制,数字签名,身份验证和授权,加密,安全的Internet通信等。 | 安全 |
Java管理扩展(JMX) | Java管理扩展(JMX)API是用于管理和监视资源(例如应用程序,设备,服务和Java虚拟机)的标准API。典型用途包括咨询和更改应用程序配置,累积有关应用程序行为的统计信息以及通知状态更改和错误情况。 JMX API包括远程访问,因此,出于这些目的,远程管理程序可以与正在运行的应用程序进行交互。 | JMX |
此外,还包括很多,比如国际化、JNI、xml、扩展机制、Endorsed Standards Override Mechanism等等等等。
最后,注意除了基本库外,还定义了集成库,比如常用的jdbc,RMI,脚本化技术、JNDI技术等;以及用户接口库,比如AWT,声音,图像,打印服务等等等等,具体可以参照jdk1.8的官方文档做进一步了解。
源码研习计划
- 四大主题依次为集合、并发、IO和网络;优先级最高。
- 其他主题,分别为反射、对象引用机制,对象序列化技术、JMX以及安全;优先级较高。
总结
宏观统筹,本篇文章做到了宏观统筹,参考了jdk1.8的帮助文档,算是比较权威全面的。接下来开始微观入手,进入四大主题的第一个主题 - 集合框架。
JDK基本库概述的更多相关文章
- 【转】Struts1.x系列教程(4):标签库概述与安装
转载地址:http://www.blogjava.net/nokiaguy/archive/2009/01/archive/2009/01/archive/2009/01/archive/2009/0 ...
- 【C】 06 - 标准库概述
任何程序都会有一些通用的功能需求,对这些需求的实现组成了库.它可以提高程序的复用性.健壮性和可移植性,这也是模块化设计的体现.C规范定义了一些通用接口库,这里只作概述性介绍,具体细节当然还是要查阅规范 ...
- 第十一章:random库概述
random库是使用随机数的python标准库 伪随机数:采用梅森旋转算法生成的伪随机序列中的元素 random库主要用于产生随机数 使用random库:import random random库的概 ...
- [C/C++] C/C++延伸学习系列之STL及Boost库概述
想要彻底搞懂C++是很难的,或许是不太现实的.但是不积硅步,无以至千里,所以抽时间来坚持学习一点,总结一点,多多锻炼几次,相信总有一天我们会变得"了解"C++. 1. C++标准库 ...
- C++标准库概述 [转]
C++标准库的所有头文件都没有扩展名. C++标准库的内容总共在50个标准头文件中定义,其中18个提供了C库的功能.<cname>形式的标准头文件[<complex>例外]其内 ...
- Java基础总结01:JDK与JRE概述
1)JRE(Java Runtime Environment,Java运行时环境) 包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,如果想要运行一 ...
- C++标准库概述
一.C++标准库的主要组件: 1.标准C库 2.I/O流技术(对标准输入输出设备称为标准I/O,对在外磁盘上文件的输入输出称为文件I/O,对内存中指定的字符串存储空间的输入输出称为串I/O) 3.st ...
- MySQL01-数据库概述
1.概述 1.1 什么是数据库? 用于存储和管理数据的仓库. 1.2 数据库的特点: 1. 持久化存储数据的.其实数据库就是一个文件系统 2. 方便存储和管理数据 3. 使用了统一的方式操作数据库 - ...
- 【深入浅出 Yarn 架构与实现】2-1 Yarn 基础库概述
了解 Yarn 基础库是后面阅读 Yarn 源码的基础,本节对 Yarn 基础库做总体的介绍.并对其中使用的第三方库 Protocol Buffers 和 Avro 是什么.怎么用做简要的介绍. 一. ...
随机推荐
- Centos7_搭建暗网网站
Tor运行原理 请求方需要使用:洋葱浏览器(Tor Browser)来对暗网网站进行访问 响应放需要使用:Tor协议的的Hidden_service 搭建步骤 更新YUM源: rpm -Uvh htt ...
- 5. class--extends
ES5: function article(x,y){ this.x = x; this.y = y; } article.prototype.say = function() { return (t ...
- 移动(appium)自动化测试-爬虫的另一种手段
appium自动化测试环境搭建: 1.Python环境(推荐2.7)和jdk. 2.Adb工具的下载:自己单独下载adb.夜神模拟器自带和Android sdk 3.Apk安装介质:真机.Androi ...
- react: typescript integrate withRouter
define interface: export interface INav { nav: string } export interface IModuleItem { state?: strin ...
- 最通俗易懂的Redis发布订阅及代码实战
发布订阅简介 除了使用List实现简单的消息队列功能以外,Redis还提供了发布订阅的消息机制.在这种机制下,消息发布者向指定频道(channel)发布消息,消息订阅者可以收到指定频道的消息,同一个频 ...
- 实现Nginx Upload 模块 功能上传文件。
分析(也许我表达的让人难以理解,但是我想说一句,直接实践是最好的.....): 一.Ningx 上传( 1.安装Nginx 的模块文件(upload):https://www.nginx.com/re ...
- JVM 真的很难学么?不、只是你“不敢学”而已
JVM 真的很难学么?不.只是你"不敢学"而已 许多招聘的信息上面都说,要了解jvm.多线程什么的对于 java 程序员来说,这是工作好多年的程序员都不一定能掌握的东 ...
- redis5.0.3配置文件详解
Redis最新版本5.0.3配置文件详解 单位 #当你需要为某个配置项指定内存大小的时候,必须要带上单位, #通常的格式就是 1k 5gb 4m 等: #1k => 1000 bytes #1k ...
- [SVN] Couldn't perform atomic initialization
svn: Commit failed (details follow): svn: Couldn't perform atomic initialization It was because the ...
- WebLogic上的项目无法更新,删除项目缓存
/root/bea/user_projects/domains/base_domain/servers/AdminServer/tmp/ /root/bea/user_projects/domains ...