Ska jag lära mig GTK+, Nuklear, wxWidgets eller OpenJFX?

Permalänk

Ska jag lära mig GTK+, Nuklear, wxWidgets eller OpenJFX?

Jag har tänkt att börja göra grafiska skrivbordsapplikationer för PC. Orsaken har med att dom måste vara snabba. Här handlar det om millisekunder.

Det finns två stora bibliotek i C om man vill göra grafiska bibliotek. Dessa två är Nuklear och GTK+
https://github.com/Immediate-Mode-UI/Nuklear
https://www.gtk.org/
Nuklear är relativt nytt och GTK+ har hängt med sedan 1998.

Det finns även wxWidgets, som är den mest mest populäraste C++ biblioteket för GUI. Det finns QT också, men det kostar pengar.
https://www.wxwidgets.org/

Även OpenJFX finns om man vill göra grafiska applikationer i Java.
https://openjfx.io/

Med OpenJFX, Nuklear, wxWidgets samt GTK+ så kan man lösa exakt samma problem.
Så vad rekommenderar ni?

Jag är en person som vill ha det enkelt. Jag vill sällan lära mig något nytt. När jag väl lär mig något nytt, så sitter jag med den kunskapen väldigt länge. Ordning och reda. Det måste vara öppen källkod för jag litar inte på företag som tar betalt för språk och sedan går det 10 år och företaget lägger ned stödet till språket. Jag är också en person som vill använda ett språk för att göra allt. Jag vet att det är kanske inte direkt optimala, men jag gillar universalspråk.

Permalänk
Inaktiv

Hade inte rekommenderat någon av dom. Qt kostar inte alls pengar så länge du gör opensource grejer, Qt är dessutom överlägset alla andra alternativ i listan.

Några frågor för att lättare kunna ge dig ett rimligt svar:

1. Ska du skapa proprietär mjukvara för försäljning? Opensource mjukvara? Utveckla gärna lite vad det är för typ av produkt.
2. Vilka plattformar måste du stödja? (Windows, Linux, Mac osv)
3. I vilket sammanhang behöver du prestanda? Responstid på några få millisekunder klarar i princip alla moderna UI-ramverk på moderna burkar. Gissar att du kanske i din App vill köra tunga algoritmer och annan tung workload? Sånt brukar man separera från användargränssnittslogiken genom trådning/asynkron programmering.

Om det är möjligt för dig så hade jag kört på WPF för användargränsnittet, och behöver du verkligen brutal prestanda så kan du alltid flytta den tyngre arbetslasten till ett C/C++-bibliotek som du åkallar från C#/CLR. Ser du till att du sköter det asynkrona och trådning snyggt så kommer din applikation prestera fenomenalt.

Att få veta ditt usecase, och vad för applikation du ska skapa, hade gett bästa förutsättningar för att ge bra råd.

Permalänk
Skrivet av anon334363:

Hade inte rekommenderat någon av dom. Qt kostar inte alls pengar så länge du gör opensource grejer, Qt är dessutom överlägset alla andra alternativ i listan.

Några frågor för att lättare kunna ge dig ett rimligt svar:

1. Ska du skapa proprietär mjukvara för försäljning? Opensource mjukvara? Utveckla gärna lite vad det är för typ av produkt.
2. Vilka plattformar måste du stödja? (Windows, Linux, Mac osv)
3. I vilket sammanhang behöver du prestanda? Responstid på några få millisekunder klarar i princip alla moderna UI-ramverk på moderna burkar. Gissar att du kanske i din App vill köra tunga algoritmer och annan tung workload? Sånt brukar man separera från användargränssnittslogiken genom trådning/asynkron programmering.

Om det är möjligt för dig så hade jag kört på WPF för användargränsnittet, och behöver du verkligen brutal prestanda så kan du alltid flytta den tyngre arbetslasten till ett C/C++-bibliotek som du åkallar från C#/CLR. Ser du till att du sköter det asynkrona och trådning snyggt så kommer din applikation prestera fenomenalt.

Att få veta ditt usecase, och vad för applikation du ska skapa, hade gett bästa förutsättningar för att ge bra råd.

1. Jag ska investera i kunskap, dvs det ska vara mjukvara för försäljning. Annars kan man ju ta vilket ap-bibliotek som helst om man bara ska rulla en apelsin på tangentbordet Men jag kommer börja med öppen källkod. Jag gillar dock inte licenser.
2. Alla plattformar. Oftast Windows för skrivbord och Linux för server.
3. Grafer, tunga algoritmer, beräkningar, ansluta USB är viktigt för mig, ansluta internet via socket.

Viktigaste är att det ska vara investerad kunskap. Något som man ska kunna se som meriter.

Applikationer jag kommer skapa är typ loggningsverktyg, databas läsare med tabeller, skicka data igenom USB porten. Nu låter detta rätt grundligt. Men det ska gå snabbt också att utveckla dessa verktyg för specialanpassade problem. Ibland duger inte MySQL Workbench med andra ord.

Permalänk
Inaktiv
Skrivet av heretic16:

1. Jag ska investera i kunskap, dvs det ska vara mjukvara för försäljning. Annars kan man ju ta vilket ap-bibliotek som helst om man bara ska rulla en apelsin på tangentbordet Men jag kommer börja med öppen källkod. Jag gillar dock inte licenser.
2. Alla plattformar. Oftast Windows för skrivbord och Linux för server.
3. Grafer, tunga algoritmer, beräkningar, ansluta USB är viktigt för mig, ansluta internet via socket.

Viktigaste är att det ska vara investerad kunskap. Något som man ska kunna se som meriter.

Applikationer jag kommer skapa är typ loggningsverktyg, databas läsare med tabeller, skicka data igenom USB porten. Nu låter detta rätt grundligt. Men det ska gå snabbt också att utveckla dessa verktyg för specialanpassade problem. Ibland duger inte MySQL Workbench med andra ord.

Låter definitivt som att du vill satsa på C#/WPF. Vill du verkligen investera i kunskap och meriter som är värda att hänga på väggen så måste du kompromissa bort din vilja om öppna fria licenser. Företag som anställer den sortens kunskap du söker arbetar sällan med öppen källkod och gratis mjukvaror.

Utöver det så passar C#/.NET/WPF in på alla dina krav, kan också tipsa om att spana in .NET Core, tror du hade gillat den utvecklingen.

Permalänk
Skrivet av anon334363:

Låter definitivt som att du vill satsa på C#/WPF. Vill du verkligen investera i kunskap och meriter som är värda att hänga på väggen så måste du kompromissa bort din vilja om öppna fria licenser. Företag som anställer den sortens kunskap du söker arbetar sällan med öppen källkod och gratis mjukvaror.

Utöver det så passar C#/.NET/WPF in på alla dina krav, kan också tipsa om att spana in .NET Core, tror du hade gillat den utvecklingen.

Jag gillar C#. Jag är väldigt van med Java så.

Men stora företag brukar väll oftast köra öppen källkod-mjukvaror? Jag har aldrig sett utvecklingsverktyg som är en stängd källkod, förutom MATLAB.

Men är inte WPF lite halvdött? Det är ju gammeldags enligt mig.

Permalänk
Medlem

net core är helt open source. Finns för win, mac o linux ( o snart för arm )

Kommer ett nytt grafisk ramverk för net core, men först i november, då till net core 6, det heter MAUI just nu

WPF hade jag inte satsat på.

// LZ

Permalänk
Skrivet av Tea42BBS:

net core är helt open source. Finns för win, mac o linux ( o snart för arm )

Kommer ett nytt grafisk ramverk för net core, men först i november, då till net core 6, det heter MAUI just nu

WPF hade jag inte satsat på.

// LZ

Berätta mer om net core. Vad gör man där?
Är inte NET core exakt samma sak som en virtuell maskin t.ex. som OpenJDK är?

WPF ger mig nostalgikänslor när man laddade ned Microsoft Visual Studio Visual Basic.NET 2.0.

Där ser man! .NET finns för Linux nu direkt via Microsoft. Äntligen har Microsoft insett att det finns en marknad för Linux

Permalänk
Medlem
Skrivet av heretic16:

Berätta mer om net core. Vad gör man där?
Är inte NET core exakt samma sak som en virtuell maskin t.ex. som OpenJDK är?

WPF ger mig nostalgikänslor när man laddade ned Microsoft Visual Studio Visual Basic.NET 2.0.

Där ser man! .NET finns för Linux nu direkt via Microsoft. Äntligen har Microsoft insett att det finns en marknad för Linux

net core är en version av net framework som är plattformsoberoende. De har skurit bort alla windowsreferenser.

Net core kan du utveckla allt i - från webbar, PWA Appar, windowsprogram(just nu Winforms, bara windows, men som sagt MAUI kommer). Webbtjänster, Rest API, gRPC(efterföljaren till WCF) och vanliga console-program, det är fällkniven du alltid velat ha

https://dotnet.microsoft.com/download/dotnet/5.0

https://devblogs.microsoft.com/dotnet/introducing-net-5/

mvh Lazze

Permalänk
Skrivet av Tea42BBS:

net core är en version av net framework som är plattformsoberoende. De har skurit bort alla windowsreferenser.

Net core kan du utveckla allt i - från webbar, PWA Appar, windowsprogram(just nu Winforms, bara windows, men som sagt MAUI kommer). Webbtjänster, Rest API, gRPC(efterföljaren till WCF) och vanliga console-program, det är fällkniven du alltid velat ha

https://dotnet.microsoft.com/download/dotnet/5.0

https://devblogs.microsoft.com/dotnet/introducing-net-5/

mvh Lazze

Och detta är något som företag brukar lägga tid på?

Låter spännade att det passar alla plattformar. Sådant är framtiden.
Är det som Java? Alltså man kompilerar det på utvecklingsplattformen och sedan är det klart?

Permalänk
Medlem
Skrivet av heretic16:

Och detta är något som företag brukar lägga tid på?

Låter spännade att det passar alla plattformar. Sådant är framtiden.
Är det som Java? Alltså man kompilerar det på utvecklingsplattformen och sedan är det klart?

öh, ha, NET världen är väl typ största utvecklingsplattformen i sverige/norden.

Det är JIT, dvs slutgiltiga binärkompileringen sker första gången man kör koden ... man kan pre-compila om man vill

// LZ

Permalänk
Medlem
Skrivet av heretic16:

Jag gillar C#. Jag är väldigt van med Java så.

Men stora företag brukar väll oftast köra öppen källkod-mjukvaror? Jag har aldrig sett utvecklingsverktyg som är en stängd källkod, förutom MATLAB.

Men är inte WPF lite halvdött? Det är ju gammeldags enligt mig.

Nja, problemet med Open Source är att det är svårt att få support när det strular och uppdateringar och patches är inte alltid garanterade.

.Net har förövrigt utvecklats i rask takt de senaste åren och är väldigt populärt i norden överlag.

Permalänk
Skrivet av Baxtex:

Nja, problemet med Open Source är att det är svårt att få support när det strular och uppdateringar och patches är inte alltid garanterade.

.Net har förövrigt utvecklats i rask takt de senaste åren och är väldigt populärt i norden överlag.

Hur ser det ut för Java då?

Permalänk
Medlem
Skrivet av heretic16:

Hur ser det ut för Java då?

Enligt min erfarenhet är det förhållandevis lite nyutveckling i java om man inte räknar Android men även där föredrar många Kotlin. Av vad jag sett så används Java främst när man har gamla legacy system som är för dyra att byta ut. Finns givetvis undantag.

Jag tror inte det finns många rekryterare som skulle bry sig om ramverken du hade i ditt inlägg. Man kan givetvis kolla på dem för att lära sig det för nöjes skull.

Permalänk
Datavetare

Det är 2021 och ett av kraven är att det ska fungera på Windows och Linux: finns det då något som är vettigare än Electron?

VS Code har visat att Electron fungerar lysande även i riktigt krävande fall, tar man riktigt stora projekt hanterar VS Code dessa långt bättre än t.ex. "vanliga" Visual Studio (fast inte alls säkert att det beror på Electron, men det är ett faktum).

Electron har lysande stöd för Windows, Linux och MacOS. Man man kan ha åsikter om JavaScript som språk, men går ju alltid att använda TypeScript som i alla fall jag tycker rätt majoriteten av de tillkortakommanden JS har. Att kombinera C++ och NodeJS är relativt enkelt, så fungerar att göra de prestandakritiska beräkningarna i C++ och köra UI i Electron.

Electron är öppen källkod och används av bl.a. Visual Studio Code, Slack, Skype, Discord, WhatsApp Desktop samt Atom. D.v.s. flera riktigt populära program -> ingen större risk att Electron försvinner i närtid.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem
Skrivet av heretic16:

Men stora företag brukar väll oftast köra öppen källkod-mjukvaror? Jag har aldrig sett utvecklingsverktyg som är en stängd källkod, förutom MATLAB.

Nä. Det dräller av utvecklingsverktyg som har stängd källkod. Exempelvis Microsoft's Visual Studio som är den garanterat mest använda utvecklingsmiljön för Windows.
Utanför Linux-världen är det bara på senare år som open-source verktyg börjat ta över.

Permalänk
Skrivet av Baxtex:

Enligt min erfarenhet är det förhållandevis lite nyutveckling i java om man inte räknar Android men även där föredrar många Kotlin. Av vad jag sett så används Java främst när man har gamla legacy system som är för dyra att byta ut. Finns givetvis undantag.

Jag tror inte det finns många rekryterare som skulle bry sig om ramverken du hade i ditt inlägg. Man kan givetvis kolla på dem för att lära sig det för nöjes skull.

Jag har hört att Java har mycket gammeldags kod överallt, men att Java skulle vara en marknad för gammal kod, har jag inte uppfattat.

Jag har uppfattat att Java är mer för webbapplikationer, server och applikationer som man kan köra på alla system.

Permalänk
Skrivet av Erik_T:

Nä. Det dräller av utvecklingsverktyg som har stängd källkod. Exempelvis Microsoft's Visual Studio som är den garanterat mest använda utvecklingsmiljön för Windows.
Utanför Linux-världen är det bara på senare år som open-source verktyg börjat ta över.

Jag tror på öppen källkod.
Jag tror också på att det ska vara enkelt. Jag har kodat en hel del och det värsta jag vet är när man får spendera timmar på att få till en liten funktion, för man måste bygga allt från grunden.

Jag har kört OpenJFX och detta gillar jag. Men om kunskapen var värd, vet jag inte. Ser inga företag som väljer det. Jag har dock sett att många stora företag använder QT och C++ när det handlar om att skapa applikationer.

Men dom gör säkert applikationer som inte är på min nivå.

Permalänk
Medlem
Skrivet av heretic16:

Jag har hört att Java har mycket gammeldags kod överallt, men att Java skulle vara en marknad för gammal kod, har jag inte uppfattat.

Jag har uppfattat att Java är mer för webbapplikationer, server och applikationer som man kan köra på alla system.

Java går alldeles utmärkt att använda till allt möjligt, men visst har det blivit så att det största användningsområdet har varit backend för webapplikationer.
Java är inte längre det "nya och heta" och utvecklare har insett att Java kanske inte är riktigt så bra som förespråkarna hävdar, så för helt nya projekt så är det nog inte så ofta man väljer Java just nu. (Det går mode i allt - inklusive programmeringsspråk.) Med det sagt så är Java fortfarande ett språk som används mycket och som säkert kommer att finnas kvar åtskilliga år till - kom ihåg att till exempel Fortran och Cobol fortfarande används en hel del trots sin ålder, men sällan i nya projekt.

Permalänk
Datavetare
Skrivet av Erik_T:

Nä. Det dräller av utvecklingsverktyg som har stängd källkod. Exempelvis Microsoft's Visual Studio som är den garanterat mest använda utvecklingsmiljön för Windows.
Utanför Linux-världen är det bara på senare år som open-source verktyg börjat ta över.

Skulle också gissa att VS är den mest använda utvecklingsmiljön för Windows. Men säger inte det också en del om storlek/komplexitet på majoriteten av alla projekt givet hur VS totalt havererar när man har lite större projekt (som exempel intellisens kan "lagga" i sekunder på stora projekt, vilket i praktiken gör det helt oanvändbart)?

Finns en anledning varför t.ex. JetBrains blir allt mer populär , deras produkter kan till skillnad från VS faktiskt hantera stora projekt (och deras produkter är likt mycket annat stängd kod). VS Code fixar också riktigt stora projekt med bravur.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Inaktiv
Skrivet av Yoshman:

Det är 2021 och ett av kraven är att det ska fungera på Windows och Linux: finns det då något som är vettigare än Electron?

VS Code har visat att Electron fungerar lysande även i riktigt krävande fall, tar man riktigt stora projekt hanterar VS Code dessa långt bättre än t.ex. "vanliga" Visual Studio (fast inte alls säkert att det beror på Electron, men det är ett faktum).

Electron har lysande stöd för Windows, Linux och MacOS. Man man kan ha åsikter om JavaScript som språk, men går ju alltid att använda TypeScript som i alla fall jag tycker rätt majoriteten av de tillkortakommanden JS har. Att kombinera C++ och NodeJS är relativt enkelt, så fungerar att göra de prestandakritiska beräkningarna i C++ och köra UI i Electron.

Electron är öppen källkod och används av bl.a. Visual Studio Code, Slack, Skype, Discord, WhatsApp Desktop samt Atom. D.v.s. flera riktigt populära program -> ingen större risk att Electron försvinner i närtid.

Har aldrig ens övervägt tidigare. Man kanske borde dra ihop ett pet project på Electron

Permalänk
Hedersmedlem
Skrivet av Tea42BBS:

Kommer ett nytt grafisk ramverk för net core, men först i november, då till net core 6, det heter MAUI just nu

Av någon anledning har de väl inte sagt så mycket om Maui för Linux dock? Till att börja med är att Windows och Mac som gäller...

Permalänk
Skrivet av Yoshman:

Skulle också gissa att VS är den mest använda utvecklingsmiljön för Windows. Men säger inte det också en del om storlek/komplexitet på majoriteten av alla projekt givet hur VS totalt havererar när man har lite större projekt (som exempel intellisens kan "lagga" i sekunder på stora projekt, vilket i praktiken gör det helt oanvändbart)?

Finns en anledning varför t.ex. JetBrains blir allt mer populär , deras produkter kan till skillnad från VS faktiskt hantera stora projekt (och deras produkter är likt mycket annat stängd kod). VS Code fixar också riktigt stora projekt med bravur.

Jag kör Eclipse.
Ja, jag är tråkig.

Men den är otroligt robust och har exakt alla funktioner.

Permalänk
Skrivet av Erik_T:

Java går alldeles utmärkt att använda till allt möjligt, men visst har det blivit så att det största användningsområdet har varit backend för webapplikationer.
Java är inte längre det "nya och heta" och utvecklare har insett att Java kanske inte är riktigt så bra som förespråkarna hävdar, så för helt nya projekt så är det nog inte så ofta man väljer Java just nu. (Det går mode i allt - inklusive programmeringsspråk.) Med det sagt så är Java fortfarande ett språk som används mycket och som säkert kommer att finnas kvar åtskilliga år till - kom ihåg att till exempel Fortran och Cobol fortfarande används en hel del trots sin ålder, men sällan i nya projekt.

Men är det inte webbapplikationer som idag är det nya moderna som man ska satsa på?
Man behöver inte ens installera något. Bara "logga in" och allt är bara klart.

Permalänk
Medlem
Skrivet av heretic16:

Men är det inte webbapplikationer som idag är det nya moderna som man ska satsa på?
Man behöver inte ens installera något. Bara "logga in" och allt är bara klart.

Nej, det nya moderna är appar för mobiltelefoner.
(Observera att "nya moderna" inte är synonymt med "nya bättre".)

Permalänk
Skrivet av Erik_T:

Nej, det nya moderna är appar för mobiltelefoner.
(Observera att "nya moderna" inte är synonymt med "nya bättre".)

Där håller jag inte med.
"Apps are dead" finns det många artiklar om på nätet.

Permalänk

Här är en liten lista vad jag är beroende utav:

* Databas - Jag ska kunna enkelt ansluta databaser och läsa/skriva till dom. Normalt kör jag Spring JPA för jag är för lat för SQL.
* UI - Jag behöver ett grafiskt gränssnitt. Helst "Drag N Drop" precis som förr. Jag älskar det.
* Industrianpassat - Jag räds inte av tråkiga bibliotek som har körts sedan urminnes tider. Det viktigaste är att det är pålitligt och kommer alltid finnas tillgängligt.
* Snabbutvecklat - Det ska ta lite tid att utveckla en applikation.
* Grafer och CRUD - Detta är viktigt för mig.
* Passa alla plattformer - Normalt är det Windows till 90% som jag kommer jobba mot. Men oftast när det handlar om "gratis" OS på en obetydlig dator, så kommer Linux in.

Jag har tittat lite på .NET och Spring Boot. Nu är dessa två helt skilda saker, men båda är ramverk.
Spring Boot JPA är riktigt bra för databas. Enkelt och snabbt. .NET är bra för att det är enklare med UI.

Men jag tror det lutar mer mot .NET.
Men det styper lite där för Spring Boot är fantastiskt enkelt när det kommer till databas.
Dessutom älskar jag Maven Central.

Permalänk
Medlem
Skrivet av heretic16:

Här är en liten lista vad jag är beroende utav:

* Databas - Jag ska kunna enkelt ansluta databaser och läsa/skriva till dom. Normalt kör jag Spring JPA för jag är för lat för SQL.
* UI - Jag behöver ett grafiskt gränssnitt. Helst "Drag N Drop" precis som förr. Jag älskar det.
* Industrianpassat - Jag räds inte av tråkiga bibliotek som har körts sedan urminnes tider. Det viktigaste är att det är pålitligt och kommer alltid finnas tillgängligt.
* Snabbutvecklat - Det ska ta lite tid att utveckla en applikation.
* Grafer och CRUD - Detta är viktigt för mig.
* Passa alla plattformer - Normalt är det Windows till 90% som jag kommer jobba mot. Men oftast när det handlar om "gratis" OS på en obetydlig dator, så kommer Linux in.

Jag har tittat lite på .NET och Spring Boot. Nu är dessa två helt skilda saker, men båda är ramverk.
Spring Boot JPA är riktigt bra för databas. Enkelt och snabbt. .NET är bra för att det är enklare med UI.

Men jag tror det lutar mer mot .NET.
Men det styper lite där för Spring Boot är fantastiskt enkelt när det kommer till databas.
Dessutom älskar jag Maven Central.

.Net har ju nuget paket som är. (imo) enklare att använda än maven, tänk som en app store. Sen finns ju t ex Linq och entity framework som är riktigt gött att använda med databaser. 😊

Skrivet av Erik_T:

Nej, det nya moderna är appar för mobiltelefoner.
(Observera att "nya moderna" inte är synonymt med "nya bättre".)

Håller inte med. Många "appar" är ju bara förklädda webbapplikationer idag. Mycket enklare och billigare att uppdatera och supporta flera plattformar samtidigt.

Permalänk
Hedersmedlem

Det låter ju annars som att Qt är ett intressant alternativ för dina syften. Det finns som sagt flera licenser att välja på, den kommersiella, GPL och L-GPL, så det behöver inte kosta pengar och om du är van vid c är det väldigt enkelt att återanvända sin gamla kod jämfört med till exempel c#.

Permalänk
Skrivet av Baxtex:

.Net har ju nuget paket som är. (imo) enklare att använda än maven, tänk som en app store. Sen finns ju t ex Linq och entity framework som är riktigt gött att använda med databaser. 😊

Håller inte med. Många "appar" är ju bara förklädda webbapplikationer idag. Mycket enklare och billigare att uppdatera och supporta flera plattformar samtidigt.

Detta låter intressant.

Så det är mer värt att lägga krut på JavaScript + backend? Alltså att webbapplikationer skulle vara något bättre oavsett?

Skrivet av Elgot:

Det låter ju annars som att Qt är ett intressant alternativ för dina syften. Det finns som sagt flera licenser att välja på, den kommersiella, GPL och L-GPL, så det behöver inte kosta pengar och om du är van vid c är det väldigt enkelt att återanvända sin gamla kod jämfört med till exempel c#.

QT låter bra.
Jag är en van C programmerare då jag finner C språket mer enklare än C++. Inge fel på C++, men jag tycker att C++ uppdateras allt för ofta och många som skriver C++ skriver C++ på en sådan avancerad nivå så man undrar vad syftet är. Jag skriver så minimal kod som möjligt. Mindre kod, bättre kod.

En fråga!
Med nya .NET 5, som fungerar på Linux. Är inte då Java dödsföklarad? Jag menad, orsaken varför man kör Java har med att "compile once, run everywere". Men .NET så bör man alltså kunna köra Windows applikationer rakt på Linux idag? Då känns .NET allt mer värt än Java.

Permalänk
Datavetare
Skrivet av heretic16:

Här är en liten lista vad jag är beroende utav:

* Databas - Jag ska kunna enkelt ansluta databaser och läsa/skriva till dom. Normalt kör jag Spring JPA för jag är för lat för SQL.
* UI - Jag behöver ett grafiskt gränssnitt. Helst "Drag N Drop" precis som förr. Jag älskar det.
* Industrianpassat - Jag räds inte av tråkiga bibliotek som har körts sedan urminnes tider. Det viktigaste är att det är pålitligt och kommer alltid finnas tillgängligt.
* Snabbutvecklat - Det ska ta lite tid att utveckla en applikation.
* Grafer och CRUD - Detta är viktigt för mig.
* Passa alla plattformer - Normalt är det Windows till 90% som jag kommer jobba mot. Men oftast när det handlar om "gratis" OS på en obetydlig dator, så kommer Linux in.

Jag har tittat lite på .NET och Spring Boot. Nu är dessa två helt skilda saker, men båda är ramverk.
Spring Boot JPA är riktigt bra för databas. Enkelt och snabbt. .NET är bra för att det är enklare med UI.

Men jag tror det lutar mer mot .NET.
Men det styper lite där för Spring Boot är fantastiskt enkelt när det kommer till databas.
Dessutom älskar jag Maven Central.

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.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer