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.