Abstract Window Toolkit: відмінності між версіями

[неперевірена версія][неперевірена версія]
Вилучено вміст Додано вміст
"пряцездатність" - на працездатність
Немає опису редагування
Рядок 5:
AWT визначає базовий набір елементів керування, вікон та діалогів, які підтримують придатний, простий до використання, але обмежений у можливостях графічний інтерфейс. Однією з причин обмеженості AWT є те, що AWT перетворює свої візуальні компоненти у відповідні їм еквіваленти, платформи на якій встановлена віртуальна машина Java. Це означає, що зовнішній вигляд компонентів визначається платформою, а не закладається в Java. Оскільки компоненти AWT використовують «рідні» ресурси коду, вони називаються ваговитими ({{lang-en|highweigh}}).
 
Використання «рідних» рівноправних комонентівкомпонентів породжує деякі проблеми. По-перше, у зв'язку із різницею, що існує між операційними системами, компонент може виглядати або навіть вести себе по-різному на різноманітних платформах. Така мінливість суперечила філософії Java: «написане один раз, працює скрізь». По-друге, зовнішній вигляд кожного компонента був фіксованим (оскільки усе залежало від платформи), і це неможливо було змінити (принаймні, це важко було зробити). У зв'язку з цим в AWT на різних платформах виникали різні помилки і програмісту доводились перевіряти працездатність програм на кожній платформі окремо<ref name=CoreJava> Библиотека профессионала, том 1. — С. 306</ref>.
 
Незабаром після появи початкової версії Java, стало очевидним, що обмеження, властиві AWT, були настільки незручними, що потрібно було знайти кращий підхід. У результаті з'явились класи Swing як частина бібліотеки базових класів Java (JFC). В 1997 році вони були включені до Java 1.1 у вигляді окремої бібліотеки. А починаючи з версії Java 1.2, класи Swing (а також усі останні, що входили до JFC) стали повністю інтегрованимими у Java. Щоправда графічні класи AWT до сих пір використовується при написанні невеликих програм та [[аплет]]ів. Крім того Swing хоч і надає більше можливостей з роботою з графікою, проте не заміняє їх повністю. Так, наприклад, обробка подій залишилась та ж сама<ref name=CoreJava/>.