¿Cuáles son algunas de las mejores formas de crear un GUID en Java?
¿Cuáles son algunas de las mejores formas de crear un GUID en Java?
Respuestas:
Eche un vistazo a la clase UUID incluida con Java 5 y versiones posteriores.
Por ejemplo:
java.util.UUID.randomUUID();
UUID.randomUUID
método devuelva un duplicado, pero esto no es una preocupación realista . La implementación de Oracle / OpenJDK utiliza un generador de números aleatorios criptográficamente fuerte. Dado eso, y dado el rango astronómico dado por tantos bits en un UUID, puede generar muchos millones de tales valores en su aplicación y aún así dormir bien. El uso de una de las otras variantes reduce aún más la posibilidad de colisiones aún más cercanas a cero debido al uso de "espacio y tiempo", [1] dirección MAC o nombre, y [2] fecha-hora actual, como restricciones.
while
hasta que tienes una que no está dentro de tu lista: p
Depende del tipo de UUID que desee.
La UUID
clase estándar de Java genera UUID de versión 4 (aleatorios). ( ACTUALIZACIÓN : también se pueden generar UUID de versión 3 (nombre)). También puede manejar otras variantes, aunque no puede generarlas. (En este caso, "manejar" significa construir UUID
instancias de long
, byte[]
o String
representaciones, y proporcionar algunos accesores apropiados).
La implementación de Java UUID Generator (JUG) pretende admitir "los 3 tipos 'oficiales' de UUID según lo definido por RFC-4122 " ... aunque el RFC en realidad define 4 tipos y menciona un quinto tipo.
Para obtener más información sobre los tipos y variantes de UUID, hay un buen resumen en Wikipedia , y los detalles sangrientos se encuentran en RFC 4122 y otras especificaciones.
UUID.nameUUIDFromBytes(byte[] name)
public static UUID nameUUIDFromBytes(byte[] name)
. para uso tipo 4 public static UUID randomUUID()
. El tipo 1 no está disponible con la clase JDK.
clockSequence()
Solo para extender la respuesta de Mark Byers con un ejemplo:
import java.util.UUID;
public class RandomStringUUID {
public static void main(String[] args) {
UUID uuid = UUID.randomUUID();
System.out.println("UUID=" + uuid.toString() );
}
}
Las otras respuestas son correctas, especialmente éste por Stephen C .
La generación de un valor UUID dentro de Java está limitada a la Versión 4 (aleatoria) debido a problemas de seguridad.
Si desea otras versiones de UUID, una vía es hacer que su aplicación Java llegue fuera de la JVM para generar UUID llamando a:
uuidgen
encuentra en Mac OS X, BSD y Linux.uuid-ossp
extensión a menudo se incluye con Postgres . Esa extensión puede generar los valores de las versiones 1, 3 y 4 y, adicionalmente, un par de variaciones:
uuid_generate_v1mc()
- genera un UUID versión 1 pero usa una dirección MAC de multidifusión aleatoria en lugar de la dirección MAC real de la computadora.uuid_generate_v5(namespace uuid, name text)
- genera un UUID de la versión 5, que funciona como un UUID de la versión 3, excepto que SHA-1 se utiliza como método de hash.