قسمت چهارم JavaFX _ معماری و ساختار

سایر قسمت هارا در اینجا ببینید.

توجّه این قسمت تقریباً حالت معرّفی کلّی بخش های مختلف JavaFX را دارد و ممکن است به کلمات یا جملاتی برخورد کنید که باعث گیج شدنتان شود. اصلاً نگران این موضوع نباشید، متن را به دقّت بخوانید و هرجارا که نفهمیدید از آن رد شوید. این قسمت صرفاً برای آشنایی کلّی با معماری برنامه های JavaFX می باشد.


ـ JavaFX یک API کامل با مجموعه ای غنی از کلاس ها و اینترفیس ها برای ساخت اپلیکیشن های گرافیکی با گرافیک غنی را فراهم می کند.پکیج های مهمّ این API عبارت اند از _

ـ javafx.animation _ شامل کلاس هایی برای اضافه کردن انیمیشن های مبتنی بر انتقال از قبیل پر کردن(fill)، محو شدن(fade)، چرخش(rotate)، تغییر مقیاس(scale) و جابه جایی(translation) برای nodeهای JavaFX است.

نکته: node ها المان های گرافیکی JavaFX هستند.


  • ـjavafx.application _ شامل مجموعه ای از کلاس ها است که چرخه ی زندگی(life cycle) برنامه های JavaFX را بر عهده دارند.
  • ـ javafx.css _ شامل کلاس هایی برای طرّاحی CSSمانندِ اپلیکیشن های گرافیکی JavaFX می باشد.
  • ـ javafx.event _ شامل کلاس ها و اینترفیس هایی برای ارائه و مدیریت رویداد های JavaFX است.
  • ـ javafx.geometry _ شامل مجموعه ای از کلاس ها برای تعریف کردن اشیاء 2بعدی و عملیات بر روی آن هاست.
  • ـ javafx.stage _ این بسته دارای کلاس های نگه دارنده ی(container) سطح بالای اپلیکیشن های JavaFX است.
  • ـ javafx.scene _ این بسته کلاس ها و اینترفیس هایی را برای پشتیبانی از گرافیک صحنه(Scene Graph) فراهم می کند. علاوه بر این، زیربسته ها یا sub_package هایی از قبیل بوم، نمودار، کنترل ها، افکت، تصویر، ورودی، لایه، مدیا، رنگ، شکل، متن، تبدیل، وب و... را فراهم می کند. اجزای متعدّدی هستند که این API غنی JavaFX، پشتیبانی می کنند. There are several components that support this rich API of JavaFX.

تصویر زیر ساختار API جاوا اف ایکس را نشان می دهد. در اینجا می توانید اجزایی که API جاوا اف ایکس پشتیبانی می کنند مشاهده کنید.

ساختار ای پی آی های JavaFX و اجزایی که از این APIها پشتیبانی می کنند.
ساختار ای پی آی های JavaFX و اجزایی که از این APIها پشتیبانی می کنند.

گراف صحنه(Scene Graph)

در JavaFX ، اپلیکیشن های گرافیکی با استفاده از گراف صحنه کد نویسی شده اند. گراف صحنه نقطه ی شروع ساخت اپلیکیشن است. گراف صحنه(Scene Graph) اِلِمان های اصلی اپلیکیشن های گرافیکی JavaFX را که node نامیده می شوند در خود نگه داری می کند.

ـ node یک شیء بصری یا گرافیکی است و می تواند شامل این موارد باشد _

  • اشیای هندسی (گرافیکی) _ (2بعدی و 3بعدی) از قبیل دایره، مستطیل، چند ضلعی و...
  • کنترل های UI _ از قبیل Button ، CheckBox ، Choice box ، Text Area و...
  • ظروف شامل شونده (Containers) _ (پنجره های لایه ها یا layout panes)مثل Border Pane و Grid pane و Flow Pane و... (نگران نباشید بعداً به طور کامل همه ی این هارا بررسی خواهیم کرد.)
  • عناصر رسانه (Media elements) _ مانند آبجکت های صوتی، ویدیویی و تصویری.

به طور کلّی مجموعه ای از node ها یک گراف صحنه(scene graph) را می سازد. همه ی این node ها در یک سلسله مراتب(وراثتی) مرتّب شده اند که در تصویر زیر نشان داده شده است.

نمودار وراثتی node ها
نمودار وراثتی node ها

هر node در گراف صحنه(scene graph) یک والد تک دارد، و node ای که هیچ والدی ندارد به عنوان nodeریشه یا root node شناخته می شود.

به طور مشابه node ها یک یا چند فرزند دارند، و node ای که هیچ فرزندی نداشته باشد leaf node نامیده می شود؛ node ای که دارای فرزند باشد branch node نامیده می شود.

در یک گراف صحنه(scene graph) فقط یک node می تواند اضافه شود. node ِ گراف صحنه می تواند افکت(Effects)، شفّافیت(Opacity)، تغییر شکل (transform) و Event Handler داشته باشد. (نگران نباشید در ادامه ی آموزش درباره ی همه ی این موارد توضیح داده خواهد شد)

ـPrism

ـprism یک عملکرد گرافیکی سطح بالاست که برای تفسیر گرافیکی در JavaFX استفاده می شود. که می تواند هر دوی گرافیک های دو بعدی و سه بعدی را تفسیر کند.

در صورتی که سیستم مورد نظر سخت افزار لازم برای پردازش گرافیکی را پشتیبانی نکند، prism از تفسیر نرم افزاری برای پردازش گرافیکی استفاده می کند.

زمانی که از کارت گرافیک یا GPU استفاده شود، گرافیک روان تری ارائه می شود. فقط زمانی که سیستم کارت گرافیک نداشته باشد، prism به صورت پیش فرض از پردازش گرافیکی نرم افزاری استفاده می کند.

GWT (Glass Windowing Toolkit)

ـGWT سرویس هایی برای مدیریت پنجره ها، تایمرها، سطوح برنامه(Surfaces) و صف رویدادها ارائه می دهد. GWT بسترِ JavaFX را به سیستم عامل بومی سیستم متّصل می کند.


وب ویو (WebView)

با استفاده از JavaFX شما می توانید محتوای HTML را هم در گراف صحنه ی خود قرار دهید. WebView کامپوننتی(جزئی) است که نمایش این محتوارا بر عهده دارد. وب ویو از تکنولوژی ای به نام Web Kit استفاده می کند که یک مرورگر وب داخلی منبع باز(open source) است. این جزءِ JavaFX از تکنولوژی های مختلف مربوط به وب پشتیبانی می کند مانند HTML5 و CSS و JavaScript و DOM و SVG.

با استفاده از وب ویو شما می توانید _

  • محتوای HTML را از بخش محلّی(local) یا آدرس URL ، رندر کنید.
  • پشتیبانی از تاریخ و ارائه ی قابلیت برگشت و جلو رفتن در صفحات وب.
  • بارگیری مجدّد محتوا (reload the content)
  • اعمال افکت روی صفحات وب.
  • ویرایش محتوای HTML.
  • اجرای دستورات JavaScript.
  • مدیریت رویدادها.

به طور کلّی با استفاده از WebView می توانید محتوای وب را از جاوا کنترل کنید.

موتور رسانه یا Media Engine

موتور رسانه ی JavaFX مبتنی بر یک موتور() منبع باز است که به عنوان یک استریمر(streamer) شناخته می شود. این موتور رسانه از پخش ویدیو و محتوای صوتی پشتیبانی می کند.

موتور رسانه ی JavaFX فایل های صوتی با فرمت های زیر را پشتیبانی می کند _

قالب های پشتیبانی شده در موتور رسانه ی JavaFX
قالب های پشتیبانی شده در موتور رسانه ی JavaFX

بسته ی javafx.scene.media ، کلاس ها و اینترفیس هایی را برای ارائه ی قابلیت رسانه در JavaFX فراهم می کند. این در قالب سه جزء ارائه شده است که موارد زیر هستند _

ـMedia Object _ این نشان دهنده ی یک فایل رسانه ای است.

ـMedia Player _ برای پخش محتوای رسانه.

ـMedia View _ برای نمایش رسانه.

در ادامه با این سه بهتر آشنا خواهیم شد. فعلاً اسمشان را در گوشه ی ذهن خود داشته باشید تا بعد.


لطفا ? و نظر یادتون نره!

همچنین اگر دوست داشتید مرا در تلگرام دنبال کنید.