RSS
 

Posts Tagged ‘jolie ubuntu’

Jolie – Lezione 2 – Servizi ed Operazioni

24 Jun

C è un linguaggio molto potente, ma se doveste scrivere il codice in C necessario per fare quello che sto per mostrarvi, avreste a che fare con un numero decisamente più grande di righe di codice. Anche se so ancora poco di questo lignuaggio, per ora posso dire che può permettermi di scrivere una semplice applicazione client-server mettendo mano a veramente poco codice. Adesso veniamo alla seconda lezione

Jolie è un linguaggio di programamzione incentrato sulla comunicazione tra diversi servizi. Potete invocare un servizio o anche essere il servizio che viene invocato. Altri linguaggi di programmazione sono più complicati nello scrivere codice che  comporre messaggi da inviare o ricevere. Per questo motivo la cosa fondamentale da sapere per programmare con JOLIE è la definizione di un servizio e come questo può comunicare con il resto del mondo. Nello specifico, creeremo un servizio che invia un messaggio, e che ne attente la rielaborazione, quindi un altro servizio che riceve questo messaggio lo elabora e poi successivamente lo restituisce. Più o meno come se volessimo richiamare una funzione di un altro programma e ci attendessimo un risultato da questo.

^topOperazioni
Una operazione è una funzionalità messa a disposizione da un servizio, il quale può essere invocato da un’altra applicazione.

Ci sono due tipi di operazione:

  • OneWay: che è la ricezione di un messaggio;
  • RequestResponse: riceve un messaggio e quindi ne restituisce una risposta;
  • Utilizzando lo statement One-Way possiamo scrivere una operazione che ascolta una determianta porta ed attende di ricevere un messaggio. In alternativa si può utilizzare lo statement di notifica. Per quanto riguarda l’invocazione delll’operazione di request-response la sintassi è analoga e lo statement leggermente diverso.

    Le operazioni sui servizi sono simili ai metodi che si possono trovare nel paradigma della programmazione ad oggetti.

    ^topInvocazione dei servizi
    ^topPorte in uscita
    Per invocare un servizio bisogna definire la porta di uscita nel preambolo del programma. Fin troppo facile: voglio una porta in uscita e voglio chiamarla MathService, metterla sulla porta 8000 dell’host locale e voglio anche che usi il protocollo sodep. Ecco fatto:

    outputPort MathService {

    Location: “socket://localhost:8000″
    Protocol: sodep

    }

    Ora vediamo i 3 componenti principali:

  • Name: ogni porta in uscita ha un nome univoco, nel nostro caso la porta si chiama MathService;
  • Location: questo è un URI (external link), che dice dove si trova il servizio. Nel nostro caso abbiamo localhost perchè il nostro servizio è in locale sul nostro computer;
  • Protocol: qui indichiamo il protocollo da utilizzare per comunicare con il servizio. Possiamo indicare http, https, … e nuovi protocolli sono in uso. In questo caso specifico, il protocollo utilizzato è sodep;
  • Ora diamo un occhio di riguardo a Location e Protocol per una migliore comprensione su che cosa realmente possiamo fare con questi due elementi. Abbiamo definito MathService, che è la nostra porta, ma non abbiamo specificato quali operazioni sono disponibili per comunicare con essa. Vediamo ora come aggiungere un’operazione a MathService:

    outputPort MathService {

    Location: “socket://localhost:8000″
    Protocol: sodep

    RequestResponse:

    twice

    }

    Per descrivere il comportamento della porta, abbiamo aggiunto lo statement RequestResponse. Ora la nostra porta può richeidere e rispondere twice. Per aiutarvi alla comprensione… twice è il nome dell’operazione, MathService è il nome del servizio.

    ^topComunicazione verso l’esterno
    E per invocare MathService da un altro programma? Il tutto è decisamente molto semplice: dobbiamo utilizzare loo statement solicit-response:

    main
    {

    // <operation>@<service>(<output-message>)(<input-message>)
    twice@MathService(5)(result)

    }

    Il nostro piccolo programma, chiama l’operazione twice del servizio MathService, passando 5 come valore di invocazione. Questo comando, aspetterà di ricevere un paramentro di risposta nella variabile result. Decisamente molto semplice.

    ^topCreare un servizio
    ^topPorte in ingresso
    Ora andremo a creare una applicazione JOLIE che realizza un ambiente per MathService. Per creare un servizio, dobbiamo prima scrivere la porta in ingresso, la quale somiglia decisamente molto alla porta in uscita. Una porta in ingresso per MathService potrebbe essere la seguente:

    inputPort MathService {
    Location: “socket://localhost:8000″
    Protocol: sodep
    RequestResponse:
    twice
    }

    Banalmente, usa la stessa porta, lo stesso protocollo e la stessa operazione.

    ^topComunicazione in ingresso
    Ora che il nostro programma JOLIE è stato istruito per ricevere una invocazione per l’operazione twice, noi dobbiamo scrivere il codice per il suo ambiente. In poche parole noi abbiamo detto che c’è una porta in ingresso che riceverà twice e dobbiamo quindi dire che cosa fa twice.

    main
    {

    twice(number)(result) {

    result = number * 2

    }

    }

    L’operazione twice, riceve number e restituisce result, che altro non è che “number * 2″. Siamo appena riusciti a creare due programmi distinti che sanno inviare un numero, riceverlo e rielaborarlo e reinviarlo al mittente. Con questo, la lezione è finita. Per semplificare le cose, più avanti pubblicherò qualche sorgente che aiuterà senz’altro a capire i meccanismi di JOLIE.

    Condividi questo post sui tuoi social network preferiti:
    • Print
    • Digg
    • del.icio.us
    • Facebook
    • Google Bookmarks
    • LinkedIn
    • MySpace
    • Twitter
    • Wikio IT
    • Live
    • RSS
    • StumbleUpon
    • Technorati
     
    View Comments

    Posted in tutto

     

    Jolie – Lezione 1 – Hello World

    20 Jun

    JOLIE è un linguaggio di programmazione orientato ai servizi, e può essere utilizzato per creare dei potenti orchestrators.
    Un orchestrator è un programma che si compone di servizi per ottenere nuove funzionalità.
    Scrivere un orchestrator significa fare delle chiamate con la composizione della comunicazione ai servizi. Un esempio di un orchestrator molto semplice è il seguente:

    include “console.iol”

    main
    {

    println@Console(“Hello, world!”)()

    }

    Il programma qui sopra può essere interpretato in due modi

    1. Include il file console.iol con le primitive …;
    2. Invia una stringa “Hello, world!” all’operazione println del servizio console.

    Quindi abbiamo un servizio (Console) ed una sua operazione (println). Il servizio prevede di ricevere una stringa.

    Quindi possiamo anche vedere alcune caratteristiche del linguaggio di programmazione JOLIE:

    • Noi possiamo includere altri sorgenti di file che contengono alcune direttive;
    • L’entry point di un programma scritto in JOLIE è la main sub-routine;
    • Noi possiamo inviare messaggi ad un servizio in uno one-line statement.

    L’ultimo punto differisce da altri linguaggi di programmazione ed è una peculiarità di JOLIE. Il comando println@Console(“Hello, world!”)() E’ uno statemente autoconsistente. Per comprendere in pieno cosa si vuole intendere, dobbiamo anche capire come un programma può comunicare con JOLIE. Se vi va di leggere la prossima lezione in inglese potete andare al link seguente:
    http://jolie-lang.org/tikiwiki/tiki-index.php?page=Tutorial+Services+and+Operations

    In alternativa, potete aspettare qualche giorno per trovare su queste pagine la traduzione di quella pagina. A presto.

    Condividi questo post sui tuoi social network preferiti:
    • Print
    • Digg
    • del.icio.us
    • Facebook
    • Google Bookmarks
    • LinkedIn
    • MySpace
    • Twitter
    • Wikio IT
    • Live
    • RSS
    • StumbleUpon
    • Technorati
     
    View Comments

    Posted in tutto

     

    Jolie, un nuovo linguaggio di programmazione

    12 Jun

    Di recente ho scoperto un nuovo linguaggio di programmazione sviluppato all’interno del mio Corso di Laurea. Un mio amico per la tesi ha sviluppato la tipizzazione dei dati in questo linguaggio. Molti tesisti stanno sviluppando diverse parti di Jolie. Che cosa è Jolie? A dire il vero non lo so ancora =). Quello che so è che è basato su un paradigma a servizi. Una cosa nuova =).

    In questo post vi mostro le operazioni che ho dovuto eseguire per installarlo ed un semplice esempio in stile Hello World. Prima di tutto ho installato subversion ed ant. Molto probabilmente li avrete già installati nel vostro computer, in caso contrario:

    $ sudo apt-get install subversion

    $ sudo apt-get install ant

    A questo punto possiamo creare la cartella dove vogliamo che risieda jolie e quindi spostarci in quella cartella e scaricarci l’svn di jolie:

    svn https://jolie.svn.sourceforge.net/svnroot/jolie/trunk

    Come ambiente di runtime, jolie sceglie di default la direcory /opt/jolie/, ma se volete cambiarla tutto quello che dovete fare è modificare una variabile nel file di configurazione. Avendo scaricato jolie dentro /home/51m0n3/Documenti/myjolie ho deciso di installarlo nella stessa cartella. Forse la scelta non è felice =). Forse sarbbe stato meglio installarlo in /opt/jolie come suggerito dall’installazione di default. In ogni caso, se volete modificare la posizione di jolie non dovete fare altro che modificare il file

    /home/51m0n3/Documenti/myjolie/trunk/buildconfig/config.properties

    modificando questa riga con il percorso che preferite.

    # Install directory for JOLIE runtime and libraries

    install.dir=/opt/jolie

    di seguito dovete lanciare il comando

    ant && sudo ant install

    Per ragioni che non conosco, la mia installazione ha dato dei problemi. Dico ragioni che non conosco perchè jolie era stato precedentemente installato su un’altra distribuzione ubuntu e non aveva dato problemi. Nel mio caso, mi sono ritrovato davanti ad un errore di questo tipo:

    Unable to locate tools.jar. Expected to find it in /usr/local/jre1.6.0_07/lib/tools.jar

    com.sun.tools.javac.Main is not on the classpath.

    Perhaps JAVA_HOME does not point to the JDK.

    It is currently set to “/usr/local/jre1.6.0_07″

    Se vogliamo, con il comando env possiamo vedere tutte le variabili di ambiente della nostra macchina. Effettivamente nella mia configurazione JAVA_HOME puntava alla cartella dove era stato installato jre e non jdk (come mi faceva notare il messaggio di errore). Quindi se avete problemi durante l’installazione probabilmente li risolverete semplicemente modificando la variabile di ambirente JAVA_HJOME in questo mondo:

    JAVA_HOME=/usr/local/jdk1.6.0_07/

    Una volta appurato che la variabile è stata impostata correttamente, non dobbiamo fare altro che rilanciare il comando ant && sudo ant install e quindi partire a programmare con jolie! A presto!

    Dimenticavo di dirvi che jolie lo potete scaricare da qui:

    http://www.jolie-lang.org/

    Condividi questo post sui tuoi social network preferiti:
    • Print
    • Digg
    • del.icio.us
    • Facebook
    • Google Bookmarks
    • LinkedIn
    • MySpace
    • Twitter
    • Wikio IT
    • Live
    • RSS
    • StumbleUpon
    • Technorati
     
    View Comments

    Posted in tutto