Från din lista:
I/O
Är det någon som är Node.JS riktigt starka sida så är det hantering av I/O, så på denna punkt vinner Electron/Node.JS över både .NET och Java/springboot
UI
Här beror det primärt på vad man är van men, har egentligen inte gjort speciellt mycket UI och när det hänt har jag alltid föredragit webfront-ends just för att kunna köra det på vilket OS som helst. Electron är i praktiken en Chrome-fönster i en lokal applikation, d.v.s. man använder samma verktyg där som man designar webbapplikationer med och finns "drag-n-drop" (men personligen vill jag göra UI i "kod", men kanske säger hur simpla saker jag gör UI-mässigt). Givet vilka applikation som är gjorda i Electron så visar det ändå hur bra tekniken fungerar.[/li]
Industrianpassat
.NET är betydligt vanligare i Sverige än vad det är i stort. Node.JS har lite samma status i Nordamerika som .NET har här. Java/Spring Boot/Node.JS är alla så välanvända i "industrin" att ingen kommer försvinna under övrskådlig tid. NPM (pakethanterare för JS) måste rimligen ha klart mest paket ställd mot NuGet och whatever kan tänkas finnas i Java-världen (har varit i den, men är väldigt länge sedan nu, då var fortfarande J2EE och serverlets "hippt")
Snabbutvecklat
Är det något JS, Python m.fl. har en fördel mot statiskt typade kompilerade språk är det snabbare turn-around-tid vid utveckling. Personligen tycket jag värdet från statisk typning + allt det medför i form av möjlighet att hitta fel tidigt väger upp extra-tiden, föredrar därför TypeScript över både JS och Python (men Python + frivillig typanotering + VS Code tar en en hyfsad bit på vägen och då slipper man fortfarande helt kompilering-steg)[/li]
Grafer och CRUD
Ser inte riktigt varför dessa ska grupperas, men finns väldigt bra stöd för visualisering av data i webbläsaren och dessa fungerar även i Electron. CRUD vilar ju på I/O, I/O är Node.JS verklig starka punkt ställd mot .NET och Java.
Passa alla plattformer
Detta är .NET riktigt svaga sida, även om det blivit rejält mycket bättre med .NET-core. Och även med .NET-core har ARM64 stödet varit ett sorgebarn, men även det jobbas det på rejält på numera från Microsoft sidan och senaste versionen av .NET core har enorma prestandavinster på ARM64 (men säger mer om hur kasst det var innan, både Java och NodeJS har redan lysande ARM64 stöd).
WPF verkar lite på väg ut och vad jag kan se fungerar det bara under Linux+.NET-core via Wine, vilket i praktiken säger att det inte fungerar på Linux. Det borde helt utesluta MacOS.
Det jag hittade om MAUI är att det initialt kommer stödja Windows, MacOS, iOS och Android, ser inget om stöd för "vanliga" Linux.
Så även om dotnet-core gjort .net tillgängligt för Windows, MacOS och Linux i "back-end" är det fortfarande ett rätt uselt val för Linux UI. Java är ett helt OK val, webb-teknik (t.ex. Electron) är det klart "säkraste" valet då det har lysande stöd på alla relevanta OS.
Ovanpå det nämnde du C++ för högprestanda saker. C++ är tyvärr inte speciellt enkelt att integrera med något annan programspråk, utom möjligen C, då man aldrig standardiserat dess ABI. Men då NodeJS är byggt på bibliotek som själva är utvecklade i C++ är det av alternativen det som är enklast och har minst overhead mot C++ extensioner. Beroende på vad man gör är det i.o.f.s. ibland möjligt att köra beräkningar i en separat process, i det läget kan man ju kombinera det med vilken annan teknik/annat språk som helst utan större problem.
Bra inlägg!
Jag har kört mycket Spring Boot och jag gillar det. Enkelt att komma igång osv samt att det finns mycket manualer.
Jag väljer alltid det enklaste. Viktigt för mig är att det är inte beroende av plattform.
Så webbapplikationer kommer vara framtidens applikationer där vanliga "offline"-applikationer fasas ut helt och hållet på grund utav internets kraft?
Om det är sant, då kan jag lika gärna hålla mig kvar vid Spring Boot och komplettera med JavaScript t.ex. AngularJS, React eller Vue.