Building distributed applications with JOLIE and Qt
Speaker: Kevin Ottens, Fabrizio Montesi
Building distributed applications with JOLIE and Qt How to help your applications enter the service oriented world
The last decade has seen the rapid technological and usage grows of Web Applications. Users do not have their data stored on a focused point anymore (their local system), but they span a huge amount of information across the Web. This fact motivated a new objective, which is the integration and coordination of these different data sources. Concurrently, the need for the creation of distributed applications that offer a native User Interface became more and more evident. Indeed, in contrast with Web User Interfaces, native User Interfaces can make use of much more advanced and responsive frameworks and they can interact better with the local system.
The current situation surely does not help the efforts made by Desktop Environment and native application projects, aimed to the development of distributed applications that leverage existing services or introduce new ones. Services do not all speak the same language, so developers need to invest time in learning how to use data protocol libraries, or even to invent new ones in case what they need does not yet exist for their language of choice. Even when the framework to build the application upon has been put into place, software engineers have to go for the extra designing effort of developing an abstraction layer that hides the communication details, so to ensure that the particular communication technology to be used does not pollute the code base of the application logic and that the application will be extendable to new communication specifications in the future.
Service-Oriented Computing (SOC) is an emerging paradigm for programming distributed applications. SOC generalizes the concept of service and offers theories and language for selecting and then composing services in new applications.
JOLIE is a service-oriented programming language, naturally born to address the issues of coordinating and creating new services, independently from the underlying technologies to be used. This independency is obtained by offering a native abstraction layer that is then projected into the desired communication technology at runtime. Services developed in JOLIE can easily leverage the functionalities of other existing services and compose complex data structures by using simple language primitives.
In this presentation we will show the QtJolie binding library. QtJolie allows Qt applications to connect and communicate with JOLIE services, thus allowing programmers to make use of the JOLIE language for addressing all the problematics related to the service infrastructure. Using QtJolie and JOLIE one can easily implement Rich Internet Applications, expose functionalities from the native application to the network, compose functionalities from multiple services. Thanks to the communication abstraction layer offered by JOLIE, applications developed with QtJolie can be reused with different communication technologies.
Kevin Ottens is a long term hacker on the KDE project. He contributed to the KDE software stack at large, with a strong emphasis on API design and frameworks architecture. Graduating in 2008, he owns a PhD in computer science which led him to particularly work on ontologies engineering and multi-agent systems. Kevin's job at KDAB includes developing research projects around KDE and contributing to Akonadi. He still lives in Toulouse where he serves as part time teacher in his former university.
Fabrizio Montesi works as a Computer Scientist since 2000. In 2006 he created JOLIE, an opensource language for service-oriented programming. Since 2007, he collaborates with the University of Bologna on Service-oriented Computing researching. Currently, he is a founder of italianaSoftware s.r.l., a research spin-off company centered on the development of service-oriented solutions. During the years, he developed various open-source projects and contributions and has come to be a passionate KDE user.