EN FR
EN FR


Section: New Software and Platforms

JOLIE

Java Orchestration Language Interpreter Engine

Keyword: Microservices

Scientific Description: Jolie is a service-oriented programming language. Jolie can be used to program services that interact over the Internet using different communication protocols.

Differently from other Web Services programming languages such as WS-BPEL, Jolie is based on a user-friendly C/Java-like syntax (more readable than the verbose XML syntax of WS-BPEL) and, moreover, the language is equipped with a formal operational semantics. This language is used for the proof of concepts developed around Focus activities. For instance, contract theories can be exploited for checking the conformance of a Jolie program with respect to a given contract.

Functional Description: Developments in 2017: 2017 has seen many efforts around the language to increase its usage in industry. These include:

- Organisation of two events. One in Italy, called Meeting on Microservices, organised by italianaSoftware and Monrif SpA in December 2016. The second one in Denmark, organised by Southern Denmark University and Università di Bologna in October 2017. Common aim of both events was presenting the language from a practical, industrial point of view, to illustrate with real-world cases how its abstractions can increase productivity of companies. Both venues contributed in growing the community of companies that have adopted the language or plan to adopt it in the near future.

- Revision of the language documentation, migrating it to GitBook. In this way, Jolie users can access its documentation as HTML pages, as a PDF, and as an eBook. The choice of GitBook has been guided by the need to give a proper tool to users to collaborate, discuss, and request fixes and extensions on the documentation.

- Development of several tools, frameworks, and libraries to ease the management of architectures of microservices. The main ones are:

- the publication of libraries to interact with and orchestrate the Docker containerisation technology. This work, called Jocker, has been the fulcrum of other projects that streamline the creation and management of container-based microservice architectures,

- the publication of a fundamental companion for any industrial-grade language: a packing system. The project, called jpm, automatises the process of publishing, installing, upgrading, configuring, and removing libraries in Jolie software projects,

- the inclusion in the language interpreter of hooks for modular, distributed tracing, a renowned problem of microservices and distributed systems. Developed to output program traces in JSON, this work maintained an open perspective on both output formats and logging deployment, which can be extended in a modular way. The project also includes a visualiser of several distributed traces for debugging purposes,

- the publication of a unit testing framework for microservices, a fundamental building block for continuous integration processes. This framework includes also functionalities to automatically test microservices within a distributed, sandboxed environment, thanks to its integration with Jocker. The framework is also the first step towards a more comprehensive suite to test complete microservice architectures,

- the creation of a deployment framework that automatises the deployment of microservice architectures. This is an important issue in microservice and distributed system deployment, where correctly installing programs on execution nodes and making sure they are properly linked to each other is a daunting and time-consuming task. The framework, given a deployment schema, i) automatises the creation of containers where one or more microservices coexist, ii) deploys the containers into assigned machines, and iii) binds the deployed containers so that microservices within different containers can communicate,

- the creation of the Jiot project, aimed at integrating IoT-related technologies into the Jolie language. The final goal is to provide easy-to-use and flexible communication abstractions to interconnect and make interact disparate IoT islands. Work in 2017 comprised the inclusion of the CoAP/UDP and MQTT/TCP protocols among the communication technologies supported by the language.

Jolie also transitioned from version 1.6 to 1.6.2, which are minor releases, however they contain many performance optimisations and bug fixes.

Release Functional Description: There are many fixes to the HTTP extension, improvements to the embedding engine for Javascript programs, and improvements to the support tools jolie2java and wsdl2jolie.

  • Participants: Claudio Guidi, Fabrizio Montesi, Maurizio Gabbrielli and Saverio Giallorenzo

  • Contact: Fabrizio Montesi

  • URL: http://www.jolie-lang.org/