Abstract Window Toolkit

Abstract Window Toolkit (AWT), Java լեզվի գրաֆիկական ինտերֆեյսի (Widget Toolkit) բնօրինակ հարթակից անկախ պատուհանների գրադարանն է։ AWT-ն այժմ Java Foundation Classes-ի (JFC) մի մասն է՝ ստանդարտ API՝ Java ծրագրում GUI-ի ներդրման համար։
AWT-ը նաև ստանդարտ GUI գրադարան է Java ME որոշ պրոֆիլների համար։ Օրինակ, Միացված սարքի կազմաձևման պրոֆիլները պահանջում են Java-ի գործարկման ժամանակը բջջային հեռախոսներում՝ AWT-ին աջակցելու համար։
Պատմությումն
[խմբագրել | խմբագրել կոդը]Երբ 1995 թվականին Sun Microsystems-ը առաջին անգամ թողարկեց Java-ն, AWT վիդջեթները աբստրակցիայի բարակ շերտ էին ապահովում հիմնական նեյթիվ ինտերֆեյսի վրա։ Օրինակ, AWT վանդակի ստեղծումը հանգեցնում է նրան, որ AWT-ն ուղղակիորեն կանչում է ավելի ցածր մակարդակի տեղական ենթածրագր, որը ստեղծում է վանդակը։ Այնուամենայնիվ, Microsoft Windows-ի վանդակը նույնը չէ, ինչ վանդակը Mac OS-ի կամ Unix-ի տարբեր համերի վրա։ Որոշ մշակողներ նախընտրում են այս մոդելը, քանի որ այն ապահովում է համապատասխանության բարձր աստիճան հիմնական պատուհանների գործիքակազմի հետ և անխափան ինտեգրում նեյթիվ հավելվածներին։ Այլ կերպ ասած, AWT-ի միջոցով գրված GUI ծրագիրը Windows-ով աշխատելիս նման է Microsoft Windows-ի նեյթիվ հավելվածին, և միևնույն ժամանակ նման է բնօրինակ Apple Macintosh հավելվածին, երբ աշխատում է Mac-ով և այլն, այնուամենայնիվ, որոշ մշակողներ չեն սիրում այս մոդելը, քանի որ նրանք նախընտրում են, որ իրենց հավելվածները բոլոր հարթակներում նույն տեսքը ունենան։
J2SE 1.2-ում AWT վիջեթները հիմնականում փոխարինվել են Swing-ի վիջեթներով։ Օգտվողի միջերեսի տարրերի ավելի հարուստ հավաքածու տրամադրելուց բացի, Swing-ը նկարում է իր սեփական վիջեթները (օգտագործելով Java 2D՝ տեղական գրաֆիկական ցածր մակարդակի ենթահամակարգի ռեժիմներ կանչելու համար)՝ օպերացիոն համակարգի բարձր մակարդակի ինտերֆեյսի մոդուլին ապավինելու փոխարեն։ Swing-ը հնարավորություն է տալիս օգտագործել կամ «look and fell» համակարգ, որն օգտագործում է հարթակի նեյթիվ «look and fell», կամ միջպլատֆորմային տեսքն ու զգացումը («Java Look and Feel»), որը նույն տեսքն ունի բոլոր հարթակներում։ Այնուամենայնիվ, Swing-ն օգտագործում է AWT-ն՝ նեյթիվ պատուհանների համակարգի հետ փոխգործակցության համար։
Ճարտարապետություն
[խմբագրել | խմբագրել կոդը]AWT-ն ապահովում է API-ի երկու մակարդակ.
- Ընդհանուր ինտերֆեյս Java-ի և նեյթիվ համակարգի միջև, որն օգտագործվում է պատուհանների, իրադարձությունների, դասավորության կառավարիչների կառավարման համար։ Այս API-ն Java GUI ծրագրավորման հիմքն է և օգտագործվում է նաև Swing-ի և Java 2D-ի կողմից։ Նա պարունակում է.
- Ինտերֆեյս նեյթիվ պատուհանային համակարգի և Java հավելվածի միջև,
- Ինտերֆեյսի իրադարձությունների մշակման միջուկ,
- Դասավորության որոշ կառավարիչներ,
- Ինտերֆեյս մուտքային սարքերի համար, ինչպիսիք են մկնիկը և ստեղնաշարը և
java.awt.datatransfer փաթեթը՝
սեղմատախտակի և Drag and Drop-ի հետ օգտագործելու համար։
- GUI վիջեթների հիմնական հավաքածու, ինչպիսիք են կոճակները, տեքստային տուփերը (text box) և ընտրացանկերը։ Այն նաև տրամադրում է AWT Native ինտերֆեյս, որը թույլ է տալիս տեղական ծածկագրով գրադարաններին ուղղակիորեն նկարել կտավի վրա։
AWT-ն նաև տրամադրում է հավելվածներ որոշ բարձր մակարդակի ֆունկցիոնալությամբ.
- Աջակցվող համակարգերի ծանուցման տարածք մուտք գործելը և
- Որոշ աշխատասեղանի հավելվածներ գործարկելու ունակություն, ինչպիսիք են վեբ բրաուզերները և էլփոստի սպասառուներ Java հավելվածից։
Ո՛չ AWT-ն, ո՛չ Swing-ը բնականաբար անվտանգ չեն թելերի վրա։ Այսպիսով, կոդը, որը թարմացնում է GUI-ը կամ մշակում իրադարձությունները, պետք է կատարվի իրադարձությունների դիսպետչերական շղթայի վրա[en] (անգլ.՝ event dispatching thread, EDT)։ Դա չկատարելը կարող է հանգեցնել փակուղու կամ մրցավազքի վիճակի։ Այս խնդիրը լուծելու համարSwingWorker
դասը թույլ է տալիս հավելվածներին գործարկել «ծանր» ինտերֆեյսի իրադարձությունների մշակիչներ իրադարձությունների մշակման շղթայում։
AWT և Swing բաղադրիչների խառնուրդ
[խմբագրել | խմբագրել կոդը]Սկսած Java 6#Java SE 6 Update 10-ից, Swing բաղադրիչների և հիմնական AWT վիջեթների խառնումը հաճախ ունենում էր անցանկալի կողմնակի ազդեցություններ, ընդ որում AWT վիդջեթները հայտնվում էին Swing վիդջեթների վերևում՝ անկախ դրանց հատուկ դասավորության կարգից։ Այս խնդիրը պայմանավորված է նրանով, որ երկու վիդջեթների գործիքակազմերի մատուցման ճարտարապետությունը շատ տարբեր է, չնայած Swing-ի կողմից AWT-ից վերին մակարդակի ծանր քաշային բեռնարկղերի փոխառությունը[1]։
Java 6#Java SE 6 Update 12-ից սկսած՝ հնարավոր է խառնել Swing և AWT վիջեթները՝ առանց պատվերի հետ կապված խնդիրների։
Իրականացում
[խմբագրել | խմբագրել կոդը]Քանի որ AWT-ն կամուրջ է դեպի հիմքում ընկած նեյթիվ օգտատիրոջ միջերեսը, դրա ներդրումը նոր օպերացիոն համակարգում կարող է մեծ աշխատանք լինել, հիմնականում մի շարք վիջեթների համար, որոնք պահանջում են նեյթիվ հասակակիցների մշակումը զրոյից յուրաքանչյուր AWT վիդջեթի համար։
Java-ի զարգացմանը զուգահեռ սկսեց մշակվել Caciocavallo նախագիծը։ Դրա նպատակն է տրամադրել Java API-ներ, որոնք հիմնված են OpenJDK-ի վրա՝ հեշտացնելու համար նոր օպերացիոն համակարգերի համար AWT-ի ներդրումը գրելը[2]։ Java2D-ն օգտագործվում է ինտերֆեյսի կառուցման համար[3]։ Բոլոր անհրաժեշտ փոփոխությունները ներառված են JDK-ում OpenJDK 7-ից սկսած[4]։
Տես նաև
[խմբագրել | խմբագրել կոդը]Ծանոթագրություններ
[խմբագրել | խմբագրել կոդը]- ↑ Fowler, Amy (1994). «Mixing heavy and light components». Sun Microsystems. Արխիվացված է օրիգինալից 2012 թ․ մայիսի 1-ին. Վերցված է 2008 թ․ դեկտեմբերի 17-ին.
- ↑ Torre, Mario (2008 թ․ մարտի 2). «FINAL PROPOSAL: Portable GUI backends». Արխիվացված է օրիգինալից 2012 թ․ մայիսի 1-ին. Վերցված է 2008 թ․ սեպտեմբերի 7-ին.
- ↑ Kennke, Roman (2008 թ․ սեպտեմբերի 3). «Cacio Swing AWT peers». Արխիվացված է օրիգինալից 2013 թ․ ապրիլի 29-ին. Վերցված է 2013 թ․ ապրիլի 21-ին.
- ↑ «How much has been pushed upstream?». openjdk.java.net. 2009 թ․ սեպտեմբերի 20. Արխիվացված է օրիգինալից 2012 թ․ մայիսի 1-ին. Վերցված է 2010 թ․ մարտի 7-ին. «You don't need anymore those patches, with the latest FontManager push, everything is upstream now, so just use the Cacio repo, it's completely self contained.»
Արտաքին հղումներ
[խմբագրել | խմբագրել կոդը]- AWT homepage
- Կաղապար:Javadoc:SE (AWT Javadoc API documentation)