Java updatebar? Oder lieber C# nutzen?

Bitte aktiviere JavaScript!
Ich weis, das Thema ist schon ein sehr alter Hut, allerdings stellt sich gerade für mich die Frage: Java oder C#

Ausgangssituation: Derzeit habe ich ein Windows Rechner und ein Iphone.

Geplant sind erst einmal kleine Hilfstools und später sollen natürlich auch Anwendungen geschrieben werden um Geld zu verdienen.
Jetzt lese ich immer das Java kostenflichtig werden soll bzw. keine Updates mehr bekommt. Auch etwas mit der Abwärtskombatibllität das dies nicht mehr gegeben sein soll.
Heist das konkret: Ich schreibe ein Programm mit Java 8. Irgendwann update ich die JSE auf 10 o. höher. Dann kann es passieren das Funktionen nicht mehr gehen?
Sollte man da gleich auf Java (?) updaten? JavaEE wird ja hauptsächlich im Profi Sektor genutzt, oder lohnt es sich dies auch privat zu nutzen?

Irgendwie erschlägt mich gerade irgendwie das ganze. Vlt. könnt ihr mir da bisschen Klarblick verschaffen.
 
A

Anzeige


Vielleicht hilft dir dieser Kurs hier weiter: (hier klicken)
Jetzt lese ich immer das Java kostenflichtig werden soll bzw. keine Updates mehr bekommt.
Es ist wahr, dass Oracle das Oracle JRE/JDK seit Januar 2019 nicht mehr für den Produktivbetrieb einer Anwendung frei zur Verfügung stellt. Deswegen nutzt man heute auch das OpenJDK von beliebigen Distributoren, wie etwa dem OpenJDK Projekt bzw. Oracle selbst, AdoptOpenJDK oder Azul.

Generell ist aber erstmal die Frage: Was genau willst du denn machen? Womit genau willst du Geld verdienen? Was ist dein Plan? Und was hat das alles bitte damit zu tun, dass du aktuell einen Windows Rechner und ein iPhone hast? Willst du Mobile App Entwicklung für iOS betreiben? Dann wäre wohl eher Objective-C und ein Mac Rechner das richtige.
 
Also das mit dem kostenpflichtigen Java wird oft falsch kommuniziert. Java ist ja auch open source: Es gibt das OpenJDK. Somit kann man immer auf ein OpenJDK zurück greifen.

Die Firma Oracle will ihr JDK sich nun aber - so gewisse Kriterien erfüllt sind - bezahlen lassen. Und bezüglich Updates ist das auch ein Standard-Vorgehen: Updates für alte Versionen gibt es teilweise nur noch für Geld (Was normal ist. Ist bei Microsoft Windows z.B auch nicht anders. Eine Windows-Version hat nach gewisser Zeit keine freien Updates mehr. Firmen, die Geld bezahlen, bekommen aber noch weiter Security Updates... Zumindest für eine gewisse Zeit!)

Also um auf der sicheren Seite bzgl. Kosten zu sein: Greif einfach zu einem OpenJDK. Ich nehme Zulu von Azul. Das is frei und wenn eine Firma auf die Idee kommt, dass sie Support wollen: Dann bietet das Azul auch. Aber es gibt auch viele andere OpenJDK Anbieter.... Und ich würde auch ruhig ein aktuelles JDK nehmen so es keinen Grund dagegen gibt...

Bezüglich Java <-> C#:
Da kann man nicht wirklich etwas raten. Ich habe viele Jahre C# entwickelt, Unter Windows war das immer sehr gut, mit Mono lief es damals teilweise auch auf Mac und Linux. Aber die aktuelle Situation hat sich mit .net core nun noch deutlich verbessert. Also auf jeden Fall auch eine gute Sache...

Was mich aber massiv gestört hat ist das Vorgehen von Microsoft. Da habe ich mich teilweise als Entwickler verarscht gefühlt:
- Also Entwicklung für Microsoft Handies: Da habe ich dann mit Windows Mobile 6 etwas mit angefangen, dann kam Windows Phone 7 und ich musste alles vergessen und neu lernen (incl. neues Handy kaufen) und mit Windows Phone 8 war es dann nicht wirklich anders...
- XAML und Umsetzung: Microsoft setzt massiv auf XAML was Oberflächen angeht. (Ähnlich JavaFX aber deutlich ausgereifter finde ich) Das findet sich überall: WPF, Silverlight (RIP), Windows Mobile 8, "Metro Apps" bei windows 8, UWP, ....
Aber glaub ja nicht, dass eine Textbox überall gleich ist oder so. Da kann es dann gut sein, dass bei einer Plattform irgendwas nicht mit implementiert wurde oder so ... Total heftig, was wir da erlebt haben ...
- Auf Grund dieser ständigen Neuentwicklungen: Wenn Du Visual Studio installiert hast, dann darfst Du erst einmal das richtige Projekt finden. Und da nach Namen zu gehen führt oftmals in die falsche Richtung. Ein Name wurde durchaus mehrfach verwendet...
- Xamarin - die Lösung um Applikationen für iOS/Android/... zu entwickeln. Was habe ich da geflucht bezüglich Abhängigkeiten! Visual Studio nutzt sogenannte NuGet Pakete (also evtl. vergleichbar mit Maven und den Repositories da). Es war sehr schwer, Pakete zu aktualisieren, denn gerade diese Xamarin.Android.Forms war sehr heftig mit Abhängigkeiten. Und es gab von Xamarin auch Schnittstellen für Push Nachrichten: Ich war am verzweifeln: MSDN hatte ein Beispiel für Push Nachrichten über Azure: Ds liess sich aber nicht nachvollziehen wegen Abhängigkeiten und so.... und Firebase Cloud Messaging war etwas besser aber auch Problembehaftet. Ich habe da dann als C# Entwickler Xamarin in die Tonne gekloppt und habe Android App in Java und iOS App in Swift geschrieben....
...
Also bei Java hat man auch gewisse Probleme. Da kann ich auch viel erzählen. Da kommt vor allem viel Ärger über zu komplexe Abhängigkeiten. Wenn man als komplett Unbeteiligter etwas zu Intelligenz sagen soll ..... Java EE ist recht komplex. Swing ist recht komplex. Da kann man aber schnell Projekte generieren lassen. Ggf. mit Spring roo was bauen lassen. Aber dann verändert man irgendwas und es geht nicht mehr: Ja sorry: Wer keine Ahnung vom Motor des Autos hat, sollte da auch nicht am Motor rumschrauben.... Komplexität bei der Entwicklung zu verstecken geht nicht. So lange es gut geht: toll. Aber es wird nicht immer gut gehen ....

Das waren jetzt meine Erfahrungen. Was Du wie machen willst, liegt ganz bei Dir. Wenn Du vor allem unter Windows was machen willst und das mit Oberflächen: Dann geh zu C# und mach WPF oder UWP (Windows 10 Store) Applikationen.
Aber wenn Multi Platform und vor allem Serverseitige Applikationen Dein Ziel sind: Da hat meiner Meinung nach Java eher die Nase vorne. Wobei durch den "Microservice Trend" und Cloud Services liegt C# evtl. schon wieder etwas vorne...
 
Der Professor an meiner Hochschule meinte zwar auch mal zu mir daß, wenn ich was anständiges programmieren will, ich mir mal C# anschauen soll. Obwohl er selber uns damals Java beigebracht hat, wobei "beigebracht" wohl zu viel gesagt ist. Eigentlich hat er nur versucht uns das Konzept hinter Klassen näherzubringen. Die Syntax von Java war uns schon weitgehend bekannt, da er uns vorher C beigebracht hat.

Sosehr ich den Professor aber auch schätze, C# habe ich mir bisher noch nie angesehen. Einerseits empfinde ich Java als eine sehr angenehme Sprache, wozu also wechseln. Dafür hab ich MS Visual Studio schon hassen gelernt, ich finde diese IDE furchtbar. Völlig überladen, widersprüchliche Funktionen, und die "Hilfe" dazu ist m.E. keine.
Die Umtriebe von Oracle haben Java wohl nicht immer gutgetan, wobei man heute Java benutzen kann ohne mit Oracle das Geringste zu tun haben zu müssen.
Wie das bei MS ist weiß ich nicht genau, ich schätze es aber nicht als besser ein. Und wer weiß, ob MS nicht auch irgendwann mal anfängt die Kuh melken zu wollen.
 
Also Microsoft hat das sehr gut als Open Source freigegeben. da gibt es also meines Wissens weniger Probleme. Und Microsoft sieht das nur als Nebensache an. Das fällt nebenher so ab und dient lediglich dazu, die eigentlichen Produkte zu pushen.

Das war lange Zeit Windows, aber auch das ist schon fast Vergessenheit. Was ich so mitbekomme ist ganz klar: Alles geht Richtung Azure / Office365. Und eines hat Microsoft von Anfang an genial gelöst: Community! Was hat Microsoft alles für die Community getan und macht es immer noch. Dann mit MVP und MCC Auszeichnungen. Kostet kaum etwas und hilft enorm: Ist doch geil, wenn Andere viel Support für einen machen ...

Habe ich so massiv noch bei keinem Anderen Unternehmen gesehen. Oracle / Sun haben etwas in der Art aber auch. Da gibt es ja auch diese Java Experts oder wie diese Community heisst. Aber mein Eindruck ist, dass das tot ist. Forum gibt es ja auch nicht mehr ... aus meiner Sicht zeigt das doh den großen Unterschied zwischen Oracle und Microsoft. Wie blöd muss man sein, so ein Forum einzustampfen? Das ist doch nun wirklich kein großer Kostenfaktor! Nur eben ist es halt so, dass SO einem einmal den Rang abläuft und dann hat man kaum noch eine Chance....

Aber egal. Zu C# muss ich sagen: Wer weiss, ob das die Zukunft ist? Den Punkt hatte ich in meinem Thread noch nicht erwähnt:
Microsoft hat da richtig was tolles aufgebaut: XNA GameStudio - eine Plattform um dann für Windows, Windows Mobile und XBox Spiele entwickeln zu können. Und dann lädt MS zu seiner Build ein und alle sind gespannt, was da so tolles kommen wird ... und dann springt da ein Steven Balmer auf der Bühne rum und meint, er wäre Jobs und dann kommt das Thema Spieleentwicklung und er ist total begeistert uns erzählt einem, dass C++ doch das geilste überhaupt ist.
Wie? Was? Video zurückgespult und nochmal angehört. War das sein ernst? Ok, Zertifizierungen muss man nicht haben und auch nicht gut finden, aber C++ gab es auch schon seit Jahren keine Zertifizierungen mehr! das war das ungeliebte Stiefkind! Microsoft wollte immer und überall zu .Net. Das war alles eine Welt, egal ob C#/VB.Net oder PowerShell. Viele Tools bauten darauf auf....
C++ war ein Krampf was all das anging. Ging auch irgendwie, aber schon die MS Spezial C++ Varianten waren schwer auseinander zu halten fand ich... Ich erinnere mich nicht mehr, aber es gab da mehreres ... c++x oder so und c++/Net und was weiss ich nicht alles... Hab ich damals (Ich war ja ursprünglich C/C++ Entwickler) dann auch ignoriert....
Aber ok, was kam dann? XNA GameStudio wurde - trotz großer Community - komplett eingestampft!

Sowas kann halt schnell passieren. Microsoft geht strikt vor. Was gab es alles an Tools:
- Lightswitch - das war eine Art Cuba Platform / Cuba Studio auf .Net basis. War nicht schlecht, aber: Eingestampft.
- Power Apps - Nachfolger Lightswitch aber Azure basiert. Wohl auch schon eingestampft
- ASP.Net MVC -> Hier ging es viel rum von Version zu Version. Microsoft konnte sich auch nie entscheiden, was wie wohl Zukunft hat
- Silverlight - war genial. Sozusagen ein Adobe Flash ohne viele Security Probleme ... aber eingestampft ....
- ...

Also Microsoft ist da ganz rabiat und geht strikt vor. Das muss man wissen und ich wäre daher immer extrem vorsichtig, mich auf Microsofts Visionen einzulassen. Aber das muss man als c# Entwickler nicht! Bei Asp.Net MVC haben wir die meisten Versionen ausgelassen. Wir hatten auf ASP.Net Basis unsere eigene MVC Library. Erst mit MVC 4 sind wir auf Arbeit auch gewechselt. Und wir haben immer sehr gut geschaut, was denn in der "Szene" abgeht. Das, was Open Source ist und massiv in der Community genutzt wird, wird auch etwas länger bestehen. Und das ist dann wichtig für uns bei der Auswahl der Frameworks. Die werden dann evaluiert und geprüft, ob und wie ein Wechsel Sinn macht.... Da ist man dann auch unabhängig von Microsoft.

Was Visual Studio angeht: Ja, das kann extrem viel. Aber genial! Das war bisher die beste IDE, die ich je benutzt habe. Man muss es aber wirklich lernen, es zu nutzen. Und dann braucht man auch eine vernünftige Edition (Wir hatten die Enterprise Edition). Aber mit ein Grund, wieso ich IntelliJ mag. Das kommt dem am ehesten nahe. (Und teilweise hatten wir auch schon ReSharper im Einsatz - also wir nur die Pro und nicht die Enterprise Edition hatten. Aber ist schon länger her!)

Naja, egal. Wenn man nicht auf Windows Basis arbeitet, dann ist C# / PowerShell nicht wirklich im Fokus. Aber wenn man beruflich in einem Windows Umfeld arbeitet, dann wäre das ein Punkt, der dafür C# / .Net und dann auch PowerShell spricht.

Nunja - wieder viel geschrieben ... vielleicht bringt es ja einem etwas .... Ihr müsst aufpassen: Wir alten Opas fangen leicht an zu erzählen :)
 
Danke für die ausführlichen Schilderungen. Hab mir folgendes überlegt.
In absehbarer Zeit möchte ich eher in den Sektor Mobile Apps wechsel (IOS und vlt. auch Android)

Wäre es da besser Java zu lernen (kann auf Windows Rechner und auf Android Systemem genutzt werden, wenn man die View entsprechend umbaut). Oder lieber gleich Kotlin lernen für Andorid Apps , C# für Desktop Windows Anwendungen, Swift für IOs.
Kotlin ist doch annähernd auf allen Andorid Plattformen lauffähig entgegen zu Java Android Apps?
 
Wäre es da besser Java zu lernen (kann auf Windows Rechner und auf Android Systemem genutzt werden, wenn man die View entsprechend umbaut). Oder lieber gleich Kotlin lernen für Andorid Apps , C# für Desktop Windows Anwendungen, Swift für IOs.
Kotlin ist doch annähernd auf allen Andorid Plattformen lauffähig entgegen zu Java Android Apps?
Also aus meiner Sicht sind die Client Technologien größtenteils obsolet geworden. Klar gibt es diese noch, aber ich sehe da keine große Zukunft. Cross Plattform kommt immer stärker und die Cross Plattform Tools konnten bisher alle noch keinen bedeutenden Anteil gewinnen: QT mit C++ z.B. Java awt/swing/javafx, Xamarin mit C# evtl. noch ...

Das große Problem ist aus meiner Sicht, dass man wirklich alle Plattformen abdecken muss. Aus meiner Sicht wird alles auf reine Devices hinaus laufen. In vielen Bereichen wird vieles einfacher werden. Komplexe Strukturen mit Active Directory und so werden einfachen Identity Providern weichen. Und dann wird alles auf eine "Any Device" Lösung kommen und das setzt voraus, dass die Applikation auf allen Devices zur Verfügung steht (und das kann auch im Browser sein. Die Technologie ist so weit, aber wenn man WebAssembly anschaut, dann sieht man, dass es noch deutlich weiter gehen wird!)

Fakt ist aber, dass da dann vieles auf Serverseite gebaut wird und Clients dann mit HTML / JavaScript (oder darauf aufsetzend) / CSS3 gelöst wird. Der JavaScript Part wird nach meinem Verständnis der WebAssembly weichen...
Und auf Serverseite wird es immer stärker Cloud (*) basiert gelöst werden. Aber das ist unkritsch: Da gibt es Schlagwörter wie Serverless Computing und so, aber es ist unkritisch. Die Java Lösungen gehen dann in einen Container und dann ist das Thema auch gegessen...

Also ich würde mich auf zwei Bereiche Fokusieren:
- Serverseitig: hier ist sowohl Java als auch C# stark. Andere Lösungen (Node.js, Go, ....) sind eher Nischenlösungen und würde ich nicht empfehlen.
- Clientseitig: Hier ist auf jeden Fall HTML, JavaScript und CSS3 zu nennen. Das alleine reicht nicht, denn man muss gleich als nächstes Fragen: Welches Framework? React? Angula? .... Ganz ohne jede Library muss man sich gar nichts antun, Minimum sollte immer mindestens jQuery sein (Aber das ist nur meine bescheidene Sicht). Aber HTML und CSS3 sind ganz wichtig!

Ob man nun Java oder C# nehmen sollte? C# mischt bei der WebAssembly groß mit. Und es ist auch Plattform übergreifend (.Net Core!). Das hat also gewisse Vorteile. Man hat nicht die großen ApplicationServer. Man hat eher eine Art Tomcat mit dem IIS, welches da ins .Net gewandert ist. Also das .Net / C# geht da einen Weg, der mehr minimalistisch ist. Das ist auch so ein Trend mit dem "Microservices". Das sieht ganz gut aus.
Aber da würde ich nicht auf die GUI Enwicklung gehen (Windows Forms, WPF) zumal das derzeit auch noch Windows only ist (Wobei das jetzt auch noch auf andere Plattformen kommen wird denke ich mal...)

Aber ich wechsel jetzt z.B. auch gerade von einem .Net Team zu einem Projekt, welches C++ / Java verwendet. Also das sind zukünftige Entwicklungen, die ich beschrieben habe. Und wenn WebAssembly wirklich kommen wird, dann wird es das auch mit Java geben (Da gibt es wohl auch schon Ansätze). Also alles kein KO Kriterium.

Daher ist die Frage eher: Womit wirst Du am ehesten zu tun haben? Kannst Du absehen, was in Schule / Studium kommen wird? das würde ich nutzen. Später ist ein Wechsel absolut kein Thema. Das kann ich aus eigener Erfahrung sagen!

(*) Thema Cloud: Da gibt es ja auch immer viele negative Stimmen, aber das ändert nichts an der Tatsache, dass es kommen wird. Und das ganz massiv! Das heisst ja nicht, dass man bei einem großen Anbieter in die public cloud gehen muss. Es ist eine Technologie und die wird kommen, weil es die Verwaltung vereinfacht!
Es ist einfach eine Art Virtualisierungsebene und die kommt überall nach und nach:
- Hauptspeicher: Ursprünglich gab es da keine Virtualierung und dann gab es das Paging und co mit dem i386 Prozessor.
- Festplatten: Ebenso: Erst gab es nur Platten - und dann wurde da eine logische Schicht drüber gelegt (z.B. LVM bei Linux)
- Computerseitig hat man dann die VMs und so.
Und das alles mit Technologie, dass man Daten live verschieben kann. VMs wandern von einem Host zum anderen ohne dass die VM etwas mitbekommt.
Und das sind Erweiterungen ebenso beim Speicher: Filesysteme gehen über mehrere Computer und so ...

Und für das Management bedeutet das dann, dass ganze Umgebungen (Netze, VMs und co) beschrieben sind z.B. in XML und dann gehen die einmal an das System und in Minuten hat man ganze Testnetze! Das bietet Optimierungen, die Wahnsinn sind.
Und das hat man dann auch lokal. Oder hybrid, d.h. man kann bestimmen was lokal ist und was beim Anbieter ... So kann man Systeme einsparen und temporäre Testsysteme z.B. bei einem Cloudanbieter lassen.

Aber das ist ein eigenes Thema. Das muss man nicht auch noch vertiefen. Aber die Firma für die ich arbeite beschäftigt sich extrem stark mit genau solchen Themen.
 
Wollte für ein Hobby von mir eine GUI mit WPF entwickeln. Dies würde also nicht die große Zielgruppe werden. Dachte aber, so am besten zu lernen wenn man sich gleich an ein eigenes Projekt macht.

Nun überlege ich aber stark, gleich eine Serveranwendung zu schreiben. Verstehe nur gerade nicht, welche Sprache da am günstigstes geht.
Dieser Serveranwednung bekommt aus einer Quelle (Webformular/Android App Oberfläche), Daten von Nutzern und übergibt diese an die Serveranwendung. Dieser übernimmt die Berechnungen und sendet den Text zurück an den Client welcher diese anzeigt.
So verstehe ich zumindest den aktuellen Stand der "Technick", wenn es sich in diese Richtung weiter entwickelt.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben