Johdanto

Jami-asennuksessa on tyypillisesti kaksi pääkomponenttia:

  1. Jami daemon/library, ja

  2. asiakas (eli ohjelma tai käyttöliittymä).

Jamiin tarvitaan aina Jami-taustapalvelu/kirjasto, koska se on Jamin sydän ja sisältäen kaiken liitettävyys-, kommunikaatio-, kryptografia- ja medialogiikka. Se käyttää kirjastoja, kuten OpenDHT, PJSIP, GnuTLS ja FFmpeg, ja useita API-rajapintoja, kuten DBus, libwrap (jaettu kirjasto), JNI ja REST. API-rajapintojen avulla on mahdollista olla yhteydessä Jamiin ilman graafista käyttöliittymää (hyödyllinen Jamin käytössä headless/server asetuksissa), rakentaa automaatiota/skriptejä Jamin ympärille ja mukautettuja käyttöliittymiä Jamille.

Ohjelma (eli käyttöliittymä) riippuu käytettävästä käyttöjärjestelmästä tai alustasta. Esim. Android tämä olisi jami-client-android, iOS jami-client-ios ja GNU/Linux, macOS ja Windows tämä olisi jami-client-qt. Aikaisemmin oli myös GTK-pohjainen jami-client-gnome ja macOS jami-client-macos, jotka ovat vanhentuneet uuden Qt-ohjelmistoon perustuvan jami-client-qt:n siirtymän jälkeen.

GNU/Linux-järjestelmissä jami-client-qt voidaan konfiguroida ja rakentaa käyttämään yhtä kahdesta pää API:stä Jami-daemon/library:n kanssa:

  1. libwrap: Kun jami-client-qt on määritetty käyttämään libwrapia (macOS ja Windows), se käyttää Jami taustapalvelun jaettua API-kirjastoa, eikä ole erillistä prosessia. Etu, että se on jonkin verran tehokkaampi kuin DBus-API, mutta samalla vähemmän joustavaa (ei voi olla yhteydessä Jamin kanssa DBus:in kautta käytettäessä libwrapia).

    Kaikki dl.jami.net kautta jaettavat Jami-paketit ovat määritetty käyttämään libwrap API:a.

  2. DBus: Kun jami-client-qt on määritetty käyttämään DBus-rajapintaa, se kommunikoi Jami-taustapalvelun kanssa sen DBus-rajapinnan kautta ja palvelu toimii erillisenä prosessina. Tämä on erittäin joustavaa kommunikoinnissa palvelun ja sen ohjaamisessa muilla tavoilla (esimerkiksi pienillä apuohjelmilla) samanaikaisesti kuten Qt-pohjainen Jami-ohjelma.