ThisGroup is comprised ofdevelopers who participate in the design, implementation, andmaintanence of the Java core libraries.
The core libraries consist of classes which are used by manyportions of the JDK. The actual set of files has evolved over time,but mostly they include functionality which is close to the VM andis not explicitly included in other areas, such asSecurity orNetworking. Also included are commonly usedtools which are either built on top of the core libraries (such asjar) or are used by developers working withthem (such asrmic).
The following table lists the feature areas of the corelibraries with their corresponding repository locations and linksto other developer documentation. (For documentation targeted forJDK users rather than contributors, see the sectionEnd-User Documentation.)
Currently there are some libraries which appear in the namepackages as core libraries but are maintained by other groups.These exceptions are mentioned within the corresponding tableentries.
Unless otherwise specified, all locations are in thejdk repository.
Feature Area | Repository Locations | More Information |
---|---|---|
java.lang
| src/share/classes/java/lang src/share/native/java/lang src/solaris/classes/java/lang src/solaris/native/java/lang src/windows/classes/java/lang src/windows/native/java/lang test/java/lang | |
| src/share/classes/java/lang/Thread*.java src/share/native/java/lang/Thread.c test/java/lang/Thread* | |
| src/share/classes/java/lang/Process.java src/share/classes/java/lang/ProcessBuilder.java src/share/classes/java/lang/Runtime.java src/share/native/java/lang/Runtime.c src/solaris/classes/java/lang/*Process* src/windows/classes/java/lang/*Process* src/solaris/native/java/lang/*Process* src/windows/native/java/lang/*Process* test/java/lang/ProcessBuidler test/java/lang/Runtime | |
java.lang.annotationjavax.annotation
| jdk repository: src/share/classes/java/lang/annotation src/share/classes/sun/reflect/annotation langtools repository: src/share/classes/javax/annotationsrc/share/classes/javax/lang/model | |
java.lang.instrument
| src/share/classes/java/lang/instrument src/share/classes/sun/instrument src/share/instrument src/solaris/instrument src/windows/instrument test/java/lang/instrument |
|
java.lang.management
| src/share/classes/java/lang/management test/java/lang/management |
|
java.lang.ref
| src/share/classes/java/lang/ref src/share/native/java/lang/ref test/java/lang/ref | |
java.lang.reflect
| src/share/classes/java/lang/reflect src/share/classes/sun/reflect src/share/native/java/lang/reflect src/share/native/sun/reflect test/java/lang/reflect test/java/lang/Class | |
java.io
| src/share/classes/java/io src/share/native/java/io src/solaris/classes/java/io src/solaris/native/java/io src/windows/classes/java/io src/windows/native/java/io test/java/io | |
| src/share/classes/java/io/Externalizable.java src/share/classes/java/io/ObjectInputStream.java src/share/classes/java/io/ObjectOutputStream.java src/share/classes/java/io/NotSerializableException.java src/share/classes/java/io/Serializable.java src/share/classes/java/io/SerializablePermission.java src/share/native/java/io/ObjectInputStream.c src/share/native/java/io/ObjectOutputStream.c test/java/io/Externalizable test/java/io/ObjectInputStream test/java/io/Serializable | |
| src/share/classes/sun/tools/serialver test/java/io/Serializable/serialver | |
java.nio
| src/share/classes/java/nio src/share/classes/sun/nio/ByteBuffered.java src/share/native/java/nio src/solaris/native/java/nio src/windows/native/java/nio test/java/nio/Buffer test/java/nio/ByteOrder test/java/nio/MappedByteBuffer make/gensrc/GensrcBuffer.gmk | |
java.nio.channels java.nio.channels.spi
| src/share/classes/java/nio/channels src/share/classes/sun/nio/ch src/share/native/sun/nio/ch src/share/sample/nio src/solaris/classes/sun/nio/ch src/solaris/native/sun/nio/ch src/windows/classes/sun/nio/ch src/windows/native/sun/nio/ch test/java/nio/channels test/sun/nio/ch src/share/sample/nio | |
java.nio.charset java.nio.charset.spi
| src/share/classes/java/nio/charset src/share/classes/sun/nio/cs src/solaris/classes/sun/nio/cs make/gensrc/GensrcCharsetCoder.gmk | |
| src/share/classes/sun/tools/native2ascii test/sun/tools/native2ascii | |
java.nio.file java.nio.file.attribute java.nio.file.spi
| src/share/classes/java/nio/file src/share/classes/com/sun/nio/file | |
java.util
| src/share/classes/java/util test/java/util | |
| src/share/classes/java/util/ArrayDeque.java src/share/classes/java/util/ArrayList.java src/share/classes/java/util/Collection.java src/share/classes/java/util/Collections.java src/share/classes/java/util/*Map.java src/share/classes/java/util/*Set.java src/share/classes/java/util/Linked*.java src/share/classes/java/util/Stack.java src/share/classes/java/util/Vector.java test/java/util/ArrayDeque.java test/java/util/ArrayList.java test/java/util/Collection.java test/java/util/Collections.java test/java/util/*Map.java test/java/util/*Set.java test/java/util/Linked*.java test/java/util/Stack.java test/java/util/Vector.java | |
| src/share/classes/java/util/*Calendar.java src/share/classes/java/util/Currency.java src/share/classes/java/util/Date.java src/share/classes/java/util/Locale*.java src/share/classes/java/util/ResourceBundle.java src/share/classes/java/util/*TimeZone*.java src/share/classes/sun/util/*.java (exceptPreHashedMap.java) src/share/classes/sun/util/resources | |
java.util.concurrent java.util.concurrent.atomic java.util.concurrent.locks
| src/share/classes/java/util/concurrent src/share/native/java/util/concurrent test/java/util/concurrent | |
java.util.jar
| src/share/classes/com/sun/java/util/jar src/share/classes/java/util/jar src/share/native/com/sun/java/util/jar test/java/util/jar Not strictly part of JAR, but useful: src/share/classes/sun/net/www/protocol/jar src/solaris/classes/sun/net/www/protocol/jar src/windows/classes/sun/net/www/protocol/jar test/sun/net/www/protocol/jar |
|
| src/share/classes/sun/tools/jar test/tools/jar | |
| src/share/classes/com/sun/tools/extcheck |
|
java.util.logging
| src/share/classes/java/util/logging src/share/classes/sun/util/logging test/java/util/logging | |
java.util.regex
| src/share/classes/java/util/regex | |
java.util.prefs
| src/share/classes/java/util/prefs src/solaris/classes/java/util/prefs src/windows/classes/java/util/prefs | |
java.util.spi
| src/share/classes/java/util/spi |
|
java.util.stream
| src/share/classes/java/util/stream test/java/util/stream | |
java.util.zip
| src/share/classes/java/util/zip src/share/native/java/util/zip test/java/util/zip | |
java.math
| src/share/classes/java/math src/share/classes/java/lang/Math.java src/share/classes/java/lang/StrictMath.java src/share/classes/sun/misc/FloatConsts.java src/share/classes/sun/misc/FloatingDecimal.java | |
java.rmi java.rmi.activation java.rmi.dgc java.rmi.registry java.rmi.server
| src/share/classes/java/rmi src/share/classes/sun/rmi test/java/rmi test/sun/rmi | |
| src/share/classes/java/rmi/rmic test/sun/rmi/rmic | |
| src/share/classes/com/sun/rmi/rmid | |
| src/share/classes/sun/rmi/registry | |
java.sql javax.sql
| src/share/classes/java/sql src/share/classes/javax/sql src/share/classes/com/sun/rowset | |
javax.naming javax.naming.directory javax.naming.event javax.naming.ldap javax.naming.spi
| src/share/classes/javax/naming src/share/classes/com/sun/naming test/javax/naming src/share/classes/com/sun/jndi test/com/sun/jndi | |
javax.script
| jdk repository: src/share/classes/javax/script src/share/classes/com/sun/script src/share/demo/scripting/jconsole.plugin src/share/sample/scripting test/javax/script nashorn repository: src/* | |
| src/share/classes/com/sun/tools/script test/sun/tools/jrunscript | |
javax.xml javax.xml.datatypejavax.xml.namespacejavax.xml.parsersjavax.xml.streamjavax.xml.stream.eventsjavax.xml.stream.utiljavax.xml.transformjavax.xml.transform.comjavax.xml.transform.saxjavax.xml.transform.staxjavax.xml.transform.streamjavax.xml.validationjavax.xml.xpathorg.w3c.domorg.w3c.dom.bootstraporg.w3c.dom.lsorg.w3c.dom.viewsorg/xml/sax org/xml/sax.ext org/xml/sax.helpers
| jaxp repository: src/* |
|
Developers arestrongly encouraged to perform fullbuilds prior to check-in of any changes. (Afull build isa build performed when there is no pre-existingbuilddirectory; the respository should contain only the desired changesand no auto-generated data. Simply performingmake at thetop of the build tree isnot a full build.) Depending onthe area, incremental builds are not a reliable indicator ofwhether or not changes will compile successfully in a full build.In particular, some files are used early in the bootstrap phase tobuild components likejava.lang.Object, the launcher, andjavac that are used to build the rest of the JDK. Theseare later re-built once sufficient infrastructure has beengenerated by the bootstrap build. Incremental builds will onlycatch errors that occur in the compile after bootstrap.
Even when it appears that onlyjava code is beingmodified, it is prudent to build on multiple platform families. Arecommended minimum is one Windows and one Unix target, butdepending on the code being modified, it may be necessary toinclude a wider spectrum or a specific set of platforms. This isnecessary because there is no guarantee that thejava codewhich depends on a change in core is identical on all platforms.For instance,rt.jar is not portable—the classeswithin it vary from platform to platform.
Tests or modifications of existing tests are required and mustaccompany all changes (both new functionality and any bug fixes).There are some exceptions. For example, it is not always possibleto provide test for fixes for performance problems or otherconditions that are difficult to simulate or require unusualenvironmental conditions (such as exceptionally low memory, systemreboot, third-party software, etc.).
In addition to running the new tests, tests in the modified areaand any dependent areas should be run. Dependent areas may not beimmediately obvious. As with builds, it is necessary to run testson multiple platforms.
Not all areas have tests in the repository. There are twopossible reasons for this. It may be that there are no tests ortests may exist, but have not been audited for open-sourcing. Inthe latter case, the goal is to add them soon. Please ask aboutappropriate testing when considering a modification.
The following links reference the canonical end-userdocumentation for the JDK. The features areas listed above willhave documentation in the corresponding sections of thesereferences.