Guten Morgen allerseits :-) Ich habe vor mich in Java einzuarbeiten, ich habe keinerlei Vorkenntnisse in Java und nur geringe Programmierkenntisse überhaupt. Folgende zwei Bücher habe ich in meine engere Wahl genommen: Java: Eine Einführung in die Programmierung - https://www.amazon.de/Java-Eine-Einf%C3%BChrung-die-Programmierung/dp/3446451943/ref=sr_1_1?ie=UTF8&qid=1534640914&sr=8-1&keywords=Java++Eine+Einf%C3%BChrung+in+die+Programmierung oder [[Programmieren lernen mit Java: Der leichte Einstieg für Programmieranfänger]] - https://www.amazon.de/Programmieren-lernen-mit-Java-Programmieranf%C3%A4nger/dp/3836256053/ref=sr_1_1?s=books&ie=UTF8&qid=1534641604&sr=1-1&keywords=programmieren+lernen+mit+java Beide Bücher sind für Anfänger geeignet. Welches würdet ihr eher empfehlen?
Java von Kopf bis Fuß: https://www.amazon.de/Java-von-Kopf-bis-Fu%C3%9F/dp/3897214482/ref=sr_1_1?ie=UTF8&qid=1534672264&sr=8-1&keywords=java+von+kopf+bis+fu%C3%9F Entwurfsmuster von Kopf bis Fuß: https://www.amazon.de/Entwurfsmuster-von-Kopf-bis-Fu%C3%9F/dp/3955619869/ref=sr_1_3?ie=UTF8&qid=1534672264&sr=8-3&keywords=java+von+kopf+bis+fu%C3%9F Die Bücher sind zwar nicht die Neusten (ich meine, Java von Kopf bis Fuß basiert auf Java 1.6), das macht aber nichts. Es ist in diesem Sinne nicht veraltet, es kamen meines Wissens nach nur neue Sachen hinzu. Das Entwurfsmusterbuch ist eher eine Einführung in objektorientierte Programmierung (mit Java-Beispielen), gehört m.E. aber dringend dazu, wenn man sich in Java einarbeiten will und von OOP keine Ahnung hat. Andernfalls neigt man dazu, Klassen lediglich als Datencontainer zu gebrauchen, als benutzerdefinierten Datentyp sozusagen. Während Sichtbarkeitsmodifizierer, Interfaces, abstrakte Klassen, innere Klassen, usw. alles nur unnötig kompliziert erscheint. Die Vorteile hingegen, wie dieses Werkzeuge angewandt werden, bleibt einem in den meisten Büchern, die nur die Sprache behandeln, in der Regel verborgen.
Gibt es nicht ein Standardwerk so wie Tietze-Schenk im Etechnik Bereich? ??? Ich glaube "Java ist auch eine Insel" müßte das Pendant sein, oder? Was sagen denn die Informatiker dazu?
Man kann sich auch online einarbeiten: https://www.tutorialspoint.com/java/index.htm Java - Online Programmierung http://www.compileonline.com/compile_java_online.php Java 8 - Online Programmierung http://www.compileonline.com/compile_java8_online.php Man kann also gleich loslegen.... Vorraussetzung(wie ueblich): Englischkenntnisse
ohne Account schrieb: > "Java ist auch eine Insel" Leseprobe hier: http://openbook.rheinwerk-verlag.de/javainsel/ "Vorwort\Über dieses Buch" lesen (was das Buch ist und was es nicht ist).
Niemand schrieb: > Welches würdet ihr eher > empfehlen? Ich habe mit diesem Buch gute Erfahrungen gemacht: https://www.hanser-fachbuch.de/buch/Grundkurs+Programmieren+in+Java/9783446440739
Wenn du keinen zwingenden Grund hast und Java nicht unbedingt einsetzen musst, dann lass es sein. Du wirst 3-5 Jahre Programmierpraxis brauchen, um effektiv objektorientiert und funktional programmieren zu können. Alle realweltlichen Probleme (Datei einlesen, als CSV ausgeben; Benutzereingaben entgegennehmen, Berechnung vornehmen, Graph ausgeben; REST-Anfrage entgegennehmen, Datenbank abfragen, HTTP-Response ausgeben) kannst du mit weniger Aufwand deutlich schneller (=eleganter) lösen. Java ist keine Sprache, sondern mittlerweile eine Ansammlung verschiedener Programmierparadigmen. Das fängt bei prozeduralem Stil an, geht über Aspekt-orientierung (Annotations) und hört bei der Kombination aus funktionaler und objektorientierter Programmierung auf. Dazwischen hast du alles. Wenn es dir um die Methodik geht: http://wiki.c2.com/?DesignPatterns; https://de.wikipedia.org/wiki/Liskovsches_Substitutionsprinzip, https://en.wikipedia.org/wiki/Leaky_abstraction. Ohne Bibliotheken bist du aufgeschmissen, die bekommst du entweder über Gradle oder Maven – bereits die erste Grundsatzentscheidung. Danach brauchst du eine Anreicherung der Laufzeitumgebung, etwas wie Spring oder wenigstens AOP (aspect oriented programming/ dependency injection). Wenn der ganze Hokuspokus Ballast ist, brauchst du auch kein Java. (Natürlich lassen sich Bibliotheken auch von Hand herunterladen, aber wie verteilst du die dann?) Java hat zudem keine echte Benutzeroberfläche mehr. Oracle moderierte JavaFX ab, was nun in Händen der Gemeinschaft liegt. Swing wird noch bis über Java 11 hinaus unterstützt, ist aber recht sperrig. AWT ist der älteste Hut – neben Tcl/Tk – der noch aufgesetzt werden kann. Daher wird oft Java als Backend für eine Web-UI verwendet. Reines Number-Crunching und kleine Tools machst du lieber in Perl, Python, Rust o.ä. Vielleicht kannst du ein konkretes Problem schildern. Sonst rate ich dir, die Zeit lieber in Erkenntnisgewinn auf dem Gebiet der (Finanz-) Derivate zu stecken. Da ist Geld zu holen.
Boris O. schrieb: > Sonst rate ich dir, die Zeit lieber in Erkenntnisgewinn auf dem Gebiet > der (Finanz-) Derivate zu stecken. Da ist Geld zu holen. Wenn du mich gründlich anleitest bin ich dabei :) Sonst bleibts bei Java. Konkretes Problem? Ehrlich gesagt hab ich mir keine Gedanken gemacht, bin auf den Geschmack gekommen zu programmieren und Java soll eine leicht zu erlernende Sprache sein mit der man so ziemlich alles machen kann.
Der Boris übertreibt meines Erachtens ganz gewaltig. An Bibliotheken gibt es oft viel Auswahl, aber das hab ich nie als Problem empfunden. Zur Not probiert man halt aus. Und wer in Java prozedural programmiert, der donnert Nägel auch mit einem Fauskeils anstelle eines Hammers in die Wand. Ansonsten gilt für Java das Gleiche wie für alle andere Sprachen auch: Es wurde für einen bestimmten Zweck entwickelt und es ist nicht klug, alles mit dieser einen Sprache erschlagen zu wollen. Aber wenn du Programme für Desktop-PCs unter Windows und Linux schreiben willst ist Java eine gute Wahl. ohne Account schrieb: > Gibt es nicht ein Standardwerk so wie Tietze-Schenk im Etechnik Bereich? > ??? > Ich glaube "Java ist auch eine Insel" müßte das Pendant sein, oder? > Was sagen denn die Informatiker dazu? "Java ist auch eine Insel" ist ein gutes Nachschlagewerk. Um die Sprache - gerade als erste Programmiersprache - zu lernen, würde ich es nicht empfehlen.
> Wenn der ganze Hokuspokus Ballast ist, brauchst du auch kein Java. > (Natürlich lassen sich Bibliotheken auch von Hand herunterladen, aber > wie verteilst du die dann?) Welche Alternative gibt es denn, wenn es um Plattformunabhängigkeit geht? Gut, wenn es nur um Apps geht reicht vielleicht Objectiv C und ansonsten C ,Excel und ein wenig SQL. > Sonst rate ich dir, die Zeit lieber in Erkenntnisgewinn auf dem Gebiet der > (Finanz-) Derivate zu stecken. Da ist Geld zu holen. Tja, das sollte man in der Tat machen; ist hier aber verpönt, warum auch immer? Der Hype, viel Geld verdienen mit Programmierung, ist so langsam erloschen. > "Java ist auch eine Insel" ist ein gutes Nachschlagewerk. Um die Sprache > - gerade als erste Programmiersprache - zu lernen, würde ich es nicht > empfehlen. na ja, Grundkurse gibt's mittlerweile online zu Hauf - insofern braucht man gar kein Buch mehr. Aber ein Buch aus Papier hat natürlich Vorteile gegenüber den ganzen online / Ebook- Gedönz.
Wobei, wenn ich das nochmal so lese... Boris O. schrieb: > Ohne Bibliotheken bist du aufgeschmissen, die bekommst du entweder über > Gradle oder Maven – bereits die erste Grundsatzentscheidung. Danach > brauchst du eine Anreicherung der Laufzeitumgebung, etwas wie Spring > oder wenigstens AOP (aspect oriented programming/ dependency injection). > Wenn der ganze Hokuspokus Ballast ist, brauchst du auch kein Java. > (Natürlich lassen sich Bibliotheken auch von Hand herunterladen, aber > wie verteilst du die dann?) Für gewönlich bindet man eine Bibliothek aber als .jar-Datei ein. Diese kann man sich einfach herunterladen. Maven kommt eigentlich nur dann ins Spiel, wenn man - wie bei vielen Linux-Anwendern üblich - etwas selber kompilieren will. Ach ja...was hindert jemanden, Gradle und Maven parallel zu benutzen? Ein Plugin in der IDE, und fertig. Wo ist da eine Grundsatzentscheidung, ich sehe keine. Boris O. schrieb: > Java hat zudem keine echte Benutzeroberfläche mehr. Ja, aber welche Sprachen haben diese schon? Von einigen modernen Scriptsprachen und vielleicht C# mal abgesehen. Davon abgesehen sind Bentzeroberflächen auch nur Bibliotheken für eine Sprache und sollten von dieser tunlichst getrennt sein.
Niemand schrieb: > Konkretes Problem? Ehrlich gesagt hab ich mir keine Gedanken gemacht, > bin auf den Geschmack gekommen zu programmieren und Java soll eine > leicht zu erlernende Sprache sein mit der man so ziemlich alles machen kann. Ohne konkretes Problem: Nein! Aus meiner Sicht sind Java-Programme stets auffällig langsam und verbrauchen unmäßig viel Ressourcen - ich hasse es. Wenn dann im Systemtest eine Anwendung auffällig wurde, kam vom "Entwickler" meist als Ausrede, er habe eine Komponente xyz eingebunden, diese sei schuld und er habe keine Macht darüber. Bösartig: Java-Programmierer sind die Arduinos der Rechnerwelt. Wie kann es sein, dass die Arduino-IDE (Java!) über 10s zum Start benötigt und der dann erscheinende Editor 67 Mb Speicher belegt, geht's noch? Ohne konkrete Anforderung würde ich eher in Richtung C++ gucken, QT ist eine freie Umgebung.
Manfred schrieb: > Wie kann es sein, dass die Arduino-IDE (Java!) über 10s zum Start > benötigt und der dann erscheinende Editor 67 Mb Speicher belegt, geht's > noch? Ich will ja nicht abstreiten daß es miese Java-Programmierer gibt, es ist allerdings längst kein Alleinstellungsmerkmal. Und die miesesten Programme, mit denen ich bisher arbeiten durfte, waren ganz sicher nicht in Java geschrieben. Da war der Ressourcenverbrauch aber auch das geringste aller Probleme. Wenn ich da z.B. an EasyTec (oder so ähnlich, ein Kalkulationsprogramm) denke, das könnte sogar in C++ geschrieben worden sein. Ich hab keine Ahnung was der Arduino-Editor so alles kann, aber wenn er mit dem Funktionsumfang von Netbeans (das startet bei mir hier in etwa 5s) mithalten kann sind 10s doch völlig ok. Und schau mal hier rein: Beitrag "Professionelle Java Software" Zahlreiche Programme, deren Anwender recht zufrieden sind. Also wirklich, das mit dem Ressourcenverbrauch-allzumal auf heutigen Rechnern-ist wahrlich kein Argument (mehr).
Wühlhase schrieb: > Also wirklich, das mit dem Ressourcenverbrauch-allzumal auf heutigen > Rechnern-ist wahrlich kein Argument (mehr). Ist natürlich immer abhängig davon welche Anforderungen in der Spec stehen, aber als Programmierer sollte man doch versuchen immer sparsam mit den Resourcen umzugehen oder?
Niemand schrieb: > Ist natürlich immer abhängig davon welche Anforderungen in der Spec > stehen, aber als Programmierer sollte man doch versuchen immer sparsam > mit den Resourcen umzugehen oder? Nö, sollte er nicht. Nicht unnötig verschwenderisch sein, da gehe ich gern mit und meines Erachtens ist das auch ein großes Problem heutzutage. Allerdings hat das mit der verwendeten Sprache nur unwesentlich zu tun. Schau dir den ganzen Webkram an: Was Browser an RAM fressen macht keinen Spaß mehr und welcher Browser wurde in Java geschrieben? (Dafür darf man sich mit dem FF unter Linux ärgern wenn man den FF unter Windows gewohnt ist, wie im Nachbarthread zu lesen ist). Und wenn man sieht was manche Internetseiten einem an Datenmüll zumuten könnte man fast auf die Idee kommen, daß Browser nicht von ungefähr so fett geworden sind. Trotz Web ist das ein Bereich, wo Java allenfalls ganz am Rande mal auftaucht-wenn überhaupt. Andererseits: Wenn man Programme schreibt, die ernsthaft Leistung brauchen (ich denke da z.B. an CAD, Simulationen, usw.), da kommt es auf ein paar hundert MB im RAM mehr oder weniger auch nicht mehr an. Dafür kann eine Laufzeitumgebung-im Gegensatz zu einem kompilierten Programm-noch zur Laufzeit etwas verbessern. Zumindest theoretisch. Übrigens: Notepad++ braucht auch seine 12MB im RAM. Dafür, daß da aber keine VM und kein Garbage Collector im Hintergrund mitlaufen, empfind ich das auch nicht grad als wenig wenn ich mir in Erinnerung rufe, wie genügsam der Firefox einst mal war.
Bitte nicht noch ein Java-Entwickler mehr. Andererseits, je mehr Java-Entwickler es gibt desto seltener und damit teurer werden die professionellen Entwickler. Also gut für mich.
> Nö, sollte er nicht. das kann man auch anders sehen > Nicht unnötig verschwenderisch sein, da gehe ich gern mit und meines > Erachtens ist das auch ein großes Problem heutzutage. da fängt schon der Irrtum an, weil es sprachbedingt schon anfängt. > Allerdings hat das mit der verwendeten Sprache nur unwesentlich zu tun. > Schau dir den ganzen Webkram an: Was Browser an RAM fressen macht keinen > Spaß mehr und welcher Browser wurde in Java geschrieben? da hast Du mal ein Beispiel für einen superschnellen Browser: https://www.dillo.org/ Nur, den verwendet fast niemand, zumal eben auch nicht jede Website damit funktioniert - das ist eben ein Projekt. Du mußt davon ausgehen, daß es leider jede Menge mit irgendwelchen Tools und Baukästchen erstellte Websiten gibt mit jeder Menge Gimmicks und da geht das Theater eben los, mit 20 Addons und mehr wird der Browser fetter und langsamer, usw. > Andererseits: Wenn man Programme schreibt, die ernsthaft Leistung > brauchen (ich denke da z.B. an CAD, Simulationen, usw.), da kommt es auf > ein paar hundert MB im RAM mehr oder weniger auch nicht mehr an. Dafür > kann eine Laufzeitumgebung-im Gegensatz zu einem kompilierten > Programm-noch zur Laufzeit etwas verbessern. Zumindest theoretisch. Natürlich kann man den Weg gehen und das wird ja auch gemacht wegen Zeitersparnis und Kosten - nur das Ergebnis ist am Ende nicht so gut wie es hätte sein können .... nach dem Motto: viel Input (Hardware), bringt auch viel Output, egal wie die Software gestrickt ist. > Übrigens: Notepad++ braucht auch seine 12MB im RAM. Dafür, daß da aber > keine VM und kein Garbage Collector im Hintergrund mitlaufen, empfind > ich das auch nicht grad als wenig wenn ich mir in Erinnerung rufe, wie > genügsam der Firefox einst mal war. das Problem ist der Endanwender der den Sch... ohne Nachfrage mitmacht wegen dem Snop-Effekt, u.a. Es gibt genügend Alternativen - nur die sind eben nicht Standard.
> Bitte nicht noch ein Java-Entwickler mehr. welche Alternativen hast Du denn, wenn es um Plattformunabhängigkeit geht? Wobei natürlich die eigentliche Frage ist, ob man diese Plattformunabhängigkeit überhaupt noch braucht?! > Andererseits, je mehr Java-Entwickler es gibt desto seltener und damit > teurer werden die professionellen Entwickler. > Also gut für mich. das sind dann nur wenige Freiberufler, die sich die Sprache, etc. frei auswählen können - ansonsten gibt's standardisierte Vorgaben. Die ganzen Websites werden doch auch nur noch mit Tools zusammengeklatscht. Softwaretechnische Optimierung danach nur noch bedingt möglich und da hat der andere Poster recht: einfach neues Smartphone, fetten Rechner kaufen und läuft es etwas schneller, kostet ja nichts - so ist jedenfalls die Denke.
ohne Account schrieb: > das sind dann nur wenige Freiberufler, die sich die Sprache, etc. frei > auswählen können - ansonsten gibt's standardisierte Vorgaben. Falsch. Im Scrum-Teams entscheiden die Entwickler welche Tools genutzt werden. Die Sprachen machen dabei nur einen kleine Teil aus. Testframeworks, Build und Deployment ist mindestens genau so wichtig. Vorgaben von oben gibt es nur in Konzernen - und wenn sie das noch weiter machen sind sie schon Pleite bevor sie es wissen.
> Falsch. Im Scrum-Teams entscheiden die Entwickler welche Tools genutzt > werden. Die Sprachen machen dabei nur einen kleine Teil aus. > Testframeworks, Build und Deployment ist mindestens genau so wichtig. ich würde mal sagen, da bist Du beruflich gut gelandet :-) So selbstverständlich ist das nicht. > Vorgaben von oben gibt es nur in Konzernen - und wenn sie das noch > weiter machen sind sie schon Pleite bevor sie es wissen. leider nicht nur da, das fängt schon bei kleinen Unternehmen an. Leider ist das im Leben oft anders - nicht das beste System setzt sich durch, sondern oftmals was schlechteres. Es läuft und den Rest darf dann der Anwender & Support ausbaden.
ohne Account schrieb: >> Übrigens: Notepad++ braucht auch seine 12MB im RAM. Dafür, daß da aber >> keine VM und kein Garbage Collector im Hintergrund mitlaufen, empfind >> ich das auch nicht grad als wenig wenn ich mir in Erinnerung rufe, wie >> genügsam der Firefox einst mal war. > das Problem ist der Endanwender der den Sch... ohne Nachfrage mitmacht > wegen dem Snop-Effekt, u.a. > Es gibt genügend Alternativen - nur die sind eben nicht Standard. Aber welche Alternativen hat der Endanwender? Fast jeder war über den FF froh, und das der IE nur noch als FF-Beschaffer gebraucht wurde. Irgendwann kam Chrome, der war aber m.E. noch nie eine Alternative zum FF für mich. Genauso wie MS Edge (der mir regelmäßig von MS unter die Nase gerieben wird). Bei mir läuft noch Brave, den nutze ich aber eher in bestimmten Sonderfällen. Und Brave ist auch nicht nennenswert genügsamer als FF, was den RAM angeht. Und obwohl beide Browser fettgefressen sind bis zum Anschlag, so kann ich nicht behaupten, daß diese nicht schnell liefen. Nur wenn viele solcher Programme parallel laufen wirds irgendwann eklig. Insofern ist dillo, wenn auf diesem eine signifikante Anzahl an Seiten nicht läuft, keine Alternative. Mir reicht das Rumgefrickel in NoScript schon, wenn ich eine Seite das erste Mal aufrufe. Ich bin mir auch gar nicht so sicher, ob an dieser Misere die Browserbauer wirklich schuld haben. So richtig hat der Scheiß meines Erachtens erst mit Facebook und Smartphones angefangen. Vorher hatte jede Webseite die üblichen Tools von Google eingebunden, dazu ein oder zwei eigene Scripte, und das wars. Das, was man haben wollte durch den Scriptfilter zu lotsen, ging allgemein schnell. Wenn es nicht sofort ging dann galt das als persönliche Beleidigung und ich war nie wieder auf der Seite. Dann war irgendwann auf jeder Seite dieser verschissene Like-Button von Facebook eingebunden, da ist aber nur Facebooks penetrante Verfolgungssucht aufgefallen-und das auch nur denen, die sich dafür interessiert haben. So richtig furchtbar wurde das erst, als jede Seite auf einmal auch noch smartphonetauglich sein mußte um die Befindlichkeiten der Hyperkativen und Rastlosen auch noch zu befriedigen. Damit wurde das Datensammeln um ein Vielfaches attraktiver und neben Amazon, Doubleklick und zig weiteren Sammeldiensten kam die Abart der "dezentral verteilten Webseiten" auf. Nachrichtenlesen ist seitdem so ätzend geworden, da alles auf mindestens 3-5 Servern verteilt liegt (Werbung kommt noch oben drauf). Und da sitzen die Browserhersteller dann und sehen zu, wie sie 50 JS-Scripte in einem Tab unterbringen. Ich hab von Webkram keine Ahnung, kann mir aber gut vorstellen, daß die Browserbauer auch nur vor einer Bibliothek, die ein Hersteller von irgendeinem CMS schlampig zusammengeschissen hat. Und selbst wenn sie Kompetenz, Ressourcen und Zeit investieren die Bibliotheken umzubauen macht das keinen Sinn, weil es nach kurzer Zeit wieder ein Update gibt das irgendein fancy Feature mitbringt das unterstützt werden will, aber nichts optimiert wurde und alle Mühe damit obsolet wäre. Ich bin mir sicher, das man in JS oder PHP durchaus anmutig schlanke, flotte Progrämmchen bauen kann. Aber gegen schlampige/billige Arbeitsweisen kommt auch die beste Sprache wohl nicht an. C vs. Java mag im Benchmark deutliche Unterschiede zeigen, den Bloatanteil unter dem der Anwender aber tatsächlich leidet wird wohl sprachenunabhängig sein.
Hallo Boris, Boris O. schrieb: > Vielleicht kannst du ein konkretes Problem schildern. Sonst rate ich > dir, die Zeit lieber in Erkenntnisgewinn auf dem Gebiet der (Finanz-) > Derivate zu stecken. Da ist Geld zu holen. wenn Du die Funktionsweise und die Bepreisung von Finanzderivaten verstehst, bist Du deswegen noch lange kein erfolgreicher Spekulant.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.