C# oder Java für Desktop Anwendungen?


06.01.2024, 16:12

Kenne Electron, so viel kann man damit auch nicht machen. Ein Spotify ist nicht so komplex und verstanden hast du auch nichts. Benutzt Html,Css,Js im endeffekt.

Denke nicht das viele reine Electron Entwickler suchen. Ist ein netter Bonus oder für einfache anwendungen mit nur rumgeklicke auf buttons wo dann der komplexe teil im backend läuft.

3 Antworten

Von Experte FaTech bestätigt
Jetzt ist es aber so (...) das Java wahrscheinlich deutlich mehr Verwendung hat, beliebter ist => mehr jobs für mich, viele verschiedene bereiche

C# hat sich ebenso in vielen verschiedenen Bereichen ausgebreitet. C#-Entwickler sind viel gefragt und es existiert eine große Community. Dementsprechend gibt es ebenfalls zahlreiches Lernmaterial oder vorgefertigte Bibliotheken. Bei C#/.NET handelt es sich um keine Nischentechnologie.

Soweit ich weiss hatte microsoft versucht es nur auf windows zu beschränken.

Diese Beschränkung trifft nur auf das alte .NET-Framework zu. Die Neuimplementation, die vor einigen Jahren angestoßen wurde, unterstützt auch die Entwicklung für andere Plattformen (Linux, macOS, etc.).

(...) und C# in CLR.

Nein, in CIL. Die CLR ist die Laufzeitumgebung, die die CIL ausführt.

C++ dagegen wäre in Maschinencode und ist wenn man assembly zeug weglässt am performantesten.

Es gibt sowohl bei Java aber auch C# auch die Möglichkeit/Tools, ahead-of-time zu kompilieren. Das bedeutet aber auch, dass man ein paar Einschränkungen hinnehmen muss. Die Vorteile der JIT-Kompilierung entfallen. So etwas wie das dynamische Laden von Code oder Reflection (bei Java) wird nicht unterstützt.

Das soll soweit aber nur eine Randinformation sein.

Die Frage nach der besten Performance ist bei dieser Auswahl im Übrigen nicht so sehr von Belang. Die zugrundeliegenden Tools sind ziemlich gut optimiert und sehr leistungsstark. Das ist auch ein Grund, wieso C# und Java oftmals für die Entwicklung komplexer Systeme (z.B. Enterpriseapplikationen) eingesetzt werden. Die Entscheidung, welche man nun eher wählt, wird eher durch andere Indikatoren beeinflusst (wie verfügbare Kompetenzen oder bestehende Schnittstellen).

Ausserdem gefällt mir auch nicht wem diese sprachen gehören microsoft und oracle.

.NET ist ein Open Source-Projekt, an dem sich jeder beteiligen kann. Das Microsoft als Schirmherr dahinter steht, sehe ich als Vorteil. Das Unternehmen hat die notwendigen Ressourcen, um C#/.NET fortwährend weiterzuentwickeln und auf dem Markt zu stärken. Das beginnt schon damit, dass eigene Anwendungen/Systeme mit Schnittstellen für .NET ausgestattet werden.

Bei Java ist es in der Tat etwas spezieller, denn das Hauptaugenmerk von Oracle liegt eher auf ihren Datenbanken. Dennoch sollte man berücksichtigen, dass es noch viele andere Parteien gibt (wie Apache, IBM oder die Eclipse Foundation), die das Projekt tragen. Der seit 2017 verkürzte Releasezyklus hat m.E. der Entwicklung auch recht gut getan.

Ich hab da irgendwas auch mitbekommen das Oracle firmen probleme macht (...)

Oracle hatte im vergangenen Jahrzehnt einige langwierige Rechtsstreitereien mit verschiedenen Firmen (z.B. Google, Hewlett Packard Enterprise, Rimini Street), bei denen sie öfter den kürzeren gezogen haben. Die geführten Prozesse gegen Google betrafen deren Nutzung von Java-APIs für Android OS.

(...) ich nehme an die Java Jdk kostenlos ist und eine SE kostet ?

Ein JDK stellt die konkrete Implementation des Java SE dar. Letzterer Begriff bezeichnet das Kompendium der Java Standard-APIs.

Es gibt JDK-Builds von verschiedenen Unternehmen/Organisationen. Da wäre beispielsweise Adoptium, Amazon Corretto, Azul, Liberica oder das Oracle JDK. Sie alle haben gemein, dass sie auf der gleichen Quelle (OpenJDK) basieren. Die Unterschiede liegen vorzüglich in zusätzlichen Tools (z.B. zur Programmanalyse) oder Leistungen (Support für spezifische Plattformen, schnellere Bugfixes, u.ä.) seitens der Anbieter. Während die JDKs selbst meist kostenlos verfügbar sind, sind es die extra Supportleistungen in der Regel nicht.

Mit c# könnte man theoretisch besser kleinere spiele machen (...)

Ich weiß nicht genau, was du unter kleineren Spielen verstehst. Es gibt jedenfalls eine Menge Spieleprojekte, die mit C# umgesetzt wurden und über einen Minispielcharakter à la Tetris oder Snake weit hinausgehen (z.B. Cuphead, Escape From Tarkov, GTFO, Stardew Valley, Subnautica).

C# oder Java für Desktop Anwendungen?

An für sich sind C# und Java nicht schlecht aufgestellt, wenn es darum geht, Desktopanwendungen mit grafischer Oberfläche zu entwickeln. Bezogen auf Java wäre JavaFX die beste Toolkitwahl, bezogen auf C# entweder WPF, Avalonia UI oder MAUI.

Persönlich würde ich allerdings aus folgenden Gründen zu C# tendieren:

  • Du hast mehr Flexibilität/Anpassungsmöglichkeiten bei bestehenden Komponenten
  • Bindings können im View gesetzt werden, statt im C#-Code
  • Das Erstellen von WPF/MAUI-Anwendungen ist einfacher - sei es beim Projektstart (Anlegen eines neuen Projekts) oder dem späteren Release Build. Visual Studio bietet da generell hilfreiche Tools für die Entwicklungsphase.
  • Zu einem Toolkit wie WPF wirst du deutlich mehr Lernmaterial/Artikel/u.ä. finden, als zu JavaFX.
orochi02  09.01.2024, 07:38
Dennoch sollte man berücksichtigen, dass es noch viele andere Parteien gibt (wie Apache, IBM oder die Eclipse Foundation), die das Projekt tragen

ist korrekt aber ich würde noch microsoft selbst bzw auch amazon, google erwähnen da apache und eclipse doch meist eher im java umfeld bekannt sind und ibm zwar riesig ist aber trotzdem nicht mit dem typischen FAANG ruf assoziiert wird

0
orochi02  09.01.2024, 07:40
Während die JDKs selbst meist kostenlos verfügbar sind, sind es die extra Supportleistungen in der Regel nicht.

und bei .net ist es anders oder wie? 🤔

0
regex9  09.01.2024, 08:17
@orochi02

.NET wird nur von einer Quelle (Microsoft) herausgegeben und ist kostenlos. Für erweiterten Support zu (allgemein) Microsoft-Produkten bietet Microsoft auch buchbare Supportpakete.

0

nachdem ich deinen comment gelesen habe..:

es ist eigentlich egal denn mit jeder sprache kannst du irgendwo was machen. kleine spiele kannst du auch in python schreiben da ist es egal ob du jz java oder c# nutzt. für größere tendiere ich aber doch eher zu c# wegen dem memory model.

java und c# sind beide sehr gut aufgestellt und am ende ist es meiner meinung nach fast nur präferenzsache. ich persönlich halte java für die bessere sprache aber c# ist meiner meinung nach eher die sprache mit der man sich schneller anfreundet.

wenn es dir nur um den beruflichen aspekt geht solltest du einfach bei javascript/node bleiben, denn mit node hast du ebenfalls eine sehr gut aufgestellte platform die quasi .net und java rivalisiert. ich sehe nicht was dich bei electron einschränkt und was hingegen bei WPF/avalonia/javafx/swing besser sein soll? wenn es um bundle size und performance und sowas geht habe ich gehört dass tauri viel leichter (was performance und verbrauch angeht) sein sollte aber trotzdem eine ähnliche experience wie electron bietet.

Eine Wall of Text ohne konkrete Fragen - was ist jetzt die Frage?

aber ich bin schon Webentwickler und mir ist das vollkommen egal

Die Zukunft liegt im Web, ob's dir gefällt oder nicht.
Ich arbeite aktuell an einem Blazor-Projekt, das rein auf dem Desktop läuft, einfach weil Blazor gut ist, ich aber Desktop brauche.

das Java wahrscheinlich deutlich mehr Verwendung hat, beliebter ist => mehr jobs für mich

Es gibt genug Jobs im .NET-Bereich und es werden mehr.
Die Mehrheit der Firmen suchen aber Web-Entwickler.

Soweit ich weiss hatte microsoft versucht es nur auf windows zu beschränken.

Nicht versucht, es war anfangs auf Windows beschränkt, seit einigen Jahren (seit .NET Core bzw. .NET 5) aber nicht mehr.

Java wird in Bytecode übersetzt und C# in CLR.

CLR ist die Common Language Runtime, kein Code.
C# wird in IL (Intermediate Language) übersetzt.

Ausserdem gefällt mir auch nicht wem diese sprachen gehören microsoft und oracle. Das spielt keine grosse rolle für mich aber kann sich schlecht entwickeln

.NET ist opensource, die Community arbeitet aktiv mit und Microsoft bezieht die Community auch aktiv ein. Es entwickelt sich also stetig weiter in Richtung positiv.

Kenne Electron, so viel kann man damit auch nicht machen.

Electron hostet Web-Apps, man kann also alles machen, was mit Web-Apps möglich ist.
Ich persönlich arbeite aktuell mit Photino.NET, das ist deutlich kleiner, aber auch deutlich leichtgewichtiger, performanter und es läuft auch ohne Umweg mit .NET 8.
Beides kann (soweit ich bei Electron weiß) mit Blazor arbeiten.

Denke nicht das viele reine Electron Entwickler suchen.

Niemand sucht reine Electron-Entwickler. Die Firmen brauchen Web-Entwickler und wenn man mit Electron arbeiten muss, wird erwartet, dass Du dich da einarbeiten kannst.

Woher ich das weiß:Berufserfahrung – C#.NET Senior Softwareentwickler
iusearchbtw 
Fragesteller
 06.01.2024, 17:14
Die Zukunft liegt im Web, ob's dir gefällt oder nicht.

Meinte nicht das Web ist mir egal, noch eine weitere Web Technologie zu lernen brauche ich nicht war damit gemeint.

Ich kann nicht alles 2% lernen und jede woche auf eine neue wechseln wenn wieder tausend neue technologien rauskommen.

Ich bleibe bei React, Nextjs etc. und werde darin besser.

Electron hostet Web-Apps, man kann also alles machen, was mit Web-Apps möglich ist.

Ja eben, verstanden hat du am ende nicht wirklich was von Desktop Entwicklung mit nur electron, netter bonus für eine firma mit javascript entwickler schwadron den man in paar wochen erlernen kann unter der haube einfach nur ein Browser mit ein wenig mehr zugriffsrechten.

spart Entwicklungszeit bei normalen rumgeklicke apps, teure neue entwickler, sehr hoher speicherverbrauch, langsamer als java,c#, c/c++.

Und man kann alles machen was mit Web Apps möglich ist, nicht mehr als Spotify, Discord, Steam da ist schon das bekannte Problem.

Ich will mich aber nicht beschränken auf nur web apps die mir zeit sparen gleich auf die website zu gehen wie bei spotify denn dann kann ich für immer webentwickler bleiben und nie was anderes machen.

Die frage war sollte ich c# oder java lernen / welche ist besser / hat mehr zukunft wenn ich vor habe ernsthaft desktop anwendungen zu programmieren und die wall of text damit ich keine allgemeinen antworten kriege. Zb ich lerne/kann schon webentwicklung, will mich nicht beschränken und jetzt nochmal .net webentwicklung machen.

Hab mir nicht viel mühe gegeben bei Rechtschreibung Gramatik Zeichensetzung aber ist egal man versteht was ich meine.

0