Компании Codenvy, Microsoft и Red Hat объявили 27 июня о вступлении в силу проекта языкового протокола Language Server Protocol, целью которого является универсальная интеграция языков программирования в различные редакторы кода и интегрированные среды разработки (integrated development environment, IDE).
Компании анонсировали новый протокол на открытии пленарной сессии конференции DevNation 2016 в г. Сан-Франциско. Отправной точкой этого проекта стал проект IDE-платформы Eclipse Che, оглашенный ранее в этом году на конференции EclipseCon в г. Рестон (шт. Виргиния). Новый протокол повышает гибкость и производительность разработки путем предоставления многофункционального интерфейса для редактирования кода с помощью разнообразного инструментария, подходящего к различным языкам программирования.
«Так исторически сложилось, что большинство языков программирования были оптимизированы только под какой-то один инструмент разработки, —констатировал Тайлер Джуэлл, генеральный директор Codenvy и руководитель проекта Eclipse Che. — Это мешает разработчикам пользоваться хорошо знакомыми и любимыми редакторами, а создателям самих языков — сделать свой язык популярным среди широкой публики. Благодаря единому протоколу, поддерживаемому компаниями Microsoft, Red Hat и Codenvy, разработчики смогут получить доступ к логическому функционалу любого языка при помощи предпочитаемых ими программных средств».
Как пояснил Джуэлл, на протяжении последнего десятилетия «головной болью» программистов при работе с инструментами разработки была необходимость выбирать для работы определенный язык и довольствоваться доступным для этого языка инструментарием, так как возможности таких инструментариев всегда привязаны к проприетарным API и компонентам, которые могут меняться в зависимости от конкретного языка.
«Так что для переключения на другой язык программирования, как правило, приходилось менять и IDE, — говорит он. — А если программисту понравилась определенная IDE, то в ней довольно непросто обеспечить поддержку сразу нескольких языков».
Между тем с внедрением нового протокола Language Server Protocol в любой IDE можно будет работать с каким угодно языком программирования, а создатели языков смогут писать их так, как считают нужным.
Джуэлл сообщил, что Language Server Protocol — это открытый проект, описывающий протокол обмена данными для языковых серверов в формате JSON. Проект размещен на GitHub и доступен по лицензиям Creative Commons и MIT. Благодаря обеспечению операционной совместимости между редакторами кода и языковыми серверами протокол позволяет разработчикам пользоваться вспомогательными средствами, облегчающими процесс разработки (поиск по символам, синтаксический анализ, автозаполнение кода, переход к месту объявления функции/класса, иерархическое структурирование кода и рефакторинг), внутри выбранных ими редакторов и IDE, уточняет он.
По словам Джуэлла, первую пару инструментов, поддерживающих такой функционал, составили Eclipse Che (новейшая среда разработки под Eclipse) и Visual Studio Code от Microsoft. Codenvy отвечает за поддержку этих возможностей в Eclipse Che, а Microsoft поставила задание своим инженерам обеспечить соответствие протоколу в среде VS Code.
«Коллектив проекта Eclipse Che и компания Red Hat также заявили о намерении принять действующий в Visual Studio Code протокол Language Server Protocol — открытый протокол, добавляющий некоторые расширенные возможности редактирования к VS Code, — пишет в блоге компании Джозеф Сирош, корпоративный вице-президент подразделения Data Group компании Microsoft. — Это признак того, что открытое ПО, разрабатываемое командой VS Code, берут на вооружение создатели программных сред и языков, в результате чего у разработчиков появляется возможность комбинировать предпочитаемый ими язык с любимым рабочим инструментарием».
«Мы сформулировали единый протокол языковых серверов после того, как интегрировали в VS Code серверы программного пакета OmniSharp для C# и языка TypeScript, — сообщил в своем заявлении Эрих Гамма, заслуженный инженер Microsoft (внутреннее почетное звание) и руководитель проекта Visual Studio Code. — После двукратной интеграции языковых серверов стало ясно, что единый языковой протокол станет обоюдовыгодным решением как для разработчиков инструментов для кодирования, так и для создателей языков: ведь таким образом любой автор языка сможет добиться поддержки своего языка в нужных инструментах, при этом разработчикам этих инструментов будет несложно добавить ее в свои продукты».
Прежде чем занять свой пост в Microsoft в 2011 г., Гамма был выдающимся инженером в корпорации IBM, где он был главным руководителем и ключевым разработчиком платформы Eclipse, а также осуществлял управление проектом Eclipse Java Development Tools.
Используя Language Server Protocol, поставщики языков программирования смогут обеспечить поддержку множества инструментов под различными операционными системами. В рамках проекта был составлен глобальный реестр языковых серверов, созданный компанией Codenvy в качестве проекта Eclipse и размещенный на серверах Eclipse Foundation, чтобы разработчики инструментария для создания кода могли узнать об интересующем их языковом сервере и при желании применить его у себя, рассказал Джуэлл.
«Что касается наших трех организаций — Red Hat, Codenvy и Microsoft, — все мы занимались развитием нескольких языков программирования и привлекали целый ряд создателей языков программирования к сотрудничеству, — поделился он. — На данный момент в проекте задействованы девять языков. Red Hat занимается интеграцией языка Java; Microsoft — TypeScript, C и C++; Codenvy в числе прочих компаний работает над xText, XML, JSON и другими языками. Мы уже обеспечили совместимость большинства популярных языков, и не за горами тот день, когда мы включим в проект и все остальные».
И в самом деле, в настоящее время доступны языковые серверы для таких языков как JSON, C++ и Powershell — они поддерживаются в среде VS Code и ее расширениях. А во втором полугодии к этому протоколу приобщатся и другие языковые серверы: над сервером для языка C# работают в рамках проекта OmniSharp, серверы для языков xText и R создает компания Typefox, для JavaFX — Ensime, а для CSS — Microsoft. Компания Red Hat открыла код проекта, призванного создать первый автономный сервер языка Java. Этот проект предлагается безвозмездно передать организации Eclipse Foundation, пояснил Джуэлл.
Джуэлл отметил, что некоторые удивляются, почему же такой проект не появился намного раньше, на что он дает две причины. Первая состоит в том, что не было настоящей поддержки сообщества. В проект должны вложиться крупные группы поставщиков средств разработки и языков программирования, а этого в прошлом было непросто добиться ввиду постоянных конфликтов на почве имущественных прав в отношении языков и языковых разрешений, которые использовались в качестве средств защиты или нападения в этих конфликтах.
Так что одна из причин — отсутствие сообщества, а вторая заключается в том, что изменился конкурентно-политический климат, причем до такой степени, что конкуренция теперь идет не на уровне языков, — объяснил Джуэлл.
«Теперь политическая обстановка вполне способствует процессу, — сказал он. — Десять лет тому назад Microsoft, Red Hat, IBM и иже с ними при развитии своих платформ делали ставку на конкретный язык программирования. Но теперь все изменилось. Теперь все функционирует в виде микросервисов с доступом по API, а это дает разработчикам возможность выбора языка».
Теперь уже приверженность программиста платформе какой-либо компании вовсе не означает его приверженность языку, созданному этой компанией. Так что все эти компании переориентировали свои взгляды и провозгласили свою готовность к тому, чтобы все эти языки работали параллельно с их продуктами.
«Чувствуется доселе невиданный дух сотрудничества и преданности делу», — поделился Джуэлл.
«Мы усматриваем в этом огромные возможности для улучшения процесса разработки ПО, особенно в облаке, и мы четко настроены на то, чтобы донести эти нововведения до наших клиентов в наиболее удобоваримом для них виде, — сделал заявление Гарри Моуэр, главный директор по программам для разработчиков в Red Hat. — Выбор разработчиков — наш ключевой приоритет, а операционная совместимость языков и средств программирования является важной частью стратегии поддержки разработчиков, декларируемой Red Hat».
И правда, все упирается в выбор разработчиков. В 2014 г. Microsoft решила предпринять ряд мер для того, чтобы разработчики смогли использовать .NET Framework и сопутствующие инструменты при создании приложений на любом языке и на какой угодно платформе. Позже софтверный гигант выразил готовность еще больше развязать руки программистам и дать им еще больше выбора, начав в марте сотрудничество с Eclipse Foundation и объявив о своем участии в проекте Eclipse Che. В экосистему Eclipse Che входят открытые, развиваемые силами сообщества облачная IDE, сервер рабочего пространства и платформа плагинов. В их разработке участвуют Codenvy, Microsoft, Red Hat и SAP.
«Новый протокол языковых серверов, планируемый компаниями Microsoft, Red Hat и Codenvy, должен значительно упростить жизнь самым разным программистам и участникам проектов по разработке ПО», — считает Чарльз Кинг, главный аналитик фирмы Pund-IT.
«По существу, вместо того, чтобы навязывать средства редактирования кода, требуемые определенными языками программирования, новый протокол языковых серверов со временем позволит разработчикам пользоваться знакомыми, полюбившимися им редакторами для работы практически над любым проектом, — продолжает Кинг. — Это позволит обойтись без лишнего обучения, сократить время реализации проекта и улучшить процесс взаимодействия с разработчиком — все это привлекательные цели, как ни крути».
Новый протокол языковых серверов также подстегнет еще больше разработчиков к тому, чтобы стать программистами-полиглотами — регулярно использующими больше одного языка программирования в своей работе.
«Мы начинаем процесс избавления разработчиков от трудностей, связанных с программированием на разных языках, чтобы те смогли вплотную заняться написанием кода на том языке, на котором они хотят», — подытожил Джуэлл.