Friday, 13 May 2016

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.

Tuesday, 19 April 2016

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:


Monday, 4 April 2016

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.

Tuesday, 18 August 2015

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.

Tuesday, 16 June 2015

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.

Thursday, 30 April 2015

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.

Wednesday, 1 April 2015

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!