Балерина (язык программирования) - Ballerina (programming language)
Разработано | Санджива Вираварана, Джеймс Кларк, Самира Джаясома, Хасита Аравинда, Шринатх Перера, Фрэнк Лейманн и WSO2[1] |
---|---|
Разработчик | WSO2 |
Впервые появился | 2017 |
Печатная дисциплина | Структурные, сильный, статический, предполагаемый |
Язык реализации | Java, Балерина, TypeScript [2] |
Операционные системы | Кроссплатформенность |
Лицензия | Лицензия Apache 2.0[3] |
Интернет сайт | балерина |
Под влиянием | |
Ява, Javascript, Идти, Ржавчина, C #[4] |
Балерина является Открытый исходный код общее назначение язык программирования и платформа разработана WSO2 для облачных приложений программисты. Его легко писать и изменять, и он подходит для применения. программисты.[5][6][7]
Это Открытый исходный код проект [2] начат в 2015 году архитекторами из WSO2 в качестве альтернативы на основе кода инструментам интеграции на основе конфигурации, таким как EAI, ESB, и продукты рабочего процесса.[8][9]
Он имеет различные конструкции, ориентированные на облачную разработку, включая поддержку современных форматов данных и протоколов, надежность, распределенные транзакции, API, и потоки событий.[10][11][12]
История
Ballerina была разработана WSO2 для повышения производительности разработчиков приложений, которым приходится работать с распределенные облачные системы. Дизайнеры, представившие корпоративную продукцию в интеграция space более 10 лет использовали свои знания в отрасли при разработке языка.[13][14] Впервые о балерине было объявлено в 2017 году, а версия 1.0 была выпущена 10 сентября 2019 года.[15]
Дизайн
Вот некоторые ключевые концепции Ballerina:
- Сеть на языке - Балерина вводит фундаментальные, новые абстракции клиентских объектов, сервисов, функций ресурсов и слушателей, чтобы привнести в язык сети. [16]
- Диаграммы последовательностей для программирования - в Ballerina каждая программа имеет соответствующую диаграмму последовательности, которая автоматически иллюстрирует распределенные и параллельные взаимодействия. [17]
- Структурная типизация, открытая по умолчанию - Ballerina имеет систему структурных типов со статической типизацией, которая разработана с учетом схемы сетевых данных. [18]
- Переход от кода к облаку - Ballerina передает весь процесс выполнения программы в руки разработчика с расширяемыми метаданными, которые компилируются в исполняемые программы для всех основных облачных платформ. [19]
- Автоматическая наблюдаемость - Ballerina включает в себя функции автоматической наблюдаемости в самом языке, что помогает отслеживать показатели, журналы и трассировку. [20]
Примеры
Hello World Service
import ballerina / http; service hello на новом http: Listener (9090) {функция ресурса sayHello (http: Caller caller, http: Request req) возвращает ошибку? {проверить вызывающего-> ответить ("Привет, мир!"); }}
Чтобы запустить службу, перейдите в каталог, содержащий файл `.bal`, и выполните команду` ballerina run` ниже.
$ балерина бегает hello_world.bal[ballerina / http] запустил прослушиватель HTTP / WS 0.0.0.0:9090curl http: // localhost: 9090 / привет / sayHelloПривет, мир!
Рабочие
import ballerina / http; import ballerina / lang.'int; import ballerina / io; // Рабочие взаимодействуют друг с другом, отправляя и получая сообщения. // Ballerina проверяет каждое взаимодействие рабочего (отправка и получение) // во избежание взаимоблокировок. public функция main () {worker w1 {int w1val = checkpanic calculate ("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 (). рабочий w2 {int w2val = checkpanic вычислить ("17 * 5"); // Получает сообщение от воркера `w1`. int w1val = <- w1; io: println ("[w2] Сообщение от w1:", w1val); // Асинхронно отправляет сообщение исполнителю `w1`. w1val + w2val -> w1; } worker w3 {int
Унарная блокировка gRPC
import ballerina / grpc; import ballerina / log; service HelloWorld on new grpc: Listener (9090) {resource function hello (grpc: Caller caller, string name, 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); если (ошибка - это grpc: Error) {журнал: printError ("Ошибка из коннектора:" + err.message ()); } // Отправляет вызывающему абоненту уведомление о завершении. grpc: Ошибка? результат = вызывающий-> завершено (); if (результат - grpc: Error) {log: printError («Ошибка при отправке завершенного уведомления вызывающему абоненту», err = результат); }}}
Рекомендации
- ^ "Спецификация языка балерины". WSO2.
- ^ а б Участники с открытым исходным кодом (18 июня 2019 г.). "Исходный код балерины". GitHub.
- ^ «WSO2 / ЛИЦЕНЗИЯ». github.com. WSO2. 2017-03-08. Получено 2018-03-01.
- ^ «Балерина, современный язык программирования, ориентированный на интеграцию» (PDF): 15. Цитировать журнал требует
| журнал =
(помощь) - ^ Джексон, Иоав. "Балерина: первый язык программирования API". Новый стек. Получено 2018-06-11.
- ^ Формски, Том (2019-03-01). «Технологии и искусство: празднование Балерины, компьютерного языка интеграции». Получено 2019-07-14.
- ^ Лотон, Джордж (2018-11-01). «Ballerina Language обещает улучшить интеграцию приложений». Получено 2019-07-23.
- ^ "Язык программирования микросервисов Ballerina: знакомство с последней версией" и "Ballerina Central""". InfoQ. Получено 2018-06-07.
- ^ Эрлз, Алан (2019-03-01). «Как Ballerina выглядит как облачный язык программирования?». Получено 2019-07-23.
- ^ Дойл, Керри. «10 лучших языков программирования для изучения в 2020 году». Получено 2020-09-16.
- ^ Поста, Кристиан. «Эволюция интеграции и микросервисов с Service Mesh и Ballerina». Получено 2019-07-24.
- ^ персонал, Techworld. «Лучшие языки программирования, которые стоит попробовать». Techworld. Получено 2018-06-07.
- ^ Кларк, Джеймс. "Язык программирования балерин. Часть 0 - Контекст". Получено 2020-09-16.
- ^ Кларк, Джеймс. "Язык программирования балерин. Часть 1 - Понятия". Получено 2020-09-16.
- ^ "Балерина заново изобретает облачное промежуточное ПО в качестве языка программирования"". GlobeNewswire. Получено 2020-09-16.
- ^ Warusawithana, Лакмал. «Переосмысление программирования: сеть в языке». Получено 2020-09-16.
- ^ Фернандо, Анджана. «Переосмысление программирования: снова делаем диаграммы последовательностей крутыми». Получено 2020-09-16.
- ^ Фернандо, Анджана. «Переосмысление программирования: система типов с учетом сети». Получено 2020-09-16.
- ^ Warusawithana, Лакмал. «Переосмысление программирования: от кода к облаку». Получено 2020-09-16.
- ^ Фернандо, Анджана. «Переосмысление программирования: автоматическая наблюдаемость». Получено 2020-09-16.
- ^ Ballerina Team (16 сентября 2020 г.). "Привет, мир, сервис". ballerina.io.
- ^ Ballerina Team (16 сентября 2020 г.). «Рабочее взаимодействие». ballerina.io.
- ^ Ballerina Team (16 сентября 2020 г.). «одинарная блокировка gRPC». ballerina.io.
дальнейшее чтение
- Фернандо, Анджана, Варусавитана, Лакмал (2020) Начало программирования балерин, Апресс (часть Springer Nature)