Jolie (programming language)

Last updated
Jolie
JolieProgrammingLanguageLogo.png
JolieGreeter.png
Paradigms Microservices, SOA
Designed by
  • Claudio Guidi
  • Fabrizio Montesi
Developer Fabrizio Montesi
First appearedJuly 31, 2006;16 years ago (2006-07-31)
Stable release
1.10.13 / July 25, 2022;11 days ago (2022-07-25)
Implementation language Java
Platform Java
License LGPLv2
Filename extensions .ol, .iol, .jap
Website www.jolie-lang.org

Jolie (Java Orchestration Language Interpreter Engine [1] ) is an open-source [2] programming language for developing distributed applications based on microservices. In the programming paradigm proposed with Jolie, each program is a service that can communicate with other programs by sending and receiving messages over a network. Jolie supports an abstraction layer that allows services to communicate using different mediums, ranging from TCP/IP sockets to local in-memory communications between processes. [3] [4]

Jolie is currently supported by an interpreter implemented in the Java language, which can be run in multiple operating systems including Linux-based operating systems, OS X, and Windows. [5] The language comes with formal semantics, meaning that the execution of Jolie programs is mathematically defined. For this reason, Jolie is used in research for the investigation of language-based techniques for the development of distributed systems, [6] and it is also used for teaching at some universities. [7]

The Jolie open source project was started by Fabrizio Montesi in 2006, as part of his studies at the University of Bologna. The project initially began as an implementation of the SOCK process calculus, a formal model proposed by Claudio Guidi et al. at the University of Bologna [8] [9] inspired by the CCS process calculus and the WS-BPEL programming language. Jolie extends SOCK with support for, e.g., tree-like data structures (inspired by XML, but with a syntax resembling that of C and Java), message types, typed session programming, integration with Java and JavaScript, code mobility, application containment, and web programming. [5] [10] [11] A complete list of the project contributors is available at. [12]

The project is currently maintained by Fabrizio Montesi and its evolution is driven by Fabrizio Montesi and Claudio Guidi.

Since it supports the orchestration of web services, Jolie is an alternative to XML-based orchestration languages such as WS-BPEL as it offers a concise (C-like) syntax for accessing XML-like data structures.

Related Research Articles

An abstract machine is a computer science theoretical model that allows for a detailed and precise analysis of how a computer system functions. It is analogous to a mathematical function in that it receives inputs and produces outputs based on predefined rules. Abstract machines vary from literal machines in that they are expected to perform correctly and independently of hardware. Abstract machines are “machines” because they allow step-by-step execution of programmes; they are “abstract” because they ignore many aspects of actual (hardware) machines. A typical abstract machine consists of a definition in terms of input, output, and the set of allowable operations used to turn the former into the latter. They can be used for purely theoretical reasons as well as models for real-world computer systems. In the theory of computation, abstract machines are often used in thought experiments regarding computability or to analyse the complexity of algorithms. This use of abstract machines is connected to the field of computational complexity theory, such as finite state machines, Mealy machines, push-down automata, and Turing machines.

A web service (WS) is either:

The Web Services Business Process Execution Language (WS-BPEL), commonly known as BPEL, is an OASIS standard executable language for specifying actions within business processes with web services. Processes in BPEL export and import information by using web service interfaces exclusively.

The calculus of communicating systems (CCS) is a process calculus introduced by Robin Milner around 1980 and the title of a book describing the calculus. Its actions model indivisible communications between exactly two participants. The formal language includes primitives for describing parallel composition, choice between actions and scope restriction. CCS is useful for evaluating the qualitative correctness of properties of a system such as deadlock or livelock.

In software engineering, service-oriented architecture (SOA) is an architectural style that focus on discrete services instead of a monolithic design. By consequence, it is as well applied in the field of software design where services are provided to the other components by application components, through a communication protocol over a network. A service is a discrete unit of functionality that can be accessed remotely and acted upon and updated independently, such as retrieving a credit card statement online. SOA is also intended to be independent of vendors, products and technologies.

Factor (programming language) Stack-oriented programming language

Factor is a stack-oriented programming language created by Slava Pestov. Factor is dynamically typed and has automatic memory management, as well as powerful metaprogramming features. The language has a single implementation featuring a self-hosted optimizing compiler and an interactive development environment. The Factor distribution includes a large standard library.

The actor model in computer science is a mathematical model of concurrent computation that treats actor as the universal primitive of concurrent computation. In response to a message it receives, an actor can: make local decisions, create more actors, send more messages, and determine how to respond to the next message received. Actors may modify their own private state, but can only affect each other indirectly through messaging.

Tea is a high-level scripting language for the Java environment. It combines features of Scheme, Tcl, and Java.

XPDL

The XML Process Definition Language (XPDL) is a format standardized by the Workflow Management Coalition (WfMC) to interchange business process definitions between different workflow products, i.e. between different modeling tools and management suites. XPDL defines an XML schema for specifying the declarative part of workflow / business process.

Business Process Modeling Language (BPML) is an XML-based language for business process modeling. It was maintained by the Business Process Management Initiative (BPMI) until June 2005 when BPMI and OMG announced the merger of their respective Business Process Management (BPM) activities to form the Business Modeling and Integration Domain Task Force. It is deprecated since 2008. BPML was useful to OMG in order to enrich UML with process notation.

Matita

Matita is an experimental proof assistant under development at the Computer Science Department of the University of Bologna. It is a tool aiding the development of formal proofs by man-machine collaboration, providing a programming environment where formal specifications, executable algorithms and automatically verifiable correctness certificates naturally coexist.

Apache ODE

Apache ODE is a software coded in Java as a workflow engine to manage business processes which have been expressed in the Web Services Business Process Execution Language (WS-BPEL) via a website. It was made by the Apache Software Foundation and released in a stable format on March 23, 2018. The software principally communicates with one or more Web services, sending and receiving messages, manipulating data and handling exceptions (errors) as defined by any given process. The engine is capable of running both long and short living processes to coordinate all the services that make up a service or application (orchestration).

Service Component Architecture (SCA) is a software technology designed to provide a model for applications that follow service-oriented architecture principles. The technology, created by major software vendors, including IBM, Oracle Corporation and TIBCO Software, encompasses a wide range of technologies and as such is specified in independent specifications to maintain programming language and application environment neutrality. Many times it uses an enterprise service bus (ESB).

BPELscript is a language to specify BPEL processes. It provides a compact syntax inspired by scripting languages such as JavaScript and Ruby and a full coverage of all features provided by BPEL.

Service choreography in business computing is a form of service composition in which the interaction protocol between several partner services is defined from a global perspective. The idea underlying the notion of service choreography can be summarised as follows:

"Dancers dance following a global scenario without a single point of control"

Apache Attic is a project of Apache Software Foundation to provide processes to make it clear when an Apache project has reached its end-of-life. The Attic project was created in November 2008. Also the retired projects can be retained.

Executable choreography represents a decentralized form of service composition, involving the cooperation of several individual entities. It is an improved form of service choreography. Executable choreographies can be intuitively seen as arbitrary complex workflows that get executed in systems belonging to multiple organisations or authorities.

In computer science, choreographic programming is a programming paradigm where programs are compositions of interactions among multiple concurrent participants.

References

  1. Montesi, Fabrizio; Guidi, Claudio; Lucchi, Roberto; Zavattaro, Gianluigi (2007). JOLIE: a Java Orchestration Language Interpreter Engine (PDF). ENTCS. Vol. 181. pp. 19–33. CiteSeerX   10.1.1.408.2052 . doi:10.1016/j.entcs.2007.01.051. ISSN   1571-0661.
  2. "Jolie Project". SourceForge .
  3. Montesi, Fabrizio (2010). Jolie: a Service-oriented Programming Language (Thesis). University of Bologna.
  4. Montesi, Fabrizio; Guidi, Claudio; Zavattaro, Gianluigi (2014). "Service-Oriented Programming with Jolie". In Bouguettaya, Athman; Sheng, Quan Z.; Daniel, Florian (eds.). Web Services Foundations. pp. 81–107. doi:10.1007/978-1-4614-7518-7_4. ISBN   978-1-4614-7517-0.
  5. 1 2 "Jolie Programming Language".
  6. "Chor Programming Language".
  7. "Jolie Programming Language - Academia".
  8. Guidi, Claudio; Lucchi, Roberto; Gorrieri, Roberto; Busi, Nadia; Zavattaro, Gianluigi (2006). SOCK: A Calculus for Service Oriented Computing. ICSOC'06. LNCS. Vol. 4294. pp. 327–338. CiteSeerX   10.1.1.102.6297 . doi:10.1007/11948148_27. ISSN   0302-9743.
  9. Guidi, Claudio (2007). Formalizing languages for service oriented computing (Thesis). doi:10.6092/unibo/amsdottorato/373.
  10. Montesi, Fabrizio (2013). Process-aware web programming with Jolie. SAC'13. pp. 761–763. arXiv: 1410.3712 . doi:10.1145/2480362.2480507.
  11. Montesi, Fabrizio (2016). "Process-aware Web Programming with Jolie". Science of Computer Programming. 130: 69–96. arXiv: 1410.3712 . doi:10.1016/j.scico.2016.05.002.
  12. "Jolie Programming Language - About Jolie".