Live data from Hacker News

Jolie, the service-oriented programming language

jolie-lang.org

31–40 of 78 posts

Re: Jolie, the service-oriented programming language

#31

The vision and model here seem excellent. Jolie as a language seems to have strong roots in academia and Europe. The one alarm is the lack of information on real world use, case studies and non-trivial adopters or users. Anyone know of any large scale use of Jolie?

IIRC, in industry, there is at least one big system with 50-ish microservices that includes electronic invoices. (See https://www.conf-micro.services/2019/papers/Microservices_20...)

At our place, we have a few websites written in Jolie and a system of services for evaluating software projects (for exams).

Feel free to drop in our chat if you're interested in chatting more about this with others as well: https://discord.gg/yQRTMNX

Re: Jolie, the service-oriented programming language

#33
post #12

The paradigm reminds me of the message passing paradigm in "early days" object oriented programming languages such as Smalltalk. I guess remote procedure calling (RPC) and message brokers (COM and friends) is the 90s or 2000s version of distributing these messages (network transparency). How does Jolie relate to these concepts? I just wonder, when looking at enterprise Java, whether there are not mature libraries whi…

With all due respect but why not changing the software ecosystem? Is enterprise Java the pinnacle of SW engineering? Last time I checked it seemed to me that it's share is being eaten away slowly but steadily from Golang which is deemed to be a far better option for modern cloud-based enterprise apps. Not to mention the significantly better (aka simpler) programming model with all the benefits that it brings. Also, y…

Starting with Java 8, Java has been adopting functional programming ideas, and appears to be heavily influenced by Scala.

Re: Jolie, the service-oriented programming language

#34
The JVM ecosystem is fairly amazing. I don't write much Java code anymore, but Clojure on the JVM is practical and modern, good for some of my projects.

I was looking at the Jolie (Java) source code and noticed a GNU license in some source code, but a top level Apache language - if I understand that correctly then that should be fixed.

Anyway, interesting project.

Re: Jolie, the service-oriented programming language

#35
post #30
post #20

Its cool that someone wrote this, but practically, this sounds like it encourages to microservice hell with many unnecessary services. A service should not be written to enforce separation of concerns. We have classes and functions for that.

In jolie, develoeprs program services instead of classes or functions. I think this is the main novelty introduced by jolie. Everything is a service, and you can postpone the decision on how to deploy an application. You can deploy it as a monolith (so your services will play the roles of classes, because they are internal) or independent services.

thanks for the reply. My concern was people writing services that available on the network for trivial use cases, where a class or function would be faster and as reusable. You have addressed that concern. In light of your answer, is Jolie similar to an actor based pattern like Akka, with services being the abstraction rather than actors?

Re: Jolie, the service-oriented programming language

#36

Wow. This looks really promising. I always found it a bit awkward that you have to bend the other languages to fit in the microservices model. I mean, yes, it's easy to do so in some of them but still there always seems to be a lot of boilerplate that you have to reiterate again and again. I think it was about time to have a language that takes care of the basics. Another one that I had in mind was ballerina ( https:…

I think I can answer to this one, Jolie has been so far in implementattion of microSOA in medium size enterprises; In the company where I currently work we use Jolie to develope the backend part of a web product. If you are interested you can join us in the discord channel https://discord.com/invite/yQRTMNX I will be happy to share my experiences

Re: Jolie, the service-oriented programming language

#37

Woah, so this happened. Maintainer here. I'll do my best to reply to all questions/doubts that get posted about an hour from now, since there is some valid feedback and there are some good questions in here.

I think the predominant question here is: why a language over, eg., a framework?

In a nutshell: because we want to minimise code model distance. Other languages make you program in terms of functions, objects, etc., and make yourself model services by using these concepts. In Jolie, you write code that maps directly to the concepts that matter. What are the important concepts? APIs, Access Points, and Services (duh..) are examples.

Some more info at:

- https://dzone.com/articles/introduction-to-jolie (a brief introduction to Jolie and some concepts)

- https://hackernoon.com/a-detailed-introduction-to-service-or... (a deeper dive/discussion on some of the concepts)

Our (for now subjective) experience is that people who become familiar with Jolie are much faster at prototyping a service system, which makes it worth pursuing for us. Jolie code requires less boilerplate and state management for interesting scenarios. Two examples: communications can be natively composed in structures, e.g., the code

  open()
  close()
mandates that only the open operation is available at first and then only close is available (in object-oriented languages, you must encode this state with a private data field and manage it with if-then-else, etc.); likewise, streams in Jolie are consumed by writing

  provide
    [next(element)] { ..manage element here.. }
  until
    [end()] // stream ended here
which means "provide the operation next to invokers until operation end is called". A syntactically manifest approach to reactive programming and state machines, if you like.

Another big reason for exploring languages is discipline. Languages discipline how you write code. An example: in Jolie, you decompose software in terms of services. Many of these run locally as libraries, and are optimised by the interpreter by using hidden shared memory. But the language enforces that if you ever decide that a component should become an external, independent services, you can do it by updating a few references (input/output ports, our access points). See also https://fmontesi.github.io/2015/06/09/non-distributed-micros... Another example: Jolie discipline also gives you the ability of reusing the same business logic under multiple access points with different protocols.

This is the tip of the iceberg. In general, programming in terms of service abstractions is showing to be an interesting experience for us.

Phew, that was quite a bit for a "in a nutshell".. I hope that it's clear, otherwise, just write below.

Re: Jolie, the service-oriented programming language

#38
post #35
post #30

Earlier quoted context omitted.

In jolie, develoeprs program services instead of classes or functions. I think this is the main novelty introduced by jolie. Everything is a service, and you can postpone the decision on how to deploy an application. You can deploy it as a monolith (so your services will play the roles of classes, because they are internal) or independent services.

thanks for the reply. My concern was people writing services that available on the network for trivial use cases, where a class or function would be faster and as reusable. You have addressed that concern. In light of your answer, is Jolie similar to an actor based pattern like Akka, with services being the abstraction rather than actors?

I am not an expert of Akka, but more or less the answer could be yes. I don't know if the following features are supported also in Akka:

- In jolie, it is quite transparent to develop a monolith or a distributed system of services. You always develop services and finally you can decide if deploy them as a monolith, or fragmenting the deployment into a distributed solutions (https://dzone.com/articles/between-monoliths-and-microservic...)

- Any input endpoint of Jolie (named inputPorts) can be exposed with different protocols (http/json, http/soap, sodep, etc) and you can have more inputPorts at the same time, thus you can receive messages for the same business logic from http/json, http/soap, etc. You can also split the available operations in different inputPorts. As an example you could receive admin messages in a https port, whereas you can leave in http teh public ones. But you can build meven more complex scenarios thanks to this feature.

Re: Jolie, the service-oriented programming language

#39
post #6

Who actually wants this? People want good libraries for doing this with the languages they already use, not to have to make compromises just so they can have a microservice. Notice that the front page gives lots of examples of the servicey parts of the code, but absolutely no examples of what the business logic looks like. In fact, even in the documentation, the example code is minimal and trivial.

It gets my interest for being contract first.

Re: Jolie, the service-oriented programming language

#40
post #6

Who actually wants this? People want good libraries for doing this with the languages they already use, not to have to make compromises just so they can have a microservice. Notice that the front page gives lots of examples of the servicey parts of the code, but absolutely no examples of what the business logic looks like. In fact, even in the documentation, the example code is minimal and trivial.

I want it.

You could argue that the current approach of intrastructure-as-code has it backwards:

Currently, you define infrastructure, then deploy your code.

Instead, I'd like to be able to write code and then connect the code through infrastructure abstractions.

Post reply on HN