Abstract Window Toolkit
એબ્સ્ટ્રેક્ટ વિન્ડો ટૂલકિટ (AWT) એ જાવાની મૂળ પ્લેટફોર્મ-આધારિત વિન્ડો, ગ્રાફિક્સ અને વપરાશકર્તા-ઇન્ટરફેસ વિજેટ ટૂલકિટ છે, જે સ્વિંગની પહેલાની છે. AWT એ જાવા ફાઉન્ડેશન વર્ગો (JFC) નો એક ભાગ છે-જે જાવા પ્રોગ્રામ માટે ગ્રાફિકલ યુઝર ઇન્ટરફેસ (GUI) પ્રદાન કરવા માટેનું પ્રમાણભૂત API છે. AWT એ સંખ્યાબંધ જાવા ME પ્રોફાઇલ્સ માટે GUI ટૂલકિટ પણ છે. ઉદાહરણ તરીકે, જોડાયેલ ઉપકરણ રૂપરેખાંકન રૂપરેખાઓને એબ્સ્ટ્રેક્ટ વિન્ડો ટૂલકિટને ટેકો આપવા માટે મોબાઇલ ટેલિફોન પર જાવા રનટાઇમની જરૂર પડે છે. ઇતિહાસ જ્યારે સન માઇક્રોસિસ્ટમ્સે સૌપ્રથમ 1995માં જાવા રજૂ કર્યું હતું, ત્યારે AWT વિજેટ્સે અંતર્ગત મૂળ વપરાશકર્તા-ઈન્ટરફેસ પર અમૂર્તતાનું પાતળું સ્તર પ્રદાન કર્યું હતું. ઉદાહરણ તરીકે, AWT ચેક બોક્સ બનાવવાથી AWT સીધા જ અંતર્ગત મૂળ સબરૂટિનને કૉલ કરશે જેણે ચેક બોક્સ બનાવ્યું હતું. જો કે, વિન્ડોઝ પરનું ચેક બોક્સ મેકઓએસ પર અથવા યુનિક્સના વિવિધ પ્રકારો પરના ચેક બોક્સ જેવું નથી. કેટલાક એપ્લિકેશન ડેવલપર્સ આ મોડેલને પસંદ કરે છે કારણ કે તે અંતર્ગત મૂળ વિન્ડોઇંગ ટૂલકિટને ઉચ્ચ સ્તરની વફાદારી અને મૂળ એપ્લિકેશનો સાથે સીમલેસ એકીકરણ પ્રદાન કરે છે. બીજા શબ્દોમાં કહીએ તો, AWT નો ઉપયોગ કરીને લખાયેલ GUI પ્રોગ્રામ જ્યારે વિન્ડોઝ પર ચાલે છે ત્યારે મૂળ માઈક્રોસોફ્ટ વિન્ડોઝ એપ્લિકેશન જેવો દેખાય છે, પરંતુ જ્યારે મેક વગેરે પર ચાલે છે ત્યારે તે જ પ્રોગ્રામ મૂળ એપલ મેકિન્ટોશ એપ્લિકેશન જેવો દેખાય છે. જો કે, કેટલાક એપ્લિકેશન ડેવલપર્સ આ મોડેલને નાપસંદ કરે છે કારણ કે તેઓ તેમની એપ્લિકેશનોને દરેક પ્લેટફોર્મ પર બરાબર સમાન જોવાનું પસંદ કરે છે. J2SE 1.2 માં, સ્વિંગ ટૂલકિટે મોટે ભાગે AWT ના વિજેટ્સનું સ્થાન લીધું હતું. યુઆઈ વિજેટ્સનો સમૃદ્ધ સમૂહ પ્રદાન કરવા ઉપરાંત, સ્વિંગ ઓપરેટિંગ સિસ્ટમના ઉચ્ચ-સ્તરના વપરાશકર્તા ઇન્ટરફેસ મોડ્યુલ પર આધાર રાખવાને બદલે તેના પોતાના વિજેટ્સ (સ્થાનિક ગ્રાફિક્સ સબસિસ્ટમમાં નિમ્ન-સ્તરના સબરૂટિનમાં કૉલ કરવા માટે જાવા 2ડીનો ઉપયોગ કરીને) ખેંચે છે. સ્વિંગ મૂળ પ્લેટફોર્મના "દેખાવ અને લાગણી" અથવા ક્રોસ-પ્લેટફોર્મ દેખાવ અને લાગણી ("જાવા દેખાવ અને લાગણી") નો ઉપયોગ કરવાનો વિકલ્પ પ્રદાન કરે છે જે તમામ વિન્ડો સિસ્ટમો પર સમાન દેખાય છે. આર્કિટેક્ચર એ. ડબલ્યુ. ટી. એ. પી. આઈ. ના બે સ્તરો પૂરા પાડે છેઃ જાવા અને મૂળ સિસ્ટમ વચ્ચેનો એક સામાન્ય ઇન્ટરફેસ, જેનો ઉપયોગ વિન્ડો, ઇવેન્ટ્સ અને લેઆઉટ મેનેજર્સ માટે થાય છે. આ API જાવા GUI પ્રોગ્રામિંગના કેન્દ્રમાં છે અને તેનો ઉપયોગ સ્વિંગ અને જાવા 2D દ્વારા પણ થાય છે. તેમાં નીચેનાનો સમાવેશ થાય છેઃ મૂળ વિન્ડોઇંગ સિસ્ટમ અને જાવા એપ્લિકેશન વચ્ચેનું ઇન્ટરફેસ; GUI ઇવેન્ટ સબસિસ્ટમનું મૂળ; કેટલાક લેઆઉટ મેનેજર્સ; માઉસ અને કીબોર્ડ જેવા ઉપકરણોને ઇનપુટ કરવા માટેનું ઇન્ટરફેસ; અને ક્લિપબોર્ડ અને ડ્રેગ એન્ડ ડ્રોપ સાથે ઉપયોગ કરવા માટેનું પેકેજ. બટનો, ટેક્સ્ટ બોક્સ અને મેનુઓ જેવા GUI વિજેટ્સનો મૂળભૂત સમૂહ. તે એ. ડબલ્યુ. ટી. નેટિવ ઇન્ટરફેસ પણ પ્રદાન કરે છે, જે એ. ડબલ્યુ. ટી. ઓબ્જેક્ટ ડ્રોઈંગ સપાટી પર સીધા જ દોરવા માટે મૂળ કોડમાં સંકલિત રેન્ડરિંગ લાઈબ્રેરીઓને સક્ષમ કરે છે. AWT એપ્લિકેશનો માટે કેટલીક ઉચ્ચ સ્તરની કાર્યક્ષમતા પણ ઉપલબ્ધ કરાવે છે, જેમ કેઃ સહાયક સિસ્ટમો પર સિસ્ટમ ટ્રેની ઍક્સેસ; અને જાવા એપ્લિકેશનમાંથી વેબ બ્રાઉઝર્સ અને ઇમેઇલ ક્લાયન્ટ્સ જેવી કેટલીક ડેસ્કટોપ એપ્લિકેશનો શરૂ કરવાની ક્ષમતા. ન તો એ. ડબલ્યુ. ટી. અને ન તો સ્વિંગ સ્વાભાવિક રીતે સુરક્ષિત છે. તેથી, જે કોડ GUI ને અપડેટ કરે છે અથવા ઇવેન્ટ્સને પ્રોસેસ કરે છે તે ઇવેન્ટ ડિસ્પેચિંગ થ્રેડ પર એક્ઝિક્યુટ થવો જોઈએ. આમ કરવામાં નિષ્ફળતા મડાગાંઠ અથવા રેસની સ્થિતિમાં પરિણમી શકે છે. આ સમસ્યાને ઉકેલવા માટે, સ્વિંગવર્કર નામનો ઉપયોગિતા વર્ગ કાર્યક્રમોને થ્રેડ મોકલવાની ઘટનામાં વપરાશકર્તા-ક્રિયાપ્રતિક્રિયાની ઘટનાઓને અનુસરીને સમય માંગી લે તેવા કાર્યો કરવાની મંજૂરી આપે છે. AWT અને સ્વિંગ ઘટકોનું મિશ્રણ જ્યાં AWT ઘટકનું સ્વિંગ સંસ્કરણ હોય ત્યાં તે J-થી શરૂ થશે અને AWT સંસ્કરણને બદલીને તેનો સંપૂર્ણપણે ઉપયોગ થવો જોઈએ. ઉદાહરણ તરીકે, સ્વિંગમાં, ફક્ત જેબટનનો ઉપયોગ કરો, બટન વર્ગનો ક્યારેય ઉપયોગ ન કરો. ઉપર સૂચવ્યા મુજબ, AWT કોર વર્ગો, જેમ કે કલર અને ફોન્ટ, હજુ પણ સ્વિંગમાં જેમ છે તેમ ઉપયોગમાં લેવાય છે. સ્વિંગમાં ચિત્રકામ કરતી વખતે, AWT રંગ () પદ્ધતિઓનો ઉપયોગ કરવાને બદલે જેપેનેલનો ઉપયોગ કરો અને રંગ ઘટક (ગ્રાફિક્સ જી) ને ઓવરરાઇડ કરો. જાવા 6 અપડેટ 12 પહેલાં, સ્વિંગ ઘટકો અને મૂળભૂત AWT વિજેટ્સનું મિશ્રણ ઘણીવાર અનિચ્છનીય આડઅસરોમાં પરિણમે છે, જેમાં AWT વિજેટ્સ તેમના નિર્ધારિત ઝેડ-ક્રમને ધ્યાનમાં લીધા વિના સ્વિંગ વિજેટ્સની ટોચ પર દેખાય છે. આ સમસ્યા એટલા માટે હતી કારણ કે સ્વિંગે AWT પાસેથી હેવીવેઇટ ટોપ કન્ટેનર ઉધાર લીધા હોવા છતાં, બે વિજેટ ટૂલકીટનું રેન્ડરિંગ આર્કિટેક્ચર ખૂબ જ અલગ હતું. જાવા 6 અપડેટ 12 થી શરૂ કરીને, ઝેડ-ઓર્ડરની સમસ્યાઓ વિના સ્વિંગ અને એડબ્લ્યુટી વિજેટ્સનું મિશ્રણ કરવું શક્ય છે. ઉદાહરણ આયાત java.awt. *; ઇમ્પોર્ટ java.awt.event.WindowAdapter; ઇમ્પોર્ટ java.awt.event.WindowEvent; પબ્લિક ક્લાસ MyApp {પબ્લિક સ્ટેટિક વોઈડ મેઇન (શબ્દમાળા [] args) {ફ્રેમ ફ્રેમ = નવી ફ્રેમ ("એપ્લિકેશન"); frame.add (નવું લેબલ ("હેલો! "); frame.setSize (500,500); frame.setLocationRelativeTo (નલ);// વિન્ડોને કેન્દ્રમાં રાખે છે frame.addWindowListener (નવું વિન્ડો એડપ્ટર () {@Override સાર્વજનિક રદબાતલ વિન્ડો બંધ (વિન્ડો ઇવેન્ટ ઇ) {frame.dispose ();// મૂળ સ્ક્રીન સંસાધનો પ્રકાશિત કરે છે}); frame.setVisible (સાચું);} અમલીકરણ કારણ કે AWT એ અંતર્ગત મૂળ વપરાશકર્તા-ઇન્ટરફેસ માટે એક સેતુ છે, નવી ઓપરેટિંગ સિસ્ટમ પર તેના અમલીકરણમાં ઘણું કામ સામેલ હોઈ શકે છે, ખાસ કરીને જો તેમાં કોઈપણ AWT GUI વિજેટ્સ શામેલ હોય, કારણ કે તેમાંના દરેકને તેના મૂળ પીઅર્સને શરૂઆતથી વિકસાવવાની જરૂર છે. એક નવો પ્રોજેક્ટ, કેસિઓકાવેલ્લો બનાવવામાં આવ્યો છે, જે નવી સિસ્ટમો પર AWT અમલીકરણને સરળ બનાવવા માટે ઓપનજેડીકે-આધારિત જાવા API પ્રદાન કરે છે. આ પરિયોજનાએ જાવા2ડીનો ઉપયોગ કરીને AWT વિજેટ્સનો સફળતાપૂર્વક અમલ કર્યો છે. ત્યારથી તમામ જરૂરી કોર-જે. ડી. કે. ફેરફારોને ઓપનજે. ડી. કે. 7 પર ધકેલી દેવામાં આવ્યા છે, જેનો અર્થ એ છે કે જાવાનો ઉપયોગ હવે સત્તાવાર જે. ડી. કે. (એક્સ વિન્ડો સિસ્ટમ, ઓપનજીએલ અથવા ડાયરેક્ટએક્સ) દ્વારા પૂરા પાડવામાં આવેલ એક સિવાયના ગ્રાફિક્સ સ્ટેક પર બાહ્ય લાઇબ્રેરીનો સમાવેશ કરીને અને કેટલાક સિસ્ટમ ગુણધર્મો સુયોજિત કરીને કરી શકાય છે. Caciocavallo માટે ડાયરેક્ટએફબી બેકએન્ડ વિકસાવવામાં આવી રહ્યું છે, જેમ કે એચટીએમએલ5 બેકએન્ડ છે; તેનો ઉદ્દેશ હાલની સ્વિંગ એપ્લિકેશનોને-જાવા સપોર્ટ વિના-વેબ સર્વર પર ચાલતી સામાન્ય વેબ એપ્લિકેશનો તરીકે ગોઠવવાનો છે. સ્વિંગ (જાવા) સ્ટાન્ડર્ડ વિજેટ ટૂલકિટ સંદર્ભો બાહ્ય કડીઓ (AWT જાવાડોક API દસ્તાવેજીકરણ) AWT/સ્વિંગ java.awt જાવા કોડ જાવા API વિજેટ ટૂલકીટો સાથેના લેખો પણ જુઓ.