«Ballerina» может стать новым языком программирования интеграции

  • 12 сентября, 16:31
  • 3661
  • 0

Ballerina 1.0 - это последняя версия языка программирования, выпущенная 10 сентября этого года. 

Существует более тысячи языков программирования. Зачем вам нужен еще другой язык программирования? Язык Ballerina призван упростить конкретную область программирования, известную как интеграция. Вы можете быть разработчиком, который разрабатывает различные виды веб-сервисов и намеревается соединить эти сервисы. Тогда язык Ballerina может стать вашим следующим компаньоном в программировании.

«Ballerina» может стать новым языком программирования интеграции

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

На что это похоже?

Синтаксис языка Ballerina формируется на основе языков программирования, таких как Java, Go и JavaScript. Ballerina - статичный типизированный язык. Ballerina имеет в качестве базовых типов данных nil, boolean, int, float, decimal и string. Например, если вам нужно определить целое число, синтаксис будет следующим.

int total = 99;

Как и в других языках, у Ballerina есть основной метод, который является основной точкой входа в программу. Вы можете написать простой «hello world», как показано ниже.

import ballerina/io;
public function main() {
    io:println("Hello, World!");
}

Помимо обычных примитивных типов данных, Ballerina предоставляет различные не примитивные типы данных, такие как массивы, Кортежи, карты, таблицы, объединение и т.д. Ballerina представляет ноль в скобках «()»

Другой специальный тип переменных - это тип данных «anydata». Этот тип является объединением () | boolean | int | float | decimal | string | (anydata | error) [] | map <anydata | error> | xml | табличных типов данных. Переменные anydata могут использоваться, где вы ожидаете чистые значения.

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

json user = {
         fname: "Peter",
         lname: "Stallone",
         "age": age,
         address: {
             line: "20 Palm Grove",
             city: "Colombo 03",
             country: "Sri Lanka"
         }
    };
io:println(user.address.country);

Таким же образом вы можете определять и взаимодействовать с объектом XML.

xml x1 = xml `<book>The Lost World</book>`;
io:println(x1);

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

Управление потоком синтаксиса такое же, как и в других языках. Он обеспечивает поддержку синтаксиса «if else», «while» и «foreach». Синтаксис Foreach обеспечивает поддержку итераций для массивов и карт. Если вы ищете привлекательный способ проверки нулевого значения, то Ballerina предоставит оператору Elvis возможность проверить, является ли указанная переменная нулевой или нет. Синтаксис будет выглядеть как 'expression ?: expressionIfNil' и, ниже, будет примером для проверки, является ли переменная x нулевой или нет.

string elvisOutput = x ?: "value is nil";

Объектно-ориентированное программирование с Ballerina 

Синтаксис ООП Ballerina кажется ближе к синтаксису ООП Python. Вот пример для определения объектов с помощью конструкторов.

type Person object {
    public int age;
    public string firstName;
    public string lastName;

    function __init(int age, string firstName, string lastName) {
        self.age = age;
        self.firstName = firstName;
        self.lastName = lastName;
    }

    function getFullName() returns string {
        return self.firstName + " " + self.lastName;
    }

    function checkAndModifyAge(int condition, int a);
};

function Person.checkAndModifyAge(int condition, int a) {

    if (self.age < condition) {
        self.age = a;
    }
}

Процесс создания объекта прост и понятен как “Person p1 = new(5, “John”, “Doe”);” . Доступ к объекту можно получить с помощью оператора точки («.»), Который аналогичен другим языкам.

p1.getFullName()

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

  • общедоступный - виден везде
  • приватный - виден только внутри одного и того же объекта
  • без модификатора - виден только внутри одного пакета.

Вы также можете использовать концепцию абстракции с Ballerina. Абстракция - это мощная концепция ООП, которая необходима при разработке большого модульного программного обеспечения. Вы можете определять и повторно использовать абстрактные объекты в Ballerina. Вы можете преобразовать объект в абстрактный объект, используя ключевое слово abstract. Пример абстрактного объекта будет следующим.

type Person abstract object {
    public int age;
    public string firstName;
    public string lastName;

    function getFullName() returns string;

    function checkAndModifyAge(int condition, int a);
};

Вы можете повторно использовать объект `Person` следующим образом, чтобы повторно использовать переменные и методы в объектах Person.

type Employee abstract object {

    *Person;    
    public float salary;

    function __init(int age, string firstName, string lastName) {
        self.age = age;
        self.firstName = firstName;
        self.lastName = lastName;
    }
    function getSalary() returns float;

};

Существует еще одна концепция ООП, известная как полиморфизм. Полиморфизм также может быть реализован на языке Ballerina следующим образом в предыдущих сегментах кода. Здесь объект person может иметь много типов, так как это абстрактный класс.

Person p = new Employee(5, "John", "Doe");

Интеграция с языком Ballerina

Как я упоминал ранее во введении, Ballerina была специально разработана для решения проблем интеграции. Мы живем в мире, где тысячи веб-серверов работают и взаимодействуют друг с другом. У первых разработчиков были проблемы со связью этих сервисов друг с другом. Enterprise Integration Bus выступает в качестве решения проблем интеграции. Модель ESB предлагает элегантный способ связать различные виды услуг друг с другом. Общая проблема с этими продуктами ESB заключается в том, что их сложно настроить и они менее гибки.

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

Общее требование интеграции состоит в том, чтобы читать, пересылать и преобразовывать сообщения между различными протоколами. Ballerina предоставляет встроенную помощь для транспорта HTTP, HTTPS, HTTP2, Websockets, GRPC, TCP, UDP и т.д.

Ballerina может функционировать как клиент и сервер. Отправка запроса в другую конечную точку проста, так как для этого требуется всего три строки кода. Вы можете легко вызвать бэкэнд API REST, установив заголовки запросов по мере необходимости. Поскольку Ballerina изначально поддерживает JSON, вы можете напрямую манипулировать контентом JSON в программном обеспечении без импорта модулей сторонних производителей.

import ballerina/http;

http:Client clientEndpoint = new("https://postman-echo.com");
public function main() {
    var response = clientEndpoint->get("/get?test=123");
}

С другой стороны, вы можете создать HTTP-сервер с языком Ballerina. Вы можете использовать встроенные функции безопасности для защиты вашей HTTPS-ссылки.

import ballerina/http;
import ballerina/log;
http:ServiceEndpointConfiguration helloWorldEPConfig = {
    secureSocket: {
        keyStore: {
            path: "${ballerina.home}/bre/security/ballerinaKeystore.p12",
            password: "ballerina"
        }
    }
};

listener http:Listener helloWorldEP = new(9095, config = helloWorldEPConfig);

@http:ServiceConfig {
    basePath: "/hello"
}
service helloWorld on helloWorldEP {
    @http:ResourceConfig {
        methods: ["GET"],
        path: "/"
    }
    resource function sayHello(http:Caller caller, http:Request req) {
        var result = caller->respond("Hello World!");
        if (result is error) {
            log:printError("Error in responding ", err = result);
        }
    }

Балерина также обеспечивает поддержку потоковой передачи через интерфейс HTTP. Создание GRPC и серверов на основе веб-сокетов является простым, как создание HTTP-серверов.

Посредники сообщений являются одним из наиболее важных аспектов интеграции, когда речь идет о надежном обмене сообщениями. Если вам нужно надежно отправлять сообщения, вы можете использовать Message Broker вместе с Ballerina Integrator. Ballerina оказывает помощь известным сервисам сообщений, таким как ActiveMQ, RabbitMQ и NATS. Вы можете генерировать и получать сообщения, используя всего несколько строк кода Ballerina.

Заключение

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

Вы можете узнать больше о языке Ballerina на их официальном сайте


0 комментариев
Сортировка:
Добавить комментарий

IT Новости

Смотреть все