Quels sont les meilleurs moyens de créer un GUID en Java?
Jetez un coup d'œil à la classe UUID fournie avec Java 5 et versions ultérieures.
Par exemple:
Java.util.UUID.randomUUID();
Cela dépend du type de UUID que vous voulez.
La classe standard Java UUID
génère Version 4 (aléatoire) UUID. (UPDATE - Version (nom) Des UUID peuvent également être générés.) Il peut également gérer d'autres variantes. il ne peut pas les générer. (Dans ce cas, "handle" signifie construire des instances UUID
à partir de long
, byte[]
ou String
représentations, et fournit des accesseurs appropriés .)
L'implémentation Java UUID Generator (JUG) prétend prendre en charge "tous les 3 types" officiels "d'UUID définis par RFC-4122 " ... bien que la RFC en définisse 4 types et mentionne un 5ème type.
Pour plus d'informations sur les types et les variantes d'UUID, il existe un bon résumé dans Wikipedia , et les détails sanglants se trouvent dans RFC 4122 et les autres spécifications.
Juste pour étendre la réponse de Mark Byers avec un exemple:
import Java.util.UUID;
public class RandomStringUUID {
public static void main(String[] args) {
UUID uuid = UUID.randomUUID();
System.out.println("UUID=" + uuid.toString() );
}
}
Les autres réponses sont correctes, notamment celle-ci par Stephen C .
Génération d'un UUID la valeur dans Java est limitée à Version 4 (aléatoire) pour des raisons de sécurité.
Si vous souhaitez utiliser d'autres versions d'UUID, vous pouvez, par exemple, laisser votre application Java sortir du JVM pour générer des UUID en appelant:
uuidgen
trouvé dans Mac OS X, BSD et Linux.uuid-ossp
est souvent associée à Postgres . Cette extension peut générer les valeurs des versions 1, 3 et 4, ainsi que quelques variantes: uuid_generate_v1mc()
- génère un UUID version 1, mais utilise une adresse MAC de multidiffusion aléatoire au lieu de la véritable adresse MAC de l'ordinateur.uuid_generate_v5(namespace uuid, name text)
- génère un UUID version 5, qui fonctionne comme un UUID version 3, à l'exception du fait que SHA-1 est utilisé comme méthode de hachage.