View in English

  • Apple Developer
    • Get Started

    Explore Get Started

    • Overview
    • Learn
    • Apple Developer Program

    Stay Updated

    • Latest News
    • Hello Developer
    • Platforms

    Explore Platforms

    • Apple Platforms
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    • App Store

    Featured

    • Design
    • Distribution
    • Games
    • Accessories
    • Web
    • Home
    • CarPlay
    • Technologies

    Explore Technologies

    • Overview
    • Xcode
    • Swift
    • SwiftUI

    Featured

    • Accessibility
    • App Intents
    • Apple Intelligence
    • Games
    • Machine Learning & AI
    • Security
    • Xcode Cloud
    • Community

    Explore Community

    • Overview
    • Meet with Apple events
    • Community-driven events
    • Developer Forums
    • Open Source

    Featured

    • WWDC
    • Swift Student Challenge
    • Developer Stories
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Centers
    • Documentation

    Explore Documentation

    • Documentation Library
    • Technology Overviews
    • Sample Code
    • Human Interface Guidelines
    • Videos

    Release Notes

    • Featured Updates
    • iOS
    • iPadOS
    • macOS
    • watchOS
    • visionOS
    • tvOS
    • Xcode
    • Downloads

    Explore Downloads

    • All Downloads
    • Operating Systems
    • Applications
    • Design Resources

    Featured

    • Xcode
    • TestFlight
    • Fonts
    • SF Symbols
    • Icon Composer
    • Support

    Explore Support

    • Overview
    • Help Guides
    • Developer Forums
    • Feedback Assistant
    • Contact Us

    Featured

    • Account Help
    • App Review Guidelines
    • App Store Connect Help
    • Upcoming Requirements
    • Agreements and Guidelines
    • System Status
  • Quick Links

    • Events
    • News
    • Forums
    • Sample Code
    • Videos
 

Videos

Abrir menú Cerrar menú
  • Colecciones
  • Todos los videos
  • Información

Más videos

  • Información
  • Resumen
  • Código
  • Explora la interoperabilidad de Swift y Java

    Descubre cómo puedes combinar Swift y Java en una única base de código. Presentaremos el proyecto de interoperabilidad swift-java, que te permite usar Swift en programas Java o viceversa. Mostraremos cómo usar las herramientas y bibliotecas de swift-java para escribir código seguro y eficaz que interopere entre estos tiempos de ejecución.

    Capítulos

    • 0:00 - Introducción y agenda
    • 2:41 - Diferencias en el tiempo de ejecución
    • 3:31 - Métodos nativos de Java
    • 6:29 - SwiftJava
    • 10:13 - Convoca Java desde Swift
    • 14:01 - Convoca Swift desde Java
    • 20:47 - Conclusión

    Recursos

    • SwiftJava
    • The Swift website
    • The Swift Programming Language
      • Video HD
      • Video SD

    Videos relacionados

    WWDC25

    • Mejora el uso y el rendimiento de la memoria con Swift
    • Mezcle de forma segura C, C++ y Swift
    • Novedades de Swift

    WWDC23

    • Mix Swift and C++
  • Buscar este video…
    • 9:05 - Implement JNI native methods in Swift

      import JavaKit
      import JavaRuntime
      
      import Crypto
      
      @JavaImplementation("com.example.JNIExample")
      extension JNIExample: JNIExampleNativeMethods {
       
        @JavaMethod
        func compute(_ a: JavaInteger?, _ b: JavaInteger?) -> [UInt8] {
          guard let a else { fatalError("Expected non-null parameter 'a'") }
          guard let a else { fatalError("Expected non-null parameter 'b'") }
          
          let digest = SHA256Digest([a.intValue(), b.intValue()]) // convenience init defined elsewhere
          return digest.toArray()
        }
      }
    • 12:30 - Resolve Java dependencies with swift-java

      swift-java resolve --module-name JavaApacheCommonsCSV
    • 13:05 - Use a Java library from Swift

      import JavaKit
      import JavaKitIO
      import JavaApacheCommonsCSV
      
      let jvm = try JavaVirtualMachine.shared()
      
      let reader = FileReader("sample.csv") // java.io.StringReader
      
      for record in try JavaClass<CSVFormat>().RFC4180.parse(reader)!.getRecords()! {
        for field in record.toList()! {      // Field: hello
          print("Field: \(field)")           // Field: example
        }                                    // Field: csv
      }
      
      print("Done.")
    • 16:22 - Wrap Swift types for Java

      swift-java --input-swift Sources/SwiftyBusiness \ 
                 --java-package com.example.business \
                 --output-swift .build/.../outputs/SwiftyBusiness \
                 --output-java .build/.../outputs/Java ...
    • 18:55 - Create Swift objects from Java

      try (var arena = SwiftArena.ofConfined()) {
        var business = new SwiftyBusiness(..., arena);
      }
    • 0:00 - Introducción y agenda
    • Obtén información sobre una biblioteca de lenguaje Swift experimental, llamada “swift-java”, que permite que Swift funcione sin problemas con Java, que aprovecha las funcionalidades de interoperabilidad existentes con Objective-C, C y C++. Esta interoperabilidad te permite introducir Swift de forma incremental en bases de código Java existentes, reutilizar bibliotecas en distintos lenguajes e integrar bibliotecas Swift con proyectos Java. La interoperabilidad proporcionada por “swift-java” admite la invocación a código Java desde Swift y viceversa, y el equipo está trabajando en herramientas y técnicas para manejar las diferencias entre los tiempos de ejecución de Java y Swift, y proporcionar una mejor seguridad de memoria para el código Java traducido a tipos Swift.

    • 2:41 - Diferencias en el tiempo de ejecución
    • Swift y Java comparten funcionalidades comunes como clases, herencia, administración automática de memoria, genéricos y manejo de errores, aunque existen diferencias en el tiempo de ejecución. A pesar de estas diferencias de tiempo de ejecución, las similitudes entre ambos lenguajes permiten la expresión de la mayoría de las API de un lenguaje en el otro.

    • 3:31 - Métodos nativos de Java
    • La API Java Native Interface (JNI) se presentó a principios de 1997 y permite que el código Java que se ejecuta dentro de una máquina virtual Java (JVM) interopere con código nativo, como Swift. Esto se hace a menudo para mejorar el rendimiento o usar bibliotecas nativas sin equivalentes de Java. Para usar JNI, se define una función “nativa” en Java y se genera un archivo de encabezado C correspondiente. Este archivo de encabezado contiene una declaración de función C que debe implementarse en el lenguaje nativo, como Swift. El proceso implica administrar la vida útil de los objetos, hacer coincidir firmas de métodos y manejar código de plantilla verboso, que puede ser propenso a errores y consumir mucho tiempo, lo que puede provocar fallos fatales.

    • 6:29 - SwiftJava
    • SwiftJava mejora la interoperabilidad entre los lenguajes Swift y Java. Proporciona un conjunto de herramientas, incluidas bibliotecas Swift y Java, una herramienta de línea de comandos e integraciones de sistemas de compilación, para simplificar y asegurar la interacción entre los dos lenguajes. La herramienta de línea de comandos “swift-java” automatiza la generación de código puente, lo que elimina la necesidad de interacción manual con el encabezado C. Esto da como resultado un código más limpio y más fácil de mantener con una mejor administración de la vida útil de los objetos y seguridad de tipos. Ahora puedes centrarte en la lógica empresarial, aprovechando todo el poder de los ecosistemas Swift y Java y evitando los errores y las dificultades comunes asociados con la implementación manual de JNI.

    • 10:13 - Convoca Java desde Swift
    • SwiftJava permite la integración de bibliotecas Java en proyectos Swift. Para importar una biblioteca Java completa, como Apache Commons CSV, prepara las siguientes coordenadas de artefacto: “groupId”, “artifactId” y ”versión”. Luego, SwiftJava usa Gradle, un sistema de compilación de código abierto, para resolver las dependencias Java. Hay dos métodos para descargar y abstraer las dependencias Java: Usando el complemento de la herramienta de compilación SwiftJava, que requiere deshabilitar entorno aislado de seguridad de SwiftPM, o mediante el comando “resolve” de la herramienta de línea de comandos “swift-java”, que realiza la resolución fuera del proceso de compilación. Una vez resueltas las dependencias Java, puedes importar la biblioteca Java en Swift, iniciar la JVM dentro del proceso de Swift y usar sin problemas el código y las colecciones de Java junto con las funcionalidades de Swift, con JavaKit manejando la administración de la vida útil de los objetos.

    • 14:01 - Convoca Swift desde Java
    • SwiftJava permite la integración de bibliotecas Swift en proyectos Java. Para lograrlo, en esta sesión de WWDC25 se presenta un nuevo enfoque que evita la necesidad de extensas funciones envolventes en el lado de Java. En cambio, toda la biblioteca Swift está envuelta con clases Java que utilizan la nueva API Foreign Function and Memory (FFI) presentada en Java 22. FFI proporciona un control mejorado sobre la memoria nativa y permite una integración profunda entre los tiempos de ejecución de Java y Swift y los sistemas de administración de memoria. Al utilizar FFI, el proceso de invocar a código Swift desde Java se vuelve más eficiente y seguro. La herramienta de línea de comandos “swift-java” se usa para generar las clases Java y el código auxiliar Swift necesarios. Esta herramienta automatiza la generación de código de plantilla, haciendo que el proceso sea más sencillo. Las clases Java generadas sirven como accesores para los tipos y las funciones de Swift, lo que expone efectivamente la funcionalidad de la biblioteca Swift a Java. La administración adecuada de la memoria es fundamental cuando se trabaja con objetos Swift nativos en Java. El debate destaca dos enfoques: utilizar un “AutoArena” que se basa en el Recolector de basura de Java (GC) y usar un método preferido que utiliza “try-with-resources” y un “ConfinedArena”. El último enfoque garantiza una desinicialización de objetos bien definida y ordenada, lo que evita problemas de rendimiento y sobrecarga el GC. Esta técnica le permite crear y publicar bibliotecas Java encapsuladas en Swift, lo que las hace fácilmente consumibles en proyectos Java. Esto simplifica la adopción de Swift dentro de equipos que ya tienen una fuerte presencia de Java, lo que fomenta un entorno de desarrollo más flexible y eficiente. El desarrollo continuo de SwiftJava tiene como objetivo pulir y refinar aún más estas técnicas, y proporcionar una solución sólida para la interoperabilidad entre los dos lenguajes.

    • 20:47 - Conclusión
    • El lenguaje de programación Swift es de código abierto y está alojado en GitHub, así como en bibliotecas como SwiftJava. La comunidad está activa en los foros de Swift, donde puedes aprender, compartir ideas y hacer comentarios.

Developer Footer

  • Videos
  • WWDC25
  • Explora la interoperabilidad de Swift y Java
  • Open Menu Close Menu
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    • App Store
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • Icon Composer
    • SF Symbols
    Open Menu Close Menu
    • Accessibility
    • Accessories
    • Apple Intelligence
    • Audio & Video
    • Augmented Reality
    • Business
    • Design
    • Distribution
    • Education
    • Games
    • Health & Fitness
    • In-App Purchase
    • Localization
    • Maps & Location
    • Machine Learning & AI
    • Security
    • Safari & Web
    Open Menu Close Menu
    • Documentation
    • Downloads
    • Sample Code
    • Videos
    Open Menu Close Menu
    • Help Guides & Articles
    • Contact Us
    • Forums
    • Feedback & Bug Reporting
    • System Status
    Open Menu Close Menu
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles
    • Feedback Assistant
    Open Menu Close Menu
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program
    • Mini Apps Partner Program
    • News Partner Program
    • Video Partner Program
    • Security Bounty Program
    • Security Research Device Program
    Open Menu Close Menu
    • Meet with Apple
    • Apple Developer Centers
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Academies
    • WWDC
    Read the latest news.
    Get the Apple Developer app.
    Copyright © 2026 Apple Inc. All rights reserved.
    Terms of Use Privacy Policy Agreements and Guidelines