JAVA8 最完整的全新的日期和时间API介绍

JAVA8新特性指路:
0.理解代码参数化和函数式编程
1.全新的时间API
2. optinal的用法
3. lambda表达式
4.Stream流



一、介绍

1.1 java的日期处理API

  1. 从Java 1.0 开始,就引入了Date类,但是API不好用,并且无法处理闰秒
  2. Java1.1 引入Calendar类
  3. 第三次引入的API 最成功,就是 java8的 Java.time API,它纠正了过去的缺陷

java8的 java.time API

  1. java.time对象都是不可变的
  2. 一个瞬间(Instant) 是时间线上的一个点
  3. java时间中,每天都是86400秒 没有闰秒
  4. 持续时间 Duration 是两个瞬间之间的时间
  5. localDateTime 没有时区信息
  6. TemporalAdjuster(时间调节器)方法,可以处理常用的日历计算



1.2 我们这个世界的时间线

秒的定义:

是地球完成一次自转的86400分之一,但是地球自传时间并不完全不变,所以秒,需要更精确的定义,在1967年,秒被定义为,铯133原子的固有属性定义出秒,此后官方时间根据原子钟网络同步。

问题:绝对时间需要与地球自转同步,从1972年喀开始,采取的措施改为插入“闰秒”,这样一天就并非为86400秒了

JAVA时间规范:

  1. 一天86400秒
  2. 每天正午与官方世界时间精确匹配
  3. 其他时间也要以精确方式与其匹配
  4. 原点: 1970年的1月1日的午夜,与unix/posix时间一样的约定,向前向后分别以纳秒为单位。Instant表示时间线上的时间点,Instant.MIN可以退回10亿年之前。Instant.MAX标识 10000000000年的12月31日。Instant重写了equals和compareTo方法,可以进行比较
  5. 计算两个,Instant差值,可以使用静态方法Duration.between()
  6. Instant.now() 可以获取到当前时间,两个Instan的差值,可以用Duration保存
    //时间线德一个点 从1970-01 00:00:00 作为起点
    Instant now= Instant.now();
    System.out.println(now);
    Instant nextDay=now.plus(1, ChronoUnit.DAYS);
    Duration dayDuration=Duration.between(now,nextDay);
    
    System.out.println(dayDuration);
    System.out.println(dayDuration.toDays());
    System.out.println(dayDuration.toHours());
    System.out.println(dayDuration.toMinutes());
    System.out.println(dayDuration.toMillis());
    Millis());
    System.out.println(dayDuration.toNanos());
    
    



二、LocalDate 本地日期

2.1 为什么要有去时区的日期

  1. 在新的API中,人类的时间分为两种 1、本地日期/时间 2、带时区的时间和日期
  2. 有些计算不需要时区,例如每周一10点,此时如果不同地区的人用带时区时间点加上七天对应的秒,反而可能会由于时区的原因导致时间不准。
  3. 如果不是非要确定绝对的瞬时点,不推荐使用带时区的时间。
  4. 除了LocalDate之外 java8还有许多的分日期。例如 MonthDay YearMonth Year

本地日期的理解: 对于各个不同地区的人来说,日常没有时区的概念,而且对于各个时区的人来说,每年都是一样得365/366个日期。所以如果不是确定不同时区的同一时间点,一般不需要使用时区这一概念。

2.2 创建localDate

LocalDate类

  1. 通过LocalDate.now() 可获得不包含时区的本地日期。为了确定本地的日期创建LocalDate需要当前的时区信息才能初始化。如果不指定,则是根据操作系统确定。Clock.systemDefaultZone()

    LocalDate now = LocalDate.now();
    now=LocalDate.now(Clock.systemDefaultZone());
    
  2. 指定年月日来手动创建,localDate 抛弃了UNIX时间系统中,从0开始的反人类做法,月份从1开始。月份信息除了用数字,也可以用月份的枚举表示-java.time.Month

    LocalDate birthday=LocalDate.of(1998,1,6);
    birthday=LocalDate.of(1998, Month.JANUARY,6);
    

2.3 LocalDate的常用方法

方法描述
now、of静态方法,获取LocalDate实例
plusDays,plusWeek,plusMonth,plusYear为当前LocalDate对象,增加年月日周
minusDays,minusWeek,minusMonth,minusYear为当前LocalDate对象,减去年月日周
plus,minus添加或者减少一个Duration或Period
withDayOfMonth,withDayOfYear,withMonth,withYear将月份、天数、年份、修改为指定的值,并且返回一个新的LocalDate对象
with传入TemporalAdjuster 来调整时间。LocalDate也是TemporalAdjuster 的实现类。其实是对当前Temporal使用TemporalAdjuster的adjustInto方法
adjustInto传入 Temporal对象(例如LocalDate) 继承自TemporalAdjuster 的方法,将传入的对象,调整为和当前对象一样的日期。大多数情况下用反转调用模式With方法 更清楚。
getDayOfMonthgetDayOfYeargetDayOfWeek返回月份的天数返回年份的天数返回星期返回一个DayOfWeek的枚举值
getMonth、getMonthValue获取当前月份、返回1-12的整形,或者Month枚举
getYear获取年份-9999999999~999999999
Util获取两个日期之间的Period周期,或者指定ChronoUnits,返回整形。
isBefore、isAfter比较两个日期哪个更早
isLeapYear按照能被4或者400整除,但不能被100整除 判断是否是闰年。返回布尔值

2.4 LocalDate的距离-Period

  1. LocalDate的距离类似时间线上的Duration

  2. 有些时候,直接使用Duration可能并不准确,对于并不确定时长的时间例如 月份(不同月的月份和相同的月份对应的Duration有可能不相同)

  3. Period存储的结果,包含了年相差的数字 月相差的数字 日相差的数字

  4. Peroid可以由两个LocalDate得出差值,也可以使用其预定义的of方法来生成

    //生成Period
    //其预定义的方法
    birthday.plus(Period.ofYears(1));
    //上方LocalDate的plus(Duration/Peroid) 等效下方
    birthday.plusYears(1);
    
    //LocalDate的until方法能快速计算两个本地日期之间的距离 计算本身到目标日期的时间距离。
    LocalDate christmas=LocalDate.of(2021,12,25);
    //period可以理解为 now 加上多少年 加上多少月 再加上多少天 正好等于christmas
    Period period= now.until(christmas);
    
  5. Peroid对象,可以分别获取其包含的 年月日的差值但是并不常用,因为无法衡量差距的具体时间长度

  6. Peroid可以转化为指定的的** TemporalUnit(实现类为ChronoUnits)**

  7. Peroid也可以进行加减调整

    Period period= now.until(christmas);
    //间隔的年月都无法得到准确的天数,所以一般不常用。
    System.out.println(period.getYears()+"年 "+period.getMonths()+"月 "+period.getDays());
    //获取period的天数
    System.out.println(now.until(christmas,ChronoUnit.DAYS));
    System.out.println(period.get(ChronoUnit.DAYS));
    

2.5 日期校正器 TemporalAdjuster

介绍

  1. 对于有时候,需要按照时间调度执行的程序,可能回有一些需求,类似 每月第一个周二,这种日期。
  2. TemporalAdjusters 类,提供了许多静态方法获取TemporalAdjuster
  3. Locadate newlocaldate=oldLocalDate.with(TemporalAdjusters)
  4. LocalDate本身也是TemporalAdjuster的一种

TemporalAdjuster

  1. TemporalAdjuster是一个函数式接口 Temporal adjustInto(Temporal temporal);

  2. Locadate也实现了TemporalAdjuster,作用是将传入的日期调整到和当前对象同样的日期相当于使用Temporal.with(TemporalField, long)传递ChronoField.EPOCH_DAY作为字段更推荐使用with方法。

    public LocalDate with(TemporalAdjuster adjuster) {
        // optimizations
        if (adjuster instanceof LocalDate) {
            return (LocalDate) adjuster;
        }
        return (LocalDate) adjuster.adjustInto(this);
    }
    
  3. 自定义TemporalAdjuster的时候,表达式参数类型为 Temporal,如果需要用于LocalDate则需要进行强制转换。可以使用TemporalAdjusters.UnaryOperator() 来避免强制转换。



三、LocalTime 本地时间

3.1 LocalTime 介绍

  1. 和LocalDate类似,可以通过LocalTime.now() 来获取当前时间的实例 或者通过,localTime.of(时,分,秒) 来获得一个LocalTime实例

3.2 LocalTIme的常用方法

方法描述
now、of创建LocaTime实例的静态方法
plusHours、plusMinutesplusSeconds、plusNanos向当前LocalTime对象添加几小时、几分钟、几秒钟、几微秒
minusHours、minusMinutesminusSeconds、minusNanos向当前LocalTime对象减去几小时、几分钟、几秒钟、几微秒
plus、minus当前LocalTime增加或减少指定的时间单位的时间
winthHour、withMinutewithSecond、withNano单独调整某个时间单位至制定的值
getHour,getMinutegetSecond,getNano单独获取某个时间部位的值
toSecondOfDaytoNanoOfDay返回从零点开始,至当前时间经过的秒数或者微秒数
isBefore、isAfter两个LocaTime进行比较



四、ZoneDateTime 带时区的时间

4.1 什么是时区

        由于地球的自传公转决定了,我们生活在地球上,无法完全按照同一个时间来安排生活和社会活动。否则的话,可能有人在12:00吃午饭,但是对于另一地区来说,他们可能02:00 才对应着真正的太阳直射时间。
        所以人们便自己创建了时区机制、来保证能更合理的安排生产生活。时区机制,比自传公转这些问题更加复杂。目前世界时区的数据库,由因特网编号管理局(Interent Assigned Number Authority) IANA 来维护,每年会更新几次,来处理夏令时规则的变化。JAVA便是使用了IANA的数据库。

4.2 为什要有夏令时DST(Daylight Saving Time)

在这里插入图片描述

什么是夏令时: 夏令时一般是在昼长夜短的夏季,人为的将时钟拨快一小时。假如夏天5点天亮,如果作息习惯不变,按照原来的习惯,早上6点关灯的话,就浪费了一小时的电量。所以当夏天来临,就实行夏令时机制,将始终拨快,这样的话,原本五点天亮,六点关灯,就变成了,五点天亮,五点关灯,因为始终拨快后的六点,便对应着原来的五点了。
我国停止使用夏令时: 我们在1986年开始使用夏令时,在1991年宣布不再使用。夏令时有种掩耳盗铃的意味,在不同的季节,调整作息时间比起粗暴的波动时针可能更合理 1、夏令时相当于强制改变人的作息习惯 2、夏令时造成某些时间出现两次极其混乱 3、我国横跨五个时区,夏令时并不够通用 4、节约的照明电量有限,反而会增加制冷耗电

4.3 CST和GMT是什么意思

GMT (Greenwich Mean Time) 格林威治标准时,用标准世界时UTC表示则为UTC+0

CST

  1. 在中国表示中国标准时,对应已命名的时区标准就是Asia/Shanghai
  2. Asia/Shanghai会兼容地区的历史上各个时间节点,例如中国1986~1991实行了夏令时,在1992年开始 CST 就和UTC+8完全一致了。
  3. 我国虽然横跨五个时区,但是为了方便生产生活,统一只用了一个时区 CST
  4. JAVA还有个OffsetDateTime类,专门用来处理只带有UTC偏移量的时间,但是没有关联地区的时区规则,一般用来处理不需要时区规则的程序。对于人类的时间,应使用ZonedDateTime

4.4 java对夏令时的处理

  1. 夏令时开始时,直接把时间往后调一小时,那么对于LocalDate将直接消失1消失,如果使用消失的LocalDate来初始化一个ZoneDateTime 那么生成的ZoneDateTime时间会和尝试设置的不同,但是这是正确的。
  2. 夏令时结束时,直接把日期往前调整1消失,对于LocalDateTime来说,同样的一个小时,将会出现两遍。用这个重复的时间来初始化ZoneDateTime 那么将会得到第一次的那个时间。对于LocalDateTime来说,一天内的这个重合的时间完全一样,但是对于ZoneDateTime来说,偏移量是有区别的。
  3. 对于跨夏令时的时间处理,为了和人类的时间一致,不能直接添加Duration对象,而应该使用Period对象来进行处理。

4.5 ZoneDateTime 的常见用法

//1、获取当前所有的时区ID 大约600个
Set<String> availableZoneId = ZoneId.getAvailableZoneIds();

//2、根据时区ID获取ZoneId对象,ZoneId对象能用来初始化TimeZone
ZoneId GMT= ZoneId.of("GMT");
TimeZone timeZone= TimeZone.getTimeZone(GMT);
System.out.println(timeZone);

//3、LocaDateTime能通过atZone(zoneid) 来转化为 ZoneDateTime
LocalDateTime currentTime=LocalDateTime.now();
System.out.println("本地时区时间:"+currentTime);
System.out.println("GMT带时区时间:"+currentTime.atZone(GMT));

//4、通过手动设置日期、时间、时区来初始化 ZoneDateTime
ZonedDateTime zonedDateTime=ZonedDateTime.of(2021,11,28,01,34,00,0,ZoneId.systemDefault());

//5、带时区的时间点都是可以转化为一个Instant对象的,Instant对象也可以转换为对应的时区的时间
Instant instant=zonedDateTime.toInstant();
ZonedDateTime zonedDateTime1=instant.atZone(GMT);
//2021-11-28T01:34+08:00[Asia/Shanghai]
System.out.println(zonedDateTime);
//2021-11-27T17:34Z[GMT]
System.out.println(zonedDateTime1);

4.6 ZoneDateTime 的常用方法

ZonedDateTime 和 LocalDateTime 中的方法几乎一样,而且意义都显而易见。只是夏令时带来了一些复杂性。

方法描述
now、of、ofInstant创建一个ZonedDateTime
plusXXX例如 :Day、Weeks、Months、Years、Hours、minutes、Seconds、Nanos添加对应时间单位的时间
minusXXX例如 :Day、Weeks、Months、Years、Hours、minutes、Seconds、Nanos从当前时间减去对应时间单位的时间
plus、minus添加或者减少一个Duration 或者Period
withDayOfMonth,withDayOfYear,withMonth,withYear,winthHour、withMinutewithSecond、withNano单独调整对应时间单位的值,返回新的ZonedDateTime
withZoneSameInstantwithZoneSameLocal获取同一个时间点的另一个时区的ZonedDateTime或者获取同一个本地时间,不同时间点的另一个时区的ZonedDateTime
getDayOfMonth getDayOfYeargetDayOfWeek获取131之间的月份中的第几天获取1366一年中的天数获取星期几 或者DayOfWeek枚举
getMonth、getMonthValue获取月份 或者获取Month的枚举
getYear获取年份
getHour 、Minute、Second、Nano获取时间信息
getOffset获取对应时间点对应的时区的偏移量因为对应地区的时区信息并不是简单地,GMT+n UTC+n ,往往还涉及历史原因或者夏令时制度,所以不同时间点的偏移量是不一样的。一般在-12:00 至 +14之间,涉及夏令时可能还有分钟的区别
toLocalDate 、toLocalTime、toInstant转换为本地时间、或者对应的时间点
isBefore isAfter比较两个对象



五、DateTimeFormatter 格式化和解析

5.1 DateTimeFormatter 的三种转换方式

DateTimeFormatter 提供了三种方式来格式化日期/时间

  1. 使用预定义的标准格式化时间(fromat方法)
  2. 语言环境相关的格式
  3. 自定义格式
    如果考虑向后兼容,需要一个 java.util.DateFormat对象,那么可以使用 toFormat() 方法再转换为DateFormat对象。

5.2 标准格式化解析(时间戳)

  1. DateTimeFormatter 预定义了一些静态对象,来用于解析TemporalAccessor 成常用的时间格式
  2. 预定义格主要用于机器可读的时间戳,如果要让人可读则可以使用预定义的语言环境相关的格式化方式

在这里插入图片描述

5.3 语言环境相关的格式化风格

  1. JAVA 8 对日期和时间各定义了四种风格 SHORT、MEDIUM、LONG 、FULL
  2. 可以使用ofLocalizedDate、ofLocalizedTime、ofLocalizedDateTime来创建这类格式
  3. 这些方法,默认使用当前的语言环境,可以使用withLocal(Local.XX) 来改变语言环境
风格日期时间
SHORT7/16/699:32 AM
MEDIUMJul 16,19699:32:00 AM
LONGJul 16,19699:32:00 AM EDT
FULLWendsday,Jul 16,19699:32:00 AM EDT
LocalDate localDate=LocalDate.now();
LocalTime localTime=LocalTime.now();
ZonedDateTime zonedDateTime=ZonedDateTime.now();
//1、解析成预定义的标准化格式  2021-11-27T19:12:11.623Z
System.out.println(DateTimeFormatter.ISO_INSTANT.format(zonedDateTime));
//2、四种解析风格 SHORT、MEDIUM、LONG 、FULL
// 2021年11月28日 星期日 上午03时15分18秒 CST
DateTimeFormatter dateTimeFormatter=DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL);
System.out.println(dateTimeFormatter.format(zonedDateTime));
//2021年11月28日 星期日 上午03时19分08秒 CST
dateTimeFormatter=dateTimeFormatter.withLocale(Locale.US);
//Sunday, November 28, 2021 3:19:08 AM CST
System.out.println(dateTimeFormatter.format(zonedDateTime));

5.4 指定模式来自定义日期格式

  1. 例如 DateTimeFormatter.ofPattern( “E yyyy-MM-dd HH:mm” ) 通过自定义的模式字符串,来生成formatter
  2. 从字符串中解析成时间,可以使用各个时间对象的,parse方法
    在这里插入图片描述

5.5 示例代码

LocalDate localDate=LocalDate.now();
LocalTime localTime=LocalTime.now();
ZonedDateTime zonedDateTime=ZonedDateTime.now();
//1、解析成预定义的标准化格式  2021-11-27T19:12:11.623Z
System.out.println(DateTimeFormatter.ISO_INSTANT.format(zonedDateTime));
//2、四种解析风格 SHORT、MEDIUM、LONG 、FULL
// 2021年11月28日 星期日 上午03时15分18秒 CST
DateTimeFormatter dateTimeFormatter=DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL);
System.out.println(dateTimeFormatter.format(zonedDateTime));
//2021年11月28日 星期日 上午03时19分08秒 CST
dateTimeFormatter=dateTimeFormatter.withLocale(Locale.US);
//Sunday, November 28, 2021 3:19:08 AM CST
System.out.println(dateTimeFormatter.format(zonedDateTime));

//字符串转换为时间
dateTimeFormatter=DateTimeFormatter.ofPattern("世纪: GGGG 时区: zzzz YYYY年 MM月 dd 日");
//世纪: 公元 时区: 中国标准时间 2021年 11月 28 日
System.out.println(dateTimeFormatter.format(zonedDateTime));
dateTimeFormatter=dateTimeFormatter.withLocale(Locale.US);
//世纪: Anno Domini 时区: China Standard Time 2021年 11月 28 日
System.out.println(dateTimeFormatter.format(zonedDateTime));



六、与旧API相互转换

  1. 新的API 的Instant类相当于 java.util.Date类,在java8中 给Date类增加了两个方法,toInstant用来生成Instant对象,静态方法 Date.from(Instant ) 则接收Instant方法,生成Date
  2. ZoneDateTime 类似于Java.util.GregorianCalendar ,后者也增加了toZoneDateTIme和from静态方法,来互相转换。
  3. java.text.Format ,也可以通过DateTimeFormatter 的format获得

互相转换表

转换的类To遗留类FROM遗留类
Instant和DateDate.from(instant)data.toInstant()
ZoneDateFormatGregorianCalendarGregorianCalendar.from()cal.toZoneDateTime()
Instantjava.sql.TimeStampTimestamp.fromtimestamp.toInstant()
LocalDateTimejava.sql.TimeStampTimeStamp.valueOf(localDateTime)timeStamp.toLocalDateTime()
LocalDatejava.sql.TimeDate.valueOf(localDate)data.toLocalDate()
LocalTimejava.sql.TimeTime.valueOf(localTime)time.toLocalTime()
DateTimeFormatterjava.text.DateFormatformatter.toFormat()
java.util.TimeZoneZoneIdTimeZone.getTimeZone(zoneid)timeZone.toZoneId()
JAVA开发人员新版本7.0 api文档!本文档是 Java Platform Standard Edition 7 的 APIJava 1.7 API的中文帮助文档。 深圳电信培训中心 徐海蛟博士教学用api 7.0中文文档。支持全文检索,在线即时查询。 里面列出了Java jdk 1.7的所有类及其使用方法! Java SE Platform 软件包: java.applet 提供创建 applet 所必需的类 applet 用来与其 applet 上下文通信的类。 java.awt 包含用于创建用户界面绘制图形图像的所有类。 java.awt.color 提供用于颜色空间的类。 java.awt.datatransfer 提供在应用程序之间在应用程序内部传输数据的接口类。 java.awt.dnd Drag Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的各类事件的接口类。 java.awt.font 提供与字体相关的类接口。 java.awt.geom 提供用于在与二维几何形状相关的对象上定义执行操作的 Java 2D 类。 java.awt.im 提供输入方法框架所需的类接口。 java.awt.im.spi 提供启用可以与 Java 运行时环境一起使用的输入方法开发的接口。 java.awt.image 提供创建修改图像的各种类。 java.awt.image.renderable 提供用于生成与呈现无关的图像的类接口。 java.awt.print 为通用的打印 API 提供类接口。 java.beans 包含与开发 beans 有关的类,即基于 JavaBeansTM 架构的组件。 java.beans.beancontext 提供与 bean 上下文有关的类接口。 java.io 通过数据流、序列化文件系统提供系统输入输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供允许 Java 编程语言代理检测运行在 JVM 上的程序的服务。 java.lang.management 提供管理接口,用于监视管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类接口,以获得关于类对象的反射信息。 java.math 提供用于执行任意精度整数算法 (BigInteger) 任意精度小数算法 (BigDecimal) 的类。 java.net 为实现网络应用程序提供类。 java.nio 定义作为数据容器的缓冲区,并提供其他 NIO 包的概述。 java.nio.channels 定义了各种通道,这些通道表示到能够执行 I/O 操作的实体(如文件套接字)的连接;定义了用于多路复用的、非阻塞 I/O 操作的选择器。 java.nio.channels.spi 用于 java.nio.channels 包的服务提供者类。 java.nio.charset 定义用来在字节 Unicode 字符之间转换的 charset、解码器编码器。 java.nio.charset.spi java.nio.charset 包的服务提供者类。 java.rmi 提供 RMI 包。 java.rmi.activation 为 RMI 对象提供支持。 java.rmi.dgc 为 RMI 分布式垃圾回收提供了类接口。 java.rmi.registry 提供 RMI 注册表的一个类两个接口。 java.rmi. 提供支持服务器端 RMI 的类接口。 java.security 为安全框架提供类接口。 java.security.acl 此包中的类接口已经被 java.security 包中的类取代。 java.security.cert 提供用于解析管理证书、证书撤消列表 (CRL) 证书路径的类接口。 java.security.interfaces 提供的接口用于生成 RSA Laboratory Technical Note PKCS#1 中定义的 RSA(Rivest、Shamir Adleman AsymmetricCipher 算法)密钥,以及 NIST 的 FIPS-186 中定义的 DSA(数字签名算法)密钥。 java.security.spec 提供密钥规范算法参数规范的类接口。 java.sql 提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 APIjava.text 提供以与自然语言无关的方式来处理文本、日期、数字消息的类接口。 java.text.spi java.text 包中类的服务提供者类。 java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期时间设施、国际化各种实用工具类(字符串标记生成器、随机数生成器位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类。 java.util.concurrent.atomic 类的小工具包,支持在单个变量上解除锁的线程安全编程。 java.util.concurrent.locks 为锁等待条件提供一个框架的接口类,它不同于内置同步监视器。 java.util.jar 提供读写 JAR (Java ARchive) 文件格式的类,该格式基于具有可选清单文件的标准 ZIP 文件格式。 java.util.logging 提供 JavaTM 2 平台核心日志工具的类接口。 java.util.prefs 此包允许应用程序存储并获取用户系统首选项配置数据。 java.util.regex 用于匹配字符序列与正则表达式指定模式的类。 java.util.spi java.util 包中类的服务提供者类。 java.util.zip 提供用于读写标准 ZIP GZIP 文件格式的类。 javax.accessibility 定义了用户界面组件与提供对这些组件进行访问的辅助技术之间的协定。 javax.crypto 为加密操作提供类接口。 javax.crypto.interfaces 根据 RSA Laboratories' PKCS #3 的定义,提供 Diffie-Hellman 密钥接口。 javax.crypto.spec 为密钥规范算法参数规范提供类接口。 javax.imageio Java Image I/O API 的主要包。 javax.imageio.event Java Image I/O API 的一个包,用于在读取写入图像期间处理事件的同步通知。 javax.imageio.metadata 用于处理读写元数据的 Java Image I/O API 的包。 javax.imageio.plugins.bmp 包含供内置 BMP 插件使用的公共类的包。 javax.imageio.plugins.jpeg 支持内置 JPEG 插件的类。 javax.imageio.spi 包含用于 reader、writer、transcoder 流的插件接口以及一个运行时注册表的 Java Image I/O API 包。 javax.imageio.stream Java Image I/O API 的一个包,用来处理从文件流中产生的低级别 I/O。 javax.management 提供 Java Management Extensions 的核心类。 javax.management.loading 提供实现高级动态加载的类。 javax.management.modelmbean 提供了 ModelMBean 类的定义。 javax.management.monitor 提供 monitor 类的定义。 javax.management.openmbean 提供开放数据类型 Open MBean 描述符类。 javax.management.relation 提供 Relation Service 的定义。 javax.management.remote 对 JMX MBean 服务器进行远程访问使用的接口。 javax.management.remote.rmi RMI 连接器是供 JMX Remote API 使用的一种连接器,后者使用 RMI 将客户端请求传输到远程 MBean 服务器。 javax.management.timer 提供对 Timer MBean(计时器 MBean)的定义。 javax.naming 为访问命名服务提供类接口。 javax.naming.directory 扩展 javax.naming 包以提供访问目录服务的功能。 javax.naming.event 在访问命名目录服务时提供对事件通知的支持。 javax.naming.ldap 提供对 LDAPv3 扩展操作控件的支持。 javax.naming.spi 提供一些方法来动态地插入对通过 javax.naming 相关包访问命名目录服务的支持。 javax.net 提供用于网络应用程序的类。 javax.net.ssl 提供用于安全套接字包的类。 javax.print 为 JavaTM Print Service API 提供了主要类接口。 javax.print.attribute 提供了描述 JavaTM Print Service 属性的类型以及如何分类这些属性的类接口。 javax.print.attribute.standard 包 javax.print.attribute.standard 包括特定打印属性的类。 javax.print.event 包 javax.print.event 包含事件类侦听器接口。 javax.rmi 包含 RMI-IIOP 的用户 APIjavax.rmi.CORBA 包含用于 RMI-IIOP 的可移植性 APIjavax.rmi.ssl 通过安全套接字层 (SSL) 或传输层安全 (TLS) 协议提供 RMIClientSocketFactory RMIServerSocketFactory 的实现。 javax.security.auth 此包提供用于进行验证授权的框架。 javax.security.auth.callback 此包提供与应用程序进行交互所必需的类,以便检索信息(例如,包括用户名密码的验证数据)或显示信息(例如,错误警告消息)。 javax.security.auth.kerberos 此包包含与 Kerberos 网络验证协议相关的实用工具类。 javax.security.auth.login 此包提供可插入的验证框架。 javax.security.auth.spi 此包提供用于实现可插入验证模块的接口。 javax.security.auth.x500 此包包含应该用来在 Subject 中存储 X500 Principal X500 Private Crendentials 的类。 javax.security.cert 为公钥证书提供类。 javax.security.sasl 包含用于支持 SASL 的类接口。 javax.sound.midi 提供用于 MIDI(音乐乐器数字接口)数据的 I/O、序列化合成的接口类。 javax.sound.midi.spi 在提供新的 MIDI 设备、MIDI 文件 reader writer、或音库 reader 时提供服务提供者要实现的接口。 javax.sound.sampled 提供用于捕获、处理回放取样的音频数据的接口类。 javax.sound.sampled.spi 在提供新音频设备、声音文件 reader writer,或音频格式转换器时,提供将为其创建子类的服务提供者的抽象类。 javax.sql 为通过 JavaTM 编程语言进行服务器端数据源访问处理提供 APIjavax.sql.rowset JDBC RowSet 实现的标准接口基类。 javax.sql.rowset.serial 提供实用工具类,允许 SQL 类型与 Java 编程语言数据类型之间的可序列化映射关系。 javax.sql.rowset.spi 第三方供应商在其同步提供者的实现中必须使用的标准类接口。 javax.swing 提供一组“轻量级”(全部是 Java 语言)组件,尽量让这些组件在所有平台上的工作方式都相同。 javax.swing.border 提供围绕 Swing 组件绘制特殊边框的类接口。 javax.swing.colorchooser 包含供 JColorChooser 组件使用的类接口。 javax.swing.event 供 Swing 组件触发的事件使用。 javax.swing.filechooser 包含 JFileChooser 组件使用的类接口。 javax.swing.plaf 提供一个接口许多抽象类,Swing 用它们来提供自己的可插入外观功能。 javax.swing.plaf.basic 提供了根据基本外观构建的用户界面对象。 javax.swing.plaf.metal 提供根据 Java 外观(曾经代称为 Metal)构建的用户界面对象,Java 外观是默认外观。 javax.swing.plaf.multi 提供了组合两个或多个外观的用户界面对象。 javax.swing.plaf.synth Synth 是一个可更换皮肤 (skinnable) 的外观,在其中可委托所有绘制。 javax.swing.table 提供用于处理 javax.swing.JTable 的类接口。 javax.swing.text 提供类 HTMLEditorKit 创建 HTML 文本编辑器的支持类。 javax.swing.text.html 提供类 HTMLEditorKit 创建 HTML 文本编辑器的支持类。 javax.swing.text.html.parser 提供默认的 HTML 解析器以及支持类。 javax.swing.text.rtf 提供一个类 (RTFEditorKit),用于创建富文本格式(Rich-Text-Format)的文本编辑器。 javax.swing.tree 提供处理 javax.swing.JTree 的类接口。 javax.swing.undo 允许开发人员为应用程序(例如文本编辑器)中的撤消/恢复提供支持。 javax.transaction 包含解组期间通过 ORB 机制抛出的三个异常。 javax.transaction.xa 提供定义事务管理器资源管理器之间的协定的 API,它允许事务管理器添加或删除 JTA 事务中的资源对象(由资源管理器驱动程序提供)。 javax.xml 根据 XML 规范定义核心 XML 常量功能。 javax.xml.bind 为包含解组、编组验证功能的客户端应用程序提供运行时绑定框架。 javax.xml.bind.annotation 定义将 Java 程序元素定制成 XML 模式映射的注释。 javax.xml.bind.annotation.adapters XmlAdapter 及其规范定义的子类允许任意 Java 类与 JAXB 一起使用。 javax.xml.bind.attachment 此包由基于 MIME 的包处理器实现,该处理器能够解释并创建基于 MIME 的包格式的已的二进制数据。 javax.xml.bind.helpers 仅由 JAXB 提供者用于: 提供某些 javax.xml.bind 接口的部分默认实现。 javax.xml.bind.util 有用的客户端实用工具类。 javax.xml.crypto 用于 XML 加密的通用类。 javax.xml.crypto.dom javax.xml.crypto 包的特定于 DOM 的类。 javax.xml.crypto.dsig 用于生成验证 XML 数字签名的类。 javax.xml.crypto.dsig.dom javax.xml.crypto.dsig 包特定于 DOM 的类。 javax.xml.crypto.dsig.keyinfo 用来解析处理 KeyInfo 元素结构的类。 javax.xml.crypto.dsig.spec XML 数字签名的参数类。 javax.xml.datatype XML/Java 类型映射关系。 javax.xml.namespace XML 名称空间处理。 javax.xml.parsers 提供允许处理 XML 文档的类。 javax.xml.soap 提供用于创建构建 SOAP 消息的 APIjavax.xml.stream javax.xml.stream.events javax.xml.stream.util javax.xml.transform 此包定义了用于处理转换指令,以及执行从源到结果的转换的一般 APIjavax.xml.transform.dom 此包实现特定于 DOM 的转换 APIjavax.xml.transform.sax 此包实现特定于 SAX2 的转换 APIjavax.xml.transform.stax 提供特定于 StAX 的转换 APIjavax.xml.transform.stream 此包实现特定于流 URI 的转换 APIjavax.xml.validation 此包提供了用于 XML 文档验证的 APIjavax.xml.ws 此包包含核心 JAX-WS APIjavax.xml.ws.handler 该包定义用于消息处理程序的 APIjavax.xml.ws.handler.soap 该包定义用于 SOAP 消息处理程序的 APIjavax.xml.ws.http 该包定义特定于 HTTP 绑定的 APIjavax.xml.ws.soap 该包定义特定于 SOAP 绑定的 APIjavax.xml.ws.spi 该包定义用于 JAX-WS 2.0 的 SPI。 javax.xml.xpath 此包提供了用于 XPath 表达式的计算访问计算环境的 object-model neutral API。 org.ietf.jgss 此包提供一个框架,该框架允许应用程序开发人员通过利用统一的 API 使用一些来自各种基础安全机制(如 Kerberos)的安全服务,如验证、数据完整数据机密性。 org.omg.CORBA 提供 OMG CORBA APIJavaTM 编程语言的映射,包括 ORB 类,如果已实现该类,则程序员可以使用此类作为全功能对象请求代理(Object Request Broker,ORB)。 org.omg.CORBA_2_3 CORBA_2_3 包定义对 Java[tm] Standard Edition 6 中现有 CORBA 接口所进行的添加。 org.omg.CORBA_2_3.portable 提供输入输出值类型的各种方法,并包含 org/omg/CORBA/portable 包的其他更新。 org.omg.CORBA.DynAnyPackage 提供与 DynAny 接口一起使用的异常(InvalidValue、Invalid、InvalidSeq TypeMismatch)。 org.omg.CORBA.ORBPackage 提供由 ORB.resolve_initial_references 方法抛出的异常 InvalidName,以及由 ORB 类中的动态 Any 创建方法抛出的异常 InconsistentTypeCode。 org.omg.CORBA.portable 提供可移植性层,即可以使一个供应商生成的代码运行在另一个供应商 ORB 上的 ORB API 集合。 org.omg.CORBA.TypeCodePackage 提供用户定义的异常 BadKind Bounds,它们将由 TypeCode 类中的方法抛出。 org.omg.CosNaming 为 Java IDL 提供命名服务。 org.omg.CosNaming.NamingContextExtPackage 此包包含以下在 org.omg.CosNaming.NamingContextExt 中使用的类: AddressHelper StringNameHelper URLStringHelper InvalidAddress 包规范 有关 Java[tm] Platform, Standard Edition 6 ORB 遵守的官方规范的受支持部分的明确列表,请参阅 Official Specifications for CORBA support in Java[tm] SE 6。 org.omg.CosNaming.NamingContextPackage 此包包含 org.omg.CosNaming 包的 Exception 类。 org.omg.Dynamic 此包包含 OMG Portable Interceptor 规范 http://cgi.omg.org/cgi-bin/doc?ptc/2000-08-06 的第 21.9 小节中指定的 Dynamic 模块。 org.omg.DynamicAny 提供一些类接口使得在运行时能够遍历与 any 有关联的数据值,并提取数据值的基本成分。 org.omg.DynamicAny.DynAnyFactoryPackage 此包包含 DynamicAny 模块的 DynAnyFactory 接口中的类异常,该模块在 OMG The Common Object Request Broker: Architecture and Specification http://cgi.omg.org/cgi-bin/doc?formal/99-10-07 的第 9.2.2 小节中指定。 org.omg.DynamicAny.DynAnyPackage 此包包含 DynAny 模块的 DynAnyFactory 接口中的类异常,该模块在 OMG The Common Object Request Broker: Architecture and Specification http://cgi.omg.org/cgi-bin/doc?formal/99-10-07 的第 9.2 小节中指定。 org.omg.IOP 此包包含在 OMG 文档 The Common Object Request Broker: Architecture and Specification http://cgi.omg.org/cgi-bin/doc?formal/99-10-07 的 13.6.小节中指定的 IOP 模块。 org.omg.IOP.CodecFactoryPackage 此包包含 IOP::CodeFactory 接口中指定的异常(作为 Portable Interceptor 规范的一部分)。 org.omg.IOP.CodecPackage 此包根据 IOP::Codec IDL 接口定义生成。 org.omg.Messaging 此包包含 OMG Messaging Interceptor 规范 http://cgi.omg.org/cgi-bin/doc?formal/99-10-07 中指定的 Messaging 模块。 org.omg.PortableInterceptor 提供一个注册 ORB 钩子 (hook) 的机制,通过这些钩子 ORB 服务可以截取执行 ORB 的正常流。 org.omg.PortableInterceptor.ORBInitInfoPackage 此包包含 OMG Portable Interceptor 规范 http://cgi.omg.org/cgi-bin/doc?ptc/2000-08-06 的第 21.7.2 小节中指定的 PortableInterceptor 模块的 ORBInitInfo 本地接口中的异常 typedef。 org.omg.PortableServer 提供一些类接口,用来生成跨多个供应商 ORB 的可移植应用程序的服务器端。 org.omg.PortableServer.CurrentPackage 提供各种方法实现,这些实现能够访问调用方法的对象的身份。 org.omg.PortableServer.POAManagerPackage 封装 POA 关联的处理状态。 org.omg.PortableServer.POAPackage 允许程序员构造可在不同 ORB 产品间移植的对象实现。 org.omg.PortableServer.portable 提供一些类接口,用来生成跨多个供应商 ORB 的可移植应用程序的服务器端。 org.omg.PortableServer.ServantLocatorPackage 提供定位 servant 的类接口。 org.omg.SendingContext 为值类型的编组提供支持。 org.omg.stub.java.rmi 包含用于 java.rmi 包中出现的 Remote 类型的 RMI-IIOP Stub。 org.w3c.dom 为文档对象模型 (DOM) 提供接口,该模型是 Java API for XML Processing 的组件 API。 org.w3c.dom.bootstrap org.w3c.dom.events org.w3c.dom.ls org.xml.sax 此包提供了核心 SAX API。 org.xml.sax.ext 此包包含适合的 SAX 驱动程序不一定支持的 SAX2 设施的接口。 org.xml.sax.helpers 此包包含“帮助器”类,其中包括对引导基于 SAX 的应用程序的支持。 本文档是 JavaTM Platform Standard Edition 7.0 新的 API 规范。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值