Очки дополненной реальности Apple Vision Pro, iOS 17, запуск мультимодальной языковой модели GPT-4, новая версия Java — собрали в статье эти и другие знаковые IT-новинки года.  В рамках первого дня конференции WWDC 5 июня 2023 года корпорация Apple представила iOS 17 — обновленную версию своей мобильной платформы. Главной сенсацией презентации должна была стать возможность загрузки приложений на мобильные устройства Apple без использования App Store. Официальная загрузка и установка приложений из сторонних источников, пускай и с рядом ограничений, должна была в корне изменить ландшафт рынка мобильного ПО для устройств Apple как с точки зрения разработчиков, так и для простых пользователей и стать самым глобальным изменением в архитектуре платформы с момента появления в продаже айфонов. Однако на презентации об этой возможности упомянуто не было, вместо этого Apple анонсировала в iOS 17 только ряд косметических изменений. Так, была представлена новая функция Live Voicemail, позволяющая переводить речь звонящего абонента в текст в режиме реального времени. Сходный инструмент, дающий возможность транслировать в текст записанные голосовые сообщения, появился в iMessage. Улучшилась функция диктовки, увеличилась скорость передачи данных с использованием технологии AirDrop, а для передачи контактов разработчики внедрили функцию NameDrop. В режиме Standby при горизонтальном расположении смартфона на подставке появилась возможность отображать текущее время и записи из календаря, а в одном из следующих обновлений Apple пообещала добавить в iOS новое приложение «Журнал», объединяющее фото, заметки и данные об активности пользователя. На презентации также была представлена обновленная iPadOS, которая закладывает основы для появления следующих поколений планшетных устройств Apple. Самым заметным изменением здесь стал настраиваемый экран блокировки: теперь на него можно выводить сразу несколько таймеров, а также фотографии и виджеты. Помимо этого, была продемонстрирована обновленная macOS Sonoma, в которой появилась возможность размещать виджеты на Рабочем столе. Еще одна новинка в мире операционных систем от Apple — watchOS 10 с переработанным дизайном. Пожалуй, наибольший интерес у аудитории вызвали новые компьютеры Mac, и прежде всего Mac Pro на базе Apple Silicon. Эта машина оборудована 24-ядерным процессором M2 Ultra и поддерживает объем оперативной памяти до 192 Гбайт. В среднем ценовом диапазоне представлен десктопный компьютер Mac Studio — эти машины комплектуются процессорами M2 Max и M2 Ultra. Также Apple презентовала MacBook Air с диагональю экрана 13 и 15 дюймов, но «под капотом» у них установлен старый чип М2. Однако наибольший фурор на презентации произвели довольно спорные очки дополненной реальности Apple Vision Pro стоимостью $3499. Это принципиально новое устройство от Apple, появление которого Тим Кук назвал не иначе как «началом эры пространственных компьютеров». Гарнитура будет фиксировать взгляд пользователя, а выбор элемента интерфейса можно подтвердить жестами, кроме того, аксессуар совместим с голосовым ассистентом Siri. Критики восприняли новинку скептически — прежде всего из-за высокой стоимости и ограниченного числа совместимых с этим аксессуаром приложений. Одно из самых громких событий начала 2023 года — запуск компанией Open AI мультимодальной языковой модели GPT-4. В отличие от модели 3.5, понимавшей только текстовые сообщения, с GPT-4 можно взаимодействовать при помощи изображений, аудио и видео. Это событие вызвало шквал дискуссий. Появление новой модели называют прорывом в развитии искусственного интеллекта. Например, известные деятели в сфере высоких технологий, включая Илона Маска и Стива Возняка, написали петицию, в которой призвали приостановить развитие нейросетей. Тем не менее затормозить прогресс практически невозможно, и уже сейчас хорошо заметна тенденция на встраивание искусственного интеллекта и технологий машинного обучения буквально повсюду. Так, в последнее время появилось множество предварительных релизов различных инструментов для разработки с тем же ChatGPT под капотом — от простых механизмов автозавершения и автоматической подстановки в средах IDE до обособленных систем генерации и валидации кода. Это новая реальность, к которой разработчикам придется адаптироваться. В таких системах ChatGPT использует искусственный интеллект и систему обработки текстов (Natural Language Processing, NLP) для генерации кода из представленного описания на естественном языке. ИИ анализирует вводимые разработчиком данные, интерпретирует их, а затем генерирует из них код. В перспективе эта технология избавит программистов от необходимости вручную набирать значительную часть кода, а также возьмет на себя рутинные задачи, связанные с поиском ошибок и отладкой приложений. На данное направление следует обязательно обратить внимание, если вы желаете идти в ногу со временем: в ближайшие годы нейросети и базирующиеся на них технологии наверняка ждет развитие. В конце марта вышла 20-я версия Java. Язык развивается в направлении упрощения синтаксических конструкций и оптимизации структуры кода. Так, в 17-й версии появились текст-блоки, избавившие разработчиков от необходимости использования конкатенации строк, до этого был внедрен новый тип объявления record, который позволил отказаться от рутинного написания методов и классов с конструктором и геттером. Со списком нововведений можно ознакомиться здесь. Отметим наиболее важные из них. Во-первых, появилась предварительная поддержка ограниченных значений в виде класса ScopedValue. Во-вторых, была представлена вторая предварительная реализация шаблонов записей (record pattern). Тем не менее Java 20 не получила статус LTS-релиза, каковым станет, судя по всему, версия 21: обновления для нее Oracle планирует выпускать только до сентября 2023 года. Выход новой версии Java меньше всего затронет разработчиков мобильных приложений. Android вообще не торопится с внедрением новинок Java, поэтому многие работающие в этой области программисты используют старые версии языка — это практически никак не влияет на реализуемые ими проекты. Среда разработки Microsoft Visual Studio Code обновляется регулярно, и в апреле 2023 года увидела свет версия 1.78. Появление очередного релиза VSC означает не только исправление ошибок. Например, в рамках нового обновления Visual Studio Code начинал поддерживать целый ряд полезных функций, которые ранее были доступны только в виде плагинов. В апрельской версии появились шаблоны профилей, которые представляют собой специально подобранные профили для разных языков программирования и сценариев. Разработчик может применить шаблон профиля для Python, Java и других языков как есть или использовать его в качестве отправной точки для дальнейшей настройки собственных рабочих процессов. Активно ведется работа по улучшению работы функции предоставления предложений по автозавершению кода. Так, в версии 1.78 появилась новая команда Accept Line, а расширение Code Spell Checker добавило проверку орфографических ошибок во вводимом коде (для английского языка). В следующих версиях ожидается ряд улучшений в работе встроенных инструментов отладки и в механизмах интеграции со сторонними сервисами. Вполне вероятно, что Microsoft сделает следующий шаг в развитии персонализации IDE — ведь, по словам представителей компании, «персонализация так же важна, как выбор рабочего кресла. Мы должны сделать ее как надо, чтобы вы могли работать максимально продуктивно». А вот что совершенно точно так или иначе отразится на мобильных технологиях, так это ожидаемый в текущем году выход Android 14. Релиз системы состоится ближе к осени. 8 февраля 2023 года была представлена первая версия для разработчиков, которая продемонстрировала основные тенденции развития платформы. Первая публичная бета-версия Android 14 вышла в апреле 2023 года. Из визуальных изменений можно отметить настраиваемое срабатывание вспышки смартфона при получении уведомлений, а на экране блокировки теперь демонстрируются только новые обновления. В превью появилась возможность генерировать обои Android из размещенных «плиткой» смайликов, стали доступны более гибкие настройки размера системного шрифта — теперь его можно масштабировать до 200%. Пользователь может предоставить приложению доступ не ко всей галерее с изображениями, а только к выбранным медиафайлам, что немаловажно с точки зрения безопасности. Разработчики ожидали больших изменений, например более широкую поддержку спутниковой связи — как минимум для отправки сообщений в чрезвычайных ситуациях (следует отметить, что подобный функционал уже внедряла в некоторых своих устройствах компания Huawei, причем без программной поддержки со стороны Android). Однако публичная бета-версия показала, что фактических нововведений оказалось не так уж и много, вместо этого в Google сосредоточились на улучшениях уже существующих функций. Из важных архитектурных изменений следует отметить, что разработчики запретили приложениям в Android 14 использовать точные будильники для планирования задач (поскольку это приводит к повышенному расходу заряда аккумулятора). Android 14 включает в себя улучшения, связанные с выпуском OpenJDK 17 LTS, в том числе обновления библиотек и поддержку языка Java 17 для разработчиков приложений и платформ. Изменения в рамках обновлений OpenJDK 17 могут повлиять на совместимость приложений — в частности, это касается изменений в регулярных выражениях и обработке UUID. Предполагалось, что в 14-й версии Android появится поддержка ключей доступа (Passkeys) со входом в систему при помощи биометрических данных и с облачной синхронизацией — подобные технологии уже давно тестируются Google. Кроме того, в Android 14 изменится механизм апдейта корневых сертификатов: эти функции станут частью модуля Conscrypt Mainline, который получит возможность централизованного обновления через Google Play System Updates. Для конечного пользователя эти новшества останутся незаметными, но они повысят безопасность системы в случае, если какой-то крупный центр сертификации внезапно станет ненадежным. В релизе ОС Google окончательно удалит поддержку технологии беспроводной передачи данных малого радиуса Android Beam из AOSP — ее заменила Nearby Share. Важным аспектом здесь является то, что Nearby Share опирается на Google Mobile Services (GMS), а это означает, что разработчик системы заменил доступную в AOSP функцию проприетарной службой, которая не является частью проекта AOSP. В свою очередь, это говорит о том, что производители мобильных устройств, не имеющие лицензионных соглашений с Google (например, Huawei и некоторые китайские вендоры), не смогут использовать эту функцию в собственных прошивках смартфонов. Нам еще многое предстоит узнать об Android 14 — осталось дождаться его релиза. Разработчикам ПО придется учитывать все эти нововведения: во всяком случае уже сейчас известно, что в Android 14 перестанут работать приложения, написанные для старых версий платформ. Как минимум станет невозможной загрузка и установка приложений, предназначенных для SDK версии 22 или ниже. Однако времени еще достаточно. Как обычно, грядущее обновление Android в первую очередь получат флагманские модели Pixel, также оно станет доступно для целого ряда еще не вышедших на рынок смартфонов крупных вендоров, таких как Xiaomi, Samsung, OnePlus, Sony и других. Поэтому у производителей мобильных приложений есть в запасе примерно год, чтобы адаптироваться к Android 14. В ноябре 2023 года ожидается выход Python версии 3.12. Каждое обновление Python привносит что-то новое, и актуальная версия позволит разработчику использовать все преимущества новейших библиотек и фреймворков. Для большинства программистов релиз новой версии Python вряд ли станет знаковым событием, поскольку все основные возможности уже имеются в его текущей реализации. Изменения коснутся, в частности, виртуальной машины, а в целом они направлены на повышение производительности и стабильности интерпретатора. Вероятно, наиболее ожидаемым нововведением в 3.12 (если оно все-таки будет реализовано) станет полноценное внедрение субинтерпретаторов. Разговоры об этом идут уже довольно давно, примерно с версии 3.8. Основная проблема здесь заключается в том, что GIL не позволяет потокам Python выполняться параллельно, а процессы при этом требуют много ресурсов. Параллельное исполнение нескольких субинтерпретаторов решит эту проблему, но реализация передачи данных между ними затронет внутреннюю архитектуру сразу нескольких модулей. Вот почему полноценное внедрение этой технологии может состояться только вместе с серьезным обновлением Python. Скорее всего, разработчики удалят старые, редко используемые модули, будут исправлены ошибки, но большинство этих перемен так или иначе останутся «под капотом». Процесс эволюции Python продолжается непрерывно, но революций с выходом версии 3.12 ждать все-таки не стоит. Алексей Некрасов, лидер направления Python в МТС, программный директор направления Python в Skillbox, так прокомментировал это давно ожидаемое обновление:«В Python 3.12 введено множество улучшений и новых возможностей: 1. PEP 701: синтаксическая формализация f-строк. Это улучшение означает, что f-строки теперь имеют более четко определенный синтаксис, что делает их более предсказуемыми и устойчивыми к ошибкам. Для разработчиков это означает, что они теперь могут быть уверены в том, как f-строки будут работать, что поможет им избежать ошибок и повысит производительность. 2. PEP 709: встраивание включений (comprehensions). Это изменение означает, что включения теперь будут выполняться непосредственно в функции, в которой они находятся, а не в отдельной функции. Это может улучшить производительность и упростить стек вызовов функций, что облегчает отладку кода. 3. PEP 688: доступ к протоколу буфера в Python. Это нововведение позволит разработчикам более эффективно работать с бинарными данными, открывая новые возможности для оптимизации и повышения производительности. 4. PEP 698: декоратор переопределения для статической типизации. Позволит разработчикам более четко указывать, когда они намеренно переопределяют методы в их классах, улучшая читаемость и поддерживаемость их кода. 5. PEP 695: синтаксис параметра типа, который упростит работу с обобщенными типами в Python, делая код более читаемым и понятным. Кроме того, в Python 3.12 внесены улучшения во многие модули, включая array, asyncio, calendar, csv, dis, fractions, inspect, itertools, json, math, os, os.path, pathlib, pdb, random, shutil, sqlite3, statistics, sys, tempfile, threading, tkinter, tokenize, types, typing, unicodedata, unittest и uuid. В целом эти улучшения должны сделать Python более эффективным, удобным и удобочитаемым языком для разработки. Они предоставляют разработчикам новые инструменты и возможности для написания более качественного и производительного кода. В prod-приложениях я бы пока не торопился обновлять версию, а использовал предыдущие более стабильные. Выход 3.12 говорит о том, что можно обновлять версию python до 3.11 на текущих проектах». Некоторое влияние на разработку окажет выход новой версии Kotlin Multiplatform — технологии, позволяющей создавать полноценное кросс-платформенное ПО на Kotlin. Она открывает возможность сократить время на написание и поддержку одного и того же кода для разных платформ, например приложений, которые могут работать как в Android, так и в iOS. Этот способ мультиплатформенной разработки хорошо подойдет для определённых проектов. Например, программист сможет написать ядро приложения сразу под обе популярные мобильные системы, а затем к каждому добавить UI c помощью стандартных средств этой платформы. Kotlin Multiplatform базируется на двух версиях Kotlin, которые развиваются в рамках одного репозитория кода: Kotlin JVM (Android) и Kotlin Native (iOS). Во втором случае новый менеджер памяти используется начиная с версии 1.7.20. Сама Kotlin Multiplatform на момент написания этих строк пока еще находится в бете, но уже активно используется в продакшене, и релиз ожидается уже в ближайшем будущем. Также есть надежда, что в текущем году появится мультиплатформенная версия Compose с реализацией для iOS. Еще неизвестно, чем именно она станет лучше связки Kotlin Multiplatform Mobile и SwiftUI. Однако это действительно очень полезные инструменты для мобильных разработчиков. В целом очевидно, что JetBrains движется в сторону поддержки кросс-платформенности в рамках общей стратегии развития Kotlin, и это вселяет надежду, что язык вскоре станет еще более универсальным. В конце 2023 года корпорация Microsoft планирует выпустить очередное глобальное обновление для Windows 11, что так или иначе отразится на всех, кто создает ПО для этой платформы. Уже сейчас очевидно, что акцент в разработке сместился с Windows 10 в сторону Windows 11 и что эту тенденцию нужно обязательно принимать во внимание. После выхода Windows 11 версии 22H2 компания Microsoft объявила о запуске программы под названием «Моменты», целью которой является предоставление «непрерывных обновлений» вместо глобальных апдейтов. Так, в последних обновлениях внедрены новые схемы энергопотребления Windows, улучшены механизмы голосового управления, а также немного модифицирована панель задач. Кроме того, улучшен системный трей в режиме планшета — Windows стал быстрее обнаруживать на устройстве сенсорный дисплей и отсутствие клавиатуры или мыши. В обновлении Windows 11, выход которого запланирован на начало осени, Microsoft планирует выкатить ряд апдейтов для ноутбуков, касающихся режимов энергопотребления и работы системы на устройствах с несколькими экранами. Но самые глобальные изменения грядут в версии 23H2, запланированной к концу 2023 года, скорее всего в октябре. Вероятнее всего, это обновление затронет пакет Windows App SDK и в первую очередь отразится на разработчиках приложений, публикуемых в Windows Store. Также ожидается, что апгрейд коснется подсистемы Windows для Linux (WSL). Эта функция позволяет разработчикам запускать приложения Linux в Windows без необходимости двойной загрузки и без использования виртуальных машин — таким образом, Microsoft делает очередной шаг навстречу кросс-платформенным программам. Кроме того, каждое глобальное обновление Windows вносит определенные изменения в компоненты, обеспечивающие безопасность операционной системы. В целом обновления Windows предоставляют разработчикам программного обеспечения новые функции и возможности, оценить которые в полной мере можно только по прошествии определенного времени.  Еще одна тенденция 2023 года — рост популярности технологии WebAssembly. Она обладает потенциалом для разработки быстрых и безопасных веб-приложений, кроме того, такой код демонстрирует более высокое быстродействие по сравнению с приложениями на JavaScript. WebAssembly может быть скомпилирован практически из любого языка (многие предпочитают Rust или .NET) в нативный машинный код для стековой виртуальной машины. А это, в свою очередь, означает, что такое приложение может быть запущено на любом устройстве и способно работать на серверах с различными архитектурами. В WASM также имеется функция «песочницы», предотвращающая доступ кода к памяти за пределами выделенной области. Наконец, WebAssembly набирает популярность благодаря своей переносимости. Технология разработана для совместимости с различными платформами и браузерами, благодаря чему может похвастаться значительно большей универсальностью по сравнению с альтернативами. Немаловажно, что WASM предназначен не только для интернета, хотя это популярный вариант использования. API-интерфейсы WebAssembly (WASI) позволяют использовать WASM там, где обычно задействованы сложные фреймворки и программные платформы вроде Node.js; правда, далеко не все языки могут похвастаться поддержкой WASI. WebAssembly активно использовалась в качестве нативной веб-технологии для создания динамических интерфейсов в браузере, но ее возможности намного шире. Многие эксперты в области веб-разработки считают, что сейчас WASM находится на восходящей траектории и что в наступившем году все больше компаний станут применять эту технологию в своих проектах. Именно поэтому стоит обратить внимание на WebAssembly: ее изучение — довольно перспективное направление. *** Безусловно, в рамках этого обзора мы не смогли охватить все наиболее ожидаемые и прошедшие события нынешнего года, подчеркнув только основные из них. Если вы ждете появления или обновления какой-то технологии или сервиса, о которых мы забыли упомянуть, обязательно расскажите о них в комментариях.