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
 

Vídeos

Abrir menu Fechar menu
  • Coleções
  • Todos os vídeos
  • Sobre

Mais vídeos

  • Sobre
  • Resumo
  • Código
  • Explore a interoperabilidade entre Swift e Java

    Saiba como você pode usar o Swift e o Java juntos em uma única base de código. Vamos apresentar o projeto de interoperabilidade Swift-Java, que permite usar o Swift em programas do Java ou vice-versa. Mostraremos como usar as ferramentas e bibliotecas oferecidas pelo Swift-Java para escrever código seguro, eficiente e totalmente integrado entre as duas linguagens.

    Capítulos

    • 0:00 - Introdução
    • 2:41 - Diferenças nos tempos de execução
    • 3:31 - Métodos nativos do Java
    • 6:29 - Swift-Java
    • 10:13 - Chamar o Java no Swift
    • 14:01 - Chamar o Swift no Java
    • 20:47 - Conclusão

    Recursos

    • SwiftJava
    • The Swift website
    • The Swift Programming Language
      • Vídeo HD
      • Vídeo SD

    Vídeos relacionados

    WWDC25

    • Combine C, C++ e Swift com segurança
    • Melhore o uso da memória e o desempenho com o Swift
    • Novidades do Swift

    WWDC23

    • Mix Swift and C++
  • Buscar neste vídeo...
    • 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 - Introdução
    • Conheça uma biblioteca experimental da linguagem Swift, chamada swift-java, que permite que o Swift funcione perfeitamente com o Java, aproveitando os recursos já existentes de interoperabilidade com Objective-C, C e C++. Essa interoperabilidade permite introduzir o Swift de forma incremental em bases de código Java atuais, reutilizar bibliotecas entre linguagens e integrar bibliotecas Swift em projetos Java. A interoperabilidade oferecida pelo swift-java permite tanto chamar código Java no Swift, e vice-versa. A equipe está trabalhando em ferramentas e técnicas para lidar com as diferenças entre os tempos de execução entre Java e Swift, além de oferecer maior segurança de memória para código Java traduzido em tipos do Swift.

    • 2:41 - Diferenças nos tempos de execução
    • As linguagens Swift e Java têm recursos em comum, como classes, herança, gerenciamento automático de memória, genéricos e tratamento de erros, embora existam diferenças nos tempos de execução. Apesar dessas diferenças, as semelhanças entre as duas linguagens permitem expressar a maioria das APIs de uma linguagem na outra.

    • 3:31 - Métodos nativos do Java
    • A API Java Native Interface (JNI) foi lançada no início de 1997 e permite que o código Java em execução dentro de uma Java Virtual Machine (JVM) interopere com código nativo, como Swift. Isso geralmente é feito para melhorar o desempenho ou utilizar bibliotecas nativas que não têm equivalente em Java. Para usar a JNI, uma função native é definida em Java e é gerado um arquivo de cabeçalho em C correspondente. Esse arquivo contém uma declaração de função em C que deve ser implementada na linguagem nativa, como Swift. O processo envolve o gerenciamento do ciclo de vida de objetos, a correspondência de assinaturas de métodos e o tratamento de código repetitivo e longo, o que pode ser suscetível a erro e, demorado, além de levar a falhas fatais.

    • 6:29 - Swift-Java
    • O SwiftJava melhora a interoperabilidade entre as linguagens Swift e Java. Ele oferece um pacote de ferramentas, incluindo bibliotecas Swift e Java, uma ferramenta de linha de comando e integrações com sistemas de compilação, para simplificar e tornar mais segura a interação entre as duas linguagens. A ferramenta de linha de comando swift-java automatiza a geração do código de ligação, eliminando a necessidade de lidar manualmente com arquivos de cabeçalho em C. Isso resulta em um código mais limpo, fácil de manter, com melhor gerenciamento do ciclo de vida dos objetos e maior segurança de tipos. Agora você pode se concentrar na lógica de negócios, aproveitando ao máximo os ecossistemas do Swift e do Java e evitando os erros e armadilhas comuns da implementação manual da JNI.

    • 10:13 - Chamar o Java no Swift
    • O SwiftJava permite integrar bibliotecas Java a projetos do Swift. Para importar uma biblioteca Java inteira, como a Apache Commons CSV, prepare as seguintes coordenadas de artefato: groupId, artifactId e version. Em seguida, o SwiftJava utiliza o Gradle, um sistema de compilação de código aberto, para resolver dependências Java. Existem duas formas de baixar e encapsular essas dependências: Usando o plug-in da ferramenta de compilação SwiftJava, que requer a desativação do Sandbox de segurança do SwiftPM, ou o comando resolve da ferramenta de linha de comando swift-java, que executa a resolução fora do processo de compilação. Após resolver as dependências do Java, você pode importar a biblioteca Java no Swift, iniciar a JVM dentro do processo do Swift e usar o código em Java e suas coleções de forma integrada com os recursos do Swift, com o JavaKit gerenciando o ciclo de vida dos objetos.

    • 14:01 - Chamar o Swift no Java
    • O SwiftJava permite integrar bibliotecas Swift a projetos do Java. Para isso, esta sessão da WWDC25 apresenta uma nova abordagem que elimina a necessidade de funções de wrapper extensas no lado Java. Em vez disso, toda a biblioteca Swift é encapsulada com classes Java utilizando a nova API Foreign Function and Memory (FFI), introduzida no Java 22. A FFI oferece controle aprimorado sobre a memória nativa e permite uma integração profunda entre os tempos de execução e sistemas de gerenciamento de memória do Java e do Swift. Ao usar a FFI, o processo de chamar o código do Swift a partir do Java fica mais eficiente e seguro. A ferramenta de linha de comando swift-java é usada para gerar as classes Java necessárias e o código auxiliar em Swift. Ela automatiza a geração de código padrão, simplificando o processo. As classes Java geradas funcionam como assessores para os tipos e funções Swift, expondo efetivamente a funcionalidade da biblioteca Swift para o Java. O gerenciamento adequado de memória é fundamental ao trabalhar com objetos Swift nativos em Java. A discussão destaca duas abordagens: O uso do AutoArena, que depende do Coletor de Lixo (GC) do Java, e o método preferido, que utiliza o bloco try-with-resources com o ConfinedArena. Essa última abordagem garante uma desalocação de objetos bem definida e ordenada, evitando problemas de desempenho e sobrecarga no GC. Essa técnica permite criar e publicar bibliotecas Java encapsuladas em Swift, facilitando sua utilização em projetos do Java. Isso simplifica a adoção do Swift por equipes que já possuem uma base sólida em Java, promovendo um ambiente de desenvolvimento mais flexível e eficiente. O desenvolvimento contínuo do SwiftJava busca aprimorar ainda mais essas técnicas, oferecendo uma solução robusta para a interoperabilidade entre as duas linguagens.

    • 20:47 - Conclusão
    • A linguagem de programação Swift é de código aberto e hospedada no GitHub e em bibliotecas como o SwiftJava. A comunidade é ativa nos fóruns do Swift, onde você pode aprender, compartilhar ideias e dar feedback.

Developer Footer

  • Vídeos
  • WWDC25
  • Explore a interoperabilidade entre Swift e 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