ted.neward@newardassociates.com | Blog: http://blogs.newardassociates.com | Github: tedneward | LinkedIn: tedneward
a service-oriented programming language
"it is designed to reason effectively about the key questions of (micro)service development, including the following:
What are the APIs exposed by services?
How can these APIs be accessed?
How are APIs implemented in terms of concurrency, communication, and computation?
built on top of the JVM
"More in general, Jolie brings a structured linguistic approach to the programming of services, including constructs for access endpoints, APIs with synchronous and asynchronous operations, communications, behavioural workflows, and multiparty sessions. Additionally, Jolie embraces that service and microservice systems are often heterogeneous and interoperability should be a first-class citizen: all data in Jolie is structured as trees that can be semi-automatically (most of the time fully automatically) converted from/to different data formats (JSON, XML, etc.) and communicated over a variety of protocols (HTTP, binary protocols, etc.). Jolie is an attempt at making the first language for microservices, in the sense that it provides primitives to deal directly with the programming of common concerns regarding microservices without relying on frameworks or external libraries."
Jolie requires Java 11+ to run
Download the Jolie installer
https://www.jolie-lang.org/downloads.html
currently https://github.com/jolie/jolie/releases/download/v1.11.0/jolie-1.11.0.jar
Run the installer
java -jar jolie-1.11.0.jar
Linux/macOS/WSL Homebrew
brew install jolie
Docker
docker pull jolielang/jolie
docker run -it -v /host:/container –name CONTAINERNAME jolielang/jolie
edit files in your /host
, which will appear in /container
Or build from source
git clone https://github.com/jolie/jolie.git
cd jolie
mvn install
binaries will be in dist
folder
Then (optionally) set up Jolie for the local user
scripts/dev-setup.sh ~/bin
Run Jolie: jolie --version
currently returns Jolie 1.11.2 (C) 2006-2022 the Jolie developers
from your favorite editor, create hello.ol
run the file with jolie hello.ol
connect to the service: http://localhost:9000/hello?name=Fred
Hello world
type HelloRequest { name:string } interface HelloInterface { requestResponse: hello( HelloRequest )( string ) } service HelloService { execution: concurrent inputPort HelloService { location: "socket://localhost:9000" protocol: http { format = "json" } interfaces: HelloInterface } main { hello( request )( response ) { response = "Hello " + request.name } } }
Architect, Engineering Manager/Leader, "force multiplier"
http://www.newardassociates.com
http://blogs.newardassociates.com
Sr Distinguished Engineer, Capital One
Educative (http://educative.io) Author
Performance Management for Engineering Managers
Books
Developer Relations Activity Patterns (w/Woodruff, et al; APress, forthcoming)
Professional F# 2.0 (w/Erickson, et al; Wrox, 2010)
Effective Enterprise Java (Addison-Wesley, 2004)
SSCLI Essentials (w/Stutz, et al; OReilly, 2003)
Server-Based Java Programming (Manning, 2000)