مقدمه

نصب جمی معمولا دو بخش اصلی دارد:

  1. ديمون/کتابخانه Jami و

  2. مشتری (به عنوان مثال، فرونت-اند یا رابط کاربری).

برای استفاده از Jami، دایمون / کتابخانه Jami همیشه مورد نیاز است، زیرا این هسته Jami است و شامل تمام ارتباطات، ارتباطات، رمزنگاری و منطق رسانه است. از کتابخانه هایی مانند OpenDHT، PJSIP، GnuTLS و FFmpeg استفاده می کند و چندین API از جمله DBus، libwrap (مطبوعه مشترک) ، JNI و REST دارد. این API ها امکان تعامل با Jami را بدون رفتن از طریق یک رابط کاربری گرافیکی (به ویژه برای استفاده از Jami در یک تنظیم سر و سرور مفید) فراهم می کند، ابزارهای اتوماسیون / اسکریپت را در اطراف Jami ایجاد می کند و رابط کاربری سفارشی را برای Jami ایجاد می کند.

کلائنت (به عنوان مثال رابط کاربری) ممکن است بسته به سیستم عامل و / یا پلتفرم مورد استفاده متفاوت باشد. به عنوان مثال ، در سیستم عامل های اندروید / Replicant این jami-client-android ، و در GNU / Linux ، Windows و macOS این jami-client-qt خواهد بود. قبلا نیز یک jami-client-gnome مبتنی بر GTK برای GNU / Linux و jami-client-macos برای macOS وجود داشت ، هر دو به نفع جدیدترین پلتفرم های مختلف jami-client-qt مبتنی بر چارچوب Qt مورد استفاده قرار گرفتند.

در سیستم های GNU/Linux، jami-client-qt می تواند برای استفاده از یکی از دو API اصلی برای ارتباط با Jami daemon / کتابخانه پیکربندی و ساخته شود:

  1. libwrap: وقتی jami-client-qt برای استفاده از libwrap پیکربندی شده است (که همیشه در macOS و Windows این مورد است) ، از API کتابخانه مشترک Jami daemon استفاده می کند و هیچ فرآیند جداگانه ای از daemon وجود نخواهد داشت. این مزیت این است که چیزها کمی کارآمدتر از DBus API ذکر شده در زیر است، در مقابل انعطاف پذیری کمتری (نمی توان با Jami از طریق DBus هنگام استفاده از libwrap تعامل داشته باشد).

    بسته های Jami که از طریق dl.jami.net توزیع می شوند در حال حاضر همه برای استفاده از API libwrap پیکربندی شده اند.

  2. DBus: وقتی jami-client-qt برای استفاده از DBus پیکربندی شده است، با daemon Jami از طریق DBus API خود ارتباط برقرار می کند و daemon به عنوان یک فرآیند جداگانه به تنهایی اجرا می شود. این بسیار انعطاف پذیر برای ارتباط با و کنترل daemon از طریق ابزارهای دیگر (به عنوان مثال اسکریپت های کاربردی کوچک) در عین حال است که مشتری Jami مبتنی بر Qt نیز از آن استفاده می کند و با آن تعامل می کند. هزینه مرتبط این انعطاف پذیری اضافی هزینه استفاده از DBus است.