JDK-4173528 : Add a method to generate a UUID (Universal Unique Identifier)
  • Type: Enhancement
  • Component: core-libs
  • Sub-Component: java.util
  • Affected Version: 1.2.0,1.2.1,1.4.0,1.4.1
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic,windows_nt,windows_2000
  • CPU: generic,x86
  • Submitted: 1998-09-14
  • Updated: 2017-05-16
  • Resolved: 2003-08-15
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availabitlity Release.

To download the current JDK release, click here.
5.0 tigerFixed
Related Reports
Duplicate :  
Duplicate :  
Duplicate :  
Name: tb29552			Date: 09/14/98

This feature is to add UUID functionality to the J2SE platform by the addition of a UUID class for manipulating Leach-Salz variants.

The uuid (Universal Unique Identifier) is an XOPEN standard
for creating a globally unique id.

Quoting below from:

"A UUID is an identifier that is unique across both space and
time[note 1], with respect to the space of all UUIDs.  A UUID
can be used for multiple purposes, from tagging objects with
an extremely short lifetime, to reliably identifying very
persistent objects across a network.

The generation of UUIDs does not require a registration
authority for each single identifier.  Instead, it requires a
unique value over space for each UUID generator.  This
spatially unique value is specified as an IEEE 802 address,
which is usually already applied to network-connected
systems.  This 48-bit address can be assigned based on
an address block obtained through the IEEE registration
authority.  This UUID specification assumes the availability
of an IEEE 802 address. "(end quote)

Note 1:

We use a UUID as an object id for each business object.  These
objects could be created in different countries (i.e different web
servers ) and are replicated to many databases.  The best solution
to this is the uuid.   We are writing an all Java likeness to the uuid,
but since there is no 100% pure Java way to access the 48-bit IEEE
802 address (network card id) then we cannot faithfully reproduce
a true uuid.

(Review ID: 38793)

On some systems, generating a time-space based UUID requires privileged user credentials and is not currently implemented, time, random,name and DCE are available
###@###.### 11/2/04 23:19 GMT

CONVERTED DATA BugTraq+ Release Management Values COMMIT TO FIX: tiger FIXED IN: tiger INTEGRATED IN: tiger tiger-b16


EVALUATION In some environments, an IEEE802 address may not be available. However, the UUID concept is a useful one, and there should be some way to generate them when possible. Rather than putting UUID support into the language, it might be better simply to allow access to the network card address, if available. In any case, this is the sort of thing that should be confined to java.lang.System if it is to go in java.lang at all. william.maddox@Eng 1998-09-21 On systems that have networking cards it generally only requires a small amount of native code to access the MAC address. We should consider defining an API for generating UUIDs that uses the MAC address when available and falls back to some other mechanism (or simply fails gracefully) otherwise. Under consideration for Tiger. -- ###@###.### 2002/2/20 Making time based UUIDs requires synchronization and management of a persistent information store across all programs generating UUIDs running on the machine. This requires root/administrator privileges on the machine which is not something that Java can rely upon having. Therefore we may be forced to only offer the pure random type UUIDs based upon a high quality source of random bytes. Delegating the generation of UUIDs to the operating system does not solve this problem. For instance on Solaris you cannot get high quality time&space based UUIDs without being root for the same reason-- you need to be able to lock a global file containing the time information mentioned in the standard. ###@###.### 2002-08-23