Интегрированные среды разработки
20 лет Xcode год за годом
В следующий раз, когда вы откроете Xcode, чтобы исправить небольшую ошибку, продумать идею следующего приложения на миллиард долларов или узнать больше о разработке для iOS, помните, что у каждого приложения есть история — и мы все пишем ее строку за строкой.
В начале 2022 года прошло почти 20 лет с тех пор, как Apple выпустила Xcode для разработчиков в качестве основного способа создания приложений для Mac. Эта революционная интегрированная среда разработки, или IDE, превратилась в отправную точку для создания любого типа приложений для всех пяти текущих платформ Apple. Xcode любят и ненавидят в кругах разработчиков, но — независимо от вашего отношения — он используется сотнями тысяч программистов по всему миру каждый день для создания программного обеспечения для iOS, iPadOS, macOS, tvOS и watchOS.
Объединение в IDE текстового редактора, отладчика и системы сборки — вот что делает его таким полезным, и это снижает входной барьер для создателей программного обеспечения. IDE не были чем-то новым, когда пришла Apple и произвела революцию в программном обеспечении для Mac. На самом деле, первая IDE, Maestro I, была разработана еще в 1970-х годах, чтобы обеспечить лучшую интеграцию между программными компонентами, используемыми для подготовки перфокарт.
iOS-разработчики часто считают само собой разумеющимся наличие такой среды, даже не понимая откуда взялось это программное обеспечение, как оно началось и как развивалось на протяжении всей своей жизни. В этой статье мы расскажем про историю Xcode: с оглядкой на появление и основные функции этой IDE, обозрим ее многолетний путь в создании одних из наиболее используемых приложений на планете.
Пусть ностальгия захлестнет вас, когда мы оглянемся назад и вспомним историю Xcode с самого начала…
У каждого героя есть предыстория
Чтобы оценить Xcode, запрыгните в свою машину времени, настройте модем на соединение с провайдером AOL и нанесите себе лак для волос, потому что мы возвращаемся в 1992 год.
Именно тогда NeXT выпустила Project Builder, первую в своем роде IDE, которая поставлялась вместе с NeXTSTEP OS 3.0. Project Builder был революционным, потому что он использовал новый язык программирования под названием Objective-C (на основе Smalltalk) и парадигму разработки пользовательского интерфейса с использованием редактора пользовательского интерфейса в стиле WYSIWYG под названием Interface Builder, который увеличил скорость, с которой можно было создавать приложения для NeXT.
К середине 90-х Apple оказалась в тяжелом финансовом положении. Mac OS была в хаосе, разработчики и пользователи массово уходили с платформы, и только верные последователи оставались с продуктами компании. Именно тогда Apple начала поиск современной замены операционной системы для Mac OS. После долгих поисков компания приобрела NeXT и NeXTSTEP, чтобы они стали основой того, что в конечном итоге будет называться Mac OS X. Эта покупка также подготовила компанию к возвращению Стива Джобса в качестве генерального директора и превращению ее в того гиганта, которым она является сегодня.
Как часть Mac OS X, Project Builder был перестроен с нуля для создания приложений для Mac и впервые включен в Mac OS X Cheetah (10.0) Developer Preview 4. Самое главное? Apple раздавала IDE бесплатно.
Да все верно. Бесплатно.
Это была революционная идея, и Apple поставила себя в прямую конкуренцию коммерчески доступным IDE, таким как CodeWarrior, которые разработчики использовали в то время для создания приложений для Mac. Это займет несколько лет, но Project Builder (и его преемник, Xcode) станет доминирующей IDE для разработчиков, создающих приложения для Mac, особенно когда Apple начала разрабатывать новые платформы, такие как iPhone, и по существу запретила разработчикам использовать другие среды разработки для создания приложений для них.
Project Builder (широко известный как PBX для Mac OS X) прожил довольно короткую жизнь, пока он не был изменен и переименован в Xcode, начиная с 2003 года с Mac OS X Jaguar (10.3). У него было много тех же функций, которые вы найдете в современном Xcode, включая форматы файлов (хотя они немного изменились за эти годы) и Interface Builder (хотя в то время это было отдельное приложение) для создания XIB-файлов для разработки пользовательских интерфейсов.
До эпохи интернет-загрузок Apple включала эти инструменты разработчика на установочные диски Mac OS X или в отдельный набор дисков с пометкой «Инструменты разработчика». Когда вы покупали новый Mac, вы также получали эти инструменты, которые были полезны, если вы были начинающим или опытным разработчиком.
Это был блестящий маркетинговый ход со стороны Apple, потому что он побудил пользователей узнать о разработке программного обеспечения для новой операционной системы, а также упростил процесс освоения этой темы. Это была эпоха, когда большинство инструментов для разработки программного обеспечения стоили тысячи долларов, и так оставалось даже годы спустя для таких платформ, как Windows. Этот маркетинг, без сомнения, привел к тому, что многие пользователи стали разработчиками для платформы Mac, установив этот бесплатный инструмент.
Xcode выходит на сцену
Ребрендинг Project Builder в Xcode стал началом долгой истории изменений. В те времена многие вещи, которые сегодня мы считаем само собой разумеющимися, были недоступны разработчикам. Не было автодополнения кода, встроенной документации и интеграции с GitHub — вы печатали, собирали и надеялись на лучшее. Дополнение кода появится в Xcode 1.5 в августе 2004 года, что навсегда изменит жизнь разработчиков.
В 2005 году, во времена Mac OS X Tiger (10.4), Apple была на пике инноваций, и команда разработчиков Mac стремилась в космос с точки зрения качества, изменений и привлечения разработчиков на платформу. Одним из таких изменений стало появление в Xcode 2 подсистемы Quartz Composer (утилиты, которая позволяет разработчикам быстро и легко создавать анимации) и справочной библиотеки Apple (для быстрого поиска документации), которая все еще находится в Xcode сегодня.
Одним из самых больших изменений в 2005 году стало заявление Apple о том, что они откажутся от PowerPC и перейдут на процессоры Intel, начиная с 2006 года — изменение, которое стало возможным благодаря Xcode 2.1, давшему возможность создавать универсальные двоичные приложения, которые работали с обоими типами процессоров и позволили разработчикам Mac писать действительно независимый от процессора код. Во время этой итерации Apple также добавила некоторые мощные функции, включая модульное тестирование для таргетов, условные точки останова и точки наблюдения.
Mac OS X Leopard (10.5) принесла еще более заметные улучшения в Xcode, которые мы используем по сей день. Одной из функций, представленных в Xcode 3, была утилита отладки DTrace (теперь она называется Instruments), которая позволяла разработчикам оттачивать свои приложения для повышения производительности, отслеживать утечки памяти и другие проблемы. В эту версию Xcode также были добавлены изменения языка Objective-C 2.0 и сборка мусора, простой рефакторинг кода и возможность создавать приложения не только для PowerPC и Intel, но также для 32-разрядных и 64-разрядных архитектур. Это позволило Xcode быстро стать мощным инструментом разработчика и IDE, которая действительно была необходима для поддержки быстрого темпа, который Apple задала для Mac.
В 2007 году все изменилось, когда мир с нетерпением уставился на новейшую платформу Apple — iPhone. Это был мобильный опыт, невиданный ранее, и разработчики жаждали заполучить устройство и иметь возможность создавать приложения. Тем не менее, только в 2008 году Xcode 3.1, наконец, позволил разработчикам ориентироваться не только на Mac OS X, но и на iPhone OS 2.0 с помощью iPhone SDK.
Это был еще один новаторский шаг для Apple: ни одна другая компания не предлагала IDE, которая позволяла бы разработчикам создавать приложения как для своей основной платформы, так и для мобильной платформы, используя один и тот же набор инструментов. О мобильном программном обеспечении класса настольных компьютеров раньше даже не думали из-за ограничений программного и аппаратного обеспечения, но Apple сделала это, и вскоре шлюзы открылись.
Xcode 3 продолжил получать регулярные обновления в эпоху Mac OS X Snow Leopard (10.6), в нем появились такие функции, как поддержка iPhone OS 3.0. Поддержка Java была объявлена устаревшей, а модель распространения Xcode претерпела изменения: разработчикам пришлось регистрироваться на веб-сайте Apple, чтобы загрузить IDE, начиная с Xcode 3.2.6, что положило конец поставке дисков Apple при каждой покупке Mac.
Дальнейшее развитие Xcode
В 2010 году Apple застала сообщество разработчиков врасплох, когда анонсировала Xcode 4 с полностью переписанным интерфейсов, в котором объединили два основных приложения для разработки, Interface Builder и Xcode. Это слияние означало, что для открытия XIB больше не требовалось отдельно открывать Interface Builder.
Xcode 4 также отказался от поддержки PowerPC, отказался от поддержки компилятора GCC в пользу нового компилятора под названием LLVM, начал поставляться в виде единого пакета приложений под названием Xcode.app и больше не включал установку различных других утилит, которые ранее устанавливались со средой разработки. Apple также снова изменила модель распространения с введением Mac App Store: Xcode 4.0 был доступен только для зарегистрированных разработчиков, которые платят взнос в размере 99 долларов или единовременный взнос в размере 4.99 доллара в Mac App Store. Позже это изменение было отменено в Xcode 4.1, что сделало приложение снова бесплатным в Mac App Store и для разработчиков с бесплатной регистрацией Apple Developer.
Xcode 4.2 был выпущен в 2011 году вместе с iOS 5, добавив поддержку сторибордов и ARC (автоматический подсчет ссылок). Это были изменения парадигмы для многих разработчиков, привыкших работать с XIB для размещения элементов интерфейса и ручного управления памятью. В то время сториборды были функцией только iOS, но со временем они перебрались и на Mac. Последняя версия Xcode 4, версия 4.6, была выпущена в 2013 году вместе с SDK для iOS 6.1, что ознаменовало конец почти четырехлетнего периода, в течение которого Apple работала над Xcode 4.
Версии Xcode 5-9 имели меньше новаторских изменений, чем Xcode 4. В основном они добавляли незначительные настройки пользовательского интерфейса, но были и некоторые примечательные особенности:
Xcode 5, выпущенный 10 июня 2013 г. — поддержка 64-разрядных архитектур ARM для устройств iOS, удаление двоичных файлов сборки мусора для Mac в версии 5.1.
Xcode 6, выпущенный 2 июня 2014 г. — введение языка программирования Swift и поддержка Playgrounds для быстрой итерации кода.
Xcode 7, выпущенный 8 июня 2015 г. — поддержка Swift 2.0, введение Metal и возможность развертывания на устройствах iOS без учетной записи разработчика.
Xcode 8, выпущенный 13 июня 2016 г. — поддержка Swift 3.0 и новых SDK для новых устройств Mac и iOS.
Xcode 9, выпущенный 5 июня 2017 г. — поддержка Swift 4.0, Metal 2 и беспроводная отладка на устройствах iOS и tvOS.
В Xcode 10 Apple снова захотела улучшить некоторые ключевые функции. 14 июня 2018 г. новая версия была выпущена вместе с macOS Mojave на WWDC. В этой версии Xcode добавлена поддержка Bitbucket, GitLab и GitHub для управления исходным кодом, а также возможность обучения моделей CoreML. Она также внесла серьезные изменения в редактор и систему сборки, что позволило быстрее создавать проекты. Изменения в редакторе также проложили путь для новых функций автозаполнения и официальных плагинов Xcode; однако разработчики жаловались на частые сбои редактора и автозаполнения на протяжении всего жизненного цикла Xcode 10.
В последние годы Apple продолжала изменять Xcode, гарантируя, что он останется мощным центром, с помощью которого разработчики создают приложения, дизайнеры настраивают цветовые палитры и элементы пользовательского интерфейса, а студенты учатся программировать каждый день.
В Xcode 11, выпущенном 3 июня 2019, добавлена поддержка Swift 5.1 и недавно выпущенной среды SwiftUI, что позволяет разработчикам по новому создавать приложения для всех платформ Apple. Также добавлена поддержка создания приложений macOS с использованием совместимых с iPad бинарных файлов через Catalyst и интеграция нового Swift Package Manager — полностью одобренного Apple способ добавления зависимостей и легкого управления ими.
Xcode 12 и 13 остались относительно неизменными, а Xcode 13 (выпущенный в 2021 году) получил некоторые небольшие изменения и улучшения пользовательского интерфейса. Главным дополнением стал запуск нового Swift Concurrency и общие улучшения системы контроля версий, позволяющие пользователям просматривать и утверждать пул реквесты прямо из Xcode для поддерживаемых систем контроля версий.
Настоящее и будущее
Как показывает наше путешествие по Xcode, Apple постоянно обновляла и улучшала его, добавляя удобные для разработчиков функции, удаляя неиспользуемые функции и проделывая большую работу по поддержке IDE, которая жизненно важна для сообщества разработчиков.
Сегодня Xcode по-прежнему является основной IDE для создания приложений, фреймворков и сервисов для платформ Mac, iPhone, iPad, Apple Watch и Apple TV, и, вероятно, он останется основным способом создания приложений в будущем, даже если Apple представит новые платформы.
Однако форм-фактор Xcode меняется. В конце 2021 года была выпущена Swift Playgrounds 4 для iPad — полнофункциональная среда разработки, позволяющая создавать приложения от начала до конца прямо в iPadOS. Это Xcode? Ну, нет, у ней нет всех его функций. Есть ли у него подмножество функций Xcode, и можете ли вы отправить приложение в App Store с ним? Да. Так что это просто другой форм-фактор Xcode, но он дает тот же конечный результат.
Файлы, созданные в Swift Playgrounds, также можно импортировать в полную версию Xcode на Mac для продолжения разработки, что делает Swift Playgrounds для iPad отличным портативным решением, которое переносит основные функции Xcode на новую платформу.
По мере развития платформ и изменения их потребностей Apple, скорее всего, будет следовать этому шаблону, когда дело доходит до Xcode: интеграция специфичных для платформы функций в Swift Playgrounds (или что-то еще) и предоставление разработчикам возможности разрабатывать приложения для конкретной платформы на самой платформе. Если это будет так, то компания сдвинет границу между гаджетами и компьютерами, поскольку многие считают определение компьютера способностью разрабатывать программное обеспечение для платформы, которую вы используете, на самой платформе.
Так что в следующий раз, когда вы откроете Xcode, чтобы исправить небольшую ошибку, продумать идею следующего приложения на миллиард долларов или узнать больше о разработке для iOS, помните, что у каждого приложения есть история — и мы все пишем ее строку за строкой.