Did I ever tell you that Mrs. McCave
Had twenty-three sons and she named them all "Dave"?
Well, she did. And that wasn't a smart thing to do. . . .
-Dr. Seuss (Theodore Geisel), Too Many Daves (1961)
Developers should take steps to avoid the possibility of two published packages having the same name by choosing unique package names for packages that are widely distributed. This allows packages to be easily and automatically installed and catalogued. This section specifies a standard convention, not enforced by a Java compiler, for generating such unique package names. Java systems are encouraged to provide automatic support for converting a set of packages from local and casual package names to the unique name format described here.
If unique package names are not used, then package name conflicts may arise far from the point of creation of either of the conflicting packages. This may create a situation that is difficult or impossible for the user or programmer to resolve. The class ClassLoader
(§20.14) of the standard Java Virtual Machine environment can be used to isolate packages with the same name from each other in those cases where the packages will have constrained interactions, but not in a way that is transparent to a naive Java program.
You form a unique package name by first having (or belonging to an organization that has) an Internet domain name, such as Sun.COM
. You then reverse this name, component by component, to obtain, in this example, COM.Sun
, and use this as a prefix for your package names, using a convention developed within your organization to further administer package names.
Such a convention might specify that certain directory name components be division, department, project, machine, or login names. Some possible examples:
COM.Sun.sunsoft.DOE COM.Sun.java.jag.scrabble COM.Apple.quicktime.v2 EDU.cmu.cs.bovik.cheese GOV.whitehouse.socks.mousefinder
The first component of a unique package name is always written in all-uppercase
ASCII letters and should be one of the top-level domain names, currently COM
,
EDU
, GOV
, MIL
, NET
, ORG
, or one of the English two-letter codes identifying countries as specified in ISO Standard 3166, 1981. For more information, refer to the
documents stored at ftp://rs.internic.net/rfc
, for example, rfc920.txt
and rfc1032.txt
.
The name of a package is not meant to imply anything about where the package is stored within the Internet; for example, a package named EDU.cmu.cs.bovik.cheese
is not necessarily obtainable from Internet address cmu.EDU
or from cs.cmu.EDU
or from bovik.cs.cmu.EDU
. The Java convention for generating unique package names is merely a way to piggyback a package naming convention on top of an existing, widely known unique name registry instead of having to create a separate registry for Java package names.
If you need to get a new Internet domain name, you can get an application form from ftp://ftp.internic.net
and submit the complete forms by E-mail to domreg@internic.net
. To find out what the currently registered domain names are, you can telnet
to rs.internic.net
and use the whois
facility.