আমি গত কয়েক সপ্তাহ ধরে জাভাএফএক্স শিখছি। এটি কীভাবে আমার চোখে ডাব্লুপিএফ এর সাথে তুলনা করে তার একটি উচ্চ স্তরের ওভারভিউ:
আমার সমস্ত মন্তব্য জাভাএফএক্স 2.0 এর সাথে সম্পর্কিত। প্ল্যাটফর্মটি এখনও যথেষ্ট অপরিপক্ক এবং সক্রিয়ভাবে বিকাশিত হওয়ায় সম্ভবত এই তথ্যটি পরিবর্তিত হতে পারে।
গ্রাফিক্স
ডাব্লুপিএফের মতো, জাভাএফএক্স একটি রক্ষিত গ্রাফিক্স রেন্ডারিং সিস্টেম ব্যবহার করে। ব্যবহারকারীর ইন্টারফেসে একটি দৃশ্যের গ্রাফ রয়েছে যা 'নোড' দ্বারা গঠিত যা ডাব্লুপিএফ এর মত ধারণাগতভাবে সমান হিসাবে বিবেচিত হতে পারে UIElement
।
জাভাএফএক্স জিপিইউতে উপলব্ধ থাকলে গ্রাফিক্স রেন্ডারিং অফলোড করবে। গ্রাফিক্স সিস্টেমটি উইন্ডোজটিতে ডাইরেক্টএক্স এবং অন্যান্য প্ল্যাটফর্মগুলিতে ওপেনলএল ব্যবহার করে।
মার্কআপ
জাভাএফএক্স ব্যবহারকারীর ইন্টারফেসগুলি কোডে এবং এফএক্সএমএল মার্কআপের মাধ্যমে তৈরি করা যেতে পারে যা এক্সএএমএল এর অনুরূপ যাতে নেস্টিং উপাদানগুলির মাধ্যমে অবজেক্ট গ্রাফ তৈরি করা যেতে পারে।
এফএক্সএমএল এর এক্সএএমএল এর সাথে কিছু অনুরূপ বৈশিষ্ট্য রয়েছে যেমন প্রপার্টি বাইন্ডিং (কেবলমাত্র সহজ এক্সপ্রেশন) এবং ইভেন্ট হ্যান্ডলারের (যে কোনও আগস্ট পদ্ধতি) বাঁধাই । ইভেন্ট হ্যান্ডলারগুলিকে ইন-লাইন ঘোষণা করা যেতে পারে তবে সাধারণত আপনি সংশ্লিষ্ট কন্ট্রোলারের কোনও ইভেন্টের সাথে আবদ্ধ হন।
এফএক্সএমএল ফাইলগুলির সাথে সম্পর্কিত কন্ট্রোলার থাকতে পারে যা আপনাকে জটিল ইভেন্ট হ্যান্ডলারগুলি ঘোষণা করতে এবং বৈশিষ্ট্যের মধ্যে বাইন্ডিং সেট করতে দেয়। এটি এমভিসি অর্থে একটি নিয়ামক এবং ডাব্লুপিএফ ওয়ার্ল্ডের ভিউমোডেলের মতো নয় (সাধারণত একটি নিয়ামকের নোড এবং নিয়ন্ত্রণের উল্লেখ থাকে)।
WPF এক পার্থক্য মনে হচ্ছে যে যে FXML হয় না BAML মত কোন মধ্যবর্তী বাইনারি উপস্থাপনা মধ্যে কম্পাইল করা। আমি এখনও কোনও পারফরম্যান্সের সমস্যা লক্ষ্য করি নি তবে সিস্টেমটি ব্যাপকভাবে ব্যবহার করি নি। যদিও আমি লক্ষ্য করেছি যে, এফএক্সএমএল সাধারণত কোনও এক্সএএমএল থেকে কম হয়ে থাকে কারণ প্ল্যাটফর্মটি এখনও আপনাকে কোড লিখতে উত্সাহ দেয় এবং শৈলীগুলি পৃথকভাবে ঘোষিত হয়।
এফএক্সএমএলের একটি পরিচিতি এখানে পাওয়া যাবে ।
একটি দৃশ্য নির্মাতাকে বিনামূল্যে সরবরাহ করা হয়েছে (বিয়ারের মতো), সুতরাং আপনি যদি ইউআই কোডিংয়ের হাত পছন্দ না করেন তবে আপনি উপাদানগুলি টানতে এবং ছাড়তে পারেন, বৈশিষ্ট্যগুলি সেট করতে পারেন এবং আপনার নিয়ামকের কোডের সাথে আবদ্ধ করতে পারেন এবং FXML স্বয়ংক্রিয়ভাবে উত্পন্ন হবে। স্পষ্টতই দৃশ্যের নির্মাতা এক্সপ্রেশন ব্লেন্ডের মতো শক্তিশালী আর কোথাও নেই তবে এটি ভিজ্যুয়াল স্টুডিওর সরবরাহিত 'ডিজাইনার' এর চেয়ে আরও ভাল।
বাঁধাই
জাভাএফএক্সের একটি খুব শক্তিশালী সম্পত্তি এবং বাইন্ডিং সিস্টেম রয়েছে। জাভা বিন বিন্যাসটি এমন শ্রেণিগুলিকে অন্তর্ভুক্ত করার জন্য প্রসারিত করা হয়েছে যা কোনও সম্পত্তি encapsulate করে (ডাব্লুপিএফ নির্ভরশীলতা বৈশিষ্ট্যগুলি উপস্থাপনের মতো)। এই শ্রেণিগুলি ইন্টারফেস প্রয়োগ করে যা অবৈধকরণ এবং পরিবর্তন বিজ্ঞপ্তি সরবরাহ করে।
অবৈধ বিজ্ঞপ্তি এবং পরিবর্তন বিজ্ঞপ্তি মধ্যে পার্থক্য আছে। অবৈধতা কেবল আপনাকে জানায় যে বাঁধাইয়ের এক্সপ্রেশনটি এখন অবৈধ এবং পুনরায় গণনা করা দরকার; পুনরায় গণনাটি আসলে ঘটে না যতক্ষণ না আপনি তার সম্পত্তি get()
বা তার getValue()
পদ্ধতিতে সম্পত্তি মানটির জন্য অনুরোধ করেন । তবে আপনি যদি কোনও পরিবর্তন শ্রোতার নিবন্ধভুক্ত করেন তবে তাৎক্ষণিকভাবে অভিব্যক্তিটির পুনরায় মূল্যায়ন করা হবে এবং সেই সম্পত্তিতে আবদ্ধ যে কোনও কিছুই পরিবর্তনগুলি প্রতিফলিত করবে।
জাভাএফএক্স এই বৈশিষ্ট্যগুলি ডাব্লুপিএফ-তে একইভাবে একটি গেট অ্যান্ড সেট প্রপার্টি এবং এমন একটি পদ্ধতির মাধ্যমে প্রকাশ করে যা সম্পত্তি র্যাপারের উদাহরণ দেয় (যা ডাব্লুপিএফ বৈশিষ্ট্যের মতো স্থিতিশীল নয়)।
জটিল বাঁধাই একাধিক বৈশিষ্ট্যের মধ্যে তৈরি করা যেতে পারে । পূর্ণসংখ্যা সম্পত্তিটি অন্য দু'জনের যোগফল (a = b + c) হতে চান? কোনও সমস্যা নেই, জাভাএফএক্স এই ধরণের সম্পর্ক ইজি প্রকাশ করার জন্য একটি সাবলীল এপিআই সরবরাহ করে
উঃ অ্যাড (বি, সি);
যদি বি বা সি উভয়ের মান পরিবর্তন হয় তবে উপযুক্ত বিজ্ঞপ্তিগুলি উত্থাপিত হবে যাতে সিস্টেমটি জানতে পারে যে এটিকে পুনরায় মূল্যায়ন করা দরকার। মনে রাখবেন যে এই ক্ষেত্রে, যদি আপনি এ এর মানটিকে অন্য বৈশিষ্ট্যের সাথে আবদ্ধ করে সেট করে থাকেন তবে এটি এই প্রসঙ্গে অর্থবোধ করে না এমন ক্ষেত্রে একটি ব্যতিক্রম ছুঁড়ে দেওয়া হবে।
এই এক্সপ্রেশনগুলি মোটামুটি জটিল EG হতে পারে a = (b + c) * (d - e)
এবং এতে সংখ্যক বৈশিষ্ট্য অন্তর্ভুক্ত থাকতে পারে। সাবলীল এপিআই পড়া এবং ব্যবহার করা মোটামুটি সহজ তবে কিছু মাইক্রোসফট লাইব্রেরি দ্বারা সরবরাহ করা ফ্লুয়েট এপিআই এর মতো সুন্দর নয় তবে এটি জাভাএফএক্সের চেয়ে জাভা ভাষার সীমাবদ্ধতার চেয়েও কম।
সাধারণ দ্বি-দিকনির্দেশনামূলক বাইন্ডিংগুলি একই ধরণের বৈশিষ্ট্যের মধ্যে তৈরি করা যায় যাতে একটি আপডেট করা হয় তবে অন্যটি স্বয়ংক্রিয়ভাবে পরিবর্তনের প্রতিফলন ঘটায়।
আপনি যদি কোনও কাস্টম বাঁধাইয়ের এক্সপ্রেশন তৈরি করতে চান যা এপিআই সরবরাহ করে না বা যদি আপনি পারফরম্যান্স সম্পর্কে উদ্বিগ্ন হন তবে জাভাএফএক্সও নিজেকে বাঁধাই কাস্টমাইজ করতে নিম্ন স্তরের এপিআই সরবরাহ করে।
জাভাএফএক্স এবং ডাব্লুপিএফ-এর মধ্যে একটি বৃহত্তম পার্থক্য হ'ল বাঁধাগুলি প্রাথমিকভাবে জাভাএফএক্স বনাম ডাব্লুপিএফ-এর মার্ক-আপে বাইন্ডিংগুলি প্রতিষ্ঠার কোডে চালিত হয়।
বৈশিষ্ট্য এবং বাইন্ডিংগুলির একটি পরিচিতি এখানে পাওয়া যাবে ।
শৈলী
জাভাএফএক্স দৃশ্য গ্রাফের মধ্যে থাকা নোডগুলির চেহারা পরিবর্তন করতে CSS ব্যবহার করে। এখানে একটি সম্পূর্ণ স্পেসিফিকেশন উপলব্ধ রয়েছে যা প্রতিটি নোড প্রকারে সেট করা যায় এমন ধরণ এবং বৈশিষ্ট্যগুলি ব্যাখ্যা করে।
জাভাএফএক্স এছাড়াও কিছু সংযোজন সরবরাহ করে যা সিএসএস উন্নত করতে সহায়তা করে যেমন ভেরিয়েবলগুলির সংজ্ঞা দেওয়া এবং অন্য কোথাও ইজি ব্যবহার করা যেতে পারে
.button {
my-custom-color: RGB(234, 44, 78);
}
.my-control {
-fx-background-color: my-custom-color
}
এটি এমন বেশ কয়েকটি ফাংশন সরবরাহ করে যা আপনাকে পূর্বনির্ধারিত অন্যান্য রঙ থেকে রঙগুলি ছাঁটাই করতে দেয় যা গ্রেডিয়েন্টের মতো জিনিস তৈরি করতে দরকারী। এর অর্থ রঙের একটি বেস প্যালেট সংজ্ঞায়িত করা যায় এবং বাকিগুলি এই মানগুলি থেকে তৈরি করা যায় (এটি ডিফল্ট জাভাএফএক্স সিএসএস ফাইলটি করে।
জাভাএফএক্স সিএসএস আপনাকে নোড দ্বারা ব্যবহৃত লেআউটটির ধরণ সংজ্ঞায়িত করার অনুমতি দেয় না (এই লেখার ক্ষেত্রে কোডে সমস্ত লেআউটটি সম্পাদন করা প্রয়োজন)। এটি আমার পক্ষে সত্যই ভাল কাজ করে কারণ এটি এইচটিএমএল দিয়ে ব্যবহার করার সময় সিএসএসের একটি বিষয় যা সত্যই আমাকে ব্যথিত করেছিল।
ব্যক্তিগতভাবে আমি এক্সএএমএল শৈলীর চেয়ে সিএসএস পছন্দ করি যা আমার পছন্দ অনুসারে খুব ভার্জোজ হয়।
জাভাএফএক্স সিএসএসের একটি গাইড এখানে পাওয়া যাবে ।
লেআউট
জাভাএফএক্স ডাব্লুপিএফ সরবরাহ করে এমন অনেকগুলি লেআউট প্যান সরবরাহ করে। একটি তফাত আমি লক্ষ্য করেছি যে পরিমাপ এবং বিন্যাস চুক্তি Region
ক্লাসে উত্তরাধিকার শৃঙ্খলা আরও উপরে সংজ্ঞায়িত করা হয় ।
পূর্বে উল্লিখিত হিসাবে, লেআউটটি সিএসএস ব্যবহার করে চালানো যায় না তবে কোড, এফএক্সএমএল ব্যবহার করে বা দৃশ্য নির্মাতা (যা শেষ পর্যন্ত এফএক্সএমএল রূপান্তরিত হয়) ব্যবহার করে তৈরি করা যায়।
নিয়ন্ত্রণ
জাভাএফএক্স নিয়ন্ত্রণগুলির একটি ক্রমবর্ধমান লাইব্রেরি সরবরাহ করে যা আমরা প্রত্যাশা করে এসেছি। জাভাএফএক্স এবং ডাব্লুপিএফ-এর মধ্যে একটি প্রধান পার্থক্য হ'ল নিয়ন্ত্রণগুলি মূলত কালো বাক্স এবং ডাব্লুপিএফ নিয়ন্ত্রণগুলি যেভাবে পারে তা পুনরায় টেম্পলেট করা যায় না। তারা ডাব্লুপিএফ নিয়ন্ত্রণগুলির তুলনায় অনেক কম সম্পত্তি প্রকাশ করবে বলে মনে হয়।
নিয়ন্ত্রণগুলি নিয়ন্ত্রণের নির্দিষ্ট অঞ্চলগুলিকে আপনার শৈলীর দ্বারা লক্ষ্যবস্তু করার অনুমতি দেয় এমন কিছু বাস্তবায়ন নির্দিষ্ট অঞ্চলকে সিএসএসে প্রকাশ করে। এটি নিয়ন্ত্রণের স্তর হিসাবে পরিচিত । ইজি এ CheckBox
দুটি কাঠামো প্রকাশ করে; বাক্স এবং চেক চিহ্ন নিয়ন্ত্রণের প্রতিটি অংশকে স্বাধীনভাবে স্টাইল করার অনুমতি দেয়। মনে রাখবেন যে পূর্বে বর্ণিত হিসাবে কেবল একটি নিয়ন্ত্রণের চেহারা সিএসএস ব্যবহার করে পরিবর্তন করা যেতে পারে তবে অনুভূতিটি তা করতে পারে না। ইজি আপনি TabPane
ডাব্লুপিএফ দিয়ে যেভাবে পারেন তার অভ্যন্তরীণ বিন্যাস প্যানেলটি পরিবর্তন করে কোনওভাবে এর বিষয়বস্তুটি নাটকীয়ভাবে পরিবর্তন করতে পারবেন না TabControl
।
যদিও এটিকে মোটামুটি সীমাবদ্ধ মনে হচ্ছে, জাভাএফএক্সে কাস্টম নিয়ন্ত্রণ তৈরি করার পছন্দের উপায়টি লেআউট প্যানেল থেকে স্ট্যান্ডার্ড নিয়ন্ত্রণগুলি স্থাপনের জন্য এবং সেগুলি সিএসএস ব্যবহার করে পুনরায় স্টাইল করার পদ্ধতিতে রচনাটি ব্যবহার করছে বলে মনে হচ্ছে।
উপসংহার
জাভাএফএক্স এই মুহুর্তে যা অফার করেছে তাতে আমি সামগ্রিকভাবে আমি খুব মুগ্ধ হয়েছি। যদিও এটি ডাব্লুপিএফের মতো পরিপক্কের কাছাকাছি নেই যেখানে এটি সক্রিয়ভাবে বিকশিত হচ্ছে এবং ওরাকল অবশ্যই এটি সমর্থন করছে বলে মনে হচ্ছে। সময় এটি সফল কিনা তা বলবে।
আমি জাভাএফএক্সকে একবার চেষ্টা করার পরামর্শ দেব। ডকুমেন্টেশন পড়ুন এবং একটি ছোট অ্যাপ্লিকেশন একসাথে রাখার চেষ্টা করুন এবং দেখুন আপনি কী মনে করেন।
আপনার এফএক্সএক্স্পেরিয়েন্স ডট কম যাচাই করা উচিত যা বিকাশ দলের পক্ষ থেকে তথ্য সহ নিয়মিত আপডেট হয়।