Los identificadores únicos universales (UUID) también se conocen como identificadores únicos globales (GUID), que son números de 128 bits y son únicos en todos los sistemas locales en los que se crean, y también se crean UUID entre otros sistemas. La clase Java UUID es parte del paquete java.util . La clase UUID de Java representa un identificador único universal inmutable. UUID es una combinación de 8-4-4-4-12 caracteres .
El UUID se compone de dígitos hexadecimales (4 caracteres cada uno) junto con 4 símbolos «-«, lo que hace que su longitud sea igual a 36 caracteres . Un UUID puede tener todos los bits establecidos en cero, lo que también se conoce como Nil UUID
Estructura de los términos de UUID
- time_low: tiempo bajo de 32 bits
- time_mid: 16 bits intermedios de tiempo
- time_hi_and_version: versión de 4 bits en el MSB, seguida de 12 bits altos de la hora
- clock_seq_hi_and_res_clock_seq_low: variante de 1-3 bits en los bits más significativos seguida de una secuencia de reloj de 13-15 bits
- Node: ID de Node de 48 bits
Aplicaciones de Java UUID
- Se usa para crear ID de sesión para aplicaciones web, también se usa para crear ID de transacción
- Extiende la clase de objeto
- Se utiliza para crear nombres de archivos aleatorios
- Implementa interfaces serializables y comparables
- Se utiliza para generar la clave principal para la tabla de base de datos
Métodos para generar UUID de Java
Versión 1: generación de valor de Node() para UUID basado en el tiempo
Aquí, el método devuelve el valor largo del Node del UUID y, para obtener el valor del Node, necesitamos crear un UUID basado en el tiempo (versión 1). Devuelve el valor del Node asociado con el UUID. Es un valor de Node de 48 bits. Contiene la dirección IEEE 802 (Dirección MAC) de la máquina.
Ejemplo:
Java
// Java program for Generating node() // value for time based UUID //import UUID package import java.util.UUID; public class UUIDMain { public static void main(String arg[]) { // returns a UUID with specified value UUID uuid = UUID.fromString("237e9877-e79b-12d4-a765-321741963000"); // returns node value System.out.println("Node value: " + uuid.node()); System.out.println("UUID Version : " + uuid.version()); } }
Node value: 55075465998336 UUID Version : 1
Versión 2: UUID basado en nombre
Un método de fábrica estático utilizado para obtener UUID basado en nombre utilizando la array de bytes especificada. Utiliza «nombre» en el sentido de transmisión imaginable y un UUID que indica el tipo de nombre utilizado.
Ejemplo:
Java
// Java program for generating Name based UUID import java.util.UUID; public class Main { public static void main(String[] args) { // initialize byte array byte[] bs = { 1, 2, 3 }; // initialize uuid using byte array UUID uuid = UUID.nameUUIDFromBytes(bs); System.out.println("UUID : " + uuid); System.out.println("UUID Version : " + uuid.version()); } }
UUID : 5289df73-7df5-3326-bcdd-22597afb1fac UUID Version : 3
UUID para máquina Linux
Los dos enfoques anteriores se pueden utilizar para generar UUID para el sistema Linux. Para generar un UUID de sistema para Linux Machine, se necesitan algunos requisitos previos antes de generar un UUID.
- Se debe instalar Java Development Kit (JDK), la última versión funcionaría mucho mejor aquí
- Es necesario configurar el editor Vim o Gedit para compilar y ejecutar el código.
- Conceptos básicos para trabajar con el editor Vim necesarios para compilar, guardar, ejecutar y editar el programa.
- Conocimiento de ejecución de código tanto en Vim Editor como en Linux Kernel/Terminal con la ayuda de los comandos de Linux.
Para el código que se proporciona a continuación, Vim Editor se usa para compilar y ejecutar el programa. UUID es un identificador único que se utiliza en las particiones para identificar de forma única las particiones en los sistemas operativos Linux. UUID es una propiedad de la propia partición del disco.
En el siguiente código, importamos el paquete Buffer Reader y Input Stream Reader, luego generamos un UUID aleatorio con la ayuda del método String para obtener las entradas de él y generar UUID.
Java
// Java Program to get System UUID Number for linux Machine // (Root User Login is Req for running the code) import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { // Method for get System UUID for Linux Machine static String getLinuxSystem_UUID() { String command = "dmidecode -s system-uuid"; // setting uuid to null first String uuid = null; try { Process SerNumProcess = Runtime.getRuntime().exec(command); BufferedReader sNumReader = new BufferedReader(new InputStreamReader( SerNumProcess.getInputStream())); // reads the uuid line by line to separate the // uuid into 4 parts uuid = sNumReader.readLine().trim(); SerNumProcess.waitFor(); sNumReader.close(); } catch (Exception ex) { System.err.println("Linux UUID Exp : " + ex.getMessage()); uuid = null; } finally { return uuid; } } public static void main(String[] args) { // generates uuid for linux system String system_uuid = getLinuxSystem_UUID(); System.out.println("Linux System UUID Number : " + system_uuid); } }
Producción: