JDK 源代码中的搞笑之处
|
Funny Things in JDK Source
|
虽然完整版的 JDK 源代码现已开放了,但安装在 Java\jdk[版本号] 目录下的公共 src.zip 仍然是我最经常参考的资源。每次我遇到一个 API 问题,都会刊这个公共源代码。解决问题之余,我还找到很多有趣的东西,有时还搞笑。这里距三个例子。 |
Though the
full version of JDK source is available now, but the public src.zip
installed under Java\jdk[version_number] directory is still my most
frequent refered resource. Every time I encounter an API problem, this
public source is read. And besides solving those problems, I've also
found many interesting things which are sometimes also funny. Here are
three exaples. |
大概从 JDK 5.0 开始,类 java.lang.Object
引入了一个叫 wait(long timeout, int nanos)
的方法。等等,nanos,纳秒?众所周知,即使在强大的 Windows 多媒体 API 里面,计时器的精度也只有一毫秒,也就是一兆纳秒。尽管 Java 非常棒,但不能处理纳秒。而源代码证明了这一点,纳秒被舍入到最接近的毫秒,0 或 1……精彩…… |
Maybe since JDK 5.0, a method called wait(long timeout, int nanos)
is introduced into Class java.lang.Object
.Object.
Wait a minute, nanos, is it nanoseconds? It's no secret thst even
in powerful Windows multimedia API, the precision of timer is only one
millisecond, that is a million nanosecond. Though Java is pretty great,
it can not deal with nanoseconds. And the source proves it, that
nanoseconds are rounded to the nearest millisecond, 0 or 1... Amazing... |
今天我想得到一个 JDialog
的所有者,但却没有 getOwner()
方法。最后我才明白 JDialog
的所有者就是它的父组件,用 getParent()
就可以了。那现在所有者等同于父级了? |
Today I wanted to get a JDialog
's owner, but there's no method called getOwner()
. Finally I was awear that the owner of a JDialog
is exactly its parent component, and just using getParent()
is okey. So owner is synonymous with parent now? |
最后,我想提下 JSpinner
的实现有错。一些安装在 JSpinner
上的侦听器丝毫不起作用。我在 JSpinner.java
里找到这段注释:“还是不对,我们没其他办法了,SpinnerModel
和 JFormattedTextField
现已不同步了。”JDK 的开发者的诚实值得感谢。我的解决方法是直接操控复合式组件 JSpinner
中的 JFormattedTextField
。 |
相关推荐
Java JDK源代码是Java开发工具包的原始代码,对于任何想要深入理解Java语言工作原理的开发者来说,它都是一个无价的学习资源。JDK包含了Java运行环境、编译器、类库以及各种工具,它的源代码揭示了Java平台的内部...
Java开发是每一个程序员在职业生涯中必须要面对的重要环节,而深入理解JDK源代码更是提升编程技艺的关键步骤。JDK(Java Development Kit)是Java平台的标准版,包含了Java运行时环境、Java工具和Java基础类库。Java...
**JDK 1.8 源代码分析** JDK(Java Development Kit)是Java编程语言的核心组件,包含了编译器、JVM(Java虚拟机)以及一系列的标准库。JDK 1.8版本是Oracle公司发布的一个重要版本,它引入了许多新特性,对Java...
6. **JVM接口**:虽然JDK源代码不包含JVM本身,但`sun.misc`和`sun.reflect`包提供了一些与JVM交互的接口,如`Unsafe`类,它允许我们执行一些底层操作。 7. **国际化与本地化**:`java.text`和`java.util.locale`包...
深入研究JDK源代码,不仅可以帮助我们更好地理解和使用Java提供的各种API,还能让我们学习到优秀的编程实践和设计模式。比如,观察Collections类的静态工厂方法,可以学习如何编写高效且易于使用的工具类;研究...
JDK源代码包含了Java标准版(Java SE)的所有核心类库,如`java.lang`、`java.util`、`java.io`等,这些都是开发者日常工作中频繁使用的模块。通过查看源代码,我们可以看到类、接口、方法的具体实现,这对于提升...
虽然在JDK8之后,部分sun包已被移除或重命名,但在JDK7中,这部分源代码仍然是理解Java底层运行机制的关键。 sunw 目录: 这个目录在较旧的Sun Microsystems JDK中常见,主要用于提供特定于Solaris操作系统的类。在...
《深入解析JDK1.4.2源代码》 JDK1.4.2是Java开发工具包的一个重要版本,它的源代码对于理解Java语言的底层实现和优化有着极高的价值。本文将从核心组件、类库结构以及关键功能等方面,深入剖析JDK1.4.2的源代码,...
Java JDK完整源代码是开发者深入理解Java平台工作原理和实现机制的重要资源。它包含了Java开发工具集(Java Development Kit)的所有核心组件的源代码,帮助程序员在遇到问题时能够查看底层实现,提升学习和调试效率...
JDK1.6源代码,这是第一部分,有兴趣的可以看一下
**JDK12源代码详解** JDK12是Java Development Kit的一个重要版本,它包含了对Java编程语言和运行环境的诸多改进与新特性。这个压缩包提供了JDK12的源代码,对于开发者来说,这是一个宝贵的资源,可以深入理解Java...
通过深入学习JDK 7的源代码,开发者可以更好地理解Java语言的工作原理,提高编程技能,并对新旧版本之间的差异有更清晰的认识。 在JDK 7中,主要的新特性包括: 1. **多 catch 语句**:在异常处理方面,JDK 7允许...
JDK1.1源代码是Java发展史上的一个重要里程碑,标志着Java语言的初期形态,对于理解Java编程语言的演进历程及其基础概念具有极高的价值。在这个早期版本中,许多现代Java特性尚未引入,因此研究这些源代码可以帮助...
总的来说,JDK1.4的源代码是一份宝贵的教育资源,它揭示了Java语言的底层实现,帮助我们更好地理解类加载、内存管理、并发控制等核心概念。通过深入研究这些源代码,开发者不仅可以提升自己的编程技能,还能洞悉Java...
接下来,我们将详细探讨这些核心变化以及JDK源代码中的实现细节。 1. **泛型(Generics)**: 泛型是JDK1.5引入的一项重要特性,它允许在类、接口和方法中声明类型参数,提高了代码的类型安全性。通过源代码,我们...
**Java JDK 1.6.0 源代码解析** Java Development Kit (JDK) 是Java编程语言的核心组件,它包含编译器、运行时环境、调试工具和其他实用工具。JDK 1.6.0 版本是历史上的一个里程碑,它在Java的发展历程中占有重要的...
Java JDK中的源代码是学习和理解Java编程语言及其运行机制的关键资源。这些源文件包含了Java开发工具集(Java Development Kit)的核心类库,涵盖了从基本的语法结构到高级特性的实现。下面我们将深入探讨这些源代码...
**JDK1.6源代码详解** JDK(Java Development Kit)是Oracle公司提供的Java编程环境,包含了编译器、运行时环境、调试工具和其他实用工具。JDK1.6,也被称为Java SE 6,是Java历史上的一个重要版本,发布于2006年,...
通过研究JDK 1.6的源代码,开发者可以深入理解Java平台的工作机制,学习如何实现高效、可靠的代码,同时也能了解软件设计的优秀实践。这些源代码对于初学者来说是一份宝贵的教材,对于经验丰富的开发者则是一份宝贵...