Кіріспе
Java платформасымен қолдануға арналған графикалық виджеттер жиынтығы. Стандартты виджеттер жиынтығы (SWT) – Java платформасымен қолдануға арналған графикалық виджеттер жиынтығы. Ол бастапқыда IBM компаниясында Стивен Нортховермен әзірленген, ал қазір Eclipse IDE-мен бірге Eclipse Foundation қоры қолдайды. Бұл Sun Microsystems компаниясы Java Platform, Standard Edition (J2SE) бөлігі ретінде ұсынған Abstract Window Toolkit (AWT) және Swing Java графикалық пайдаланушы интерфейсі (GUI) құралдарына балама болып табылады. GUI элементтерін көрсету үшін SWT Java Native Interface (JNI) арқылы операциялық жүйенің түпкілікті GUI кітапханаларына қол жеткізеді, бұл операциялық жүйеге тән қолданбалы бағдарламалау интерфейстерін (API) пайдалана отырып жазылған бағдарламаларға ұқсас. SWT-ны шақыратын бағдарламалар көшпелі, бірақ құралдар жиынтығының іске асырылуы, оның бір бөлігі Java тілінде жазылған болса да, әрбір платформа үшін ерекше. Бұл құралдар жиынтығы Eclipse Public License лицензиясы бойынша таратылатын тегін және ашық кодты бағдарламалық қамтамасыз ету болып табылады, ол Open Source Initiative ұйымымен бекітілген.
The Standard Widget Toolkit (SWT) is a graphical widget toolkit for use with the Java platform. It was originally developed by Stephen Northover at IBM and is now maintained by the Eclipse Foundation in tandem with the Eclipse IDE. It is an alternative to the Abstract Window Toolkit (AWT) and Swing Java graphical user interface (GUI) toolkits provided by Sun Microsystems as part of the Java Platform, Standard Edition (J2SE). To display GUI elements, the SWT implementation accesses the native GUI libraries of the operating system using Java Native Interface (JNI) in a manner that is similar to those programs written using operating system specific application programming interfaces (APIs). Programs that call SWT are portable, but the implementation of the toolkit, despite part of it being written in Java, is unique for each platform. The toolkit is free and open source software distributed under the Eclipse Public License, which is approved by the Open Source Initiative.
Тарих
Java GUI-дің алғашқы құрал жиынтығы – Abstract Window Toolkit (AWT), Java Development Kit (JDK) 1.0 нұсқасымен Sun Microsystems Java платформасының бір бөлігі ретінде ұсынылды. Бастапқы AWT – менюлер, терезелер және түймелер сияқты жергілікті (операциялық жүйемен қамтамасыз етілетін) виджеттерге арналған қарапайым Java орауыш кітапханасы. Swing – Sun компаниясы Java Platform, Standard Edition (J2SE) 1.2 нұсқасында ұсынған келесі буын GUI құралы. Swing AWT-ге қарағанда GUI бағдарламалық компоненттерінің кеңейтілген жиынтығын ұсыну үшін әзірленді. Swing GUI элементтерінің барлығы Java кодынан тұрады, жергілікті код жоқ: жергілікті GUI компоненттерін ораудың орнына, Swing Java 2D-ді пайдалану арқылы операциялық жүйенің төменгі деңгейдегі сурет салу функцияларын шақырып, өзінің компоненттерін салады. SWT-нің тамыры 1990 жылдарға дейін Object Technology International (OTI) компаниясының Smalltalk үшін көп платформалық, портативті, жергілікті виджет интерфейстерін жасаған жұмысына салады, бастапқыда OTI Smalltalk үшін, ол 1993 жылы IBM Smalltalk болып өзгерді. IBM Smalltalk-тің Common Widget қабаты бірнеше платформалық виджет жиынтықтарына жылдам, жергілікті қол жеткізуді қамтамасыз етті, сонымен қатар басқа портативті графикалық пайдаланушы интерфейсі (GUI) құрал жиынтықтарына тән ең төменгі ортақ белгі проблемасынан қашқақтады, сонымен қатар ортақ API-ді ұсынды. IBM VisualAge интеграцияланған даму ортасын (IDE) әзірлеп, Smalltalk-та жазды. Олар жобаны ашық кодқа айналдыруға шешім қабылдады, бұл Microsoft Visual Studio сияқты басқа IDE-лермен бәсекелесуді көздеген Eclipse-тің дамуына әкелді. Eclipse Java тілінде жазылған, ал IBM әзірлеушілері "жергілікті көрініс пен сезім" және "жергілікті өнімділік" қасиеттерін қамтитын құрал жиынтығы қажет деп шешті, сондықтан Swing құралын алмастыру үшін SWT құралын жасады.
Дизайн
SWT – GTK объектілері, Motif объектілері және т.б. сияқты түпкі кодтық объектілердің айналасына жасалған орама. Осы себепті SWT виджеттері көбінесе «ауыр» деп аталады, бұл «ауыр» түпкі объектінің үстінен жасалған жеңіл Java орамасын көзге елестетеді. Егер түпкі платформаның GUI кітапханалары SWT үшін қажетті функционалдықты қолдамаса, SWT Java-да өзінің GUI кодын іске асырады, Swing сияқты. Қысқасы, SWT – AWT-нің төменгі деңгейдегі өнімділігі мен сыртқы түрі мен Swing-тің жоғары деңгейдегі қолдануға ыңғайлылығы арасындағы шартты келісім. Eclipse Foundation мәлімдемесіне сәйкес, «SWT және Swing – әртүрлі мақсаттармен құрылған екі түрлі құрал. SWT-нің мақсаты – платформалардың кең спектрінде түпкі виджеттерге қол жеткізуге арналған ортақ API ұсыну. Басты жобалау мақсаттары – жоғары өнімділік, түпкі сыртқы түрі және терең платформалық интеграция. Ал Swing, керісінше, барлық платформаларда біркелкі болатын, кеңейтілген сыртқы түрін жасауға бағытталған». SWT таза дизайнымен ерекшеленеді, бұл Design Patterns еңбегімен танымал Эрих Гаммадан алынған шабыттың нәтижесі. SWT – Swing-ге қарағанда қарапайым құрал жиынтығы, орташа деңгейдегі әзірлеуші үшін (мүмкін) аз артық мүмкіндіктерге ие. Осы себепті кейбір адамдар SWT-нің Swing-ге қарағанда кем функционалдыққа ие екенін айтады. Java тілін жасаған Джеймс Гослинг SWT-нің тым қарапайым екенін және жаңа платформаларға аударудың қиын екенін мәлімдеді, себебі бұл AWT-нің бір кезде аударуда қиындықтарға тап болған себебіне ұқсас: ол тым қарапайым, тым төменгі деңгейде және Win32 GUI API-ге тым байланысты, бұл Motif және OS X Carbon сияқты басқа GUI құралдарына SWT API-ді бейімдеуде проблема тудырады. Бұл терең интеграцияның бірнеше пайдалы тұстары бар, мысалы, SWT-ге Microsoft Windows жүйесінде ActiveX объектілерін орауға мүмкіндік беру.
Өнер көрсету
SWT жоғары өнімділік GUI құралдар жиынтығы ретінде әзірленген; Swing-ке қарағанда жылдамырақ, жауап беретінірек және жүйе ресурстарын аз қолданады. SWT мен Swing-ті салыстыруға жасалған бірнеше әрекет болды, олар SWT Swing-ден тиімдірек болуы керек деген қорытындыға келді. Алайда, бұл салыстыруға алынған қосымшалар SWT немесе Swing-тің барлық мүмкін қолданылуы үшін нақты қорытынды жасауға жеткілікті күрделі болмады. Күрделі салыстыру нәтижелері көрсеткендей, жалпы жағдайда Swing де, SWT де бір-бірінен басымдық танытпады.
Кеңейту мүмкіндігі және басқа Java кодымен салыстыру
Жергілікті кодты пайдалану себепті, SWT кластары барлық виджет кластары үшін оңай мұрагерлікке мүмкіндік бермейді, бұл кейбір пайдаланушылардың пікірінше, кеңейтімділікке зиян келтіруі мүмкін. Екі құрал жиынтығы да жаңа виджеттерді тек Java кодын пайдаланып жасауды қолдайды, бірақ SWT-де жаңа виджеттің әрбір платформада жұмыс істеуі үшін қосымша жұмыс қажет. Егер осы шара қабылданбаса, жадтың қателіктері немесе басқа күтпеген әрекеттер пайда болуы мүмкін. Осы мәселе бойынша кейбіреулер: "ресурстарды нақты түрде босату, кем дегенде орташа Java әзірлеушісі үшін әзірлеу уақыты мен шығындарына кері қадам болуы мүмкін" және "бұл екі жақты нәрсе. Бұл Swing-ті пайдаланғанда көбірек автоматтандырудың (және баяулықтың) орнына SWT әзірлеушісі үшін көбірек бақылауды (және күрделілікті) білдіреді" деп мәлімдеген. SWTSwing – SWT үшін Swing артқы жағын қамтамасыз ететін жоба. Нәтижесінде, SWT GTK немесе Windows-тың тума объектілерінің орнына Swing-тің тума объектілерін пайдаланып іске қосылуы мүмкін. Бұл SWT-ге Swing қолдайтын барлық платформада жұмыс істеуге мүмкіндік береді. 2006 жылдан бастап DWT деп аталатын D бағдарламалау тіліне SWT 3.2 порты жасалды. Содан бері жоба Windows 32 бит және SWT 3.4 үшін Linux GTK 32 бит қолдауын қамтамасыз етеді. DWT жобасында JFace және Eclipse формаларының портын қамтитын қосымша пакет те бар. JavaFX Java SE платформасының бөлігіне айналғаннан кейін, SWTSwing Swing-ке ұқсас JavaFX-қа негізделген SWT үшін артқы жақты әзірлеуге қызығушылық артты. Осы мақсатқа жетуге тырысқан маңызды жоба – JavaFX-тегі SWT, ол 2014 жылы e(fx)clipse құрамына енді.