Abstract Window Toolkit
تجریدی ونڈو ٹول کٹ (اے ڈبلیو ٹی) جاوا کا اصل پلیٹ فارم پر منحصر ونڈو، گرافکس، اور یوزر انٹرفیس ویجیٹ ٹول کٹ ہے، جو سوئنگ سے پہلے ہے۔ اے ڈبلیو ٹی جاوا فاؤنڈیشن کلاسز (جے ایف سی) کا حصہ ہے-جاوا پروگرام کے لیے گرافیکل یوزر انٹرفیس (جی یو آئی) فراہم کرنے کے لیے معیاری اے پی آئی۔ اے ڈبلیو ٹی متعدد جاوا ایم ای پروفائلز کے لیے جی یو آئی ٹول کٹ بھی ہے۔ مثال کے طور پر، منسلک ڈیوائس کنفیگریشن پروفائلز کو موبائل ٹیلی فون پر جاوا رن ٹائمز کی ضرورت ہوتی ہے تاکہ تجریدی ونڈو ٹول کٹ کو سپورٹ کیا جا سکے۔ تاریخ جب سن مائیکرو سسٹمز نے پہلی بار 1995 میں جاوا کو جاری کیا، تو اے ڈبلیو ٹی ویجٹ نے بنیادی مقامی یوزر انٹرفیس پر ایک پتلی سطح کی تجریدی فراہم کی۔ مثال کے طور پر، اے ڈبلیو ٹی چیک باکس بنانے سے اے ڈبلیو ٹی براہ راست بنیادی مقامی سبروٹین کو کال کرے گا جس نے چیک باکس بنایا تھا۔ تاہم، ونڈوز پر چیک باکس میک او ایس پر یا یونکس کی مختلف اقسام پر موجود چیک باکس جیسا نہیں ہے۔ کچھ ایپلیکیشن ڈویلپرز اس ماڈل کو ترجیح دیتے ہیں کیونکہ یہ بنیادی مقامی ونڈو ٹول کٹ اور مقامی ایپلی کیشنز کے ساتھ ہموار انضمام کے لیے اعلی درجے کی وفاداری فراہم کرتا ہے۔ دوسرے لفظوں میں، اے ڈبلیو ٹی کا استعمال کرتے ہوئے لکھا گیا جی یو آئی پروگرام ونڈوز پر چلتے وقت مائیکروسافٹ ونڈوز کی مقامی ایپلی کیشن کی طرح لگتا ہے، لیکن میک وغیرہ پر چلتے وقت وہی پروگرام مقامی ایپل میکنٹوش ایپلی کیشن کی طرح لگتا ہے۔ تاہم، کچھ ایپلیکیشن ڈویلپرز اس ماڈل کو ناپسند کرتے ہیں کیونکہ وہ اپنی ایپلیکیشنز کو ہر پلیٹ فارم پر بالکل ایک جیسی نظر آنے کو ترجیح دیتے ہیں۔ جے 2 ایس ای 1.2 میں، سوئنگ ٹول کٹ نے بڑی حد تک اے ڈبلیو ٹی کے ویجٹ کو پیچھے چھوڑ دیا۔ یو آئی ویجٹ کا ایک بہتر سیٹ فراہم کرنے کے علاوہ، سوئنگ آپریٹنگ سسٹم کے اعلی درجے کے یوزر انٹرفیس ماڈیول پر انحصار کرنے کے بجائے اپنے ویجٹ (مقامی گرافکس سب سسٹم میں نچلے درجے کے سبروٹینز میں کال کرنے کے لیے جاوا 2 ڈی کا استعمال کرتے ہوئے) کھینچتا ہے۔ سوئنگ یا تو مقامی پلیٹ فارم کی "شکل اور احساس" یا کراس پلیٹ فارم کی شکل اور احساس ("جاوا نظر اور احساس") کا استعمال کرنے کا اختیار فراہم کرتا ہے جو تمام ونڈو سسٹم پر یکساں نظر آتا ہے۔ آرکیٹیکچر اے ڈبلیو ٹی اے پی آئی کی دو سطحیں فراہم کرتا ہے: جاوا اور مقامی نظام کے درمیان ایک عمومی انٹرفیس، جو ونڈو، ایونٹس اور لے آؤٹ مینیجرز کے لیے استعمال ہوتا ہے۔ یہ API جاوا GUI پروگرامنگ کے مرکز میں ہے اور اسے سوئنگ اور جاوا 2D بھی استعمال کرتے ہیں۔ اس میں شامل ہیں: مقامی ونڈو سسٹم اور جاوا ایپلی کیشن کے درمیان انٹرفیس ؛ جی یو آئی ایونٹ سب سسٹم کا بنیادی حصہ ؛ کئی لے آؤٹ مینیجرز ؛ ماؤس اور کی بورڈ جیسے آلات کو ان پٹ کرنے کے لیے انٹرفیس ؛ اور کلپ بورڈ اور ڈریگ اینڈ ڈراپ کے ساتھ استعمال کے لیے ایک پیکیج۔ GUI ویجٹ کا ایک بنیادی سیٹ جیسے بٹن، ٹیکسٹ باکس اور مینو۔ یہ اے ڈبلیو ٹی مقامی انٹرفیس بھی فراہم کرتا ہے، جو مقامی کوڈ پر مرتب کردہ لائبریریوں کو براہ راست اے ڈبلیو ٹی آبجیکٹ ڈرائنگ کی سطح پر کھینچنے کے قابل بناتا ہے۔ اے ڈبلیو ٹی ایپلی کیشنز کے لیے کچھ اعلی سطح کی فعالیت بھی دستیاب کرتا ہے، جیسے: سپورٹنگ سسٹمز پر سسٹم ٹرے تک رسائی ؛ اور جاوا ایپلی کیشن سے کچھ ڈیسک ٹاپ ایپلی کیشنز جیسے ویب براؤزرز اور ای میل کلائنٹس کو لانچ کرنے کی صلاحیت۔ نہ تو اے ڈبلیو ٹی اور نہ ہی سوئنگ فطری طور پر تھریڈ سیف ہے۔ لہذا، جو کوڈ GUI کو اپ ڈیٹ کرتا ہے یا واقعات پر عمل کرتا ہے اسے ایونٹ ڈسپیچنگ تھریڈ پر چلانا چاہیے۔ ایسا کرنے میں ناکامی کے نتیجے میں تعطل یا دوڑ کی حالت پیدا ہو سکتی ہے۔ اس مسئلے کو حل کرنے کے لیے، سوئنگ ورکر نامی ایک یوٹیلیٹی کلاس ایپلی کیشنز کو ایونٹ ڈسپیچنگ تھریڈ میں صارف کے تعامل کے واقعات کے بعد وقت طلب کاموں کو انجام دینے کی اجازت دیتی ہے۔ اے ڈبلیو ٹی اور سوئنگ اجزاء کو ملانا جہاں اے ڈبلیو ٹی جزو کا سوئنگ ورژن ہے یہ جے-سے شروع ہوگا اور اسے خصوصی طور پر استعمال کیا جانا چاہیے، جو اے ڈبلیو ٹی ورژن کی جگہ لے گا۔ مثال کے طور پر، سوئنگ میں، صرف جے بٹن استعمال کریں، بٹن کلاس کبھی نہیں۔ جیسا کہ اوپر ذکر کیا گیا ہے، اے ڈبلیو ٹی کور کلاسز، جیسے کلر اور فونٹ، اب بھی سوئنگ میں استعمال ہوتے ہیں۔ سوئنگ میں ڈرائنگ کرتے وقت، اے ڈبلیو ٹی پینٹ () طریقوں کو استعمال کرنے کے بجائے جے پینل کا استعمال کریں اور پینٹ کمپونینٹ (گرافکس جی) کو اوور رائیڈ کریں۔ جاوا 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 جاوا کوڈ جاوا اے پی آئی ویجیٹ ٹول کٹ جیسے مضامین بھی دیکھیں۔