با جاوا برنامه های اجرایی Desktop بسازید
جاوا یک زبان بسیار قدرتمند است که میتوانیم با استفاده از آن در Platform های گوناگون, نرم افزار تولید کنیم. در این مقاله نیز قصد داریم تا با JavaFx و کاربرد آن آشنا شویم.
JavaFx یک مجموعه ای است که package هایی گرافیکی و چند رسانه ای را شامل میشود. با استفاده از این package ها میتوانیم نرم افزار هایی باƒ ظاهر بسیار زیبا طراحی کنیم.
معمولا برنامه نویسان جاوا, برنامه های خود را در قالب اندروید و یا Java Enterprise مینویسند. این برنامه نویسان برای پیاده سازی Desktop Application ها از زبان هایی استفاده میکنند که امکان طراحی ظاهر را به صورت Visual فراهم کند. طبیعتا ظاهر Desktop Application ها یک بخشی بسیار پر اهمیت و زمانبر از پیاده سازی نرم افزار است. اگر برنامه نویس بخواد اجزا ظاهر را با استفاده از کد ها طراحی کند, یک حجم زیادی از کد را باید بنویسد. همچنین برای مشاهده تغییرات اعمالی بر ظاهر برنامه, هربار باید برنامه را اجرا کند. این عمل بسیار آزار دهنده است و همین امر محبوبیت جاوا را برای پیاده سازی Desktop Application کاهش داده است.
چالش های ذکر شده, باعث میشد تا برنامه نویسان, گزینه هایی غیر از زبان جاوا را برای توسعه Desktop Application ها انتخاب کنند. اما با استفاده از JavaFx Scene Builder این چالش مرتفع شده است. با استفاده از این نرم افزار میتوانیم ظاهر برنامه را به صورت Visual طراحی کنیم. میتوانید این نرم افزار را از اینجا دریافت نمایید.
ابتدا به تعاریف مرتبط با JavaFx میپردازیم و سپس طی یک پروژه ساده, کارکرد آن را بررسی میکنیم. اولین مفهومی که باید به آن اشاره کنیم FXML file است. FXML یک زبان بر پایه XML است که ظاهر برنامه را در آن تعریف میکنیم. این زبان فارغ از logic برنامه است. همین ویژگی باعث جذابیت این زبان شده است زیرا برنامه نویسانی که با زبان جاوا آشنا نیستند نیز میتوانند ظاهر برنامه را ایجاد کنند. این ویژگی از سوی طراحان صفحات وب بسیار مورد استقبال قرار گرفته است. نرم افزار JavaFx Scene Builder با استفاده از محیط Visual این فایل را ایجاد میکند. بنابراین میتوان نتیجه گرفت که FXML قسمت اصلی و مهم JavaFx است و چالش اصلی ما در ایجاد Desktop Application توسط این زبان حل شده است.
در طراحی برنامه ها با JavaFx, میتوانیم از کد های CSS نیز استفاده کنیم. graphic library هایی در این زبان برای طراحی دو بعدی و سه بعدی وجود دارد که مشابه توابع موجود در JQuery, CSS و Flash است. همچنین با استفاده از Gluon Mobile میتوانیم برنامه های اندروید و ios را با استفاده از JavaFx ایجاد کنیم. در نسخه های قدیمی JavaFx, از فرمت UTF8 پشتیبانی نمیشد و ایجاد برنامه های فارسی زبان با استفاده از JavaFx بسیار دشوار بود. اما امروزه این مشکل برطرف شده است و JavaFx از UTF8 پشتیبانی میکند.
اکنون در محیط Intellij, یک پروژه جدید ایجاد میکنیم.
در این پروژه سه فایل وجود دارد :
- کلاس Controller : این کلاس برای مدیریت اعضا تشکیل دهنده ظاهر برنامه است. همانطور که از نام این کلاس مشخص است, اگر بخواهیم وظیفه خاصی را برای Event هایی مانند کلیک اختصاص دهیم, باید در این کلاس تعریف کنیم.
- Main : اجرا کننده اصلی برنامه است.
- sample.fxml : همانطور که در ابتدای مقاله اشاره شد, ظاهر برنامه در این فایل مشخص میشود.
سپس maven را به پروژه اضافه میکنیم. همانطور که اشاره شد, میخواهیم Desktop application با استفاده از JavaFx ایجاد کنیم. وقتی برنامه های بزرگی ایجاد میکنیم, واضح است که به توابع و Framework هایی نیز احتیاج پیدا میکنیم. برای تسهیل در امر افزودن این توابع و Framework ها, از Maven استفاده میکنیم. در این مقاله میخواهیم از Hibernate برای اتصال به پایگاه داده استفاده کنیم.
وقتی maven را به پروژه اضافه میکنیم, یک Resource Directory برای ما ایجاد میشود. در طی ایجاد برنامه, فایل های fxml را در این resource directory قرار میدهیم. سپس فایل تنظیم hibernate را نیز در resource تنظیم میکنیم. بنابراین فایل pom.xml به این صورت خواهد بود:
<groupId>zerotohero.java.sampleJavaFx</groupId> <artifactId>SampleJavaFx</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.2.10.Final</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency> </dependencies>
اکنون فایل sample.fxml را در JavaFx Scene Builder اجرا میکنیم و ظاهر یک Login Form را به دلخواه تعیین میکنیم:
سپس باید برای هریک از اجزا طراحی شده, یک Id اختصاص دهیم. برای اینکار باید مقدار fx:id را تعیین کنیم:
<TextField fx:id="username" layoutX="88.0" layoutY="87.0" prefHeight="34.0" prefWidth="171.0" promptText="Username" styleClass="username" />
و این id را در کلاس Controller نیز اضافه میکنیم:
public class Controller { public TextField username; }
چون ما در این پروژه از maven استفاده میکنیم, باید آدرس فایل fxml را به این صورت مشخص کنیم:
Parent root = FXMLLoader.load(getClass().getClassLoader().getResource("sample.fxml"));
برای تعریف متد های خاص برای اجزا ظاهری, باید ابتدا آن متد را در fxml تعیین و سپس با همان نام در کلاس Controller پیاده سازی کنیم:
<Button fx:id="login" layoutX="90.0" layoutY="227.0" mnemonicParsing="false" onAction="#loginClick" prefHeight="34.0" prefWidth="171.0" text="Login" />
برای مثال ما در کد فوق برای login button یک متد با نام loginClick برای تعیین فرآیند کلیک شدن تعریف کردیم و به این صورت در کلاس Controller پیاده سازی میکنیم:
public class Controller { public TextField username; public TextField password; public CheckBox remember; public Button login; public Label forgot; public void loginClick(ActionEvent actionEvent) { if (HibernateHandler.getHibernateHandler().isValid(username.getText(), password.getText())) { System.out.println("Success"); } else { System.out.println("failed"); } } }
در این مقاله سعی بر این شد تا به توضیح مختصری پیرامون JavaFx و کارکرد آن بپردازیم. همانطور که در راستای مقاله مشاهده کردید, Desktop Application ها را میتوانیم با استفاده از زبان جاوا به راحتی پیاده سازی و از تمام ابزار ها و framework های تعریف شده استفاده کنیم. اگر با زبان برنامه نویسی جاوا آشنا هستید, برای ایجاد Desktop Application ها دیگر به زبان هایی مانند #C و یا پایتون نیاز ندارید و با استفاده از JavaFx و دانش جاوایی خود, میتوانید برنامه دلخواه خود را پیاده سازی کنید.
با ما همراه باشید.
مطالب زیر را حتما مطالعه کنید
از Java به Dart – کلاس و Constructor
آموزش Gradle – اهمیت Project Automation
تفاوت Sequence و List در کاتلین
بهترین محیط های توسعه(IDE) برای جاوا
Open/Closed Principle در قوانین Solid
توابع در زبان برنامه نویسی Kotlin
6 Comments
Join the discussion and tell us your opinion.
دیدگاهتان را بنویسید لغو پاسخ
برای نوشتن دیدگاه باید وارد بشوید.
ممنون از راهنمایی تون فقط یه سوال دیگه اگه من فقط امضا تو برنامه بزنم و توی فلش ذخیره کنم این سورس کدنویسی هم ذخیره میشه یا نه؟
سلام مجدد دوست عزیز. اندروید بر پایه جاوا هست و طبیعتا روش Decompile برای برنامه های اندروید هم ممکنه وجود داشته باشه. بنابراین هیچ روش صد در صدی برای جلوگیری از decompile شدن برنامه وجود نداره. مثل ایجاد امنیت برای سایت ها. این هم یک بخشی از امنیت به حساب میاد و طبیعتا روش های حمله هم درحال بروز شدن هست. اما با استفاده از یکسری روش ها و تکنیک ها میتونین مهندسی معکوس کند تر کنین. مثل obfuscation و همچنین استفاده از progaurd. اینها وظیفه برنامه نویس هست که به صورت امن کد نویسی کنه و امنیت برنامه نسبت به این موارد تامین کنه. سعی میکنیم به زودی مقاله ای پیرامون امنیت برنامه نویسی اندروید منتشر کنیم.
ممنون از همراهیتون
تفاوت Desktop Application با Web Application؟؟؟
سلام دوست عزیز. ممنون از همراهیتون. بر اساس تعریف web applications, این برنامه ها به صورت client – server هستند که کاربری که به عنوان client هست, باید از طریق مرورگر برنامه اجرا کنه. برای مثال web mail ها نوعی web application هستند. اما نرم افزار های Desktop Application, نرم افزار هایی هستند که کاربر به عنوان یک برنامه قابل اجرا بر روی Desktop اونها رو باز میکنه. خود مرورگر یک Desktop Application هست. چون روی سیستم شما نصب میشه و میتونین ازش استفاده کنین.
سلام
با تشکر از سایتتون و اموزشها
استاد یه سوال من دادم اپلیکشن موبایل برنامه نویسی کنن سوالم اینکه من چه جوری از برنامه نویس اپلیکشنو تحویل بگیرم در اینده برنامه نویس منو اذیت نکنه مثلا مسدود کردن برنامه یا غیره بازم از اساتید محترم تشکر می کنم
سلام دوست عزیز. ممنون از همراهیتون. اولین اصل در تمام پروژه های برنامه نویسی, داشتن اعتماد دو طرف نسبت به هم هست. که یکی از علت های اصلی عقد قرارداد هم همینه. هم برنامه نویس تضمین میده که برنامه درست و سالمی تحویل بده و هم کارفرما بابت پرداخت و تامین ابزار مورد نیاز تضمین میده. گاهی شرکت ها به نسبت حساسیت برنامه, برنامه نویس ملزم به حضور در مکان انجام پروژه میکنن و به طبع کنترل میکنن که کد ها از شرکت خارج نشه. گاهی هم ضمانت هایی از برنامه نویس دریافت میشه که معمولا به محرمانگی اطلاعات برنامه مرتبط میشه. بهتره sign key برنامه یه شخص مورد اطمینان و یا خودتون به برنامه اضافه کنین. معمولا برنامه های اندروید اطلاعات و بیشتر دستورات مدیریتی در Server نگهداری میکنن. بهتره که نوشتن برنامه server یه شخص مورد اعتماد انجام بده و همینطور بعد از اتمام پروژه رمز ورود به server هم تغییر بدین تا بعد ها برنامه نویس نتونه به اطلاعات کاربرای برنامه دسترسی پیدا کنه. سوال شما بیشتر مبحث مدیریت پروژه هست و به تجربه اشخاص در مدیریت پروژه برمیگرده. ولی بهتره یک تیم منسجم برای پیاده سازی برنامه ها داشته باشین تا مدیریت و قابل اعتماد بودن پروژه هاتون افزایش پیدا کنه.