Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

Балерина является открытым исходным кодом общего назначения языка программирования и платформа разработан WSO2 для применения облачных эр программистов . Его легко писать и изменять, и он подходит для прикладных программистов . [5] [6] [7]

Это проект с открытым исходным кодом [2], начатый в 2015 году архитекторами из WSO2 как основанная на коде альтернатива инструментам интеграции на основе конфигурации, таким как EAI , ESB и продукты рабочего процесса. [8] [9]

Он имеет различные конструкции, ориентированные на облачную разработку, включая поддержку современных форматов данных и протоколов, надежность, распределенные транзакции, API-интерфейсы и потоки событий. [10] [11] [12]

История [ править ]

Ballerina была разработана WSO2 для повышения производительности разработчиков приложений, которым приходится работать с распределенными облачными системами . Дизайнеры, которые более 10 лет предоставляли корпоративные продукты в области интеграции , использовали свои знания отрасли при разработке языка. [13] [14] Впервые о Ballerina было объявлено в 2017 году, а версия 1.0 была выпущена 10 сентября 2019 года. [15]

Дизайн [ править ]

Вот некоторые ключевые концепции Ballerina:

  • Сеть на языке - Ballerina вводит фундаментальные, новые абстракции клиентских объектов, сервисов, функций ресурсов и слушателей, чтобы привнести в язык сети. [16]
  • Диаграммы последовательностей для программирования - в Ballerina каждая программа имеет соответствующую диаграмму последовательности, которая автоматически иллюстрирует распределенные и параллельные взаимодействия. [17]
  • Структурная типизация, открытая по умолчанию - Ballerina имеет систему структурных типов со статической типизацией, которая предназначена для дружественной схемы сетевых данных. [18]
  • Переход от кода к облаку - Ballerina передает весь процесс выполнения программы в руки разработчика с расширяемыми метаданными, которые компилируются в исполняемые программы для всех основных облачных платформ. [19]
  • Автоматическая наблюдаемость - Ballerina включает в себя функции автоматической наблюдаемости в самом языке, что помогает отслеживать показатели, журналы и трассировку. [20]

Примеры [ править ]

Hello World Service [ править ]

импортная балерина / http;service hello на новом http: Listener (9090) { ресурсная функция sayHello (http: вызывающий абонент, http: Request req) возвращает ошибку? { проверить вызывающего-> ответить («Привет, мир!»); }}

Чтобы запустить службу, перейдите в каталог, содержащий файл `.bal`, и выполните команду` ballerina run` ниже.

$ ballerina run hello_world.bal [ballerina / http] запустил прослушиватель HTTP / WS 0.0.0.0:9090curl http: // localhost: 9090 / hello / sayHello Привет, мир!

[21]

Рабочие [ править ]

импортная балерина / http;импортная балерина / lang.'int;импортная балерина / io;// Рабочие взаимодействуют друг с другом, отправляя и получая сообщения.// Балерина проверяет каждое взаимодействие рабочего (отправка и получение)// чтобы избежать взаимоблокировок.public function main () { worker w1 { int w1val = checkpanic вычислить ("2 * 3"); // Асинхронно отправляет сообщение исполнителю `w2`. w1val -> w2; // Получает сообщение от воркера `w2`. int w2val = <- w2; io: println ("[w1] Сообщение от w2:", w2val); // Посылает сообщения исполнителю `w3` синхронно. Рабочий `w1` будет ждать // пока работник `w3` не получит сообщение. w1val - >> w3; w2val -> w3; // Сбрасывает все сообщения, отправленные асинхронно исполнителю `w3`. Работник // остановится на этом этапе, пока не будут отправлены все сообщения или пока рабочий `w3` // терпит неудачу. чекпанический смыв w3; } // Рабочий может иметь явный возвращаемый тип, иначе, если возвращаемый тип не указан, // он эквивалентен return (). worker w2 { int w2val = checkpanic вычислить ("17 * 5"); // Получает сообщение от воркера `w1`. int w1val = <- w1; io: println ("[w2] Сообщение от w1:", w1val); // Асинхронно отправляет сообщение исполнителю `w1`. w1val + w2val -> w1; } worker w3 { int

[22]

Унарная блокировка gRPC [ править ]

импортная балерина / грпк;импортная балерина / бревно;сервис HelloWorld на новом grpc: Listener (9090) { ресурсная функция привет (grpc: вызывающий абонент, строковое имя, grpc: Headers headers) { log: printInfo ("Сервер получил привет от" + имя); строка message = "Привет" + имя; // Читает пользовательские заголовки в сообщении запроса. строка reqHeader = headers.get ("client_header_key")?: "none"; log: printInfo ("Сервер получил значение заголовка:" + reqHeader); // Записывает пользовательские заголовки в ответное сообщение. grpc: Заголовки resHeader = new; resHeader.setEntry ("server_header_key", "Значение заголовка ответа"); // Отправляет ответное сообщение с заголовками. grpc: Ошибка? err = вызывающий-> отправить (сообщение, resHeader); if (err is grpc: Error) { log: printError («Ошибка коннектора:» + err.message ()); } // Отправляет вызывающему абоненту уведомление о завершении. grpc: Ошибка? результат = вызывающий-> завершено (); if (результат grpc: Error) { log: printError ("Ошибка при отправке завершенного уведомления вызывающему абоненту", err = результат); } }}

[23]

Ссылки [ править ]

  1. ^ "Спецификация языка балерины" . WSO2.
  2. ^ a b Участники с открытым исходным кодом (18 июня 2019 г.). «Исходный код балерины» . GitHub .
  3. ^ «WSO2 / ЛИЦЕНЗИЯ» . github.com . WSO2 . 2017-03-08 . Проверено 1 марта 2018 .
  4. ^ «Балерина, современный язык программирования, ориентированный на интеграцию» (PDF) : 15. Цитировать журнал требует |journal=( помощь )
  5. ^ Джексон, Иоав. "Балерина: первый язык программирования API" . Новый стек . Проверено 11 июня 2018 .
  6. ^ Форемски, Том (2019-03-01). «Технологии и искусство: празднование Балерины, компьютерный язык интеграции» . Проверено 14 июля 2019 .
  7. ^ Лоутон, Джордж (2018-11-01). «Язык балерины обещает улучшить интеграцию приложений» . Проверено 23 июля 2019 .
  8. ^ "Язык программирования микросервисов Ballerina: Представляем последнюю версию и" Ballerina Central " " . InfoQ . Проверено 7 июня 2018 .
  9. ^ Эрлз, Алан (2019-03-01). "Как Ballerina выступает в роли облачного языка программирования?" . Проверено 23 июля 2019 .
  10. ^ Дойл, Керри. «10 лучших языков программирования для изучения в 2020 году» . Проверено 16 сентября 2020 .
  11. ^ Поста, Кристиан. «Эволюция интеграции и микросервисов с Service Mesh и Ballerina» . Проверено 24 июля 2019 .
  12. ^ сотрудники Techworld. «Лучшие языки программирования, которые стоит попробовать» . Techworld . Проверено 7 июня 2018 .
  13. ^ Кларк, Джеймс. "Язык программирования балерин. Часть 0 - Контекст" . Проверено 16 сентября 2020 .
  14. ^ Кларк, Джеймс. "Язык программирования балерин. Часть 1 - Понятия" . Проверено 16 сентября 2020 .
  15. ^ "Балерина переосмысливает Облако Native Middleware как Programming Language " " . GlobeNewswire . Извлекаться 2020-09-16 .
  16. ^ Warusawithana, Lakmal. «Переосмысление программирования: сеть в языке» . Проверено 16 сентября 2020 .
  17. ^ Фернандо, Анджана. «Переосмысление программирования: снова сделать диаграммы последовательности крутыми» . Проверено 16 сентября 2020 .
  18. ^ Фернандо, Анджана. «Переосмысление программирования: система типов с учетом сети» . Проверено 16 сентября 2020 .
  19. ^ Warusawithana, Lakmal. «Переосмысление программирования: от кода к облаку» . Проверено 16 сентября 2020 .
  20. ^ Фернандо, Анджана. «Переосмысление программирования: автоматическая наблюдаемость» . Проверено 16 сентября 2020 .
  21. Ballerina Team (16 сентября 2020 г.). «Привет, мир, сервис» . ballerina.io.
  22. Ballerina Team (16 сентября 2020 г.). «Рабочее взаимодействие» . ballerina.io.
  23. Ballerina Team (16 сентября 2020 г.). «одинарная блокировка gRPC» . ballerina.io.

Дальнейшее чтение [ править ]

  • Фернандо, Анджана, Варусавитана, Лакмал (2020) Начало программирования балерин , Apress (часть Springer Nature)

Внешние ссылки [ править ]

  • https://ballerina.io