在多次延期后,Java 9将于9月21日以Java开发工具包9的形式出现,这是自2014年3月以来,Java标准版的第一次重大升级.官方列出了JDK 9的大约90个新特性,模块化是最主要的一个.将Java重新配置成模块化格式,这项任务已经持续了多年,但在编译.代码缓存和JavaScript部署等领域也会有其他改进. JDK 9的Java平台模块系统 Java 9最宝贵的特性,即模块化——以Java平台模块系统的形式——旨在将JDK分为运行.编译或构建时的一组模块.模块化被称为“可传递”的变化,这…
前14篇文章,分享了JDK中值得学习和借鉴的编码和设计方法. 每个硬币都是有两面的.Every coin has two sides. 当然,JDK中也有很多值得改进或者说富有争议的设计. 本篇,就来详细吐槽下JDK中的10个富有争议的设计. 网友指出1.求和抛异常,错误提示不合理. 在OpenJDK源码研究笔记(一)-参数检查&抛出带关键错误提示信息的异常这篇文章中,有个网友指出:"第三个if的提示信息有点问题.前两个if说明了position和size都不可能为负,求和通常不可能为负…
java.util.Calendar   JDK中的java.util.Calendar类主要是用来处理日期和时间相关的算法运算.当你需要做一些关于日期和时间的高级算数操作时,此类可能就是你的最好选择.实际上,java.util.Calendar是一个抽象类,意味着不能直接实例化该类的对象来使用.原因是世界范围存在不止一种日历表示法,比如一种称为Arab日历就与大都数西方国家所使用的日历法不一样,还比如中国的农历法等. java.util.GregorianCalendar   JDK中的Gre…
一.简介 观察者设计模式有如下四个角色 抽象主题角色:把所有对观察者对象的引用保存在一个集合中,每个抽象主题角色都可以有任意数量的观察者.抽象主题提供一个接口,可以增加和删除观察者角色.一般用一个抽象类或接口来实现,也可以使用非抽象类来实现. 具体主题角色:在具体主题内部状态改变时,给所有登记过的观察者发出通知.具体主题角色通常用一个子类实现. 抽象观察者角色:为所有具体的观察者定义一个接口,在得到主题的通知时更新自己. 具体观察者角色:该角色实现抽象观察者角色所要求的更新接口,以便使本身的状态…
java.net.URLDecoder.decode 在项目中碰到了个比较奇怪的问题,就是我在本地使用java.net.URLDecoder.decode(ruleName)方法解码,没有问题,本地的页面也可以正常打开.但是当我把代码移植到测试环境中去的时候,却打不开页面,查看后台日志也没有报错信息. 本地环境用的JDK1.6,tomcat用的7,测试环境JDK1.6 tomcat版本不明确 就纳闷了,因为这个方法已经提示过时了,就在考虑是不是这个问题导致的,应该有可以替代的方法,然后就去查看了…
列出JDK中常用的Java包 1.java.lang 2.java.sql 3.java.io 4.java.math 5.java.text 6.java.net 7.java.util 8.java.awt 9.java.applet 10.java.nio…
JDK中设计模式 本文主要是归纳了JDK中所包含的设计模式,包括作用和其设计类图.首先来个总结,具体的某个模式可以一个一个慢慢写,希望能对研究JDK和设计模式有所帮助.一.设计模式是什么(1)反复出现问题的解决方案(2)增强软件的灵活性(3)适应软件不断变化二.学习JDK中设计模式的好处(1)借鉴优秀代码的设计,有助于提高代码设计能力(2)JDK的设计中体现了大多数设计模式,是学习设计模式的较好的方式(3)可以更加深入的了解JDK三.类间关系继承.委托.依赖.聚合.组合​四.介绍方式(1)作用:…
引言 JDK中除了上文提到的各种并发容器,还提供了丰富的阻塞队列.阻塞队列统一实现了BlockingQueue接口,BlockingQueue接口在java.util包Queue接口的基础上提供了put(e)以及take()两个阻塞方法.他的主要使用场景就是多线程下的生产者消费者模式,生产者线程通过put(e)方法将生产元素,消费者线程通过take()消费元素.除了阻塞功能,BlockingQueue接口还定义了定时的offer以及poll,以及一次性移除方法drainTo. //插入元素,队列…
上次我们讲了一些常用的4个阻塞队列,但是在JDK中还提供了其他的一些阻塞队列.这篇文章将全面介绍一下JDK中的所有阻塞队列,并比较他们的区别. JDK7提供了7个阻塞队列.分别是 ArrayBlockingQueue :一个由数组结构组成的有界阻塞队列. LinkedBlockingQueue :一个由链表结构组成的有界阻塞队列. PriorityBlockingQueue :一个支持优先级排序的无界阻塞队列. DelayQueue:一个使用优先级队列实现的无界阻塞队列. Synchronous…
前提 上一篇文章复习介绍了JDK中注解的底层实现,跟注解一样比较常用,但是底层实现比较神秘的还有枚举类型.趁着国庆假期的最后两天,把JDK中枚举的底层实现也进行一次探究. 通过例子查找本质 在探究JDK注解的底层实现的时候,因为预先参考了不少资料,所以整个过程有点"未卜先知"的意味,这里尝试用未知的角度去看注解的底层实现.先定义一个手机操作系统类型枚举PhoneOsEnum: package club.throwable.enumeration; public enum PhoneOs…