Rychlý vývoj GUI aplikace

ably

Rychlý vývoj GUI aplikace
« kdy: 06. 08. 2015, 13:16:20 »
Nazdar ludia!

Co sa v dnesnej dobe pouziva na rychly vyvoj GUI aplikacii, ktore su v podstate hlavne nadstavbou nad DB?

Kedysi to bolo Visual FoxPro, kde stacilo natahat tabulky, spravit spojenia medzi nimi a ostatne sa uz "robilo samo". V pohode to zvladalo nacitat 10 000 riadkov po 10 prvkoch do tabulky behom 2 sekund a to na Pentiu 166 s 32MB RAM. Zdrojom bola tabulka s jednoduchym JOINom podla primarneho kluca.

Dnes pouzivam na to zakladne Javu Swing Hibernate Firebird a na relativne novom Core i5, 2GHz s 8GB RAM to nacitava z DB a zobrazuje rovnakych 10 000 riadkov asi tak 4 sekundy - vacsinu toho zaberie Swing, ktory prechadza nacitavane prvky. Nie je to take pohodlne, musim si robit triedy na ORM a na tie 4 sekundy sa dostanem iba ked si rucne pisem query v JPQL (ide to aj ked dam vzdy nacitat tu JOINovanu zavislost, cim si ale spomalim vsetko ostatne).

To este nehovorim, ze vo VFP som nemusel riesit spustanie niektorych akcii v GUI threade alebo inde, ono to nejak automagicky fungovalo.
Chcelo by to nieco desktopove (nie web), z coho sa este daju volat funkcie v nativnych libkach (.dll/.so). Tiez by som chcel GUI designer, lebo rozvrhovat elementy v kode je nepohodlne.

Je teda nejaky framework alebo jazyk, s ktorym sa da na par riadkov spravit take nieco rychle a spolahlive, ako to bolo vo VFP? Ocenim aj iba navrhy.
« Poslední změna: 06. 08. 2015, 22:35:03 od Roman Bořánek »


acko

Re:Rychly vyvoj GUI app
« Odpověď #1 kdy: 06. 08. 2015, 13:31:05 »
A toho nastupcu foxpro si neskusal ?

https://msdn.microsoft.com/en-us/vfoxpro/bb190225.aspx

perceptron

Re:Rychly vyvoj GUI app
« Odpověď #2 kdy: 06. 08. 2015, 13:38:36 »
Citace
a zobrazuje rovnakych 10 000 riadkov asi tak 4 sekundy - vacsinu toho zaberie Swing, ktory prechadza nacitavane prvky.
co tam trva swingu tak dlho?

Citace
VFP som nemusel riesit spustanie niektorych akcii v GUI threade
a co robilo vfp pri 5 sekundovych akciach? vytuhlo? v starom visualbasicu bola direktiva kde sa gui vlakno vzdalo kontroly aby sa aspon refreshovalo ui.

----
co takto zvolit c#?

Radovan.

Re:Rychly vyvoj GUI app
« Odpověď #3 kdy: 06. 08. 2015, 17:55:03 »
Nemohl jsem si pomoci, bylo to pár centimetrů od tebe: http://www.zdrojak.cz/clanky/vyvojari-nac-ten-spech/ ;D

A k té Javě, nepomohlo vypnout zobrazování, spáchat změny, a potom to zobrazování zase zapnout a všechno publikovat najednou?

robotron

Re:Rychly vyvoj GUI app
« Odpověď #4 kdy: 06. 08. 2015, 18:08:56 »
(..) 10 000 riadkov asi tak 4 sekundy - vacsinu toho zaberie Swing, ktory prechadza nacitavane prvky. (..)

Tohle me zarazilo, jak jako Swing prochazi nacitane prvky? Predpokladam, ze bud nactes prvky do mezilehle datove struktury a GUI by pak melo vykreslit prvek cislo N az N+velikost GUI "vyrezu", nebo trochu min prasacky, ctes z db rovnou rozsah N az N+velikost. Pokud jako do Swinziho neceho nacpes rovnou vsechny prvky ze SELECTu... pak co asi cekas. Ocekavej to, ze to bude chodit jako 50% vsech dnesnich indickejch SW, ktery akorat varej CPU na to malo mizive funkcnosti.


Petr

Re:Rychly vyvoj GUI app
« Odpověď #5 kdy: 06. 08. 2015, 18:49:35 »
Rychle se da spichnout GUI v QML a data k tomu dostat data but primo z primo, nebo z C++, zalezi o jakou DB se jedna.

Pavel Kysilka

Re:Rychly vyvoj GUI app
« Odpověď #6 kdy: 06. 08. 2015, 20:12:43 »
Nazdar ludia!

Dnes pouzivam na to zakladne Javu Swing Hibernate Firebird a na relativne novom Core i5, 2GHz s 8GB RAM to nacitava z DB a zobrazuje rovnakych 10 000 riadkov asi tak 4 sekundy - vacsinu toho zaberie Swing, ktory prechadza nacitavane prvky. Nie je to take pohodlne, musim si robit triedy na ORM a na tie 4 sekundy sa dostanem iba ked si rucne pisem query v JPQL (ide to aj ked dam vzdy nacitat tu JOINovanu zavislost, cim si ale spomalim vsetko ostatne).


zdravim,

zobrazovat v GUI 10.000 prvku/radek uzivateli je podle me ve vetsine pripadu obecne nepochopeni funkce GUI.

Takove mnozstvi radek neni schopen uzivatel precist nebo s tim pracovat.

Resi se to treba tak, ze ukazete 100 nejnovejsich zaznamu a zbytek si uzivatel vyfiltruje nebo ma nejake pohledy na data.
To same muze byt, ze zpracovani 10k radek dat necham na databazi, ktera je psana v C/C++ a zobrazim to uz v jinem programovacim jazyce/prostredi (Java,Web, #C,...).
Ne vzdy to asi bude efektivni to prohanet pres ORM vrstvu.

gf

eMko

  • ****
  • 456
    • Zobrazit profil
    • E-mail
Re:Rychly vyvoj GUI app
« Odpověď #7 kdy: 06. 08. 2015, 20:51:45 »
Jak se ve Swingu (WPF, Qt, čemkoliv jiným) rychle zobrazuje 10 000 řádků uživateli? Jednoduše - nezobrazují se! (A to ani ve FoxPro.)

Je potřeba vykreslit na obrazovku akorát to, co je vidět, což může být 50 až 100 řádků max, což je většinou velmi rychle. Při posunutí scrollbaru se prvky překreslí a opět se vykresluje pouze to, co je zrovna vidět. Data jsou většinou načtena v paměti, pokud je jí dost. Stejný trik "co není vidět, tím se nezabývám" se používá všude, včetně 3D stříleček.

Jak konkrétně to udělat záleží na mnoha faktorech a sorry, nelze to jednoduše a krátce napsat do fóra. Zapátrej v dokumentaci. Obecně existují buď virtualizované panely (virtualized panes nebo virtualized panels) kde se o vykreslení budeš starat sám nebo kontejnery, které znovupoužívají již vytvořené/vykreslené komponenty - ty již pro Swing nějaké existují. Pokud nenajdeš nic vhodného ve Swingu jako takovém, zkus zapátrat v NetBeans Platform.

Rozdíl také může udělat hardware akcelerace - u některých virtuálních mašin je ve výchozím nastavení pro Swing vyplá.

Pokud výše napsané je neprůchozí (moc práce/málo znalostí), tak co takhle udělat UIčko jinak? 10 000 řádků uživatel stejně ručně procházet nikdy nebude a když zákazník zatvrzele bude tvrdit že jo, tak co takhle udělat stránkování podobně jak na webu? Swing umí pracovat s vrstvami/překryvy, takže při načítání se dá udělat i takové to hnusné poloprůhledné nasrávací AJAX kolečko.

Nativní kód se mi vždy volal líp z .Netu přes P/INVOKE než z Javy přes JNA (JNI jsem nikdy nezkusil ;-) ), ale dá se to. Otázka, je to fakt nutné? Kompilovat a distribuovat binárky pro všechny platformy + zvlášť 32/64bit verze je trochu opruz, většinou je lepší se tomu vyhnout.

tomas.e

Re:Rychlý vývoj GUI aplikace
« Odpověď #8 kdy: 07. 08. 2015, 11:48:49 »
Teď je to už trochu mimo hlavní proud, ale s DB to pracuje stále dobře. Je to PowerBuilder

https://en.wikipedia.org/wiki/PowerBuilder