Abstract Window Toolkit
অ্যাবস্ট্রাক্ট উইন্ডো টুলকিট (এডব্লিউটি) হল জাভার মূল প্ল্যাটফর্ম-নির্ভর উইন্ডোইং, গ্রাফিক্স এবং ব্যবহারকারী-ইন্টারফেস উইজেট টুলকিট, যা সুইং-এর পূর্ববর্তী। এ. ডব্লিউ. টি জাভা ফাউন্ডেশন ক্লাসের (জে. এফ. সি) অংশ-জাভা প্রোগ্রামের জন্য একটি গ্রাফিকাল ইউজার ইন্টারফেস (জি. ইউ. আই) প্রদানের জন্য স্ট্যান্ডার্ড এপিআই। এ. ডব্লিউ. টি হল বেশ কয়েকটি জাভা এম. ই প্রোফাইলের জি. ইউ. আই টুলকিট। উদাহরণস্বরূপ, সংযুক্ত ডিভাইস কনফিগারেশন প্রোফাইলগুলির বিমূর্ত উইন্ডো টুলকিটকে সমর্থন করার জন্য মোবাইল টেলিফোনে জাভা রানটাইম প্রয়োজন। 1995 সালে যখন সান মাইক্রোসিস্টেমস প্রথম জাভা প্রকাশ করে, তখন এডব্লিউটি উইজেটগুলি অন্তর্নিহিত নেটিভ ইউজার-ইন্টারফেসের উপর একটি পাতলা স্তরের বিমূর্ততা প্রদান করে। উদাহরণস্বরূপ, একটি এডব্লিউটি চেক বাক্স তৈরি করলে এডব্লিউটি সরাসরি অন্তর্নিহিত স্থানীয় সাবরুটিনে কল করবে যা একটি চেক বাক্স তৈরি করেছে। তবে, উইন্ডোজের চেক বাক্সটি ম্যাকোস বা বিভিন্ন ধরনের ইউনিক্সের চেক বাক্সের মতো নয়। কিছু অ্যাপ্লিকেশন ডেভেলপার এই মডেলটি পছন্দ করে কারণ এটি অন্তর্নিহিত নেটিভ উইন্ডোইং টুলকিটে উচ্চ মাত্রার বিশ্বস্ততা এবং নেটিভ অ্যাপ্লিকেশনগুলির সাথে নির্বিঘ্ন সংহতকরণ প্রদান করে। অন্য কথায়, এ. ডব্লিউ. টি ব্যবহার করে লেখা একটি জি. ইউ. আই প্রোগ্রাম উইন্ডোজে চালানোর সময় একটি নেটিভ মাইক্রোসফ্ট উইন্ডোজ অ্যাপ্লিকেশনের মতো দেখায়, তবে ম্যাকে চালানোর সময় একই প্রোগ্রামটি একটি নেটিভ অ্যাপল ম্যাকিনটোস অ্যাপ্লিকেশনের মতো দেখায়। যাইহোক, কিছু অ্যাপ্লিকেশন ডেভেলপার এই মডেলটি অপছন্দ করে কারণ তারা তাদের অ্যাপ্লিকেশনগুলি প্রতিটি প্ল্যাটফর্মে ঠিক একই দেখতে পছন্দ করে। জে2এসই 1.2-এ, সুইং টুলকিট মূলত এ. ডব্লিউ. টি-র উইজেটগুলিকে ছাপিয়ে যায়। ইউ. আই উইজেটগুলির একটি সমৃদ্ধ সেট সরবরাহ করার পাশাপাশি, সুইং অপারেটিং সিস্টেমের উচ্চ-স্তরের ইউজার ইন্টারফেস মডিউলের উপর নির্ভর করার পরিবর্তে তার নিজস্ব উইজেটগুলি (স্থানীয় গ্রাফিক্স সাবসিস্টেমের নিম্ন-স্তরের সাবরুটিনে কল করার জন্য জাভা 2ডি ব্যবহার করে) আঁকে। সুইং স্থানীয় প্ল্যাটফর্মের "চেহারা এবং অনুভূতি" অথবা একটি ক্রস-প্ল্যাটফর্ম চেহারা এবং অনুভূতি ("জাভা চেহারা এবং অনুভূতি") ব্যবহার করার বিকল্প প্রদান করে যা সমস্ত উইন্ডোজিং সিস্টেমে একই রকম দেখায়। স্থাপত্য AWT দুটি স্তরের API প্রদান করেঃ জাভা এবং নেটিভ সিস্টেমের মধ্যে একটি সাধারণ ইন্টারফেস, যা উইন্ডোজিং, ইভেন্ট এবং লেআউট ম্যানেজারদের জন্য ব্যবহৃত হয়। এই এপিআই জাভা জিইউআই প্রোগ্রামিংয়ের মূল অংশে রয়েছে এবং এটি সুইং এবং জাভা 2ডি দ্বারাও ব্যবহৃত হয়। এতে রয়েছেঃ নেটিভ উইন্ডোইং সিস্টেম এবং জাভা অ্যাপ্লিকেশনের মধ্যে ইন্টারফেস; জিইউআই ইভেন্ট সাবসিস্টেমের মূল অংশ; বেশ কয়েকটি লেআউট ম্যানেজার; মাউস এবং কীবোর্ডের মতো ইনপুট ডিভাইসের ইন্টারফেস; এবং ক্লিপবোর্ড এবং ড্র্যাগ অ্যান্ড ড্রপের সাথে ব্যবহারের জন্য একটি প্যাকেজ। জিইউআই উইজেটের একটি মৌলিক সেট যেমন বোতাম, পাঠ্য বাক্স এবং মেনু। এটি এডব্লিউটি নেটিভ ইন্টারফেসও সরবরাহ করে, যা নেটিভ কোডে সংকলিত গ্রন্থাগারগুলিকে সরাসরি একটি এডব্লিউটি অবজেক্ট অঙ্কন পৃষ্ঠে আঁকতে সক্ষম করে। এডব্লিউটি অ্যাপ্লিকেশনগুলির জন্য কিছু উচ্চ স্তরের কার্যকারিতা উপলব্ধ করে, যেমনঃ সাপোর্টিং সিস্টেমে সিস্টেম ট্রেতে অ্যাক্সেস; এবং জাভা অ্যাপ্লিকেশন থেকে ওয়েব ব্রাউজার এবং ইমেল ক্লায়েন্টের মতো কিছু ডেস্কটপ অ্যাপ্লিকেশন চালু করার ক্ষমতা। এ. ডব্লিউ. টি বা সুইং উভয়ই সহজাতভাবে নিরাপদ নয়। অতএব, যে কোডটি জিইউআই আপডেট করে বা ইভেন্টগুলি প্রক্রিয়া করে তা ইভেন্ট প্রেরণ থ্রেডে কার্যকর করা উচিত। তা করতে ব্যর্থ হলে অচলাবস্থা বা প্রতিযোগিতার পরিস্থিতি তৈরি হতে পারে। এই সমস্যা সমাধানের জন্য, সুইং ওয়ার্কার নামে একটি ইউটিলিটি ক্লাস অ্যাপ্লিকেশনগুলিকে ইভেন্ট প্রেরণ থ্রেডে ব্যবহারকারী-মিথস্ক্রিয়া ইভেন্টের পরে সময়সাপেক্ষ কাজগুলি সম্পাদন করার অনুমতি দেয়। এ. ডব্লিউ. টি এবং সুইং উপাদানগুলির মিশ্রণ যেখানে এ. ডব্লিউ. টি উপাদানটির একটি সুইং সংস্করণ রয়েছে সেখানে এটি জে-দিয়ে শুরু হবে এবং এ. ডব্লিউ. টি সংস্করণের পরিবর্তে একচেটিয়াভাবে ব্যবহার করা উচিত। উদাহরণস্বরূপ, সুইং-এ শুধুমাত্র জে-বাটন ব্যবহার করুন, কখনও বাটন ক্লাস ব্যবহার করবেন না। উপরে উল্লিখিত হিসাবে, রঙ এবং ফন্টের মতো এ. ডব্লিউ. টি মূল শ্রেণীগুলি এখনও সুইং-এ ব্যবহৃত হয়। সুইং-এ অঙ্কন করার সময়, এ. ডব্লিউ. টি পেইন্ট () পদ্ধতি ব্যবহার করার পরিবর্তে জেপ্যানেল ব্যবহার করুন এবং পেইণ্ট কম্পোনেন্ট (গ্রাফিক্স জি) ওভাররাইড করুন। জাভা 6 আপডেট 12-এর আগে, সুইং উপাদান এবং মৌলিক এডব্লিউটি উইজেটগুলির মিশ্রণের ফলে প্রায়শই অযাচিত পার্শ্ব প্রতিক্রিয়া দেখা যায়, যেখানে এডব্লিউটি উইজেটগুলি তাদের সংজ্ঞায়িত জেড-অর্ডার নির্বিশেষে সুইং উইজেটের উপরে উপস্থিত হয়। এই সমস্যাটি ছিল কারণ দুটি উইজেট টুলকিটের রেন্ডারিং স্থাপত্য খুব আলাদা ছিল, যদিও সুইং এডব্লিউটি থেকে হেভিওয়েট শীর্ষ ধারক ধার নিয়েছিল। জাভা 6 আপডেট 12 থেকে শুরু করে, জেড-অর্ডার সমস্যা ছাড়াই সুইং এবং এডাব্লুটি উইজেটগুলি মিশ্রিত করা সম্ভব। উদাহরণ আমদানি java.awt। *; ইম্পোর্ট java.awt.event.WindowAdapter; ইম্পোর্ট java.awt.event.WindowEvent; পাবলিক ক্লাস মাইঅ্যাপ {পাবলিক স্ট্যাটিক অকার্যকর মেইন (স্ট্রিং [] আর্গস) {ফ্রেম ফ্রেম = নতুন ফ্রেম ("অ্যাপ্লিকেশন"); frame.add (নতুন লেবেল ("হ্যালো! "); frame.setSize (500,500); frame.setLocationRelativeTo (null);// উইন্ডোটিকে কেন্দ্র করে frame.addWindowListener (নতুন উইণ্ডো অ্যাডাপ্টার () {@Override সর্বজনীন অকার্যকর উইণ্ডো ক্লোজিং (উইণ্ডো ইভেন্ট ই) {frame.dispose ();// নেটিভ স্ক্রিন রিসোর্সগুলি প্রকাশ করে); frame.setVisible (সত্য);}} বাস্তবায়ন যেহেতু AWT অন্তর্নিহিত নেটিভ ইউজার-ইন্টারফেসের একটি সেতু, একটি নতুন অপারেটিং সিস্টেমে এর বাস্তবায়নে অনেক কাজ জড়িত থাকতে পারে, বিশেষত যদি এতে কোনও AWT GUI উইজেট জড়িত থাকে, কারণ তাদের প্রত্যেকটির জন্য তার নেটিভ পিয়ারগুলি স্ক্র্যাচ থেকে তৈরি করা প্রয়োজন। একটি নতুন প্রকল্প, ক্যাসিওকাভালো তৈরি করা হয়েছে, যা নতুন সিস্টেমে এডব্লিউটি বাস্তবায়ন সহজ করার জন্য একটি ওপেনজেডিকে-ভিত্তিক জাভা এপিআই প্রদান করে। প্রকল্পটি সফলভাবে জাভা2ডি ব্যবহার করে এডব্লিউটি উইজেটগুলি বাস্তবায়িত করেছে। সমস্ত প্রয়োজনীয় কোর-জেডিকে পরিবর্তনগুলি তখন থেকে ওপেনজেডিকে 7-এ ঠেলে দেওয়া হয়েছে, যার অর্থ জাভা এখন একটি বাহ্যিক লাইব্রেরি অন্তর্ভুক্ত করে এবং কিছু সিস্টেম বৈশিষ্ট্য সেট করে অফিসিয়াল জেডিকে (এক্স উইন্ডো সিস্টেম, ওপেনজিএল বা ডাইরেক্টএক্স) দ্বারা প্রদত্ত গ্রাফিক্স স্ট্যাকের বাইরে অন্য কোনও গ্রাফিক্স স্ট্যাকে ব্যবহার করা যেতে পারে। ক্যাসিওকাভালোর জন্য একটি ডাইরেক্টএফবি ব্যাকএন্ড উন্নয়নের অধীনে রয়েছে, যেমন একটি এইচটিএমএল5 ব্যাকএন্ড; উদ্দেশ্য হল একটি ওয়েব সার্ভারে চলমান সাধারণ ওয়েব অ্যাপ্লিকেশন হিসাবে-জাভা সমর্থন ছাড়াই-বিদ্যমান সুইং অ্যাপ্লিকেশনগুলি স্থাপন করা। এছাড়াও দেখুন সুইং (জাভা) স্ট্যান্ডার্ড উইজেট টুলকিট রেফারেন্স বাহ্যিক লিঙ্ক (এডব্লিউটি জাভাডক এপিআই ডকুমেন্টেশন) এডব্লিউটি/সুইং java.awt জাভা কোড জাভা এপিআই উইজেট টুলকিট সহ নিবন্ধ