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
 

Vidéos

Ouvrir le menu Fermer le menu
  • Collections
  • Toutes les vidéos
  • À propos

Plus de vidéos

  • À propos
  • Résumé
  • Code
  • Découvrir l’interopérabilité entre Swift et Java

    Découvrez comment combiner Swift et Java dans une seule base de code. Nous allons présenter le projet d'interopérabilité swift-java, qui vous permet d'utiliser Swift dans les programmes Java ou vice versa. Nous allons vous montrer comment utiliser les outils et les bibliothèques offerts par swift-java pour écrire du code sûr et performant qui interagit entre ces deux environnements d'exécution.

    Chapitres

    • 0:00 - Introduction et ordre du jour
    • 2:41 - Différences d’exécution
    • 3:31 - Méthodes Java natives
    • 6:29 - SwiftJava
    • 10:13 - Appel de Java depuis Swift
    • 14:01 - Appel de Swift depuis Java
    • 20:47 - Conclusion

    Ressources

    • SwiftJava
    • The Swift website
    • The Swift Programming Language
      • Vidéo HD
      • Vidéo SD

    Vidéos connexes

    WWDC25

    • Améliorer l’utilisation de la mémoire et les performances avec Swift
    • Mixez en toute sécurité C, C++ et Swift
    • Nouveautés dans Swift

    WWDC23

    • Mix Swift and C++
  • Rechercher dans cette vidéo…
    • 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 - Introduction et ordre du jour
    • Découvrez une bibliothèque expérimentale du langage Swift, appelée « swift-java », qui rend Swift compatible avec Java et vient s’ajouter aux fonctionnalités d’interopérabilité existantes dans Objective-C, C et C++. Cette interopérabilité vous permet d’intégrer progressivement Swift dans du code Java existant, de réutiliser des bibliothèques entre différents langages et d’intégrer des bibliothèques Swift à des projets Java. L’interopérabilité offerte par « swift-java » permet d’appeler du code Java à partir de Swift et inversement. Notre équipe travaille actuellement sur des outils et des techniques visant à gérer les différences entre les environnements d’exécution Java et Swift, ainsi qu’à améliorer la sécurité mémoire du code Java converti en types Swift.

    • 2:41 - Différences d’exécution
    • Swift et Java partagent des fonctionnalités telles que les classes, l’héritage, la gestion automatique de la mémoire, les génériques et la gestion des erreurs, bien qu’il existe des différences au niveau de l’exécution. Bien que ces deux langages présentent des différences, leurs points communs permettent généralement de transposer les API de l’un vers celles de l’autre.

    • 3:31 - Méthodes Java natives
    • L’API Java Native Interface (JNI) a été lancée au début de l’année 1997 et permet au code Java qui s’exécute dans une machine virtuelle Java (JVM) d’interagir avec du code natif, tel que Swift. Elle est souvent utilisée pour améliorer les performances ou pour utiliser des bibliothèques natives sans équivalent Java. Pour utiliser JNI, une fonction « native » est définie en Java, et un fichier d’en-tête C correspondant est généré. Ce fichier d’en-tête contient une déclaration de fonction C qui doit être implémentée dans le langage natif, tel que Swift. Le processus nécessite de gérer le cycle de vie des objets, d’assurer la compatibilité des signatures de méthodes et de traiter un code souvent trop verbeux. Ces tâches complexes peuvent non seulement être chronophages, mais aussi générer des erreurs critiques pouvant mener à des plantages système.

    • 6:29 - SwiftJava
    • SwiftJava améliore la compatibilité entre les langages Swift et Java. Il fournit une suite d’outils, notamment des bibliothèques Swift et Java, un outil en ligne de commande et des intégrations de systèmes de compilation, afin de simplifier et de sécuriser l’interaction entre ces deux langages. L’outil en ligne de commande « swift-java » automatise la génération de code de pontage. Il élimine ainsi toute interaction manuelle avec les en-têtes C. Vous bénéficiez ainsi d’un code plus propre et plus facile à maintenir, avec une gestion améliorée de la durée de vie des objets et une sécurité des types renforcée. Vous pouvez désormais vous concentrer sur la logique métier en tirant pleinement parti des écosystèmes Swift et Java et en évitant les pièges et les erreurs courants associés à l’implémentation manuelle de JNI.

    • 10:13 - Appel de Java depuis Swift
    • SwiftJava permet l’intégration de bibliothèques Java dans des projets Swift. Pour importer une bibliothèque Java, telle qu’Apache Commons CSV, préparez les coordonnées suivantes : « groupId », « artifactId » et « version ». SwiftJava utilise ensuite Gradle, un système de compilation open source, pour résoudre les dépendances Java. Il existe deux méthodes pour télécharger et encapsuler les dépendances Java : L’utilisation du plug-in de l’outil de compilation SwiftJava, qui nécessite la désactivation du sandbox de sécurité SwiftPM, ou la commande « resolve » de l’outil en ligne de commande « swift-java », qui effectue la résolution en dehors du processus de compilation. Une fois les dépendances Java résolues, vous pouvez importer la bibliothèque Java dans Swift, démarrer la JVM dans le processus Swift et utiliser de manière transparente le code Java et les collections avec les fonctionnalités Swift, JavaKit gérant la gestion de la durée de vie des objets.

    • 14:01 - Appel de Swift depuis Java
    • SwiftJava permet l’intégration des bibliothèques Swift dans des projets Java. Pour ce faire, cette séance WWDC25 présente une nouvelle approche qui évite d’avoir recours à des fonctions d’encapsulation complexes côté Java. À la place, l’intégralité de la bibliothèque Swift est encapsulée dans des classes Java à l’aide de la nouvelle API Foreign Function and Memory (FFI) lancée dans Java 22. FFI offre un meilleur contrôle de la mémoire native et permet une intégration approfondie entre les environnements d’exécution Java et Swift et les systèmes de gestion de la mémoire. Grâce à FFI, l’appel de code Swift à partir de Java est plus efficace et plus sûr. L’outil en ligne de commande « swift-java » est utilisé pour générer les classes Java et le code d’aide Swift nécessaires. Cet outil automatise la génération de code standard, ce qui simplifie le processus. Les classes Java générées servent d’accesseurs pour les types et les fonctions Swift. Elles exposent ainsi efficacement les fonctionnalités de la bibliothèque Swift à Java. Une gestion adéquate de la mémoire est essentielle si vous utilisez des objets Swift natifs dans Java. Cette discussion met en avant deux approches : l’utilisation d’une « AutoArena » qui s’appuie sur le Garbage Collector (GC) Java, et une méthode préférée utilisant « try-with-resources » et une « ConfinedArena ». Cette dernière approche garantit une désinitialisation bien définie et ordonnée des objets. Elle permet ainsi d’éviter les problèmes de performances et la surcharge du GC. Cette technique vous permet de créer et de publier des bibliothèques Java encapsulées dans Swift, ce qui les rend facilement utilisables dans des projets Java. Elle simplifie l’adoption de Swift dans les équipes qui utilisent déjà beaucoup Java pour créer un environnement de développement plus flexible et plus efficace. Le développement continu de SwiftJava vise à perfectionner et à affiner ces techniques afin de fournir une solution robuste pour la compatibilité entre les deux langages.

    • 20:47 - Conclusion
    • Le langage de programmation Swift est open source et hébergé sur GitHub. Il est également disponible dans des bibliothèques telles que SwiftJava. La communauté est active sur les forums Swift, où vous pouvez apprendre, partager des idées et donner votre avis.

Developer Footer

  • Vidéos
  • WWDC25
  • Découvrir l’interopérabilité entre Swift et 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