Ballerina - это прагматичный язык программирования, разработанный для сетевых распределенных приложений.

«Балерина» часто означает для разных людей разное. Большинство людей используют этот термин для обозначения прекрасных танцоров балета или балетных туфель. Хорошо, этот пост не содержит другой информации о балеринах. Если вы относитесь к этому большинству, пора закрыть эту вкладку браузера.

Для тех, кто все еще читает этот пост, моя цель - предоставить очень подробный обзор платформы Ballerina с точки зрения того, что и где она находится. Даже среди небольшой группы людей, читающих этот пост, «балерина» может означать разные вещи в зависимости от контекста.

Платформа Балерина

Платформа Ballerina - это набор инструментов, которые помогут вам разрабатывать, создавать, тестировать и запускать программы, написанные на языке программирования Ballerina. Платформа балерины состоит из следующих частей:

  • Спецификация языка
  • Компилятор и среда выполнения
  • Набор стандартных библиотек
  • Ballerina tool - инструмент сборки ++
  • Централизованная архитектура управления модулями
  • Реализация LSP, плагины IDE
  • и многое другое…

Язык программирования Балерина

В таких языках, как английский, есть слова, и вы можете сгруппировать их для построения фраз и предложений в соответствии с правилами - синтаксисом, - определенными в языке. Но эти фразы и предложения имеют значение - семантику - и обычно это зависит от контекста, в котором они используются. Точно так же язык программирования также имеет синтаксис и семантику, которые обычно точно документируются в документе, называемом спецификацией языка.

Ballerina - это язык программирования со статической типизацией, разработанный для сетевых распределенных приложений. Спецификация языка Ballerina описывает, как писать синтаксически и семантически правильные программы Ballerina.

Статус языка

Дизайн языка Ballerina приближается к стабильности. Я использую точные слова, указанные в спецификации языка. Он содержит различные языковые функции, и некоторые функции менее стабильны, чем остальной язык. Они имеют статус «предварительный просмотр» или «экспериментальный».

  • Статус предварительного просмотра означает, что мы ожидаем, что окончательный дизайн будет достаточно близок к текущему, чтобы было легко обновить код, который заставляет использовать текущий дизайн в окончательный дизайн.
  • Экспериментальный статус означает, что мы считаем, что хотим иметь аналогичную функциональность, но мы еще не уверены в том, насколько окончательный дизайн будет близок к описанной в настоящее время функции.

Языковые версии

Спецификация языка версируется и выпускается независимо от ее реализаций (даже от официальных реализаций, предоставленных командой Ballerina). На большинстве других языков вы обнаружите, что спецификация и реализация имеют одну и ту же версию. Вы можете найти более подробную информацию о языковых реализациях в следующем разделе.

Версия спецификации языка привязана к конкретному году. Например, версия спецификации 2019R1 является первым выпуском в 2019 году. 2019R2 будет выпущен в июне 2019 года, а 2019R3 будет выпущен в июле 2019 года. Эти версии не следуют за semvar.

Компилятор и среда выполнения

Спецификация языка - лучший источник для проверки вашего кода Ballerina. Но это всего лишь текстовый документ. Вам нужен программный инструмент, обычно называемый компилятором, для определения правильности вашего исходного кода, а также для создания исполняемого двоичного файла, совместимого с выбранной вами платформой, на которой работает ваша программа. Вам также нужна среда выполнения для фактического запуска кода. Среда выполнения предоставляет среду выполнения, определенную спецификацией языка. В некоторых языковых реализациях среда выполнения упакована с исполняемым двоичным файлом (например, среда выполнения Go). В некоторых других случаях среда выполнения распространяется как отдельный объект (например, JVM).

Конкретная среда выполнения Ballerina включает в себя встроенные реализации библиотек модулей ballerina / lang. *, Планировщика цепочек (облегченные потоки), диспетчера памяти / сборщика мусора и, что наиболее важно, способ управления значениями Ballerina (целые числа, строки, массивы, записи, объекты, функции и т. д.) в памяти.

Термин «реализация языка Ballerina» обычно относится к комбинации компилятора и среды выполнения, даже если некоторые части компилятора являются общими для всех реализаций официального языка, предоставленных командой Ballerina.

Вот некоторые подробности о существующих реализациях и их статусе. Всем этим занимается команда Ballerina.

jBallerina

jBallerina - это реализация языка, предназначенная для JVM. Другими словами, компилятор jBallerina преобразует исходный код Ballerina в байт-код Java, определенный в спецификации виртуальной машины Java. Команда Ballerina активно работает над jBallerina для поддержки новой языковой спецификации 2019R3.

Вы можете ожидать выхода первой GA версии jBallerina 1.0 в начале третьего квартала 2019 года.

Вот некоторые основные моменты этого выпуска.

  • построен на стабильной версии языковой спецификации - 2019R3
  • Значительные улучшения производительности по сравнению с предыдущими версиями реализации Ballerina
  • Совместимость с существующими библиотеками Java

nБалерина

nBallerina - это еще одна реализация языка Ballerina для создания собственных двоичных файлов, специфичных для таких платформ, как Linux, Windows, MacOS, iOS, WebAssembly и т. д. Мы пишем бэкэнд компилятора в nBallerina, используя LLVM.

Это реализация WIP, и у нас пока нет точных дат выпуска nBallerina 1.0. Вероятно, появится в продаже в 2020/2021 году.

Каждая из этих реализаций будет содержать функции, не упомянутые в спецификации языка. Например, jBallerina поддерживает совместимость с Java, но nBallerina может ее не иметь. Как правило, лучше придерживаться деталей, упомянутых в спецификации языка, иначе программы, написанные в одной реализации, не будут работать в других реализациях.

Стандартная библиотека Ballerina

Стандартная библиотека Ballerina - это набор модулей, доступных во всех реализациях языка. Некоторые модули в стандартной библиотеке версируются и выпускаются вместе со спецификацией языка. Некоторые модули имеют версии и выпускаются независимо от спецификации языка и его реализаций. Но все модули в стандартной библиотеке будут иметь зарезервированное название организации балерина. Модули организованы в трехуровневую иерархию с организацией, названием модуля и версией. Обратитесь к разделу Структура программы в спецификации языка для получения более подробной информации.

Библиотека lang

Подмножество модулей в стандартной библиотеке называется библиотекой lang. Они версируются и выпускаются вместе с конкретной версией языковой спецификации. Эти модули находятся в организации «балерина» с названием модуля, начинающимся с «lang.». Ниже приводится список таких модулей:

Библиотека платформы Ballerina

Все остальные модули, кроме модулей в библиотеке lang, версируются и выпускаются независимо. Вот несколько примеров таких модулей:

  • балерина / http
  • балерина / математика
  • балерина / файл
  • балерина / грпк
  • балерина / докер
  • балерина / кубернеты

Каждая реализация спецификации языка, например jBallerina и nBallerina, включает все модули в стандартной библиотеке. Для обеспечения согласованности мы следуем следующей стратегии управления версиями модулей в библиотеке платформы.

  • В каждой версии реализации языка указано: 1) какую версию спецификации языка он поддерживает и 2) какую версию каждого модуля в библиотеке платформы он поставляется. Эта информация записывается в дескриптор, выпущенный вместе с реализацией.
  • Версии модуля библиотеки lang привязаны к версии языковой спецификации, поэтому в этом дескрипторе не требуется их указывать.
  • Неверсированный импорт конкретного модуля имеет семантику импорта версии, указанной в дескрипторе реализации.

Например, если вы импортируете модуль «ballerina / http» без указания версии в своей программе и скомпилируете его с помощью jBallerina 1.0, ваша программа будет скомпилирована и связана с «ballerina / http: 1.2. .0 ”. Если вы скомпилируете свою программу с помощью jBallerina 1.5, она будет связана, скажем, с «ballerina / http: 1.6.0». Причина в том, что дескрипторы реализации версий jBalleria будут указывать версию модуля «ballerina / http», который поставляется с ним.

Балерина центральная

Ballerina central - это общедоступный репозиторий модулей, поддерживаемый командой Ballerina. Репозиторий - это хранилище модулей, которое организует модули в трехуровневую иерархию с организацией, именем модуля и версией. Также возможны другие публичные или частные развертывания репозиториев модулей.

Ballerina central предоставляет централизованную платформу для обмена модулями. Если вы разработчик модуля библиотеки Ballerina, вы можете разместить свои библиотеки в центральном хранилище, предварительно создав там учетную запись. Вы можете выбрать название организации по вашему выбору, и все ваши модули будут организованы под вашей организацией. Если вы являетесь потребителем модулей, вы можете искать и извлекать модули из центра на свой локальный компьютер. Вы можете найти более подробную информацию в следующем разделе.

Обычно, когда доступен новый язык, возникает нехватка библиотек, и со временем этот недостаток восполняется сообществом. Ballerina central играет ключевую роль в построении этой экосистемы. Мы настоятельно рекомендуем всем вносить свой вклад в экосистему, делясь полезными библиотеками.

Инструмент Балерина

До сих пор мы говорили о спецификации языка, компиляторе, среде выполнения, стандартной библиотеке и центральном репозитории модулей, но не говорили о ключевом программном компоненте платформы Ballerina. Если вы внимательно подумаете, вы увидите здесь различные независимые инструменты, такие как инструмент, который анализирует и переводит код Ballerina в исполняемую программу - компилятор, инструмент, который подключается к Ballerina central и позволяет вам находить, толкать и извлекать модули. , инструмент, который выполняет ваши модульные тесты, инструмент, который генерирует документацию API для ваших общедоступных интерфейсов и т. д.

Инструмент Ballerina обеспечивает удобный фасад, скрывая сложность всех этих инструментов. Это набор инструментов с CLI, с которым взаимодействует программист Ballerina.

Его основная роль - компилировать модули Ballerina и связывать их для создания исполняемых двоичных файлов. Это также поможет вам:

  • Структурируйте исходный код с помощью проектов и модулей. Проект - это каталог, в котором вы можете разместить коллекцию связанных модулей, которые вместе управляются версиями. Модуль Ballerina - это пространство имен, которое изолирует определение функции, определения типов, константы от других пространств имен. Инструмент Ballerina понимает модульную систему Ballerina и позволяет создавать проекты, модули и строить полный проект.
  • Управление зависимостями модуля Ballerina. Вы можете искать и извлекать зависимости на свой локальный компьютер с помощью инструмента Ballerina. Он также учитывает ваши требования к версии зависимостей.
  • Запускайте модульные тесты. Платформа Ballerina поставляется с фреймворком модульного тестирования для Ballerina. Вы можете вызывать различные операции, связанные с тестами, с помощью инструмента Ballerina.
  • Создавать документы API,
  • Управление несколькими реализациями языка Ballerina. Как я объяснял ранее, спецификация языка Ballerina имеет несколько реализаций. У каждой из этих реализаций в будущем будет несколько версий. Инструмент Ballerina позволяет устанавливать, обновлять и удалять такие реализации и их версии. Он также уведомляет вас, когда появляются новые версии уже установленных вами реализаций.
  • еще много…

Инструмент Ballerina имеет версии и выпускается независимо от других частей платформы. Когда вы вызываете ballerina versioncommand, вы увидите текущую активную версию языковой реализации или версию по умолчанию, поддерживаемую версию (и) спецификации и версию инструмента Ballerina.

Все возможности, о которых я вкратце упомянул выше, являются частью платформы Ballerina. Мы будем писать сообщения, чтобы подробно их объяснить.

Резюме

Платформа Ballerina с самого начала предназначена для обеспечения всех функций, необходимых для разработки программного обеспечения с использованием языка Ballerina. В нем есть большинство деталей, необходимых для полноценного использования. Мы называем это платформой с «включенными батареями».

Платформа Ballerina - это платформа с «батареями в комплекте».

Я надеюсь закончить этот пост сейчас. Пожалуйста, следите за предстоящим выпуском jBallerina 1.0 в начале третьего квартала 2019 года.

Ниже приводится список ссылок, которые помогут вам узнать больше о платформе.

📝 Прочтите этот рассказ позже в Журнале.

👩‍💻 Просыпайтесь каждое воскресное утро и слушайте самые интересные истории недели в области технологий, которые ждут вас в вашем почтовом ящике. Прочтите информационный бюллетень« Примечательно в технологиях .