فناوریهای پدید آورنده برنامههای وب غنی
برای ساخت برنامههای غنی وب از سه فناوری ادوبی فلش، مایکروسافت سیلورلایت و JavaFX استفاده میشود.
ادوبی فلش
این زیرساخت نرمافزاری عرضه شده توسط ادوبی سیستم برای توسعه و ساخت برنامههای غنی وب استفاده میشود. علاوه بر این، امکان ساخت برنامههای کاربردی دیگری مثل وکتورها، انیمشینها، بازیهای مبتنی بر مرورگرها، برنامههای دسکتاپ، برنامههای موبایل و بازیها با ادوبی فلش وجود دارد. با اینحال، پشتیبانی رسمی از ادوبی فلش در سال 2020 بهطور کامل متوقف شد و حتا سیستمعاملها و مرورگرها نیز از آن پشتیبانی نمیکنند.
مایکروسافت سیلورلایت
این پلتفرم مانند ادوبی فلش یک چارچوب نرمافزاری برای ساخت، توسعه و اجرای برنامههای غنی وب است که بیشتر برای استریم چندرسانهای استفاده میشود. نگارشهای جدیدتر این چارچوب از گرافیک، انیمشین و قابلیتهای چندرسانهای بهتر از نسخههای اولیه استفاده میکنند.
JavaFX
یک کتابخانه جاوا است که برای توسعه برنامههای وب غنی استفاده میشود. برنامههایی که توسط این کتابخانه ساخته میشوند با استفاده از فناوری جاوا روی بیشتر مرورگرها قابل اجرا هستند.
JavaFX چیست؟
JavaFX یک کتابخانه زبان جاوا برای ساخت برنامههای وب غنی است. برنامههایی که توسط این زبان برنامهنویسی آماده میشوند قابلیت اجرا روی پلتفرمهای مختلف را دارند. علاوه بر این، برنامههای توسعه یافته با JavaFX روی دستگاههای مختلف مثل کامپیوترهای دسکتاپ، گوشیهای هوشمند، تلویزیونهای هوشمند، تبلتها و سایر دستگاههای هوشمند اجرا میشوند. در گذشته، برنامهنویسان جاوا برای ساخت برنامههای GUI از کتابخانههایی مثل Swing و Advanced Windowing Toolkit استفاده میکردند. با اینحال، پس از انتشار JavaFX برنامهنویسان به دلیل قابلیتهای گستردهای که این کتابخانه در زمینه توسعه برنامههای مبتنی بر رابط گرافیکی ارائه میکند، آنرا جایگزین مناسبی برای نمونههای رایج دانستند.
JavaFX چگونه متولد شد؟
جاواافایکس ابتدا توسط مهندس نرمافزار کریس الیور هنگامی که در شرکت See Beyond Technology کار میکرد طراحی شد. در ادامه شرکت سان مایکروسیستمز آنرا خریداری کرد و روند توسعه آنرا ادامه داد. این پروژه ابتدا (F3) سرنام Form Follows Functions نام داشت و هدفش ارائه رابطهای کاربری غنی برای توسعه برنامههای کاربردی GUI بود، اما پس از خریداری توسط سان مایکروسیستمز به JavaFX تغییر نام داد. در سال 2007 میلادی JavaFX بهطور رسمی در همایش Java One که کنفرانس سالانه دنیای وب است معرفی شد. در سال 2008 میلادی یکپارچهسازی Net Beans با JavaFX انجام شد و کیت توسعه استاندارد جاوا برای JavaFX 1.0 منتشر شد. در سال 2009 میلادی، اوراکل شرکت سان را خریداری کرد و نسخه JavaFX 1.3 را عرضه کرد. روند انتشار نسخههای مختلف این کتابخانه ادامه پیدا کرد تا سپتامبر 2020 که جدیدترین نگارش آن JavaFX 15 منتشر شد. از جاوا 8 به بعد، کیت توسعه جاوا (JDK) همراه با کتابخانه JavaFX در دسترس توسعهدهندگان قرار گرفت. بنابراین برای اجرای برنامههای JavaFX باید جاوا نسخه 8 به بالا را روی سیستمتان نصب کنید. علاوه بر این، بیشتر محیطهای توسعه یکپارچه مثل Eclipse و NetBeans بهطور کامل از JavaFX پشتیبانی میکنند.
JavaFX چه قابلیتهایی دارد و برای چه کارهایی استفاده میشود؟
برنامهنویسان جاوا برای ساخت برنامههای سمت کلاینت با قابلیتهای غنی، از کتابخانههای مختلفی استفاده میکنند تا بتوانند از کنترلهای رابط کاربری، گرافیک دوبعدی و سهبعدی و چندرسانهای در برنامههای خود استفاده کنند. JavaFX تمامی قابلیتهای مذکور را در قالب یک کتابخانه منفرد در اختیار برنامهنویسان قرار میدهد. علاوه بر این، دسترسی به قابلیتهای دیگری نظیر Swing را فراهم میکند. JavaFX مجموعهای کامل از واسطهای برنامهنویسی گرافیکی و مدیا را ارائه کرده و از طریق قابلیت شتابدهی گرافیکی از پردازنده گرافیکی کامپیوترها نیز استفاده میکند. علاوه بر این، JavaFX رابطهایی ارائه میکند که برنامهنویسان میتوانند با استفاده از آنها پویانماییهای گرافیکی و کنترلهای رابط کاربری را با یکدیگر ترکیب کنند. امکان بهکارگیری JavaFX به همراه فناوریهای ماشین مجازی جاوا (JVM) مثل Groovy، JRuby و جاوا نیز وجود دارد. از مهمترین قابلیتهای ارائه شده توسط JavaFX به موارد زیر میتوان اشاره کرد:
- برنامهنویسی به زبان جاوا: کتابخانه JavaFX به زبان جاوا نوشته شده و تمامی زبانهایی که روی ماشین مجازی جاوا اجرا میشوند مثل جاوا، Groovy و JRuby میتوانند از آن استفاده کنند. برنامههای نوشته شده با JavaFX مانند جاوا مستقل از سکو هستند.
- FXML: جاواافایکس از یک زبان نشانهگذاری بهنام FXML پشتیبانی میکند که شباهت زیادی به زبان نشانهگذاری ابرمتن HTML دارد. این زبان با هدف تعریف رابط کاربری استفاده میشود.
- Scene Builder: جاواافایکس مجهز به مولفه قدرتمندی بهنام Scene Builder است که برای یکپارچهسازی جاواافایکس با محیطهای توسعه یکپارچهای مثل Exlipse و NetBeans استفاده میشوند. مولفه فوق اجازه میدهد از یک رابط کاربری طراحی به سبک کشیدن و رها کردن در محیطهای توسعه یکپارچه استفاده کنید. علاوه بر این توسعهدهندگان میتوانند از تکنیک فوق برای ساخت برنامههای FXML استفاده کنند.
- Swing Interoperability: در یک برنامه JavaFX میتوانید محتوای Swing را با استفاده از کلاس Swing Node جاسازی کنید. علاوه بر این، توسعهدهندگان میتوانند برنامههای Swing موجود را با قابلیتهای JavaFX مثل محتوای جاسازی شده وب و مدیای گرافیکی غنی بهروزرسانی کنند.
- کنترلهای داخلی رابط کاربری: کتابخانه JavaFX برخی کنترلهای رابط کاربری رایج را در دسترس توسعهدهندگان قرار میدهد تا بتوانند یک برنامه کامل را توسعه دهند.
- سبکبندی مشابه با CSS: این زیرساخت یک روش سبکبندی مشابه CSS ارائه میکند. توسعهدهندگانی که دانش اولیه در ارتباط با CSS داشته باشند به راحتی قادر به سبکبندی برنامههای کاربردی بر مبنای این الگو هستند.
- واسطهای برنامهنویسی کاربری بومی و پرینت جاواافایکس: جاواافایکس یک بوم ویژه ارائه میکند که دسترسی به یک حالت پویانمایی بلادرنگ را ارائه میکنند. درون بسته javafx.scene.canvas مجموعه کلاسهایی برای بوم قرار دارد که میتوان برای ترسیم مستقیم درون یک صحنه جاواافایکس از آنها استفاده کرد. علاوه بر این، توسعهدهندگان میتوانند از کلاسهای درون بسته javafx.print برای چاپ اشکال استفاده کنند.
- مجموعه کاملی از رابطهای برنامهنویسی کاربردی: جاواافایکس طیف گستردهای از واسطهای برنامهنویسی کاربردی برای توسعه برنامههای GUI، گرافیکهای دوبعدی، سه بعدی و غیره در اختیار توسعهدهندگان قرار میدهد. این مجموعه واسطهای برنامهنویسی کاربردی دسترسی به برخی قابلیتهای مهم پلتفرم جاوا را امکانپذیر میکنند. از جمله این قابلیتها باید به ژنریکها، حاشیهنویسیها، چندریسمانی و عبارتهای لامبدا، لیستهای observable و mapها اشاره کرد. قابلیتهای مذکور به توسعهدهندگان اجازه میدهد تغییرهای موجود در مدلهای دادهها را به دقت بررسی کنند.
- کتابخانه گرافیک یکپارچه: جاواافایکس کلاسهای خاصی برای گرافیکهای دو بعدی و سه بعدی آماده کرده که دست کمی از قابلیتهای ادوبی فلش ندارند.
- پایپلاین گرافیکی: جاواافایکس از گرافیکهای مبتنی بر پایپلاین شتابدهنده سختافزاری گرافیکی که Prism نام دارد پشتیبانی میکند. هنگامی که از این شتابدهنده به همراه کارت گرافیکی قدرتمندی استفاده شود، گرافیکها به شکل روانی نشان داده میشوند. اگر این شتابدهنده قادر به پشتیبانی از کارت گرافیک نباشد، مقادیر پیشفرض Prism را به حالت پردازش نرمافزاری باز میگرداند.
معماری JavaFX
JavaFX یک واسط برنامهنویسی کاربردی کامل از کلاسها و رابطها برای ساخت برنامههای GUI با گرافیک غنی ارائه کرده است. از مهمترین بستههای این رابط برنامهنویسی کاربردی به موارد زیر باید اشاره کرد:
- Javafx.animation: شامل کلاسهایی برای اضافه کردن پویانماییهای مبتنی بر گذر مثل fill، fade، rotate، scale و translation به گرههای JavaFX است.
- Javafx.application: شامل مجموعه کلاسهایی است که مسئول چرخه عمر برنامههای JavaFX هستند.
- Javafx.css: شامل مجموعه کلاسهایی است که برای اضافه کردن سبکبندیهایی مثل CSS به برنامههای کاربردی GUI در جاواافایکس از آنها استفاده میشود.
- Javafx.event: شامل کلاسها و رابطهایی برای مدیریت رخدادها در جاواافایکس است.
- Javafx.geometry: شامل کلاسهایی است که برای تعریف اشیا دوبعدی و اجرای عملیات روی آنها استفاده میشود.
- Javafx.stage: شامل مجموعه کلاسهای کانتینر سطح بالایی است که برای نگهداری javafx.stage از آن استفاده میشود.
- Javafx.scene: شامل کلاسها و رابطهایی برای پشتیبانی از گراف صحنه است. علاوه بر این از بستههایی مثل canvas، chart،control effect، image، input، layout، media، paint، shape، text، transform، web و غیره پشتیبانی میکند.
در شکل 1 معماری JavaFX API را مشاهده میکنید. همانگونه که مشاهده میکنید JavaFX API توسط مولفههای مهم و قدرتمندی پشتیبانی میشود.
شکل 1
گراف صحنه
برنامههای GUI در JavaFX با استفاده از گراف صحنه (Scene Graph) کدنویسی میشوند. گراف صحنه نقطه شروع ساخت برنامههای GUI است که ملزومات اولیه مرتبط با رابط گرافیکی را به شکل گرههای تعریف شده نگهداری میکند. در اینجا، گره به یک شی دیداری یا گرافیکی اشاره دارد که خصلتهای زیر را دارد:
- اشیا هندسی (گرافیکی): اشیا دو بعدی یا سه بعدی مثل دایره، مستطیل، چند ضعلی و غیره هستند.
- کنترلهای رابط کاربری: اشیایی مثل دکمهها، فهرستهای انتخابی، منوهای بازشونده، ناحیه متنی و غیره هستند.
- کانتینرها: کانتینرها همان بخشهای لایهبندی (Layout) هستند که عناصری مثل بخش حاشیهای، شبکهای، گردشی و غیره را تعریف میکنند.
- عناصر چندرسانهای: مواردی مثل صوت، ویدیو و تصویر را شامل میشوند.
در حالت کلی، هر مجموعه از گرهها یک گراف صحنه را شکل میدهند. تمامی این گرهها در سلسله مراتبی مثل شبکه دو تعریف میشوند.
هر گره در گراف صحنه یک والد منفرد دارد. گرهی که فاقد والد باشد بهنام گره ریشه شناخته میشود. در معماری فوق، هر گره میتواند یک یا چند فرزند داشته باشد. گرههای بدون فرزند بهنام گره برگ و گرههای دارای فرزند بهنام گره انشعاب شناخته میشوند.
Prism
Prism یک پایپلاین شتابدهی سختافزاری گرافیکی با عملکرد بالا است که برای پردازش گرافیک در JavaFX استفاده میشود. این موتور پردازشی میتواند گرافیک دوبعدی و سه بعدی را پردازش کند. پریزم برای پردازش گرافیکی از دایرکتایکس در سیستمعاملهای ویندوز و OpenGL در سیستمعاملهای مک، لینوکس و سامانههای توکار استفاده میکند. اگر پردازنده گرافیکی فاقد قابلیتهای لازم برای پردازش باشد، Prism از مکانیزم نرمافزاری برای پردازش گرافیکها استفاده میکند.
شکل 2
GWT
کیت ابزار پنجرههای شفاف (GWT) سرنام Glass Windowing Toolkit برای مدیریت پنجرهها، تایمرها، سطوح و صف رویدادها استفاده میشود. علاوه بر این، GWT نقش اتصالدهنده پلتفرم JavaFX با سیستمعامل را بازی میکند.
Quantum Toolkit
مولفه فوق یک لایه انتزاعی روی مولفههای سطح پایین Prism، Glass، Media Engine و Web Engine قرار میدهد تا کاربر فارغ از پیچیدگیهای فنی قادر به استفاده از JavaFX باشد. علاوه بر این Prism و GWT را به یکدیگر مرتبط میکند.
WebView
توسعهدهندگان میتوانند از JavaFX برای جایگذاری محتوای HTML در گراف صحنه استفاده کنند. WebView یکی از مولفههای مهم JavaFX است که برای پردازش این مدل محتوا استفاده میشود. مولفه مذکور از Web Kit که یک موتور مرورگر وب متنباز داخلی است استفاده میکند. مولفه یاد شده از فناوریهای مختلف مثل، HTML5، CSS ،JavaScript DOM و SVG پشتیبانی میکند. WebView به توسعهدهندگان اجازه پردازش محتوای HTML از آدرس اینترنتی محلی یا راه دور، پشتیبانی از تاریخچه و ارائه ناوبری رو به عقب و جلو، بارگذاری دوباره محتوا، اعمال جلوههای خاص روی مولفههای وب، ویرایش محتوای HTML، اجرای دستورات جاوااسکریپت و مدیریت رخدادها را میدهد.
موتور چندرسانهای
موتور چندرسانهای JavaFX بر مبنای موتور متنباز Streamer ساخته شده است. موتور چندرسانهای از بازپخش محتوای ویدیویی و صوتی پشتیبانی میکند. بسته javafx.scene.media متشکل از کلاسها و رابطهایی است که عملکردهای چندرسانهای در JavaFX را مدیریت میکند. این بسته از سه مولفه Media Object ،Media Player و Media View ساخته شده است.
ساختار برنامههای JavaFX
بهطور کلی یک برنامه JavaFX از سه مولفه Stage ،Scene و Nodes ساخته میشود. شکل 3 چگونگی ارتباط این مولفهها با یکدیگر را نشان میدهد.
شکل 3
Stage
Stage پنجرهای است که تمامی اشیا و برنامههای کاربردی JavaFX در آن قرار دارد. کلاس Stage از بسته javafx.stage برای نشان دادن این پنجره استفاده میشود. Stage اولیه توسط خود JavaFX ساخته میشود، در ادامه شی Stage ایجاد شده به عنوان آرگومان برای تابع start() از کلاس Application ارسال میشود. یک Stage دو پارامتر به نامهای Width و Height دارد که وضعیت عرض و ارتفاع را مشخص میکنند. این کلاس به دو بخش ناحیه متنی و دکوراسیونها (Content Area and Decorations) تقسیم میشود. بهطور کلی در JavaFX پنج stage به نامهای دکوراسیون شده (Decorated)، غیر دکوراسیون شده (Undecorated)، شفاف (Transparent)، یکنواخت (Unified) و کاربردی (Utility) وجود دارد. برای نمایش محتوای Stage باید متد Show() را فراخوانی کنید.
صحنه
صحنه (Scene) محتوای فیزیکی یک برنامه JavaFX را نشان میدهد. این عنصر تمامی محتوای یک گراف صحنه را نگهداری میکند. این کلاس در بسته javafx.scene که مسئولیت نشان دادن شی صحنه را بر عهده دارد قرار دارد.
گراف صحنه و گرهها
گراف صحنه (Scene Graph) ساختمان دادهای سلسله مراتبی است که محتوای یک صفحه را بازنمایی میکند. یک صحنه میتواند شامل یک شی گره باشد. یک شی گره شامل اشیا هندسی دوبعدی و سهبعدی، کنترلهای رابط کاربری، کانتینرهای مختلف و عناصر چندرسانهای است. کلاس Node از بسته javafx.scene مسئولیت مدیریت تمامی گرهها را بر عهده دارد. در Javafx یک گره میتواند یکی از سه حالت زیر را داشته باشد:
- گره ریشه (Root Node): اولین گراف ساخته شده در JavaFX است.
- گره انشعاب/والد (Branch/Parent Node): گرهی که شامل یک یا چند گره فرزند است. کلاس والد بهنام Parent از بسته javafx.scene کلاس پایه تمامی گرههای والد است. گره والد حالتهای زیر را شامل میشود:
- گروه (Group): به گروهی از گرهها گفته میشود که شامل فهرستی از گرههای فرزند است. هر زمان یک گره گروه پردازش میشود، تمامی گرههای فرزند به ترتیب پردازش میشوند. هرگونه تغییر، افکت و حالتی که روی هر گره در یک گروه اعمال شود، روی تمامی گرههای فرزند اعمال میشود.
- منطقه (Region): گره منطقهای، کلاس مبنای تمامی گرههای JavaFX بر مبنای کنترلهای رابط کاربری مثل Chart، Pane و Control است.
- وبویو (WebView): گره مذکور به مدیریت موتور وب پرداخته و محتوای آنرا نشان میدهد.
- گره برگ (Leaf Node): این گره فاقد فرزند است، Rectangle ،Ellipse Box ،ImageView و MediaView نمونههایی از گرههای برگ هستند.
نمودارها در JavaFX
بهطور کلی نمودارها در JavaFX به منظور بازنمایی گرافیکی دادهها استفاده میشوند. در JavaFX انواع مختلفی از نمودارها برای نمایش دادهها استفاده میشوند که از مهمترین آنها باید به نمودار میلهای، دایرهای، خطی و پراکنش اشاره کرد. نمودارهای دایرهای و XY از پرکاربردترین نمودارها در JavaFX هستند. هر نمودار به وسیله کلاسی نشان داده میشود، با اینحال تمامی نمودارها به بسته javafx.scene.chart تعلق دارند. کلاس Chart کلاس مبنا برای تمامی نمودارها در JavaFX است.
CSS در JavaFX
سبکبندی آبشاری (CSS) یک الگوی طراحی ساده است که برای ساده و جذابتر کردن صفحههای وب طراحی شده است. توسعهدهندگان وب از CSS برای تغییر ظاهر یک وبسایت استفاده میکنند. توسعهدهندگان میتوانند از CSS برای رنگبندی متن، سبکبندی فونتها، تعیین فاصله میان پاراگرافها، تعیین اندازه ستونها و قالببندی کلی صفحه استفاده کنند.
علاوه بر این با استفاده از CSS میتوان تصاویر پسزمینه یا رنگهای به کار گرفته شده، طراحیهای قالبها یا شیوه نمایش صفحات روی دستگاههای مختلف و موارد این چنینی را کنترل کرد. توسعهدهندگان میتوانند در JavaFX از CSS برای بهبود شکل ظاهری برنامههای کاربردی استفاده کنند. بسته javafx شامل کلاسهایی است که برای اعمال CSS روی برنامههای JavaFX استفاده میشود. CSS مجموعه قواعد سبکبندی را تعریف میکند که توسط مرورگرها درک شده و روی عناصر متناظر در سند HTML اعمال میشود. یک قاعده CSS از سه مولفه زیر ساخته میشود:
- Selector: انتخابگر (Selector) یک برچسب HTML است که عنصری که باید سبکبندی شود را مشخص میکند. این عنصر میتواند یک برچسب h1، table یا موارد دیگر باشد.
- Property: خاصیت برای توصیف برچسبهای HTML استفاده میشود. به بیان دیگر، تمامی خاصیتهای HTML به مشخصههای CSS تبدیل میشوند. این خاصیتها میتوانند، رنگ، حاشیه، فونت و موارد این چنینی باشند.
- Value: مقدار به خاصیتها تخصیص داده میشود. بهطور مثال، یک مشخصه رنگ میتواند مقادیری مثل red، #B1B1B1 و موارد این چنینی باشند.
چگونگی بهکارگیری ترکیب نحوی CSS در JavaFX برای سبکبندی برنامههای غنی در شکل 4 نشان داده شده است.
شکل 4
کلام آخر
در این مقاله سعی کردیم، تصویری کلی از JavaFX و قابلیتهای این چارچوب قدرتمند ارائه کنیم که قادر است برای ساخت برنامههای کاربردی مختلف مبتنی بر جاوا استفاده شود. JavaFX به توسعهدهندگان اجازه میدهد برنامههای کاربردی جاوا با رابطهای کاربری مدرن مجهز به شتابدهی سختافزاری را ایجاد کنند. برنامههایی که به ویژگی شاخص قابل حمل بودن تجهیز شدهاند. بنابراین اگر یک توسعهدهنده جاوا هستید پیشنهاد میکنیم از این چارچوب بزرگ غافل نشوید
ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را میتوانید از کتابخانههای عمومی سراسر کشور و نیز از دکههای روزنامهفروشی تهیه نمائید.
ثبت اشتراک نسخه کاغذی ماهنامه شبکه
ثبت اشتراک نسخه آنلاین
کتاب الکترونیک +Network راهنمای شبکهها
- برای دانلود تنها کتاب کامل ترجمه فارسی +Network اینجا کلیک کنید.
کتاب الکترونیک دوره مقدماتی آموزش پایتون
- اگر قصد یادگیری برنامهنویسی را دارید ولی هیچ پیشزمینهای ندارید اینجا کلیک کنید.
نظر شما چیست؟