জাভাএফএক্স কীভাবে ডাব্লুপিএফ এর সাথে তুলনা করে? [বন্ধ]


94

আমি বেশিরভাগ সি # প্রোগ্রামার, আমি প্রায় 10 বছর আগে জাভা লেখা বন্ধ করে দিয়েছিলাম তবে আমি জাভাতে প্রযুক্তিটি নিবন্ধগুলি পড়া, বন্ধুদের সাথে কথা বলার মাধ্যমে চালিয়ে যাওয়ার চেষ্টা করি etc.

আমি জাভাএফএক্স নামে পরিচিত নতুন সমৃদ্ধ জিইউআই ফ্রেমওয়ার্কের কথা শুনেছি, তবে জাভা-অ সমান্তরালের সাথে তুলনা করার মতো কোনও সংস্থান খুঁজে পাইনি।

যেহেতু আমি সি # এবং ডাব্লুপিএফ এর সাথে খুব পরিচিত, তাই আমি দুটি প্রযুক্তিগুলির মধ্যে কতটা সাদৃশ্য বা আলাদা সে সম্পর্কে একটি ধারণা পেতে চাই।

সম্পাদনা: কোনও উত্তর আসছে না বলে আমি আরও সুনির্দিষ্ট হওয়ার চেষ্টা করব:

  1. ডাব্লুপিএফ ভিজ্যুয়াল ট্রি তৈরি করতে এক্সএএমএল ব্যবহার করে, জাভাএফএক্স এর মতো কিছু আছে কি?
  2. এমভিভিএম প্যাটার্নে একটি ভিউ মডেলের বাইন্ডিংয়ের সাথে ডাব্লুপিএফ সর্বোত্তমভাবে ব্যবহৃত হয়, জাভাএফএক্স এছাড়াও বাঁধনের ব্যাপক ব্যবহার করতে পারে?
  3. ডাব্লুপিএফ জিপিইউ রেন্ডারিংয়ের জন্য ব্যবহার করে, জাভাএফএক্স কি একই কাজ করে?
  4. নেট পিসিতে ব্রাউজারের মাধ্যমে চালিত হয়ে সিলভারলাইট জাভাএফএক্সের সাথে কীভাবে তুলনা করে?

... আরো আসছে...

আমি এটি সম্প্রদায় উইকিতে পরিবর্তন করছি যাতে তুলনাগুলি আপডেট হতে পারে (আশা করি)।


7
মজার বিষয় যে 83 টি upvotes সহ একটি প্রশ্ন গঠনমূলক নয় বলে বিবেচিত হতে পারে।
ক্রিস্টিয়ানপ

উত্তর:


121

আমি গত কয়েক সপ্তাহ ধরে জাভাএফএক্স শিখছি। এটি কীভাবে আমার চোখে ডাব্লুপিএফ এর সাথে তুলনা করে তার একটি উচ্চ স্তরের ওভারভিউ:

আমার সমস্ত মন্তব্য জাভাএফএক্স 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

যদিও এটিকে মোটামুটি সীমাবদ্ধ মনে হচ্ছে, জাভাএফএক্সে কাস্টম নিয়ন্ত্রণ তৈরি করার পছন্দের উপায়টি লেআউট প্যানেল থেকে স্ট্যান্ডার্ড নিয়ন্ত্রণগুলি স্থাপনের জন্য এবং সেগুলি সিএসএস ব্যবহার করে পুনরায় স্টাইল করার পদ্ধতিতে রচনাটি ব্যবহার করছে বলে মনে হচ্ছে।

উপসংহার

জাভাএফএক্স এই মুহুর্তে যা অফার করেছে তাতে আমি সামগ্রিকভাবে আমি খুব মুগ্ধ হয়েছি। যদিও এটি ডাব্লুপিএফের মতো পরিপক্কের কাছাকাছি নেই যেখানে এটি সক্রিয়ভাবে বিকশিত হচ্ছে এবং ওরাকল অবশ্যই এটি সমর্থন করছে বলে মনে হচ্ছে। সময় এটি সফল কিনা তা বলবে।

আমি জাভাএফএক্সকে একবার চেষ্টা করার পরামর্শ দেব। ডকুমেন্টেশন পড়ুন এবং একটি ছোট অ্যাপ্লিকেশন একসাথে রাখার চেষ্টা করুন এবং দেখুন আপনি কী মনে করেন।

আপনার এফএক্সএক্স্পেরিয়েন্স ডট কম যাচাই করা উচিত যা বিকাশ দলের পক্ষ থেকে তথ্য সহ নিয়মিত আপডেট হয়।


9
এই জন্য আপনাকে অনেক ধন্যবাদ, এটি খুব শিক্ষিত। আপনি জাভাএফএক্স সম্পর্কে আপনার জ্ঞানের দিকে এগিয়ে যাওয়ার সাথে সাথে এই উত্তরটি আরও বাড়িয়ে দিতে পারলে এটি দুর্দান্ত।
আভিয়াদ পি।

4
আমি আপনার উত্তরটি পড়তেও উপভোগ করেছি এবং জাভাএফএক্স-এর সাথে যদি আপনার কাজটি আরও অন্তর্দৃষ্টি প্রকাশ করে তবে আরও শুনতে আগ্রহী।
পল-সেবাস্তিয়ান মানোলে

21

আমি মনে করি জাভাএফএক্সের জন্য অনুভূতি পাওয়ার সর্বোত্তম উপায় হ'ল এটি ব্যবহার করে। জাভাএফএক্স ওয়েবসাইটে কয়েকটি ভাল টিউটোরিয়াল রয়েছে। এখানে একটি দম্পতি:

এগুলি বেশ দ্রুত এবং আপনাকে ভাষার জন্য একটি ভাল অনুভূতি দেয়। আপনি আরও টিউটোরিয়াল এবং নিবন্ধে আগ্রহী হলে জাভাএফএক্স সাইটে আরও অনেকে আছেন ।

আপনার প্রশ্নের নির্দিষ্ট উত্তরের জন্য:

  1. "ভিজ্যুয়াল ট্রি" তৈরির জন্য জাভাএফএক্সের নিজস্ব ঘোষিত ভাষা রয়েছে যা কোনও এক্সএমএল ডেরাইভেটিভ নয়। ইউআই একটি দৃশ্যের গ্রাফের উপর ভিত্তি করে তৈরি করা হয়েছে যাতে আপনি গ্রাফের যে কোনও নোডে বিভিন্ন প্রভাব এবং অ্যানিমেশন প্রয়োগ করতে পারেন। আরও তথ্যের জন্য টিউটোরিয়াল দেখুন। জাভাএফএক্সের জন্য একটি ডিজাইনার সরঞ্জামও রয়েছে (যা আমি এখনও চেষ্টা করি নি)।
  2. জাভাএফএক্স ভাষায় নির্মিত হয়েছে
  3. ডেস্কটপে জাভাএফএক্স জাভা এডাব্লুটি / সুইং ব্যবহার করে যা জিপিইউ রেন্ডারিং ব্যবহার করে। জাভার প্রতিটি সংস্করণ জিপিইউতে এর আরও বেশি গ্রাফিক্স অফলোড করে বলে মনে হচ্ছে। সান থেকে ক্রিস ক্যাম্পবেল জিপিইউ ত্বরণ সম্পর্কে কিছু ব্লগ করেছে । আমি নিশ্চিত নই যে জাভাএফএক্স এর মোবাইল সংস্করণে জিপিইউ ত্বরণ রয়েছে কিনা। আমি দেখতে পেয়েছি যে জাভাএফএক্সের পূর্ববর্তী সংস্করণগুলি আমার যা প্রয়োজন তার জন্য যথেষ্ট পারফরম্যান্স ছিল না, তবে আমি জানি যে সর্বশেষতম সংস্করণে পূর্ববর্তী সংস্করণগুলির তুলনায় উল্লেখযোগ্য পারফরম্যান্সের উন্নতি হয়েছে এবং তারা এখনও এটিকে আরও দ্রুত তৈরিতে কাজ করে চলেছে।
  4. জাভাএফএক্স ব্রাউজারে চলার জন্য জাভা অ্যাপলেট ব্যবহার করে। জাভা 6 আপডেট 10 হিসাবে, জাভা অ্যাপলেট ফ্রেমওয়ার্কটি পুনরায় কাজ করা হয়েছে এবং এটি অ্যাডোব ফ্ল্যাশের মতো বিজোড় না হলেও এটি অনেক উন্নত। আমি নিশ্চিত না যে এটি কীভাবে সিলভারলাইটের সাথে তুলনা করে আমাকে লিনাক্সে কাজ করতে সিলভারলাইট পেতে সমস্যা হয়েছিল, তবে জাভাএফএক্স লিনাক্সে কাজ করতে পেরেছে।

এখানে আরও একটি সম্পর্কিত প্রশ্ন


15
জাভাএফএক্স জাভা 7-তে উল্লেখযোগ্য আপডেটগুলি পেরিয়ে যাওয়ার কারণে এই উত্তরটি পুরানো। এখানে দেখুন
জোল্টন

7
আপনি কি নিশ্চিত যে জাভাএফএক্স সুইং এবং এডাব্লুটিটি ব্যবহার করে? আমি বিশ্বাস করি এর প্রিজম নামে একটি নিজস্ব রেন্ডারিং ইঞ্জিন রয়েছে। কোনও জাভাএফএক্স অ্যাপ্লিকেশন চালানোর সময় কোনও ইভেন্ট ডিসপ্যাচ থ্রেড তৈরি হয় না।
অ্যান্ডি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.