What is Jolie?
Jolie is a fully-fledged service-oriented programming language. It brings elegance, simplicity, and pragmatism in the development of modular, integrated, distributed, and concurrent applications.
The development of Jolie is based on a continuous trade-off between formal theory and practical requirements. Since its start this synergy has produced a tool able to harness the inherit complexity within distributed systems where multiple entities relate and interact.
One of the strongest values of Jolie is the high level of freedom it allows when designing distributed solutions. Depending on the requirements and the constraints of a specific problem, a programmer can choose whether to build a basic, immediate, yet lightweight solution to integrate applications from different domains or to model the solution by exploiting the language's advanced composition mechanism, forging an high-valued modular distributed system.
Moreover, researchers are contributing with their own works by enhancing and analysing the language's formal models, providing a reliable and coherent model for designing distributed systems. Something easy to learn, funny to use, and powerful to create with.
What is Jolie for?
The aim of the Jolie project is to provide a coherent, effective, efficient, yet elegant tool for designing and implementing distributed systems: the Jolie programming language.
Programmers can seamlessly use and switch between their protocols of choice like the well-known http, https, and soap or even defining their own custom ones.
Leonardo, Jolie's ~50LOC web server, enables to easily add services and functionalities to server-side web applications. Moreover, the integration of the GWT library and the JSON/RPC protocol expedites the process of connecting web applications.
Redirection, aggregation, and other service-composition mechanisms allow to build high-valued distributed systems whose topology can be easily customized exploiting the language's embedding feature.
Academics can investigate new features of the language as well as new theorems starting from the Jolie's formal model SOCK, the process calculus whose semantic Jolie is based on.
Projects using Jolie
Leonardo is very flexible, and can scale from serving simple static HTML content to supporting powerful dynamic web applications. Leonardo is particularly suited to integrate Web Development with Service-Oriented Architectures (SOAs)
JoRBA (Jolie Rule-Based Adaptation framework), is a proof-of-concept framework implementation of adaptation mechanisms written Jolie.
Joliepse is an Integrated Development Environment (IDE) for the JOLIE programming language, powered by the Xtext framework. Joliepse provides code templating, code completion, syntax coloring, navigation, reference finding, outline views and syntax checking / error markers.
jEye is web application which allows for the design of Jolie workflow by exploiting a web GUI developed in GWT. The server side of jEye is a Service Oriented Architecture fully implemented with Jolie. In particular, we exploit service recursion for developing the Jolie parser which converts the workflow definition provided by the web GUI into a real and executable Jolie service. At the present jEys is a prototype.
Chor is a new programming language for communicating systems, based on choreographies. Choreographies are global descriptions of system implementations, where the behaviour of all entities in a system is given in a single program. Choreographies enhance the quality of software, as they represent "formal blueprints" of how communicating systems should behave and offer a concise view of the message flows enacted by a system. In Chor, a choreography can then be projected (or compiled, if you like) onto a set of separate programs that can be run in a distributed system.
AIOCJ is a framework for programming adaptive distributed systems based on message passing. AIOCJ comes as a plugin for Eclipse, AIOCJ-ecl, allowing to edit descriptions of distributed systems as adaptive interaction-oriented choreographies (AIOC). From interaction-oriented choreographies the description of single participants can be automatically derived. Adaptation is specified by rules allowing to replace predetermined parts of the AIOC with a new behaviour. A suitable protocol ensures that all the participants are updated in a coordinated way. As a result, the distributed system follows the specification given by the AIOC under all changing sets of adaptation rules and environment conditions. In particular, the system is always deadlock-free.