August 21, 2018

Posted by Fabrizio Montesi

Jolie 1.7.0 released

Jolie 1.7.0 has been released! Go get it from our download page.

Changelog (from Jolie 1.6.4)
  • Support for Java 9, 10, 11.
  • New feature: SNI (Server Name Indication) support for SSL/TLS (https, soaps, etc.). This is supported automatically, no need to add any protocol configuration.

August 07, 2018

Posted by Fabrizio Montesi

Jolie 1.6.4 released

Jolie 1.6.4 has been released! Go get it from our download page.

Changelog (from Jolie 1.6.3)
  • New feature: redirection in HTTP urls, e.g., http://yourjolieserver/!/SubService!/operation
  • New feature: the soaps protocol (SOAP over HTTPS).
  • New feature: interface extensions now support type links at the root level.
  • New feature: getenv@Runtime gets the value of environment variables.
  • New feature: listEntries@ZipUtils.
  • Various improvements to XML conversion APIs and tools.
  • XML conversion with .indent = true now adds tabbing too.
  • Start-up performance improvements (by avoiding filling stack traces when a path resolution fails for an include path).
  • Complete refactoring of Scheduler (standard library).
  • Fix: null pointer exception in checking type equalities when one type does not have subnodes.
  • Fix: SOAP now replies correctly to OneWay invocations.
  • Fix: HTTP now correctly returns status 500 for internal errors.
  • The Web Service unit test does not use a remote web service anymore.
  • Various code restylings to take advantage of Java 8.

May 02, 2018

Posted by Fabrizio Montesi

Jolie 1.6.3 released

Jolie 1.6.3 has been released! Go get it from our download page.

Changelog (from Jolie 1.6.2)
  • Using operations in courier processes that are not declared in the input port that the courier refers to is now detected statically, not at runtime.
  • Stability improvements to the HTTP and SSL protocols.
  • Fixed a race condition in the correlation engine of the interpreter.
  • Fixed the namespace of HTTP bindings in WSDL files produced with jolie2wsdl.
  • Prettier output for type documentation in joliedoc.

November 07, 2017

Posted by Fabrizio Montesi

Jolie code is now recognised by Github

A few months ago, Github merged support for recognising Jolie code in git repositories. So Jolie programmers can now enjoy seeing this on top of their repositories:

It's OK not to be 100% Jolie, but we love it when it happens!

Posted by Fabrizio Montesi

A new look for the Jolie documentation pages

The Jolie documentation pages, which you can find at docs.jolie-lang.org, got a fresh new look! They are now powered by GitBook, which gives us better accessibility (e.g., font size adjustments, different colour schemes). You can now choose to browse the documentation online, or even download it as a PDF.

Perhaps even more importantly, it is now very easy to edit (or propose changes for) the whole documentation, even with an online editor. This will help us in speeding up the process of better documenting Jolie in the future.

A big thank you to our master of websites Saverio Giallorenzo for pulling out most of the work!

November 06, 2017

Posted by Fabrizio Montesi

Jolie 1.6.2 released

Jolie 1.6.2 has been released! Go get it from our download page.

Changelog (from Jolie 1.6.1)
  • Performance improvements to the startup time of the interpreter.
  • Errors in using global variables with dynamic lookup are now notified at linting time.

July 05, 2017

Posted by Fabrizio Montesi

Jolie 1.6.1 released

Jolie 1.6.1 has been released! Go get it from our download page.

Changelog (from Jolie 1.6.0)
  • The File service now supports the retrieval of different file information.
  • Fixed: could not start the interpreter with some aggregation statements with empty interface extenders.
  • The interpreter shutdown procedure is now faster when timers are running.
  • Different bug fixes for the HTTP and SOAP protocols.
  • Various feature and performance improvements to HTTP and SOAP.

December 01, 2016

Posted by Fabrizio Montesi

Jolie 1.6.0 released

Jolie 1.6.0 has been released!

Important: This is the first stable release of Jolie that requires Java 8. A Java 6 compatible branch is still available on GitHub, to support contributors with the possibility of backporting important bug fixes. A link to the latest stable version of Jolie supporting Java 6 is provided in the download page of the Jolie website.


Changelog from Jolie 1.5.0

New from Jolie 1.6.0 beta1:
  • Improved error message compatibility with Windows (now the Jolie plugin for Atom works correctly in Windows 10).
  • New for-loop construct for iterating over arrays without explicit indexes: for( x in array ) { ... }.
  • Bug fix for interface extenders affecting OneWay operations.
  • Improved support for HTTP methods.
  • Added pi@MathService
  • Fix null pointer in TimeoutHandlers.
  • Improved File service for handling absolute paths.
  • Added replaceFirst@StringUtils
  • Add support for sqlite in Database.
  • Bug fix in alias replacement in HTTP.
  • Fix race condition in ValueVector.
New from Jolie 1.5.0 (already posted as part of Jolie 1.6.0 beta1):
  • 3000th commit reached!
  • Lots of improvements to the handling of concurrent data structures, using lambdas.
  • Codebase ported to make use of the new features and libraries found in Java 8.
  • Various performance improvements: objects for tracing are not allocated if --trace is not in use, type checking runs faster thanks to safe sharing of string builders, improved management of sockets, faster evaluation of logical conditions by using lambda-based implementations.
  • New asynchronous implementation of AbstractCommChannel for simpler handling of solicit-responses.
  • Improved performance of the interpreter test suite.
  • Support for type choices (also known as type sums)! This merits its own blog post, to be written.
  • Numerous bug fixes and minor improvements.
  • Fix a race condition on the usage of internal links.

Posted by Fabrizio Montesi

A Vision for the Microservice Revolution

Is there only one way to develop Microservices? Or is there another that can take us even further?

We at the Jolie team believe that there is a second way. We have started piecing together a presentation of what makes us think so. See it here: http://jolie-lang.org/vision.html

October 11, 2016

Posted by Claudio Guidi

Jolie now available on Docker

Jolie is now available also on Docker, a container tool for deploying microservices. Using the Jolie image for Docker allows for trying out or installing Jolie in production faster, by using the Docker tool. More information about Docker can be found at http://www.docker.com.

To install a Jolie docker container, follow these steps:
  • Install Docker (if not already installed)
  • Run the following command for pulling the Jolie Docker image:

    docker pull jolielang/jolie1.6.0beta1
  • Create a container starting from the downloaded image, by adding a local volume where the Jolie files should be stored:

    docker run -it -v /your-host-folder-path:/your-container-path --name CONTAINERNAME jolielang/jolie1.6.0beta
    where
    • -it : starts the container with a command shell enabled
    • --name CONTAINERNAME : gives a name to the container
    • -v /your-host-folder-path:/your-container-foldercreate an internal folder  /your-container-folder mapped to folder /your-host-folder-path in the host machine which will be used for sharing files between the container and the hosting machine. Thanks to this option, it is possible to edit Jolie files from the host machine preferred editor and then running them inside the container.

    Once the container is started, it is possible to run Jolie from inside the container instance shell with the usual command:

    jolie your_file.ol

Note that you can open several shells in your running container, by using following command from the host:

docker exec -it CONTAINERNAME bash


Wanna try Jolie out? Use the Docker container with Jolie examples!

For those who are interested in running some of the examples discussed in the documentation of the Jolie website, it is possible to pull the following Docker image instead of the basic one:

docker pull jolielang/jolie-examples

In the image, the folder /examples contains the whole set of examples. The examples can also be  downloaded separately from this git repository: https://github.com/jolie/examples.

May 13, 2016

Posted by Fabrizio Montesi

Jolie 1.6.0 beta1 released

In honour of the Jolie repository reaching a count of 3000 commits, Jolie 1.6.0 beta1 has been released!

This is a beta release, meant for early adopters and testers. Do not use it in production! For this reason, the download link is reported only here and not in our main download page.

Download link: http://www.jolie-lang.org/files/releases/jolie-1.6.0_beta1.jar

Important: This is the first release of Jolie that requires Java 8. A Java 6 compatible branch is still available on GitHub, to support contributors with the possibility of backporting important bug fixes.


Changelog from Jolie 1.6.0

  • 3000th commit reached!
  • Lots of improvements to the handling of concurrent data structures, using lambdas.
  • Codebase ported to make use of the new features and libraries found in Java 8.
  • Various performance improvements: objects for tracing are not allocated if --trace is not in use, type checking runs faster thanks to safe sharing of string builders, improved management of sockets, faster evaluation of logical conditions by using lambda-based implementations.
  • New asynchronous implementation of AbstractCommChannel for simpler handling of solicit-responses.
  • Improved performance of the interpreter test suite.
  • Support for type choices (also known as type sums)! This merits its own blog post, to be written.
  • Numerous bug fixes and minor improvements.
  • Fix a race condition on the usage of internal links.

April 19, 2016

Posted by Fabrizio Montesi

Jolie package "atom-jolie" for the Atom editor

We now have a new package for the Atom editor, atom-jolie, that automatically installs all the recommended Atom packages for developing Jolie code in Atom (syntax highlighting, linting, and execution).

There have also been some improvements to the Jolie packages for Atom lately, including a release of the script package that now supports running the currently opened Jolie program directly in Atom.

Screenshot:


April 04, 2016

Posted by Fabrizio Montesi

Jolie 1.5.0 released

Jolie 1.5.0 has been released.
This is mainly a stabilisation release (albeit it contains some new conservative features). It is meant as a transition release towards the future release that will require Java 8. So this one still requires just Java 6, but efforts will now be directed towards stabilising the next version requiring Java 8 (java8 branch on git). Get it while it's still hot: http://jolie-lang.org/downloads.html.

Changelog

  • The HTTP extension now supports sending custom user headers in request messages.
  • Improvements and bugfixes to SSL extensions (e.g., HTTPS).
  • Better handling of the service shutdown sequence.
  • Fixed a race condition in channel selectors.
  • Bugfixes regarding channel handling in aggregation.

August 18, 2015

Posted by Fabrizio Montesi

Jolie 1.4.1 released

Jolie 1.4.1 has been released. This is a bugfix release, including fixes to the HTTP protocol and connection management. Download it from the Jolie download page.

June 16, 2015

Posted by Fabrizio Montesi

Jolie 1.4 released

Jolie 1.4 has been released. This is a feature release, including support for the new syntax of Internal Services (see the docs and the post on non-distributed microservices) and Local Locations. There are also many fixes to the HTTP extension, improvements to the embedding engine for Javascript programs, and improvements to the support tools jolie2java and wsdl2jolie.

April 30, 2015

Posted by Fabrizio Montesi

Jolie 1.3 released

Jolie 1.3 has been released. This is a stabilisation release: much effort has been put into improving the implementation of the interpreter and its extensions, and in extending our test suite for backwards compatibility.

Changelog

  • Empty bodies for Request-Response inputs have been made optional.
  • Performance improvements to communications with embedded Javascript services.
  • gwt-dev.jar has been removed, as it is no longer needed (this reduced the size of a Jolie installation to a third).
  • Fixed a bug that prevented using HTTPs with the default settings (SSLv3 is no longer the default).
  • Improvements to the jolie2java tool, which now correctly compiles access methods to root values.
  • Many fixes to how charset encodings are handled, especially with respect to UTF-8.
  • Bugfix: invoke@Reflection did not use runtime type checking correctly.
  • Internal refactoring of HTTP and HTTP-based protocols to share the basic underlying logic, e.g., error handling.
  • Fetching WSDL documents no longer prints debug messages on screen.
  • Some API cleanups in the standard library (e.g., NetworkService).
  • Improvements to handling GWT messages.

April 01, 2015

Posted by Fabrizio Montesi

Jolie to support groundbreaking +aaMS, *aaMS, picoservices!

With the advent of microservices, it was clear to us in the Jolie team that it was time to reinvent everything there is about computing. We call this initiative XaaMS: X as a MicroService. But what is X? Today, we can share some of our most exciting plans for the future.

X as +: +aaMS

How many times it happens that you have to make some additions, e.g., x = 3 + 2, in your programs? Additions in current programming languages are painfully slow, as they are executed locally and risk to be run sequentially in case you do not have enough CPU cores. To address this problem, the next version of Jolie will run every addition on the cloud!

From now on, whenever Jolie is run, it will start a cloud cluster on Amazon to run your additions. Anytime a sum has to be calculated, Jolie will contact a cloud node to run the sum remotely and then wait to receive the result. In this way, all your additions can be efficiently parallelised and take advantage of modern cloud computing!
When possible, the Jolie interpreter will use multiple cloud nodes for the same addition, and then decide later which cloud node computed the best result using an advanced (patent-pending) heuristics.

Rigorous scientific testing (patent pending) has shown us that the perfect number of cloud nodes to support each Jolie program is exactly 100, so that is our unchangeable default.


X as *: *aaMS

Multiplications will also be run on the cloud! This is beautifully crafted on top of our +aaMS innovation. Suppose that you have to compute:

x = 6 * 7

Instead of running it locally, we split the multiplication into additions, using a new procedure we invented that we call "Multiplication Cloudification":

x = 6 + 6 + 6 + 6 + 6 + 6 + 6

Observe that, as strange as it may seem at first, the two operations yield the same result (we are currently trying to publish this important result in a math journal, but we are encountering disbelief)! Now that we have additions, we can split them and run them in parallel in the cloud.
For example, from above, we get the following additions that we have to do:

6 + 6, 6 + 6, 6 + 6, 6 + 0

We get the following results from our cloud nodes:

12, 12, 12, 6

Now we contact our cloud nodes to do the following additions, in parallel:

12 + 12, 12 + 6

We get:

24, 18

We finally contact our 100 cloud nodes to sum 24 and 18 in parallel, pick the best result, and after a mere thousand years of round-trip communications we get:

42

which is what this example is all about.

X as Pico

Recent business surveys suggest that the more microservices you have in your microservice architecture, the better! For this reason, the next version of Jolie will introduce the outstanding concept of Picoservices! Picoservices are launched from the command line, for example

jolie --pico 1000 program.ol

will launch Jolie with a thousand (!) picoservices, which are a special kind of microservices. What do picoservices do? Nothing! That is the beauty of it. They are microservices finely optimised to be hanging around and consume as little resources as possible (but still convincing, in a business sense).

Thanks to our lightweight picoservices, we are able to have microservice architectures that scale up to thousands of picoservices (if not millions!). Your business competitor will not be able to keep up!

March 29, 2015

Posted by Fabrizio Montesi

Jolie 1.2.1 released

Jolie 1.2.1 has been released.

Changelog

  • Introduction of UriTemplate, a new experimental service in the standard library for handling URI Templates.
  • Bugfix: HTTP could silently omit content when trying to send a non-binary value when a binary format was required.
  • Bugfix: joliec can now compile courier processes.
  • Bugfixes to handling of basic values and implicit type conversions.
  • Bugfix: fix a race condition on input streams from the console in the Console library service.

March 27, 2015

Posted by Fabrizio Montesi

Jolie 1.2 released

Jolie 1.2 has been released. This release brings many important feature, stability, and performance enhancements.

Performance

Jolie 1.2 comes with many performance improvements. Early tests (some of which performed on the Jolie website itself) show an increase in throughput of up to 100% in scenarios with heavy loads, thanks to the following changes:
  • Jolie processes are now executed over a virtualisation layer that runs them using a cache of parallel workers.
  • Many synchronisation locks on data structures have been made more granular, reducing lock retention among processes.
  • Improvements to the networking stack, including multiple concurrent selectors (as in, e.g., Project Grizzly), better usage of I/O streams, and buffer caching.

Language Features

Inline trees

Jolie now supports inline trees as a new form of expression. For example, the following series of assignments

x.a = 1;
x.b = 2;
x.c[0] = 3;
x.c[1] = 4

can now be simply written as:

x << { .a = 1, .b = 2, .c[0] = 3, .c[1] = 4 }

Since they are expressions, inline trees can be used as parameters for operation invocations, for example:

query@Database(
    "select * from users where id = :id" { .id = 5 }
)( result )


Provide-until choices (experimental)

Provide-until choices have been introduced as a useful way of providing a series of operations until another certain operation is invoked. For example, the following code make the operations read and write available until either the operation logout or timeout is invoked.

provide
    [ read(request)(response) { response = /* ... */ } ]
    [ write(request) ] { /* ... */ }
until
    [ logout() ]
    [ timeout() ]

Provide-until blocks are still experimental and will likely be improved in the future.

Branch code for input choices now optional

The code of a branch in an input choice can now be omitted, implicitly meaning that it is empty (nullProcess). For example, the following code

[ logout() ] { nullProcess }
[ timeout() ] { nullProcess }

can now be written as:

[ logout() ]
[ timeout() ]

Framework Improvements


  • Full character set enforcement in all parts of Jolie (important for multiplatform environments).
  • Predefined charset UTF-8 for XML-RPC, SOAP, JSON-RPC protocols.
  • Customisable charset for HTTP and SODEP protcols (default remains UTF-8) and the I/O  services (FileService, IniUtils).
  • --charset parameter to parse Jolie programs in encodings different from the system default.
  • Introduction of the new Converter service (base64 conversion, charset conversion).
  • Major HTTP protocol improvements (HEAD request, better chunked-mode parsing, correct URI/URL handling).
  • Fixed use of file paths containing blanks.
  • JSON parser fixes (nested arrays).
  • Some DatabaseService improvements (new close() call, error handling).
  • Fixes to the UNIX domain sockets support ("localsockets" medium).
  • XML-RPC protocol improvements (e.g., base64 support).
  • Fixed execution of sequential processes.
  • The SemanticVerifier component now reports errors correctly.
  • Introduction of a new experimental Reflection service for language reflection.

March 16, 2015

Posted by Fabrizio Montesi

Jolie on Github

The Jolie source code is now hosted on Github! You can find us here.

Requests and issues can now be discussed through the common Github website and tools. Enjoy!

February 18, 2015

Posted by Fabrizio Montesi

Jolie 1.1.2 released

Jolie 1.1.2 has been released, with lots of stability and performance improvements! Get it while it's hot!

Changelog

  • Fixed character encoding handling on all HTTP-based extensions (http, https, soap, xmlrpc, jsonrpc).
  • Introduced HTTP compression on all HTTP-based extensions.
  • Introduced HTTP error messages for clients on all HTTP-based extensions.
  • Plenty of other bugfixes and internal improvements in all HTTP-based extensions.
  • Enhanced documentation for the HTTP extensions, especially documented all possible parameters for the http extension under http.iol.
  • Major JSON parsing improvements: introduction of a shared library named "jolie-js" which shares the JSON parser between the HTTP extensions and the Jolie "JsonUtils" module.
  • Bugfixes for localsockets (UNIX domain sockets).
  • Bugfixes in the launcher script for Windows.
  • Fixed a bug on concurrent access to variables in foreach loops.
  • Internal improvements to the networking code of the interpreter.
  • The compression feature from the sodep protocol has been removed. It will be reintroduced in another protocol in the future.
  • Improvements in the transmission of faults using JSON.
  • Fixes resolution of type links in interfaces used in courier inputs.
  • Fixed resource leak when reading .ini files in IniUtils.
  • Fixed a potential internal deadlock when handling persistent input channels.

January 28, 2015

Posted by Fabrizio Montesi

Jolie 1.1.1 released

Jolie 1.1.1 has been released.

Changelog


  • HTTP Compression Negotation is now supported and enabled by default.
  • The Jolie launcher script now uses the default Java parameters for RAM usage.
  • joliedoc now produces anchor links in documentation files correctly.
  • Bug fixes to the installer, which should now work better on MacOS and Windows.

January 19, 2015

Posted by Fabrizio Montesi

Jolie 1.1 released

Jolie 1.1 has been released!

This release is the result of more than 500 commits, which contain:

  • almost 30 new APIs in the standard library;
  • more than a hundred bugfixes;
  • almost a hundred improvements to the interpreter and its libraries.

Changelog of major changes

New features

  • Interfaces can now be referenced as constants in courier processes.
  • Programs can automatically access the subdirectories lib and include from the directory they are executed in, respectively for libraries and include files.
  • It is now possible to develop "abstract locations" for input ports, i.e., Jolie extensions that can change at runtime the location of an input port, for example by fetching it from a registry or a configuration file.
  • Tracer. Jolie now supports a "--trace" option that prints all communications on screen (useful for debugging).

Implementation improvements

  • Improved message handling in concurrent communications.
  • Faster shutdown procedure for the interpreter.
  • Better handling of memory deallocation when an embedded service terminates.
  • Improved handling of persistent channels, with a new algorithm for managing timeouts of cached channels.
  • Support for Java 8.
  • Better Windows support (path resolution and JAP files).

New APIs

  • Console management.
  • Database management. Also, support for HSQLDB and DB2 has been added.
  • File management.
  • JSON support.
  • Queue-like data structures.
  • Runtime management of the interpreter.
  • Semaphores.
  • Shell command execution.
  • String manipulation.
  • XML handling.

Improvements to protocols

  • http: default operations can now be assigned to specific HTTP methods (GET, PUT, POST, DELETE, HEAD).
  • http: improved message handling, improved JSON support.
  • json-rpc: better support, general improvements.
  • ssl: bug fixes (applies to all protocols using ssl, e.g., https).
  • xml-rpc: better support, general improvements.

Improvements to tools

  • joliedoc: types can now be documented.
  • joliedoc: bug fixes.
  • jolie2wsdl: bug fixes.
  • wsdl2jolie: bug fixes.

November 24, 2014

Posted by Fabrizio Montesi

Sourceforge downloads

We have noticed that many people are downloading Jolie 1.0 directly from sourceforge.net. Due to a syncing problem, Sourceforge was only offering an old version of Jolie that is not the same as the one available on this website by following the download instructions.
So if you are one of those people that downloaded Jolie from its sourceforge page, be wary that if you want to run the tutorials found on our website you must download the most recent version available from today (Jolie 1.0).
In general, we always recommend following the download instructions reported in this website instead of downloading Jolie from other sources.
As a more positive note, in the last week or so since we launched this website we have already seen more than 700 downloads! So thank you all for your support and interest from all of the Jolie Development Team!

November 23, 2014

Posted by Fabrizio Montesi

Jolie 1.0 released

Jolie 1.0 has been branched in the source code repository and released!
See the download page for the installation instructions.
This release has been sponsored by italianaSoftware and the IT University of Copenhagen.