Portál AbcLinuxu, 2. května 2025 05:33
Puvodni GUI toolkit pro Javu bylo AWT. V podstate se jednalo o C/Java rozhrani pro nativni komponenty operacniho systemu. AWT melo hromadu chyb, v podstate zpusobenych prilis casnym uvedenim. Misto opravovani AWT se ale Sun dal jinou cestou.
Najal cloveka z firmy zabyvajici se Smalltalkem a udelal z neho sefa GUI vyvoje. Tento clovek pak protlacil Swing jako hlavni GUI toolkit v Jave. Swing byl v dobe uvedeni jeste vice bugy nez AWT a v podstate nemozny pouzivat. Na rozdil od AWT se ve Swingu o vsechno staral Java kod. To zpusobovalo jeho pomalost. Nektere veci pak nebylo z duvodu vykonu mozne delat vubec, napriklad rendering fontu.
Je zajimave ze na vyvoji Swingu se podilele take Netscape. V dobe kdy je valcoval Microsoft se rozhodl cely browser prepsat do Javy. Swing pak mel byt GUI toolkit pro novy browser. Dalsi pozustatek je treba Rhino - javascript engine spravovany Mozillou.
Swing byl hodne bugy a navic opravdu pomaly. To se zmenilo s Javou 1.4, kde je opravena cela rada chyb a vylepsen vykon. Java 5 pak pridava nativni zvhled pro Microsoft. Java 6 pak vylepsuje nativni vzhled, vylepsil vykon a 2D akceleraci vykreslovani. Dnes je Swing odladeny a dobre pouzitelny. Podle nekterych testu ma rychlejsi vykreslovani nez GTK...
Zakladnim problemem Swingu je jeho slozitost. I primitivni JButton ma stovky metod. Dale existuji mnozstvi layout manageru, listeneru apod. Pro zacatecniky je tezke zacit. Trva to tak rok, nez se dostavi dobra produktivita. Na druhou stranu je jako 'svycarsky nuz premenitelny na tank'. Pri dobrem zvladnuti ma Swing velmi siroke moznosti.
Tiskni
Sdílej:
Ad GC, myslim ze soucasny je ve vlastnim threadu a nezpusobuje zamrzani.Defaultní GC je pořád jednovláknový Stop The World. Ale můžu si vybrat i paralelizovanou variantu, a dokonce i variantu, která ostatní vlákna neblokuje. Tedy na víceprocesorovém stroji, mám pocit, že jeden procesor si v takovém případě vlákno GC uzurpuje pro sebe
To jako JVM umí tech algoritmů několik a při startu se to dá opšnou nastavit? Já žiju v tom, že je tam jenom stop-the-world mark'n'sweep.Přesně tak. Teda ne úplně přesně, ony ty algoritmy jsou v podstatě pořád stejné, akorát si můžeš vybrat, jestli chceš jedno- nebo vícevláknový a blokující nebo neblokující ostatní vlákna. Jinak GC je generační, pro první generaci se používá něco na způsob kopírovacího algoritmu, pro druhou mark and sweep. No a aby toho nebylo málo, tak teď vyvíjejí ještě úplně jiný (G1).
Ono udělat paralelní GC (natož pak realitmový) asi nebude žádná prdel.No to není. On i ten "neblokující" algoritmus na dvě krátké chvilky všechna ostatní vlákna zablokuje
Hm, a pro .NET je tech firem asi 20, co vyviji takoveto komponenty (co znam ja....),takze je to mozna opravdu spis o nevhodnosti javy pro desktop app....Je to především tím, že .NET je v současné době primárním prostředím pro psaní Windows aplikací. Což má vliv jak nepřímý (tj. firmy dělají komponenty), tak přímý (tj. Microsoft si s tím dáva opravdu velkou práci - je to důležitější než celý kernel Windows a Office dohromady).
podpora skinovani (pro vsechny komponenty od devexpress) velice snadno zmenite vzhled cele aplikace moderni vzhled - gradient prechodyAno, toto je opravdu "strašně důležité". Jestli by nebylo lepší se zabývat funkční stránkou aplikace, než tím, že si potencionální uživatel bude moci změnit skin v aplikaci. Nedalo mi to, ale musel jsem si rýpnout. Povšechně v Javě mě chybí (i když teď už sem v ní nic desktopového nedělal, takže nevím kam se hnul vývoj) nějaké rozumné swing komponenty s databázovým bindingem - svého času byly relativně rozumné součástí borlandího JBuilderu.
Zakladnim problemem Swingu je jeho slozitost. I primitivni JButton ma stovky metod.Na tom nesejde, SWING je taková knihovna, ze které si člověk vyzobává to, co zrovna potřebuje. To že má tlačítko x metod, nevadí. Nejjednodušší aplikaci prostě začneš s jedním tlačítkem, textovým polem, metodami getText(), setText() a jednou událostí. S těmi správci rozvržení je to trochu pravda, ale pokud člověk používá NetBeans, tak se s tím velmi rychle vyrovná. Pokud jde o nevýhody Swingu, tak vidím dvě: dost komponent člověk musí suplovat knihovnami třetích stran (třeba open source SwingX) a to, že pod Windows vypadá nativně, zato v Linuxu je to pořád dost mizerné, zvlášť v KDE. Ale vynahradit se to dá look&feely, takže ty aplikace pak vypadají dobře, jen trochu jinak.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.