Forum>Entwickler>Java Programmierung auf dem Mac

Java Programmierung auf dem Mac

FabiLig06.10.1917:13
Hallo Ihr Lieben,

ich bin absoluter Anfänger, deswegen nehmt mir meine Ahnungslosigkeit bitte nicht übel.

Ich möchte mich an Java probieren, dafür brauche ich natürlich eine Entwicklungsumgebung.

Eclipse ist allgemein bekannt aber ich habe zu den Alternativen(?) noch ein paar Fragen:
Visual Studio Code soll Java auch unterstützen ist aber keine IDE, Visual Studio ist eine IDE unterstützt Java aber nicht auf dem Mac. Was genau ist der Unterschied zwischen VS Code und VS und ist eines davon eine empfehlenswerte Alternative ?

Geht das ganze nicht auch über Xcode auf dem Mac ?

Ich würde meine Wahl insofern noch einschränken, dass ich später auch noch C++ dazu nehmen möchte und natürlich mich nicht unbedingt noch wieder in ein neues Programm einarbeiten will.


Ich hoffe die Fragen ergeben überhaupt Sinn und hoffe auf Erleuchtung
0

Kommentare

rmayergfx
rmayergfx06.10.1919:16
Viel Spaß damit. Kurze Info, bei uns wird Java wird in nächster Zeit aussortiert und nur noch da genutzt wo es wirklich unbedingt sein muss. Da Oracle die Lizenzbestimmungen geändert hat ist Java nur noch im Heimbereich vertretbar, es gibt keine Firma die sich freiwillig an den Lizenzkosten beteiligen möchte. Sofern machbar wird auf OpenJDK gewechselt:
Infos zum Lizenzmodell:
Meine Empfehlung, steige gleich auf C++ ein, wenn du schon damit liebäugelst.
„Der Computer soll die Arbeit des Menschen erleichtern, nicht umgekehrt !“
+1
pitch06.10.1919:54
Ich würde Dir IntelliJ IDEA empfehlen ()
Kostet, nimmt Dir aber auch viel Arbeit ab, sobald Du in den Bereich Buildmanagement reinkommst.
Aber hier gibt es auch eine kostenlose Community-Variante, die sollte für den Anfang definitiv ausreichen ().
Ich nutze IntelliJ IDEA für meine Java-Projekte, so wie CLion für C++ Anwendungen. Ebenfalls empfehlenswert, sollltest Du Dich an C++ begeben.
Und zu Deiner Frage: Visual Studio ist m.W für .NET Entwicklungen geeignet (habe damit aber noch nicht gearbeitet).
VS Code ist ein Editor, keine IDE im engeren Sinne. Kann aber durch diverse Plugins aufgewertet werden.
+1
FabiLig06.10.1919:57
Vielen Dank für die Antwort. Was ist denn genau der Unterschied zwischen Editor und IDE ? Also was kann ich mit dem einen mehr als mit dem anderen ?
0
pitch06.10.1920:01
Ein Editor bietet Dir Annehmlichkeiten wie Syntax-Highlighting, Autocompletion etc.
Eine IDE weitaus mehr. Angefangen von Code Analyse, Unterstützung beim Builden und Deployment bis hin zur Integration in ein Versionskontrollsystem.
Wenn Du nur üben möchtest, nimm erst einmal einen Editor und mache die anderen Sachen manuell über die Shell etc. . So lernst Du am Effektivsten.
Wenn Du intensiver damit arbeitest oder es beruflich nutzt, switche auf eine IDE um.
+2
FabiLig06.10.1920:05
Ah alles klar, danke !

Vielleicht haben andere ja noch mehr Tipps
0
Mendel Kucharzeck
Mendel Kucharzeck06.10.1920:06
Wie fiel denn deine Wahl auf Java?
+2
momirv06.10.1921:16
Java ist sicherlich keine schlechte Wahl, um eine objektorientiert Programmiersprache kennenzulernen.

Anfängern würde ich empfehlen nicht sofort mit einer IDE anzufangen. Dann ist man mehr mit der IDE beschäftigt als mit der Programmiersprache und man verpasst u.U mehrere Basics.

VS Code wäre meine Empfehlung. Später kann man immer noch auf Eclipse oder IntelliJ wechseln.
rmayergfx
Da Oracle die Lizenzbestimmungen geändert hat ist Java nur noch im Heimbereich vertretbar, es gibt keine Firma die sich freiwillig an den Lizenzkosten beteiligen möchte. Sofern machbar wird auf OpenJDK gewechselt
Wie, was? Keiner ist gezwungen bei Oracle JDK zu bleiben. Mittlerweile gibt es Alternativen wie Sand am Meer.
0
Mendel Kucharzeck
Mendel Kucharzeck06.10.1921:46
momirv
Wollte ich auch nicht unterstellen, dass das eine total schlechte Wahl sei. Wenn der TS aber ein wenig Programmieren lernen möchte (also als Hobby ohne direkten praktischen Nutzen), böte sich vllt als Einstieg Swift Playgrounds besser an.

Alternativ gäbe es noch C# und das simple, aber betagte Objective-C.
+1
frankenstein06.10.1922:14
Ich weiss ja nicht, was Du programmieren willst, aber ich würde generell zu moderneren Konzepten raten, wie Go, Rust oder Node.

Java ist noch sehr verbreitet, aber veraltet.
-3
sierkb06.10.1923:02
Auf Oracle ist man doch schon längst nicht mehr angewiesen diesbzgl. Zumal Oracle doch die Entwicklung und Federführung inzwischen komplett an das OpenJDK-Projekt bzw. die Eclipse Foundation übergeben hat.

E4Developer (30.03.2019): Which Java JDK should I use? Which provide free LTS?

AdoptOpenJDK – Prebuilt OpenJDK Binaries for Free!

Azul Systems: Zulu OpenJDK ,

InfoQ (23.12.2018): Java Language Architect Brian Goetz on Java and the JDK

Golem (15.11.2018): Corretto OpenJDK: Amazon veröffentlicht eigene freie Java-Distribution
Nachdem Oracle den Java-Support nur noch gegen Bezahlung anbietet, will Amazon die Sprache in seiner Cloud kostenlos fünf Jahre pflegen. Das reicht vielen Kunden aber nicht, so dass Amazon mit Corretto seine eigene OpenJDK-Distribution frei zur Verfügung stellt.

Amazon AWS (14.11.2018): Introducing Amazon Corretto, a No-Cost Distribution of OpenJDK with Long-Term Support

Amazon AWS: Amazon Corretto
Kostenlose, plattformübergreifende, produktionsbereite Distribution des Open Java Development Kit (OpenJDK)

Hinter Amazons OpenJDK-Distribution steht übrigens niemand Geringerer als Java-Erfinder James Gosling, der inzwischen seit 2017 bei Amazon unter Vertrag ist und dort arbeitet .

heise (25.03.2019): Java: Alibaba schiebt eigene OpenJDK-Variante Dragonwell in die Open-Source-Welt
Nach Amazon stellt auch die chinesische Firma Alibaba eine eigene Variante des OpenJDK quelloffen zur Verfügung: Dragonwell.
0
gfhfkgfhfk07.10.1919:00
FabiLig
Hallo Ihr Lieben,

ich bin absoluter Anfänger, deswegen nehmt mir meine Ahnungslosigkeit bitte nicht übel.
Wie gut sind Deine Englischkenntnisse? Wenn es darum nicht so gut bestellt ist, solltest Du Dir eine Sprache aussuchen zu der es ausreichend Literatur auf Deutsch gibt. Dazu ist es einfacher mit einer interpretierten Sprache anzufangen, weil es da einige Probleme compilierter Sprachen nicht gibt.
+3
g-kar07.10.1921:33
Ich verwende für meine (berufliche) Java-Entwicklung am Mac die Netbeans-IDE (inzwischen von Oracle an Apache übergeben) zusammen mit einem OpenJDK (von AdoptOpenJDK).
(Hänge derzeit aber noch auf Java 8 fest, da die Zielplattform, Oracle Solaris x64, von keinem mir bekannten Anbieter mit JDK-Binaries ab Java 9 aufwärts mehr versorgt wird. Wird Zeit, dass wir die Plattform wechseln )
+1
FabiLig07.10.1922:34
Danke für die ganzen Antworten!

Java habe ich ausgewählt, da mein Studium in kürze beginnt und dort im ersten Semester Java und im zweiten C++ drankommen wird. Aktuell habe ich bis zum Semesterstart etwas Freizeit und dachte ich probiere mich schon etwas aus. Ich werde mir mal Visual Studio Code zu Beginn anschauen und dann vielleicht mal Eclipse oder Netbeans wenn die Basics sitzen.

Meine Englisch ist gut bis sehr gut, da mache ich mir keine Sorgen.

Ist denn Xcode als IDE nicht empfehlenswert für meine Zwecke ?
Mein Gedanke war, dass Xcode ja wahrscheinlich perfekt in das Apple System integriert sein wird und es deswegen vielleicht leicht zu Händeln ist bzw. auf dem Mac besser läuft.
0
aragorn07.10.1922:44
Früher konnte man mit Xcode/ProjectBuilder mit Java entwickeln. Die Zeiten sind vorbei, Du brauchst also eine andere IDE.
+1
gfhfkgfhfk10.10.1912:45
FabiLig
Ist denn Xcode als IDE nicht empfehlenswert für meine Zwecke ?
Mein Gedanke war, dass Xcode ja wahrscheinlich perfekt in das Apple System integriert sein wird und es deswegen vielleicht leicht zu Händeln ist bzw. auf dem Mac besser läuft.
Java spielt auf dem Mac kaum eine Rolle mehr. Für Anwendungen wird es gar nicht gern gesehen, und als Serverplattform spielt macOS keinerlei Rolle mehr. Als Apple noch versuchte WebObjects als Alternative zu Java EE noch zu vermarkten, gab es noch gute Java Unterstützung in MacOS X. Das ist aber lange vorbei.

Wenn Du kein Geld ausgeben willst, ist Eclipse oder Netbeans eine sinnvolle IDE. Viele Entwickler nutzen IntelliJ. Aber aus Erfahrung wird in einem Studium zu Anfangs ein JDK mit gutem Editor ausreichen. Die mini Programme kann man problemlos direkt in der Shell mit javac übersetzen. VS Code wäre insofern auch eine Lösung.
+2
LoCal
LoCal10.10.1913:44
gfhfkgfhfk
FabiLig
Ist denn Xcode als IDE nicht empfehlenswert für meine Zwecke ?
Mein Gedanke war, dass Xcode ja wahrscheinlich perfekt in das Apple System integriert sein wird und es deswegen vielleicht leicht zu Händeln ist bzw. auf dem Mac besser läuft.
Java spielt auf dem Mac kaum eine Rolle mehr. Für Anwendungen wird es gar nicht gern gesehen, und als Serverplattform spielt macOS keinerlei Rolle mehr. Als Apple noch versuchte WebObjects als Alternative zu Java EE noch zu vermarkten, gab es noch gute Java Unterstützung in MacOS X. Das ist aber lange vorbei.

Da muss ich Dir widersprechen. Man kann Java-Anwendungen unter macOS genauso nutzen wie zu ProjectBuilder-Zeiten, als Java noch von Apples-Haus-IDE unterstützt wurde.
Das einzige was sich geändert hat ist, dass Xcode nicht mehr die Möglichkeit bietet damit Java-Anwendungen zu entwickeln.

Aber, wenn man masochistisch veranlagt ist, dann kann man ohne weiteres in Java geschriebene GUI-Anwendungen unter macOS nutzen. Der Schmerz kommt dann auch von Java und nicht von macOS.
Server-Anwendungen kann man ohnehin ohne Probleme nutzen.
Das Betriebsystem selbst hat sich in Laufe der Jahre in Bezug auf Java kaum geändert.

Aber ich bin mir nicht sicher, ob ich Java noch als Einstiegssprache empfehlen würde.

EDIT: Gerade gesehen
Java habe ich ausgewählt, da mein Studium in kürze beginnt und dort im ersten Semester Java und im zweiten C++ drankommen wird.
Darum ziehe ich mal meine Nicht-Empfehlung zurück.
„Ich hab zwar keine Lösung, doch ich bewundere dein Problem“
0
gfhfkgfhfk10.10.1914:26
LoCal
Da muss ich Dir widersprechen.

Aber, wenn man masochistisch veranlagt ist, …
Nein, Du widersprichst mir nicht wirklich, da Du das Paradebeispiel lieferst, weshalb unter macOS Java Applikationen kaum noch eine Rolle spielen. Ich schrieb ja nicht, dass sie nicht mehr lauffähig wären.
+2
Fabianexe
Fabianexe10.10.1917:11
Zum lernen würde ich auch mit Editor anfangen so lernt man mehr als wenn eine IDE die Hälfte ein abnimmt.

Wenn du aber recht bald in Java Sachen abgeben musst die funktionieren kann es durchaus Sinn machen sich nicht zu lange mit den Basics auseinander zu setzen sondern mehr auf die Logik zu konzentrieren und darum gleich eine IDE zu benutzten.

Wenn es eine IDE werden soll empfehle ich dir definitiv IntelJ. Zumal du als Student es sogar (höchstwahrscheinlich) umsonst bekommst:
https://www.jetbrains.com/student/
+2
Peter Eckel10.10.1918:01
Java ist ohnehin langsam aber sicher auf dem absteigenden Ast (worüber ich nicht wirklich unglücklich bin, ich fand die Sprache und das Ökosystem immer scheußlich und seit dem Erwerb von Sun durch Oracle ist es nicht besser geworden).

Das hilft aber nichts, wenn es halt im Lehrplan steht und sich die ersten Semester halt noch damit auseinandersetzen müssen. Da muß er jetzt halt durch.

Ich würde mich auch der Empfehlung anschließen, als "IDE" zunächst mal für die ersten Schritte einen einfachen Editor einzusetzen. Erfahrungsgemäß ist es bei Java aber schon bei nur leicht steigendem Komplexitätsgrad der Programme so, daß man ohne eine vernünftige Entwicklungsumgebung viel Zeit verliert.

Ich habe in der Zeit, als ich mich mit Java auseinandersetzen mußte, zunächst Eclipse und später dann (wegen irgendeines Problems, das ich offenbar verdrängt habe) NetBeans benutzt. Schön sind beide nicht, funktionieren tun beide. Wenn Jetbrains für Studenten gratis sein sollte, würde ich das an Stelle des OP auch noch ausprobieren - PyCharm für Python aus dem gleichen Hause ist ziemlich brauchbar.
0
ssb
ssb10.10.1918:18
Also wenn du es Hard-Core bzw. Back-To-The-Roots magst, dann nutze VI oder EMACS als Editor und baue über die Kommando-Zeile. Um eventuell die fehlende Teile zu installieren, verwende Homebrew um sie zu installieren.

Etwas weniger Hard-Core wäre auch BBEdit als Editor und Shell zum bauen. Im Grunde geht jeder Editor, der für Entwickler gedacht ist und davon gibt es eine gute Auswahl.

Man kann auch Xcode benutzen, um mit Java zu entwickeln, aber eben leider nur mit viel manueller Arbeit bei der Konfiguration von Projekten.

Es ist aber mal wieder bezeichnend für unsere Universitäten, dass sie Sprachen lehren, die nicht mehr allgemein angewendet werden. Für Server-Anwendungen macht Java Sinn, aber für PCs? Lieber nicht...
Aber es hat ja auch Jahrzehnte gedauert (vermutlich eine Generation an Professern) bis kein COBOL mehr gelehrt wurde.

Für C/C++ solltest du dann aber doch Xcode verwenden.

Ich hoffe aber, dass die auch was über Build-Tools wie GNUMake oder CMake beigebracht wird. Gerade CMake hat den Charme, dass es ein Meta-Build-Tool ist. Es erzeugt die Build-Files erst und kann sie dann auch nutzen. Einem CMake-Projekt sagst du einfach: Generiere mir ein File für meine IDE - und dann kannst du das Projekt damit Öffnen, Bearbeiten und Bauen. Gerade bei Projekten die nicht nur eine Platform bedienen sollen, ist das sehr geschickt.

Aber zum Üben reicht auch die Kommandozeile, damit dürftest du durch das erste Semester kommen. Im Grunde kannst du dabei auch einige Dinge lernen - die Nutzern einer IDE nie lernen werden, zum Beispiel die Wirkung diverser Optionen, die an den Compiler übergeben werden.

Übrigens Mendel: das betagte Objective-C ist moderner als die meisten anderen Sprachen wegen des "late-dynamic-bindings". Es ist halt eher "Smalltalk im C-Gewand" als ein "C++ Dialekt mit komischer Syntax". Ich finde den Smalltalk Ansatz genial und ich bin davon enttäuscht, dass Apple sich von Objective-C abwendet. S.J. dreht sich da sicher ständig im Grab um. Mit dem Wechsel auf Swift haben sie gemerkt, dass das geniale Cocoa-Binding - mit dem man einfach Apps ohne eine Zeile Code entwickeln konnte - gar nicht mehr geht. Plötzlich wird die Kopplung von Interface Builder Objekten mit dem Code bei Swift unhandlich. Und dann: ach, gehen wir zurück in die Steinzeit und propagieren SwiftUI als den neuesten Schrei. Dann baut man GUI's wieder wie zu System 7 Zeiten aus Code... Gruselig....
Nur weil Apple es jetzt nicht mehr mag (aber eigentlich will Chris Lattner nur der Johnny Ive der Programmiersprachen werden) ist es noch lange nicht betagt. Es ist und bleibt genial und vieles was Objective-C per Design kann wird dann in anderen Sprachen aufwändig nachgebaut, siehe C# Reflections.
+1
sierkb10.10.1918:54
[OT]
ssb:

Zu Deinen Einlassungen bzgl. Obj-C gehörst Du damit wohl eher zu einer immer kleiner werdenden Minderheit, die nicht wahrhaben will, dass sich die Zeiten und Anforderungen an eine Programmiersprache (gerade in puncto Sicherheit) geändert haben zu Ungunsten aller C-Sprachen nebst deren Abkömmlingen (wozu Obj-C gehört).

Es hat wohl überlegte Gründe (die mit Chris Lattner nichts zu tun haben und viel grundlegenderer Natur sind), warum Apple Obj-C nicht weiterverfolgt, und es hat wohl überlegte Gründe, warum es Apples Swift gibt, warum es Mozillas Rust und Googles Go (u.a. geschrieben von einem der C-Autoren) gibt. Sie alle haben eines gemeinsam: sie sind nicht C und auch kein Abkömmling von C – ganz bewusst nicht. Und sie sind per Design memory safe (sorgen also nicht mehr für Speicherüberläufe und Speicherlecks – eine der häufigsten Ursachen für heutige Sicherheitslücken) bzw. haben u.a. aus dem Grund auch keine keine Pointer mehr.

Gerade erschienen:

Astropad Astroblog (07.10.2019): Why we’re bringing Astropad cross-platform with Rust

Die begründen sehr einleuchtend, warum sie sich ganz bewusst gegen Obj-C und für Rust entschieden haben. Und sie sind nicht die Einzigen.

Obj-C ist veraltet und ein Dead End. Face it.
Würde man Obj-C ändern und auf einen Stand bringen, der heutigen Anforderungen genügt, müsste man es so sehr ändern, dass es seinen Charakter völlig verlieren würde, nicht mehr abwärtskompatibel wäre, nicht mehr C-kompatibel wäre – kurzum: nicht mehr Obj-C wäre, sondern etwas völlig Anderes, Neues. Genau das alles hat Apple analysiert, intern mehrfach durchgespielt, und sich nach reiflicher Überlegung und Abwägung dann dagegen entschieden. Deswegen gibt es Swift. Es ist genau dieser Neuanfang unter Berücksichtigung aktuelller Anforderungen an eine Anwendungs- und System-Programmiersprache – der mit Obj-C eben einfach nicht möglich ist.

[/OT]
0
ssb
ssb10.10.1920:02
[OT] sierkb
Nun mag das sicherlich eine eher akademische Betrachtungsweise sein, was an Objective-C bzw. SmallTalk Sprachen besser und moderner ist. Zum Beispiel dass Methoden sich nicht gegenseitig aufrufen (static linkage) sondern sich Nachrichten schicken: könntest du bitte dies tun? Dazu muss nur sichergestellt sein, dass der Empfänger mit der Nachricht was anfangen kann (sonst gibt es eine Exception) - ansonsten ist es vollkommen egal, um was für ein Objekt es sich handelt.
Die prozeduralen (auch mit OO sind sie noch prozedural) Programmiersprachen wie Swift, C++ etc. können das nicht leisten, daher wurden eben in C# Reflections eingeführt.

Natürlich sind Pointer gefährlich, wenn man damit nicht umzugehen weiß. Manuelles Speichermanagement ebenfalls, aber mit ARC gibt es dieses Problem kaum noch in Objective-C - und ARC ist eher ein Compiler Feature als ein Language Feature. Gemäß der Devise "wenn man weiß, was man tut, kann man tun was man will" erlauben Pointer einfach Möglichkeiten die ohne nur schwer zu lösen sind. Die notwendige Vorsicht ist dabei geboten. Unit-Testing, ASAN, Code-Analyse etc. gehören dazu.

Die "memory-safe" Features von Swift, Rust und Go haben für mich eher den Character, Hobby-Entwicklern zu ermöglichen, "schlampigen" Code zu schreiben ohne dass davon ein Risiko für den Nutzer ausgeht. Schlampig dabei in dem Sinn, dass man das Speichermanagement der Sprache überlässt und selbst nicht mehr wissen muss, wie das funktioniert. Die Overflows/Underruns, Leaks etc. sind ja keine Eigenschaft einer Programmiersprache sondern ein Ergebnis von Programmierfehlern. Mag sein, dass man sie mit Swift gar nicht mehr machen kann - aber dafür kann man mit Swift nicht alles machen, was in C möglich ist.

Ich habe bislang auch erst ein einziges Mal etwas kleines (ca. 20 Zeilen) in C# geschrieben - an sich ist C# auch Memory-Safe. Tja... und da musste ich schon "unsafe" benutzen.

Aber belassen wir es dabei. Ich finde Objective-C vom Ansatz her wesentlich mächtiger. Und ich programmiere sehr viel in C und teilweise in Assembler. Meine Anforderungen in dem Bereich kann Swift nicht erfüllen - will es vermutlich auch gar nicht. Auch die "Engineers" bei Apple hatten während einer WWDC, nach einer Demo, was ich da mache, ungläubig geschaut und gemeint: aber das geht doch gar nicht. (War noch lange vor Swift)

Es ist einfach so, dass jede Programmiersprache in dem jeweiligen Anwendungsfall seinen Sinn hat. Ich wehre mich auch gar nicht gegen Swift, ich hatte bislang einfach keinen Grund, es zu benutzen - Apple wird mich aber langfristig dazu nötigen. Ich hatte aber auch noch nie einen Grund Java zu benutzen. Es gab aber Gründe, warum ich in PERL, Python, Pascal und einigen anderen Sprachen programmiert habe und wenn es nicht mehr anders geht, dann werde ich auch Swift meistern.

Mein Einwurf galt nur der Aussage, dass Objective-C betagt ist - es ist konzeptionell wesentlich moderner als viele andere Sprachen. Das bleibt Objective-C auch, unabhängig davon, ob Apple es durch Swift ersetzt. Es ist ja nicht das erste Mal in der Geschichte der Menschheit (insbesondere der IT-Geschichte), dass sich nicht das Bessere durchsetzt - aber schon diese Beurteilung ist sehr individuell.
[/OT]
-1
sierkb10.10.1920:09
[OT]
ssb:

Deine ganz persönliche Meinung. Sie muss man nicht teilen – und sie wird auch nicht von allen geteilt.
Wir sollten es dabei belassen (schlägst Du selber ja auch vor) und es im Sinne der Thread-Hygiene und mit Rücksicht auf den Fragenden hier nicht weiter vertiefen, weil es sonst den Thread hier sprengen würde – das Thema hier ist ein Anderes und bezieht sich auf Java (btw.: Apple hatte es mal ursprüngl. und lange Zeit zum "First Class Citizen" unter MacOS X gemacht und umgarnt und umworben bzw. sogar damit eine Zeit lang ernsthaft geliebäugelt und ins Auge gefasst, es als Ablöse für ObjC zu nehmen – es kam dann anders) bzw. Java Programmierung auf dem Mac. D'accord?
[/OT]
+1
LoCal
LoCal10.10.1921:09
gfhfkgfhfk
LoCal
Da muss ich Dir widersprechen.

Aber, wenn man masochistisch veranlagt ist, …
Nein, Du widersprichst mir nicht wirklich, da Du das Paradebeispiel lieferst, weshalb unter macOS Java Applikationen kaum noch eine Rolle spielen. Ich schrieb ja nicht, dass sie nicht mehr lauffähig wären.

Ich meinte damit Java-GUI-Anwendungen im allgemeinen, egal auf welchem OS.
„Ich hab zwar keine Lösung, doch ich bewundere dein Problem“
+1
misc10.10.1922:12
Mendel Kucharzeck
Alternativ gäbe es noch C# und das simple, aber betagte Objective-C.

ObjC ist nur dann einfach zu lernen, wenn man C bereits kann. Und niemand sollte heutzutage noch C lernen. Dann lieber wie hier auch schon angesprochen "moderne" Sprachen wie Go oder Rust. Swift ist quasi eingeschränkt auf eine Plattform und mir für Anfänger immer noch zu volatil.
-2
misc10.10.1922:19
ssb
Nun mag das sicherlich eine eher akademische Betrachtungsweise sein, was an Objective-C bzw. SmallTalk Sprachen besser und moderner ist.

Kein Zweifel, ist Smalltalk eine nette Sprache und ein schönes Konzept. Das Problem an Objective-C ist auch nicht der von Smalltalk inspirierte Teil, sondern der geerbte C-Teil. Sowas geht heutzutage nicht mehr und damit ist ObjC auch unrettbar.
+1
LoCal
LoCal10.10.1922:21
misc
ObjC ist nur dann einfach zu lernen, wenn man C bereits kann. Und niemand sollte heutzutage noch C lernen.

Was schlicht falsch ist! Auch wenn Objective C ein Aufsatz auf C ist, merkt man nur bedingt was von C. Weiter ist Objective C eine objekt-orientierte Sprache, während C eine prozedurale Sprache ist.
misc
Dann lieber wie hier auch schon angesprochen "moderne" Sprachen wie Go oder Rust. Swift ist quasi eingeschränkt auf eine Plattform und mir für Anfänger immer noch zu volatil.

Und noch mal falsch. Swift beschränkt sich nicht (auch nicht quasi!) auf eine Plattform. Swift ist z.B. auf einem Raspi nichts ungewöhnliches.
„Ich hab zwar keine Lösung, doch ich bewundere dein Problem“
0
chb11.10.1900:14
LoCal
Swift beschränkt sich nicht (auch nicht quasi!) auf eine Plattform. Swift ist z.B. auf einem Raspi nichts ungewöhnliches.

Ganz genau, Swift ist Open Source und cross-platform.
Zudem gibt es server-side-swift Frameworks wie Kitura (mit Unterstützung von IBM), die sich wunderbar als Ersatz für z.B. node.js eignen, und bestens auf Linux Systemen laufen.
-1
FabiLig11.10.1900:26
Ich konnte Kontakt zu einem Studenten herstellen der im 4. Semester Wirtschaftsinformatik studiert. Seine Empfehlung war erstmal ein Editor (VS Code, Atom o.ä) wirklich nötig ist eine IDE wohl erst ab dem dritten Semester.

Ich habe mir heute mal Eclipse angeschaut und war ziemlich überfordert, das anlegen von Projekten, 100 Einstellungen und 1001 Bedienelemente. Daraufhin habe ich mir VS Code angeschaut und habe mich ziemlich intuitiv darin zurecht gefunden.
Ich habe nun meine ersten Hello World Programme erstellt und diese dann über das Terminal (mit <javac>) compiliert und ausgeführt (<java>).

Dazu kommt für mich, dass ich auch html und css Dateien nebeneinander inkl. Syntax highlighting und preview editieren kann.

C++ sollte dann ja über Xcode klappen. Gibt es eigentlich eine aktuelle Liste welche Programmiersprachen Xcode unterstützt?

Nochmal vielen Dank an euch alle !:)
+1
Martek11.10.1906:29
Ich denke die meisten Kommentare hier kannst du erstmal ignorieren. Java und C sind Teil deines Studiums und da ist es nicht relevant ob die Sprachen toll sind oder nicht.

Ich habe auch im Studium mit C und Java gearbeitet und das an der renommierten TU Darmstadt. Der Sinn ist nicht dass man der beste Java Entwickler wird, sondern bei Java eher dass man die Konzepte von Object-Orientierten Programmiersprachen lernt und versteht und da eignet sich Java tatsächlich sehr gut. Bei C ist im Studium ebenfalls nicht der Sinn ein nächster C Entwickler zu werden, sondern Hardwarenah zu programmieren. C ist so nah am Compiler und Maschinencode, dass man damit viel besser versteht wie eine CPU tickt als mit irgendeiner anderen Sprache.

Insofern verstehe ich warum die Unis beide Sprachen noch lehren. In der Uni ist es aber mMn weniger interessant ob die Sprachen relevant sind, als das man die Konzepte dahinter versteht.

Im Berufsleben arbeite ich heute eher mit JS, Go, Swift, C# oder Elixir. Java oder C Sprachen kommen zumindest bei mir eher selten vor. Allerdings gibt es trotz der Lizenzkosten immernoch genug Unternehmen die auf Java Backends selbst für Web Entwicklung setzen. Java Entwickler werden am Markt auf jedenfall noch immer stark gesucht.
+2
ssb
ssb11.10.1910:01
Martek: mir ist nicht klar, warum dein Beitrag bei -1 Like stand - naja, ich habe getan, was ich tun konnte, und den Zähler erst mal wieder auf 0 gesetzt.

Aber du bringst es auf den Punkt: er hat nicht die Wahl für welche Programmiersprache er sich entscheidet. Die Uni sagt: du machst Java und C/C++. Damit ist er schon einmal festgelegt.
Auch die Begründung, warum Unis das so machen ist korrekt: Java um die Konzepte von Objekt-orientierten Sprachen zu verstehen, C/C++ um zu verstehen, wie ein Computer funktioniert. Ich glaube, ich habe über letzteres mehr gelernt als die meisten Uni-Absolventen, während ich auf einem Siemens ECB 85 Board in Maschienensprache (per Hand assembliert) programmiert hatte. Da kann man gefühlt zuschauen, wie die Bits und Bytes über das Board huschen und der CPU beim Rechnen zuschauen - und ich musste mich selbst darum kümmern, was auf dem Stack landet und wie ich ihn aufzuräumen hatte.

Die "modernen" Hochsprachen abstrahieren das schon so weit, dass man - aus nachvollziehbaren Gründen - keinen Bezug mehr dazu hat, was der Compiler aus dem Code macht. Was landet auf dem Stack, was in Registern und was im Heap? Wo ist was besser aufgehoben? Ich hatte erst so einen Fall, den ich beim Code Review rejected hätte. Da wurde mit einem benutzerdefinierteren Format-String per sprintf() in einen Puffer auf dem Stack geschrieben. Mir ist der potentielle Stack-Overflow gleich ins Auge gesprungen.
Daher erachte ich C/C++ im [irgendwas]-Informatik Studium zu erlernen als sehr wichtig. Ebenso wichtig wäre es, den Code, den der Compiler erzeugt, zu studieren - also auch Assembler. Wer nicht weiß, was ein Stack ist und wie er genutzt wird, der wird auch nicht verstehen, wie man Stack-Overflows ausnutzen bzw. vermeiden kann.
Aber leider werden auch viele andere Bereiche, wie Build-Management, statische und dynamische Code-Analyse, Unit-Tests und Software-Metriken, an Universitäten vernachlässigt. Das gehört dann zum Selbststudium.

misc: wie gerade ausgeführt, finde ich es wichtig, hardwarenahe Sprachen zu lernen. Wer nicht ein wenig C gelernt hat, der wird manche Konzepte eines Computers nicht verstehen. Klar - zum Autofahren reicht ein Führerschein, man muss kein Mechatroniker sein. Aber man sollte sein Handwerk verstehen, wenn man an einem Auto "schrauben" will. Der Nutzer einer Software muss nur wissen was er will und wie er es mit der Software am besten erreicht - ein Softwareentwickler sollte aber verstehen, wie ein Computer, insbesondere eine CPU, funktioniert.

FabiLig: meines Wissens unterstützt das aktuelle Xcode C, C++, Objective-C und Objective-C++ und Swift. Wenn man weiß wie, kann man auch andere Sprachen damit nutzen, wie C#, Python, Java, Javascript und andere. Aber der Aufwand ist recht groß, der Editor spielt da oft nicht optimal mit - es ist effizienter, dafür andere IDEs zu nutzen oder - wie du - einen Source-Editor und die Kommandozeile. Als Build-System würde ich bei Bedarf auf CMake setzen, sobald das für deine Projekte notwendig ist.
0
sierkb11.10.1910:52
[OT]

MMn: sehr, sehr lesens- bzw. hörenswert (man bringe Zeit mit – viel Interessantes, Wissenswertes zu lesen bzw. zu hören – aber es lohnt sich):

Chris Lattner im interview:

Youtube (13.05.2019): Lex Fridman interviews Chris Lattner: Compilers, LLVM, Swift, TPU, and ML Accelerators | Artificial Intelligence Podcast (Interview zum Sehen & Hören)

Accidental Tech Podcast (Marco Arment, Casey Liss, John Siracusa): Episode 205 (18.01.2017): An interview of Chris Lattner: People Don't Use the Weird Parts (Interview zum Hören als Audio)

Transcript of episode 205, an interview of Chris Lattner on January 17, 2017 (Interview zum Lesen als Transcript des zugehörigen Audio-Interviews)

Dennis Ritchie, Bjarne Stroustrup, James Gosling im Interview:

gotw.ca: C Family Interview: The C Family of Languages: Interview with Dennis Ritchie, Bjarne Stroustrup, and James Gosling (This article appeared in Java Report, 5(7), July 2000 and C++ Report, 12(7), July/August 2000.)

Außerdem am Rande:

Packt (27.08.2019): “Rust is the future of systems programming, C is the new Assembly”: Intel principal engineer, Josh Triplett

Youtube (14.08.2019): Intel and Rust: the Future of Systems Programming: Josh Triplett

ZDNet (11.02.2019): Microsoft: 70 percent of all security bugs are memory safety issues
Percentage of memory safety issues has been hovering at 70 percent for the past 12 years.

[/OT]
-1
sierkb11.10.1911:08
[OT]
Nachtrag, Korrektur des vorangegangenen Postings: 1. Link ist leider falsch, sorry – ist hiermit korrigiert:

Youtube (13.05.2019): Lex Fridman interviews Chris Lattner: Compilers, LLVM, Swift, TPU, and ML Accelerators | Artificial Intelligence Podcast (Interview zum Sehen & Hören)

[/OT]
-1
gfhfkgfhfk11.10.1912:08
LoCal
Ich meinte damit Java-GUI-Anwendungen im allgemeinen, egal auf welchem OS.
Es ist noch immer für Fachanwendungen für Crossplattformlösungen sehr verbreitet. Wenn ich mir da so Produkte wie Oxygen anschaue, dann sieht es mit nicht Java Alternativen ziemlich schlecht aus. Potentielle Alternativen wie Qt sind auch nicht problemfrei.
FabiLig
C++ sollte dann ja über Xcode klappen. Gibt es eigentlich eine aktuelle Liste welche Programmiersprachen Xcode unterstützt?
Xcode taugt nur dazu Mac spezifische Dinge zu entwickeln. Ich würde es definitiv nicht für andere C++ Projekte nutzen. D.h. will man reine Serveranwendungen in C++ schreiben, gibt es bessere IDEs dafür. Für Qt und Gtk sollte man die dazu passenden IDEs nutzen (QtCreator für Qt und Anjuta für Gtk). Eclipse gibt es in diversen Ausführungen, die alle einen anderen Schwerpunkt bei der Entwicklung haben. nVidia liefert eine spezielle Eclipse Version als IDE für die CUDA-Entwicklung aus. Intel liefert für Eclipse Plugins, damit man Intels Toolchain direkt nutzen kann. IMHO wirst Du Dich früher oder später mit Eclipse auseinandersetzen müssen, wenn es in diese Richtung geht.

P.S. Rust wird auch unterstützt.
LoCal
Was schlicht falsch ist! Auch wenn Objective C ein Aufsatz auf C ist, merkt man nur bedingt was von C. Weiter ist Objective C eine objekt-orientierte Sprache, während C eine prozedurale Sprache ist.
Man merkt beständig die C Probleme an Objective-C.
ssb
Übrigens Mendel: das betagte Objective-C ist moderner als die meisten anderen Sprachen wegen des "late-dynamic-bindings".
Es gibt so viele Programmiersprachen mit diesem Feature. Es ist müßig nur an diesem einem Aspekt festzumachen, ob eine Sprache modern ist oder nicht. Objective-C krankt an diversen Fehler aus C, die es ermöglichen leicht Fehler einzubauen, die sich anschließend nur sehr schwer finden lassen.
+3
gfhfkgfhfk11.10.1912:14
ssb
misc: wie gerade ausgeführt, finde ich es wichtig, hardwarenahe Sprachen zu lernen. Wer nicht ein wenig C gelernt hat, der wird manche Konzepte eines Computers nicht verstehen.
Man kann das genauso gut mit Ada lernen. Weshalb muss es unbedingt C sein?
+2

Kommentieren

Sie müssen sich einloggen, um sich an einer Diskussion beteiligen zu können.