Standard Widget Toolkit

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Standard Widget Toolkit (SWT) je knihovna grafických uživatelských prvků pro platformu Java. Původně byla tato knihovna vyvinuta firmou IBM a nyní je ve správě nadace Eclipse Foundation, spolu s projektem Eclipse IDE. Je alternativou k AWT a Swing - GUI nástrojů od společnosti Sun Microsystems jako součást Java Platform, Standard Edition.

Knihovna SWT je napsaná v Javě. K vykreslovaní prvků GUI používá nativní knihovny operačních systémů prostřednictvím JNI (Java Native Interface), a to obdobným způsobem jako programy psané s použitím nativního API operačního systému. +more Programy používající SWT jsou přenosné, ale implementace „toolkitu“, ačkoliv je napsán v Javě, je unikátní pro každou platformu.

Knihovna je licencovaná pod Eclipse Public License.

...
...
...

Historie

AWT (Abstract Window Toolkit) byla první Java GUI knihovna představená v JDK 1. 0, jako jedna z komponent Sun Microsystems Java platformy. +more Původní AWT byl jednoduchý Java wrapper okolo systémem poskytovaných ovládacích prvků (widgetů) jako menu, okna a tlačítka.

Swing byla knihovna další generace GUI toolkitu představená společností Sun v J2SE 1. 2. +more Swing knihovna byla vyvinuta s cílem poskytnout bohatší sadu komponent než AWT. Swingové GUI prvky jsou 100% Java bez jakéhokoli nativního kódu: místo toho, aby obalovaly nativní GUI komponenty, Swing je kreslí sám, kdy pomocí Java2D volá nízkoúrovňové rozhraní operačního systému pro kreslení.

Kořeny SWT směřují zpátky k práci kterou udělala společnost Object Technology International, dále OTI, když v roce 1990 vytvářela multiplatformní, přenositelné, nativní widgetové rozhraní pro Smalltalk (původně OTI Smalltalk, který se v roce v roce 1993 stal IBM Smalltalkem). CW (Common Widget) vrstva IBM Smalltalku poskytovala rychlý, nativní přístup k mnoha sadám ovládacích prvků na různých platformách avšak společné API nabídla bez tzv. +more problému "nejmenšího společného jmenovatele" kterým trpěly ostatní přenositelné GUI toolkity. IBM v té době vyvíjela vývojové prostředí VisualAge které bylo psané ve Smaltalku. Svůj kód se rozhodli uvolnit pro open-source komunitu což vedlo k vývoji Eclipse, který se měl stát novým konkurentem pro ostatní vývojová prostředí jako je Microsoft Visual Studio. Eclipse se vyvíjel v Javě a IBM vývojáři při potřebě toolkitu který by měl "nativní look and feel" a "nativní výkon", vytvořili SWT jako náhradu za Swing .

Návrh

Vzhled GUI prvku v operačním systému Linux SWT je obálkou okolo nativních objektů - GTK+ objektů, Win32 objektů atd. +more Z tohoto důvodu jsou SWT widgety často označovány jako "heavyweight" (pod lehkou obálkou se skrývají těžké nativní objekty). V případech, kdy nativní GUI knihovny neposkytují požadovanou funkčnost pro SWT, SWT tuto funkčnost implementuje sám, obdobně, jako to dělá Swing. V podstatě lze říci, že SWT je jakýmsi kompromisem mezi vzhledem a nízkým výkonem z AWT a vysokou úrovní snadnosti používání ze Swingu. .

Podle Eclipse Foundation, "SWT a Swing jsou různé nástroje vytvořené s různými cíli. Cílem SWT je poskytovat API pro přístup k nativním grafickým prvkům napříč širokým spektrem platforem. +more Hlavními cíli návrhu jsou: velká rychlost, nativní vzhled a hluboká platformní integrace. Swing je naproti tomu navržen tak aby umožňoval vysoce přizpůsobitelný vzhled který je pak stejný na všech platformách. ".

SWT je relativně jednodušší než Swing, bez "nepotřebných" (pro průměrného vývojáře) nadstandardních funkcí. To však vede k argumentaci, že SWT oproti Swingu některou funkčnost postrádá.

Přestože SWT neimplementuje populární Model-View-Controller architekturu používanou ve Swingu a v mnoho dalších GUI toolkitech, JFace knihovna, která je vyvíjena v rámci stejného projektu Eclipse, představuje implementaci Model-View-Controlleru s vysokou úrovní abstrakce, jako nadstavbu SWT. Vývojáři se mohou rozhodnout pro použití JFace kvůli pružnějším a abstraktnějším datovým modelům pro komplexní SWT prvky, jako jsou stromy, tabulky a seznamy, nebo mohou přistupovat k těmto prvkům přímo podle potřeby.

Výkon

SWT bylo navrženo tak aby bylo velmi výkonné; rychlejší, lehčí a s lepší schopností využití systémových prostředků, než Swing. Byly zde určité pokusy srovnat SWT se Swingem pomocí různých výkonnostních testů (benchmarků), které dávaly za pravdu že SWT je rychlejší, ačkoliv tyto testy nebyly dostatečně komplexní na to dospět k rozhodujícímu závěru. +more Další "real-life" testy ale neurčily jasného vítěze, a spíše prokázaly na to, že výsledky silně závisí na kontextu a prostředí aplikace.

Vzhled

Protože SWT používá k vykreslování nativní systémové knihovny, jeho prvky mají stejný "look and feel" jako nativní grafické prvky tohoto systému.

Vzhledem k architektuře "obálky", SWT na rozdíl od Swingu nevyžaduje při malý změnách v nativních GUI knihovnách aktualizaci v aplikacích, kde je použit. Jinak řečeno, při menší aktualizaci vzhledu nebo chování nativních knihoven v operačním systému se toto ihned projeví i v programu napsaném v SWT. +more Naopak je tomu u Swingu, kdy s každou změnou operačního systému se musí aktualizovat Swing knihovna aby začala "napodobovat" nové chování.

Příklad

Výsledek v prostředí GTK+

Jednoduchý program Hello World používající SWT. Zobrazuje okno (Shell) a popisek (Label).

import org.eclipse.swt.*; import org.eclipse.swt.widgets.*;

public class HelloWorld { public static void main (String[] args) { Display display = new Display; Shell shell = new Shell(display); Label label = new Label(shell, SWT. NONE); label. +moresetText("Hello World"); label. pack; shell. pack; shell. open; while (. shell. isDisposed) { if (. display. readAndDispatch) display. sleep; } display. dispose ; } }.

Na rozdíl od Swingu, Display třída přistupuje k vrstvě operačního systému, a její zdroje musí být explicitně uvolněny ve chvíli kdy se už nevyužívají.

Podporované platformy

Azureus BitTorrent klient v prostředí GTK+

SWT musí být portován pro každou nově vytvořenou systémovou GUI knihovnu (platformu). To znamená že na rozdíl od Swingu a AWT, SWT není podporován na všech platformách, které podporuje Java. +more SWT není součástí Java release. K dispozici je také několik důkazů o tom, že výkon SWT na jiných platformách než Windows, je výrazně méně efektivní. Protože SWT používá různé nativní knihovny na specifické platformě, mohou být vývojáři SWT vystaveni specifickým bugům pro tuto platformu.

SWT je "odkryt" vývojáři na mnohém nižší úrovni než Swing. Je to důvodem toho, že SWT je technicky pouze vrstva nad nativními knihovnami operačních systému poskytujících GUI funkcionalitu.

Vzhledem k tomu že SWT implementace je unikátní pro danou platformu, musí být SWT (JAR soubor) distribuován pro každou platformu zvlášť.

K červenci 2008 SWT podporuje následující platformy a / nebo GUI knihovny:

* Windows XP, Windows Vista, Windows 7: ** Win32 ** WPF (ve vývoji) * AIX, FreeBSD, Linux, HP-UX, Solaris: ** Motif ** GTK+ * Mac OS X: ** Carbon ** Cocoa (ve vývoji) * QNX Photon * Pocket PC

Aplikace

Příklad aplikací používajících SWT:

* IBM Rational Software produkty: Rational Application Developer, Rational Software Architect, Rational Team Concert a další. * IBM Lotus Software včetně Notes, Sametime, Symphony a Expeditor * Vuze, dříve Azureus * Eclipse a jeho plug-iny * GumTree Platform (vědecké vývojové prostředí) * Haystack * RSSOwl feed aggregator * uDig GIS nástroj

Odkazy

Reference

Související články

Abstract Window Toolkit * Swing

Externí odkazy

[url=http://www. eclipse. +moreorg/swt/]SWT hlavní stránka[/url] * [url=http://wiki. eclipse. org/index. php/FAQ_Where_can_I_find_more_information_on_SWT%3F]Další informace o SWT[/url] * [url=http://www. cs. umanitoba. ca/~eclipse/]SWT tutorial a hlavní dokumentace eclipse[/url].

Kategorie:Java Kategorie:Widget toolkity

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top