# Instalar el SDK

Elige el gestor de paquetes nativo de tu lenguaje. Go, JavaScript y C/C++ usan directamente los SDK base de Go, JS/WASM y CGo. Los paquetes de los demás lenguajes envuelven esas mismas implementaciones.

**Disponibilidad de la versión:** el nombre canónico `@urnetwork/sdk` y los nuevos paquetes de lenguaje están pendientes de publicación. Los comandos de abajo son el contrato de instalación de esa versión; cada guía de lenguaje explica también cómo compilar los paquetes en local. Los ejemplos de sockets necesitan una versión que contenga la nueva API de sockets.

| Lenguaje | Instalación nativa | Guía |
| --- | --- | --- |
| C | `vcpkg add port urnetwork-sdk` | [Guía de C](/docs/examples/c) |
| C++ | `vcpkg add port urnetwork-sdk` | [Guía de C++](/docs/examples/cpp) |
| C# | `dotnet add package URnetwork.SDK` | [Guía de C#](/docs/examples/csharp) |
| Go | `go get github.com/urnetwork/sdk/v2026@latest` | [Guía de Go](/docs/examples/go) |
| Java | `implementation("io.ur:urnetwork-sdk:<version>")` | [Guía de Java](/docs/examples/java) |
| JavaScript | `npm install @urnetwork/sdk` | [Guía de JavaScript](/docs/examples/javascript) |
| Kotlin | `implementation("io.ur:urnetwork-sdk:<version>")` | [Guía de Kotlin](/docs/examples/kotlin) |
| Python | `pip install urnetwork-sdk` | [Guía de Python](/docs/examples/python) |
| Ruby | `gem install urnetwork-sdk` | [Guía de Ruby](/docs/examples/ruby) |
| Rust | `cargo add urnetwork-sdk` | [Guía de Rust](/docs/examples/rust) |
| Swift | `.package(url: "https://github.com/urnetwork/sdk-swift", exact: "<version>")` | [Guía de Swift](/docs/examples/swift) |
| TypeScript | `npm install @urnetwork/sdk` | [Guía de TypeScript](/docs/examples/typescript) |

Estos comandos, sin calificar, seleccionan las versiones por defecto/estables. Para las versiones preliminares, usa `npm install @urnetwork/sdk@nightly`, `pip install --pre urnetwork-sdk`, `dotnet add package URnetwork.SDK --prerelease` o `gem install urnetwork-sdk --pre`. Cargo, Maven y SwiftPM pueden fijar la versión preliminar exacta. Los paquetes preliminares se llaman igual que los estables.

## Java y Kotlin en Android

Usa `io.ur:urnetwork-sdk-android:<version>` en lugar de la coordenada de la JVM de escritorio. El AAR de Android se compila con gomobile; Java/Kotlin de escritorio usan JNA sobre el runtime de CGo. Swift usa el XCFramework de Apple ya existente.

## Contenido de los paquetes

Los wheels de Python, las gemas de Ruby, los paquetes NuGet y los paquetes de la JVM de escritorio incluyen las bibliotecas nativas que admiten. El crate de Rust descarga en tiempo de compilación un asset nativo con la versión fijada y la suma de verificación comprobada, y lo incrusta en el ejecutable. Quien lo consume no necesita un compilador de Go ni descargar DLLs a mano. La compatibilidad se limita a las plataformas incluidas en esa versión; los paquetes de Linux declaran la versión mínima de libc que requieren.

El paquete npm contiene su runtime Go/WASM emparejado y las declaraciones de TypeScript, con ejemplos ejecutables para Node y para el navegador. Ambos usan un Device alojado ya configurado. La API fetch nativa del navegador no tiene una fábrica de sockets personalizada; consulta la guía de integración HTTP del lenguaje para ver su adaptador de peticiones de Axios y su ejemplo de Direct Sockets.

## Ejemplos y comportamiento de los sockets

Abre el [explorador de ejemplos](/docs/examples) para ver, en cada lenguaje, el README de instalación, la guía de ejecución `socket/README.md` y los archivos fuente ejecutables. Lee [Sockets del SDK](/docs/socket) para conocer la diferencia entre un socket del kernel y un socket de Device, incluida la posible entrega duplicada cuando UDP pone a competir el primer datagrama entre IPv4 e IPv6.

Para la instalación desde el código fuente, la fijación de versiones y los gestores de paquetes alternativos, usa las guías de lenguaje de arriba. Las recetas de C/C++ se publican en un remote de Conan propio ya configurado o en un registro Git de vcpkg; añade ese remote/registro una vez antes de ejecutar los comandos de arriba. La inclusión en las colecciones públicas upstream requiere que sus mantenedores la acepten. Las guías de lenguaje incluyen esta configuración y la instalación local con CMake a partir de un archivo comprimido.
