Всем привет, с вами я, Анна Жаркова, ведущий разработчик компании Usetech.  Итак, долгожданная ежегодная презентация WWDC состоялась, мы готовы обсудить представленные новинки и анонсированные сессии. В этом году на Keynote основной упор был сделан на: игры и разработку; иммерсивный звук и изображение; многооконность; расширенный и улучшенный шаринг, механизмы обмена самыми разными данными и совместные процессы, взаимодействие между устройствами; улучшенные возможности отслеживать состояние здоровья и физическую активность. Разумеется, полноценная поддержка такого функционала требует хорошего производительного железа, которое и было представлено, а также программных средств, механизмов, API и функционала для разработки производительных приложений с поддержкой улучшенного перформанса, управления памятью, безопасности, а также всех представленных возможностей. Сразу скажу, что все сессии упомянуть невозможно. В этом году их много, они довольно разнообразные и разноплановые. От улучшений уже известных нам фреймворков (SwiftUI, WidgetKit, SharePlay) до совсем новых (WeatherKit, ScreenCaptureKit). Также верно сказано, что описания сессий в этом году не сильно многословны, видимо, чтобы подстегнуть зрителей к просмотру всех.  Начнем мы, разумеется, со SwiftUI. Почему? Потому что эти изменения все ждали больше всего :) На сессии "What's new in SwiftUI" нам расскажут о новых контролах и подходах для реализации приложений с помощью SwiftUI 4.0. Продолжится тема работы с UI на сессии "Compose custom layouts with SwiftUI" 8 июня. Отдельные сессии посвящены разработке и адаптации вашего интерфейса под iPad ("SwiftUI on iPad"). Пройдут они с 9 июня. Одна из самых ожидаемых сессий - "The SwiftUI cookbook for navigation". Уже 7 июня мы увидим предлагаемое нативное решение от Apple. Будет ли это повторение наших с вами уже многочисленных фреймворков или что-то совсем свое, скоро узнаем.  Еще одна из ожидаемых новинок - сессия "The craft of SwiftUI API design: Progressive disclosure" (пройдет 9 июня), на которой нам расскажут про новый подход progressive disclosure (мастер правильного перевода, отзовись) и его использование в разработке. Много внимания уделяется различным вариациям приложений с использованием новых фреймворков, поддержке работы с многими окнами ("Bring multiple windows to your SwiftUI app"), работе с часами. Что бы кто не говорил про то, что SwiftUI теперь преобладающая парадигма создания ваших приложений, но на деле все по-прежнему, и UIKit никуда не девается. Новые концепции, контролы и лучшие практики будут показаны на сессии "What's new in UIKit" 7 июня. О том, как применить новые знания для построения приложения под iPad, смотрите  "Build a desktop class iPad app" 8 июня Новая навигация придет не только в SwiftUI. Apple представят новый подход к навигации в принципе ("Explore navigation design for iOS" 9 июня).  Новая версия OS - это всегда новая версия языка, поддерживающая новые возможности. С выходом iOS 16 нас ожидает Swift 5.7 с массой улучшений. Открывает данный блок сессия "What's new in Swift", на которой заявлены Regex, generics, улучшения многопоточности, новинки SPM и многое другое. Подробнее про Regex нам расскажут на "Meet Swift Regex" (7 июня) и  "Swift Regex: Beyond the basics" (8 июня),  а на сессии "Embrace Swift generics" (8 июня) нас ждут новинки из мира generics. Также 8 июня мы узнаем про новый протокол Transferable ("Meet Transferable") и нюансы работы с ним. Новый подход по работе с абстракциями с помощью протокола смотрите 9 июня на "Design protocol interfaces in Swift". Улучшения коснулись и Swift Packages. На сессии "Meet Swift Package plugins" (9 июня) нам расскажут про подход работы с плагинами в проектах Xcode, а на "Create Swift Package plugins" тонкости и особенности их создания. Тонкостям debug будет посвящена сессия "Debug Swift debugging with LLDB" (9 июня). В прошлом году нам представили инновационную и долгожданную для многих реализацию работы с многопоточностью с помощью механизма async/await. Работы по улучшению этого API продолжились. Определились свои рекомендуемые подходы и best practices, с которыми нас решила ознакомить Apple.  На "Visualize and optimize Swift concurrency" (7 июня) нам расскажут не только об общих проблемах многопоточности, но и инструментарии по их выявлению и способах устранения. На сессии "Meet Swift Async Algorithms" (7 июня) нам подробно расскажут про тонкости работы с Async Sequence и такие продвинутые операции, как zip, merge или throttle. "Eliminate data races using Swift Concurrency" (8 июня) будет посвящена разбору таких базовых концепций, как изолированные задачи и акторы, атомарность, шаринг sendable и многое другое.  Также тема акторов продолжится на сессии "Meet distributed actors in Swift" (8 июня), где нам расскажут об использовании данного механизма многопоточности  для распределенных систем.  Новый год - новые правила безопасности. В отличие от прошлого события на этом очень много посвящается данному вопросу.  Новые подходы и best practices будут представлены на сессия "Replace CAPTCHAs with Private Access Tokens" и "Streamline local authorization flows" (8 июня). Полезная информация для всех разработчиков, включающих в свои приложения функционал входа по Touch Id и/или Face Id. Также уделено внимание Apple Sign In, подробнее смотрите на "Enhance your Sign in with Apple experience" (9 июня).Особый интерес для многих представит "Meet Background Assets" (8 июня), на которой заявлен рассказ про специальный фреймворк и подход для загрузки больших файлов, загрузок во время установки и/или обновления приложений, а также шедуллинга. Обратите внимание также на "Efficiency awaits: Background tasks in SwiftUI" (10 июня), где будет подробно рассказано про архитектуру решений работы с фоновыми задачами и многопоточностью в рамках приложений SwiftUI. Что касается сети, то фокус на уменьшение задержек в работе ("Reduce networking delays for a more responsive app" 9 июня) и безопасность ("Improve DNS security for apps and servers" 10 июня и "What’s new in Endpoint Security" 8 июня). Также новый фрейворк Network позволит нам поддерживать. эффективное сетевое взаимодействие между разными устройствами ("Build device-to-device interactions with Network Framework" 10 июня) Не обошлось и без оптимизации работы батареи. Это хорошо для устройств, но не очень для разработки и поддержки существующего функционала. Чтобы узнать, что же сделать, чтобы продлить время работы устройства, что надо учесть для работы в фоне, заходите на "Power down: Improve battery consumption" (10 июня). BLE в этом году рассматривается в фокусе взаимодействия с часами и watchOS ("Get timely alerts from Bluetooth devices on watchOS" 7 июня) И это далеко не все. На самом деле, это просто гигантский блок. Apple представили Metal 3 - супермощный инструмент для создания видео и графики. Особый упор делается на перформанс, оптимизацию, эффективную работу с памятью именно в работе с Metal 3. Обязательно посетите "Discover Metal 3", "Load resources faster with Metal 3" и "Program Metal in C++ with metal-cpp" 7 июня, "Go bindless with Metal 3", "Maximize your Metal ray tracing performance" 9 июня. Также внимание уделяется тонкостям работы с AR и 3D: "Discover ARKit 6", "Bring your world into augmented reality", "Create parametric 3D room scans with RoomPlan" (7 июня) . Реализация нового функционала данного блока невозможна без эффективного ML. Best practices и нюансы работы с камерой, построение динамических приложений смотрите на "What's new in Create ML" 7 июня. Лучшие практики по разработке сложных моделей смотрите на сессии "Compose advanced models with Create ML Components" 8 июня. Виджеты уже успели зарекомендовать себя, как очень удобный функционал, позволяющий вынести части функционала на экран и упростить пользователю доступ к важным функциям. В новой версии они переходят и на LockScreen. О том, как правильно создавать и настраивать виджеты, работающие всегда и везде, смотрите 7 июня "Complications and widgets: Reloaded". А нюансы работы виджетов в watchOS будут освящены на сессии "Go further with Complications in WidgetKit".  В AppClips добавили поддержку работы с Keychain и CloudKit ("What's new in App Clips"). В качестве еще одного способа улучшения взаимодействия с вашим приложением рекомендуется используется улучшенные App Intent и App Shortcuts ("Dive into App Intents"  и "Implement App Shortcuts with App Intents" 7 июня).  Особое внимание в этом году уделяется шарингу, совместной работе разных пользователей и связи с разными устройствами. Многие успели оценить SharePlay и его функционал, который в этом году получил также новые возможности. Подробнее смотрите: "What's new in SharePlay" 7 июня, "Make a great SharePlay experience" 9 июня. Эту секцию стоит начать сессией "Get to know Developer Mode" о новых правилах настройки своих устройств для дебага, начиная с iOS 16.  В этом году продолжилась тема улучшений в Xcode, включая Xcode Cloud. Рекомендуем подключиться к сессиям "What's new in Xcode" и "Get the most out of Xcode Cloud", которые пройдут 7 июня. Также будет представлен расширенный функционал по работе с мультиплатформенными приложениями (как мы знаем, у Apple свое понимание мультиплатформенности) "Use Xcode to develop a multiplatform app" 8 июня. Новшества по работе с Playground будут представлены 7 июня ("Build your first app in Swift Playgrounds"). Также будет рассказано и показано, как мигрировать ваше iOS приложение под macOS ("Bring your iOS app to the Mac" 8 июня).Завлекательно выглядит сессия "Create macOS or Linux virtual machines" (7 июня). Да, это то, чего ждали многие из нас для использования мощи своих Mac на полную. Много было представлено и новых готовых фреймворков для добавления нового функционала в наши приложения.  Это и WeatherKit ("Meet WeatherKit" 7 июня), и улучшенный API для работы с картами ("Meet Apple Maps Server APIs" 7 июня), и технология Live Text, позволяющая распознавать текст с изображений ("Add Live Text interaction to your app" 8 июня), и новый фреймворк для добавления графиков Charts. Очень много уделено новым возможностям WebKit и Safari. Ну и, конечно же, Health Kit ("What's new in HealthKit" 7 июня). Я затронула далеко не все темы и далеко не все сессии. По-прежнему в тренде accessibility. Много внимания уделяется адаптивности, дизайну, поддержке разных локализаций, региональных особенностей.  Особый фокус идет на взаимодействие между устройствами, мультиплатформенность и перенос приложения с одной платформы на другую.В общем, смотрите сами и делитесь впечатлениями.  Lead mobile developer в Usetech, Kotlin GDE