So werden Sie Java-Webentwickler (2017) - Teil I: Grundlagen der Java-Webentwicklung

Java-Banner [10]

Irgendwie sind Sie in die Programmierung geraten und haben Interesse an der Programmiersprache Java geweckt. Vielleicht lag es an der Schule. Oder vielleicht haben Sie das Java-Logo auf Ihrem Desktop gesehen. Vielleicht haben Sie herausgefunden, dass Java fast überall ist - von Blu Ray-Software bis hin zu Android-Geräten über das openJDK. Möglicherweise haben Sie bemerkt, dass Java laut TIOBE-Index routinemäßig die Nummer 1 (oder eine der beliebtesten) Programmiersprachen ist und 6 Milliarden Geräte Java verwenden [1] [2]. Möglicherweise haben Sie auch bemerkt, dass Java nach Stack Overflow [35] die zweitbeliebteste Programmiersprache für JavaScript ist (mit Ausnahme von SQL, einer Abfragesprache).

Laut BLS: Softwareentwickler haben im Jahr 2016 durchschnittlich 102.280 USD / Jahr und 49,17 USD / Stunde eingespielt, und die Nachfrage wächst von 2014 bis 2024 um 17%. Bis 2020 wird es 1,4 Millionen CS-bezogene Arbeitsplätze geben und nur 400.000 CS-Absolventen mit den erforderlichen Fähigkeiten. Java ist im Allgemeinen eine dieser Fähigkeiten.

Möglicherweise haben Sie einige Nachforschungen angestellt und festgestellt, dass ~ 70.000 Stellenausschreibungen (eine Steigerung von +30.000 gegenüber 2016) auf der beliebten Jobwebsite Indeed.com 2017 die Programmiersprache Java als Fähigkeit enthielten [2].

[3] - codingdojo.com

Neugierig wie Sie sind, haben Sie vielleicht bemerkt, dass 3/4 (abhängig von der Quelle, 65% –85%) der Java-Entwickler an Web- oder Unternehmensanwendungen arbeiten und dass 90% der Fortune 500 Java auf der Serverseite verwenden [ 4] - eine Behauptung von Oracle. In der Tat ist es eine hervorragende Zeit, um ein Enterprise Java-Entwickler zu sein.

Beim Durchsuchen der Jobbörsen ist Ihnen möglicherweise ein Thema aufgefallen - Stichwörter wie "J2EE", "Spring", "Servlets", "Hibernate" und dergleichen. Sie haben sich vielleicht gefragt: "Wie komme ich von hier nach dort?" Vielleicht locken Sie Berichte über überdurchschnittliche Vergütungspakete für Java Enterprise-Entwickler oder Träume davon, das „nächste große Ding“ oder beides zu entwerfen.

Möglicherweise haben Sie eine Google-Suche durchgeführt und nur den Artikel von John Thompson zum Thema gefunden [5]. Möglicherweise haben Sie keine dieser Fragen gestellt: Sie möchten lediglich wissen, wie Sie ein Java-Web- oder Enterprise-Entwickler werden. In jedem Fall lautet die Antwort - es gibt keine eindeutige Antwort. Die Fähigkeiten, die Sie benötigen, hängen letztendlich von der spezifischen Rolle ab, die Sie suchen. Darüber hinaus können die Fähigkeiten, die Java-Rollen im Allgemeinen erfordern, aufgrund verschiedener Faktoren, wie z. B. Region und Branche, variieren. Die Wahrheit ist (und ich könnte dafür verunglimpft werden), dass Sie nicht alle Fähigkeiten auf einer Stellenanzeige verzeichnen müssen (auch nicht unter den als erforderlich gekennzeichneten!). Viele Arbeitgeber stellen Personen ein, die sich durch ihre Eignung, ihre Fähigkeit zum schnellen Lernen und, um es ganz klar auszudrücken, durch ihre Vorliebe auszeichnen [6]. Trotzdem sind Fähigkeiten immer noch wichtig - die Arbeit geht nicht ohne sie.

Nach alledem lautet die Frage zunächst vielleicht: „Was sind die gemeinsamen Kernkompetenzen von Java Enterprise & Web Developers?“. Die besprochenen Fähigkeiten beschreiben die Fähigkeiten von Ingenieuren, die am gesamten Software-Stack arbeiten. Wenn Ingenieure jedoch an verschiedenen Teilen des Stapels arbeiten - Front-End, Back-End, EJBs usw. - können die für sie relevanten Abschnitte gelesen werden.

Es ist wichtig anzumerken, dass in diesem Artikel nicht die Interview- und Vorgesprächsaspekte erörtert werden, die mit dem Erwerb eines Jobs in der Java-Entwicklung verbunden sind, sondern dass stattdessen die Kernkompetenzen von Java Enterprise Developers im Mittelpunkt stehen. Um dieses Material zu vertiefen, empfehle ich mit überwältigender Mehrheit das Cracking The Coding Interview von Gayle Laakman McDowell. Du wirst nicht enttäuscht sein!

Es ist auch wichtig anzumerken, dass sich dieser Artikel auf technische Fähigkeiten im Gegensatz zu Soft Skills konzentriert. Während Soft Skills von unschätzbarem Wert sind, fallen sie nicht in den Geltungsbereich dieses Artikels. Es ist jedoch erwähnenswert, dass eine gute Organisation, Kommunikation und zwischenmenschliche Fähigkeiten der Schlüssel sind. Schauen Sie sich Soft Skills von John Somnez und The Clean Coder an: Ein Verhaltenskodex für professionelle Programmierer von Robert C. Martin.

Werfen wir einen kurzen Blick darauf.

Ungeduldig? Hier ein kleiner Vorgeschmack: http://bit.ly/2gBUBRJ
Wenn der bit.ly-Link abläuft oder einen 404 auslöst, kommentieren Sie den Artikel, und ich werde einen neuen Hyperlink bereitstellen.

Vorschläge? Hassen Sie den Artikel? Lieben Sie den Artikel? Irgendwas dazwischen? Lass es mich in den Kommentaren wissen.

Java - Dieser ist ziemlich offensichtlich.

"Die Java-Programmiersprache ist eine Allzweck-Computerprogrammiersprache, die gleichzeitig, klassenbasiert, objektorientiert und so konzipiert ist, dass sie so wenig Implementierungsabhängigkeiten wie möglich aufweist." [7]

Java wurde für Write Once & Run Everywhere entwickelt, ein Begriff, der auch als WORE bezeichnet wird. Dies wird durch die Ausführung von Java-Bytecode auf der Java Virtual Machine erreicht, die selbst auf mehreren Plattformen implementiert ist. Wir werden hier nicht viel Zeit verbringen, da es für den Leser offensichtlich sein sollte, dass man die Java-Sprache kennen muss, um ein Java-Entwickler (duh) zu sein. Der Punkt, den man verstehen sollte, ist, dass ein seriöser Java-Entwickler alle Elemente der Java-Programmiersprache selbst und die Kernfunktionen sowie wichtige Pakete (einschließlich, aber nicht beschränkt auf) gründlich verstehen und beherrschen sollte: java.lang, java.util, java.concurrent, java.io.

Warum ich Java persönlich mag: Sie können robuste, skalierbare, vertrauenswürdige, getestete und zuverlässige Desktop-Lösungen (JavaFX, Swing), mobile Lösungen (Android), Web- und Unternehmenslösungen (JEE, Spring, Struts) entwickeln.

Behalten Sie den Überblick über Java Evolution: Java 9 wird voraussichtlich (zum Zeitpunkt der Veröffentlichung) in 17 Tagen am 21. September veröffentlicht. Wird das Veröffentlichungsdatum tatsächlich erreicht? Sie müssen auf dem Laufenden bleiben, um dies herauszufinden. Lassen Sie sich nicht von der Kurve abbringen - die Module von Java 9 werden unsere Herangehensweise an die Java-Programmierung grundlegend verändern. Nehmen Sie an der Java One-Konferenz teil (oder folgen Sie ihr zumindest online), die jedes Jahr Anfang Oktober von Oracle veranstaltet wird. Sie sollten auch einer Zeitschrift oder einer Online-Publikation wie DZone / Java Zone folgen, die Artikel über die neuesten und besten Entwicklungen in Java enthält.

UPDATE: Java SE 9 / Java EE 8 hat das Veröffentlichungsdatum erreicht! Versionshinweise für Java SE finden Sie hier. Versionshinweise für Java EE finden Sie hier.

Wo zu lernen, empfohlene Ressourcen:

Das Programmieren lernt man am besten, indem man sowohl die Werkzeuge, mit denen man arbeitet, als auch den alten Code versteht, um unverblümt zu sein. Meine persönlichen Empfehlungen zum Erlernen von Java sind:

Java: Ein Leitfaden für Anfänger, 7. Aufl. (13. Oktober 2017 Erscheinungsdatum)
 - Die 6. Ausgabe dieses Buches war meine Einführung in Java. Ich kam nach Java, nachdem ich C ++ in der Schule gelernt hatte. Die Details scheinen alle zu verschwimmen. Ich erinnere mich an den Herbst 2014: Ich würde in meiner IST 302-Klasse sitzen und mir wünschen, dass das Material Java statt Projektmanagement ist, und ich liebe Projektmanagement sehr und mache es immer noch. Dieses Buch ist meine erste Ressource für Anfänger. Ich habe persönlich dreimal mit dem Autor Herbert Schildt gesprochen und habe keine Frage, dass die 7. Ausgabe genauso gut sein wird. Herausgegeben von der Oracle Press. Deckt Java 9 ab.

Mein zerlumpter, abgenutzter persönlicher 6. Ed. Kopieren. Liebevoll als meine zweite Liebe bekannt.

Java: The Complete Reference, 10. Aufl. (13. Oktober 2017 Erscheinungsdatum)
Der nächste logische Schritt nach dem Lesen des Einsteigerhandbuchs. Stau mit kritischen Informationen. Pflichtlektüre. Auch geschrieben von Herbert Schildt und veröffentlicht von der Oracle Press. Deckt Java 9 ab. Ich persönlich bin der Meinung, dass jeder Java-Programmierer diesen Text ohne Ausnahme besitzen sollte. Ich besitze die 9. Ausgabe dieses Textes.

Java, The Complete Reference, 10. Aufl. - Herbert Schildt

Core Java: Band I, Grundlagen, 10. Aufl.
Lassen Sie es wissen: Nachdem Sie diesen Text gelesen haben, können Sie Cay S. Horstmann auf keinen Fall sagen, dass er sich nicht auskennt. Dieser Text stinkt nach sehr tiefen und gründlichen Kenntnissen des Autors in der Java-Programmiersprache. Geht über die sprachlichen Grundlagen hinaus und lässt den Benutzer zufrieden. Deckt Java 8 ab.

Core Java: Band II, Erweiterte Funktionen, 10. Aufl.
Der nächste logische Schritt nach dem Lesen des ersten Bandes. Genauso befriedigend. Deckt Java 8 ab.

Qualifikationen - Wie man sagt, dass Sie wissen, was Sie wissen

Dieser ist ein bisschen schwierig. Die gebräuchlichsten Qualifikationen von Softwareentwicklern sind: Hochschulabschlüsse, Hochschuldiplome, technische Zertifizierungen und technische Bootcamp-Abschlusszertifikate. Qualifikationen sind meiner Meinung nach wichtig, da sie eine standardisierte, meist zuverlässige Methode sind, um den Kompetenz- und Wissensstand einer Person in einem bestimmten Bereich einzuschätzen.

Formale Ausbildung: Abschlüsse und Diplome

Laut Stack Overflow (die beliebteste Programmier-Community im Internet und die beliebteste Programmier-Informationsseite im Internet [36]) haben 76,5% der professionellen Entwickler einen Bachelor-Abschluss oder höher, 14,9% College-Erfahrung, 7,6% unterhalb der Hochschulausbildung und 1,1% zogen es vor, nicht zu antworten. Etwas mehr als die Hälfte (~ 56%) der Personen, die an dieser Umfrage teilgenommen haben, gaben eine vollständige Antwort auf Folgendes:

Stack Overflow Developer Survey 2017 - Bildungserfolg [35]

Von denjenigen, die an einem College oder einer Universität studiert hatten, studierten 54,2% Informatik oder Softwaretechnik, 24,9% studierten in einem eng verwandten Fach und 20,9% konzentrierten sich auf nicht verwandte Gebiete [35].

Verschiedene Höhepunkte der Antworten von professionellen Entwicklern zum Bildungsteil der Stapelüberlauf-Umfrage auf verschiedene Fragen:

  • 67,9% gaben an, dass formale Bildung zumindest etwas wichtig ist.
  • 91,1% der Entwickler gaben an, zumindest teilweise Autodidakt zu sein.
  • 9,4% der Entwickler verwendeten Bootcamps. 22,8% empfehlen, Bootcamps zu codieren.
  • 16,4% beantragten Industriezertifizierungen.
  • Einige andere nutzten On-the-Job-Schulungen, Online-Kurse, Open-Source-Beiträge, Hackathons, Programmierwettbewerbe und Teilzeitkurse als Mittel zur Ausbildung.
Bootcamp-Erfolg bei Software-Entwicklern [35]

Die Daten der Stack Overflow Developer Survey 2017 sind sehr interessant und können hier eingesehen werden. Sie können es als eine Art SOTU für die Entwickler-Community betrachten. Ich empfehle dringend, ihre Jahresberichte zu lesen.

Was bedeutet das alles?

Es gibt eine Reihe von Schlussfolgerungen (und tatsächlich eine Reihe von Datenquellen, aus denen die Schlussfolgerungen gezogen werden können), die aus den verfügbaren Daten gewonnen werden können, um die Bedeutung von Qualifikationen für den Beruf des Software-Ingenieurs zu bestimmen. Ich werde sie nicht für dich machen, aber ein paar Dinge fallen mir auf. Das sind meine Meinungen.

  • Während Sie keinen Abschluss benötigen, um als Softwareentwickler beschäftigt zu sein, scheint die Mehrheit der Entwickler einen Abschluss zu haben. Stöbern Sie in der Tat in den Softwareentwickler-Listen für Ihre Region. Ich wette, Sie werden feststellen, dass alles davon abhängt. Einige Organisationen geben einen Abschluss als Voraussetzung an, während andere angeben, dass sie dies bevorzugen. Ihre Laufleistung variiert wirklich, aber ich bin bereit zu schätzen, dass die Mehrheit zumindest einen Abschluss vorziehen wird. Auch wenn sie angeben, dass sie einen Abschluss benötigen, bewerben Sie sich trotzdem. Ich werde wieder dafür verunglimpft sein, aber am Ende des Tages möchte ein Unternehmen mit Ihnen Geschäfte machen - wenn Sie Geld verdienen können, werden sie Sie möglicherweise gerne einstellen. Es ist ein schmutziges, aber oft wiederholtes Geheimnis, dass Unternehmen Leute einstellen, die nicht alle Anforderungen erfüllen. Sie haben nichts zu verlieren. Das Schlimmste, was sie tun können, ist, Sie nicht einzustellen.
  • Es gibt verschiedene Qualifikationen, die Arbeitgeber bei der Einstellung von Softwareentwicklern anerkennen. Im Durchschnitt scheint mir ein unmittelbar relevanter Abschluss die herausragendste Qualifikation über Bootcamps und eng verwandten Abschlüssen zu sein. Dies mag sich zwar ändern, doch scheint sich dieser Trend zumindest vorerst zu halten.
  • Die vielleicht erstaunlichsten Ergebnisse - von professionellen Entwicklern, die einen Abschluss anstrebten, studierten etwas mehr als ein Fünftel kein relevantes Thema, etwas mehr als ein Viertel ein eng verwandtes Gebiet, und die erstaunlichsten - studierten nur 54 entweder CS oder Software Engineering ! Was mir klar wird, ist, dass Ihr College-Major wahrscheinlich nicht so wichtig ist, wenn Sie für einen Entwicklerjob in Betracht gezogen werden. Ich wünschte, Stack Overflow würde die Informatik für die Umfrage 2018 von der Softwaretechnik trennen, da die beiden Lehrpläne definitiv nicht identisch sind.
  • Dass 91,1% der Entwickler Autodidakten sind, ist ein Indiz dafür, dass die Arbeit in der realen Welt einfach über die im Klassenzimmer gelehrten Themen hinausgeht. Das Klassenzimmer hat unbestreitbar seine Verwendung. Wenn Sie jedoch Entwickler werden möchten, können Sie sich mit Sicherheit nie allein auf das Klassenzimmer verlassen, um alle Tools zu erhalten, die Sie benötigen. Sie werden es sich auch nicht leisten können, nicht weiter zu lernen. Zeitraum.
  • Fortgeschrittene Abschlüsse sind nicht so wichtig wie in vielen anderen Bereichen. ~ 48% der professionellen Entwickler haben nur einen Bachelor-Abschluss. Obwohl die Daten allein möglicherweise nicht die Behauptung stützen, dass fortgeschrittene Abschlüsse nicht so wichtig sind, ist die Tatsache, dass die große Mehrheit der professionellen Entwickler (69,2–70,3%) keinen Abschluss nach dem Bachelorabschluss vorweisen kann, bezeichnend. Stöbern Sie in den Stellenangeboten - wie oft sehen Sie einen Master-Abschluss (oder höher) als Voraussetzung? Ich ruhe meinen Fall aus.
Das ist alles in Ordnung und gut, aber… welche Qualifikation sollte ich bekommen?

Letztendlich kann ich Ihnen nicht sagen, welche Option für Sie am besten geeignet ist.

Einige Colleges und Universitäten können für viele Menschen verheerend und übermäßig teuer sein. An einer erstklassigen CS-Institution (ich kann nicht sagen, wo) zwischen Unterricht, Gebühren, Unterkunft, Verpflegung, Büchern und Verbrauchsmaterial usw. könnte bis zu 70.000 USD pro Jahr kosten. Dies entspricht dem Jahresgehalt einer Person und ist höher als das mittlere Haushaltseinkommen in den USA. Sollten Sie die Schule in 4 Jahren beenden, würden Sie ungefähr 280.000 US-Dollar verdienen. Sollten Sie Kredite für die Schule aufnehmen, würden Sie natürlich aufgrund von Zinsen mehr bezahlen. Die Entscheidung ist eine persönliche - man muss selbst bestimmen, wie viel sie bereit sind, für einen Abschluss zu zahlen, wie sie bereit wären, für ein Auto oder etwas anderes zu zahlen. Ich denke dabei an die Kapitalrendite - wie viel Geld können Sie aufgrund des erreichten Abschlusses verdienen?

Auf der anderen Seite gibt es an vielen Schulen finanzielle Unterstützung und eine kostengünstige Ausbildung. Abschlüsse sind mit Abstand die am längsten bestehende und am besten vermarktbare Qualifikation. Ein College-Abschluss bietet Ihnen die Flexibilität, die Softwareentwicklung zu verlassen, falls Sie sich später dafür entscheiden sollten. Auch ein Hochschulabschluss ist entscheidend für die Erlangung eines höheren Stellenwerts oder einer Führungsposition. Bei sorgfältiger Überlegung kann eine Hochschulausbildung eine sehr lohnende Investition sein. Immerhin wird berichtet, dass einige Bachelor-Absolventen weit über eine Million mehr verdienen als andere, die nicht über einen Bachelor-Abschluss verfügen [37]. Ich denke, es gibt viele Erklärungen dafür, die Sinn machen. Ich glaube jedoch nicht, dass die Korrelation von Einkommen und Bachelor-Abschlüssen nur ein Beweis für Ursache (Grad) und Wirkung (Geld) ist. Trotzdem ist ein Hochschulabschluss wertvoll und eine gute Option. Ich empfehle jedoch keine gewinnorientierte oder nicht akkreditierte Hochschule oder Universität.

Meiner Meinung nach sind Zertifizierungen nützlich und ich mag einige von ihnen wirklich, aber sie verleihen Ihnen nicht so viele Beschäftigungsmöglichkeiten wie ein Universitätsabschluss. Dennoch können sie möglicherweise eine gute (meiner Meinung nach) Qualifikation sein, um Sie für einen bestimmten Bereich wie Java von der Masse abzuheben. Sehen Sie sich hier den Oracle Certified Associate & Programmer in Java Programming an. Oracle macht mehrere starke Aussagen über den industriellen Wert ihrer Java-Zertifizierung und ich denke sehr positiv darüber. Ich habe Softwareentwickler getroffen, für die diese Zertifizierung von Vorteil war, und ich habe die Zertifizierung in einigen Stellenausschreibungen erlebt.

Ich war vorher kein Fan von Coding Boot-Camps und hatte sie größtenteils als Betrug abgetan, aber meine Meinung hat sich geändert. Immerhin - Programmieren ist keine Spielerei, die in nur 16 Wochen erlernt werden kann? Das war mein früherer Gedanke. Ich glaube zwar immer noch nicht, dass man in 16 Wochen ein vollwertiger Entwickler werden kann, aber ich denke, dass viele Fortschritte erzielt werden können. Ich denke, Boot-Camps können nützlich sein, wenn das Boot-Camp starke Branchenbeziehungen hat, wenn der Einzelne selbst motiviert ist und außerhalb des Boot-Camps lernt und wenn der Einzelne seinen Code im Web veröffentlicht, damit Organisationen ihn sehen können. Lesen Sie den Artikel von Gayle Laakman McDowell (ua Autorin von Cracking The Coding Interview) zu diesem Thema: Das ganze Coding-Bootcamp ist also ein Betrug, oder?

Selbst beigebracht. Normalerweise haben diese Personen ein Abitur oder einen GED. Meiner Meinung nach verfügen viele dieser Personen über ein besseres Fachwissen, da sie die Freiheit hatten, sich auf diesen Bereich zu konzentrieren. Alles in allem glaube ich persönlich, dass alle ernsthaften Entwickler in hohem Maße Autodidakten sein müssen und dass ernsthafte Autodidakten sehr leidenschaftlich sind. Immerhin ist es harte Arbeit, bereitwillig die Disziplin anzuwenden, die erforderlich ist, um ein Softwareentwickler zu werden, ohne die Schule an der Hand zu halten. Wenn Sie es auf sich nehmen, die ganze schmutzige Arbeit der Disziplin zu erledigen und herauszufinden, was Sie wissen müssen, um Entwickler zu werden, dann weiß ich sofort, dass Sie die Softwareentwicklung sehr ernst nehmen. Abgesehen davon: CNN Money berichtete, dass laut US-Volkszählung etwa 38% der Webentwickler weniger als einen vierjährigen Hochschulabschluss hatten als im Jahr 2010.

Sie sollten sich die Gruppe von Cory Althoffs selbst unterrichteten Programmierern ansehen.

Grundlegende Informatik - Grundbegriffe

„Informatik ist das Studium von Computern und Computersystemen. Im Gegensatz zu Elektro- und Informatikern beschäftigen sich Informatiker hauptsächlich mit Software und Softwaresystemen. das schließt ihre Theorie, Gestaltung, Entwicklung und Anwendung ein. “[38]

Unabhängig davon, ob Sie Autodidakt sind oder Ihren Abschluss an der Universität gemacht haben, sollten Sie über grundlegende Informatikkenntnisse verfügen. Es gibt mehrere Gründe, warum Sie die Grundlagen der Informatik verstehen sollten. Anstatt sie aufzulisten, werde ich versuchen, sie alle mit einer Aussage zusammenzufassen - Sie müssen verstehen, was genau Sie beim Codieren tun, worauf genau Sie codieren und wie genau es funktioniert. Kannst du vorbeikommen, ohne die CS-Grundlagen gut zu kennen? Vielleicht, vielleicht nicht. Solltest du es versuchen? Definitiv nicht. Die Situation ist fast so, als würde man mit verbundenen Augen Basketball spielen. Möglicherweise haben Sie einen gewissen Erfolg, Sie können einen Korb punkten, aber Sie können nicht wirklich sehen, was Sie gerade tun, um richtig zu navigieren. Sie sollten verstehen, was Sie tatsächlich tun, wenn Sie ein Programm kompilieren, verknüpfen und dann ausführen. Bis hinunter zu Einsen und Nullen und darüber hinaus.

Vielleicht ist Basketball nicht Ihr Geschmack oder diese Analogie hat nicht so funktioniert, wie ich es wollte. Ein Beispiel: Fahren: Es ist nützlich zu wissen, wann Sie fahren, wie das Auto funktioniert. Sie können jedoch davonkommen, wenn Sie viele Details nicht kennen, oft, aber nicht immer, wenn Sie nur fahren müssen. Die Situation beim Programmieren ist etwas subtiler. Wenn Sie lediglich eine Anwendung erstellen müssen, können Sie möglicherweise nicht verstehen, wie der Compiler das tut, was er tut. Die Feinheit ist jedoch, dass das Programmieren ein wenig mehr Verständnis für die zugrunde liegenden Phänomene erfordert als das Fahren, um die Aufgabe gut auszuführen. Das Verständnis und die Verfeinerung der Art und Weise, wie Sie Datenstrukturen und -algorithmen verwenden und entwerfen, ist der Schlüssel zu fast allem - von der Sicherheit über die Leistung bis zu allem anderen.

Sie sollten verstehen, warum die erste Methode der Ganzzahladdition im Folgenden weniger effizient ist als die zweite Methode der Addition:

Eine andere Sache: Musste ich die Varags verwenden? Nein, absolut nicht. In der Realität bemerkt die JVM den Unterschied nicht - sie sieht immer noch ein Array - aber Sie sollten den Unterschied verstehen.

Und so weiter.

Anmerkung: Bei der Erstellung dieses Beispiels habe ich erfahren, dass die Integer-Konstruktoren in Java 9 zugunsten statischer Methoden veraltet sind! Sie hören nie auf, in der Programmierung zu lernen. Für diejenigen, die neugierig sind, können Sie hier mehr herausfinden.

Laut dem Computing Sciences Accreditation Board, einem Gremium, dem Vertreter der Association for Computing Machinery (ACM) und der IEEE Computer Society angehören, gibt es für grundlegende Bereiche der Informatik [38]:

  • Die Theorie der Berechnung
  • Algorithmen & Datenstrukturen
  • Programmiermethoden und -sprachen
  • Computerelemente & Architektur

Es würde den Rahmen dieses Artikels sprengen, die Grundlagen der Informatik eingehend zu erörtern. Ich werde Sie jedoch in die richtige Richtung weisen. Siehe unten.

Wo zu lernen, empfohlene Ressourcen:

Informatik: Ein Überblick, 12. Aufl.

Während es viele Texte zu verschiedenen Themen der Informatik geben mag, war dieser Text einer der einzigen, die ich als einen Überblick über die Grundgedanken der Informatik erörterte. Dieses Buch enthält möglicherweise nicht alles, was Sie wissen müssen, aber es vermittelt Ihnen Grundkenntnisse, mit denen Sie arbeiten können, wenn Sie über Informatik nachdenken.

Die Theorie der Berechnung - Kapitel 12
Algorithmen & Datenstrukturen - Kapitel 5, 8
Programmiermethoden und -sprachen - Kapitel 6
Computerelemente & Architektur - Kapitel 1, 2

SQL - Die Welt dreht sich alles um Daten

"Structured Query Language - SQL ist eine domänenspezifische Sprache, die bei der Programmierung zum Verwalten von Daten in einem relationalen Datenbankverwaltungssystem (RDBMS) oder zum Stream-Verarbeiten eines relationalen Datenstromverwaltungsstroms (RDBMS) verwendet wird." [8]

Wenn Sie eine Back-End-Java-Entwicklung durchführen, werden Sie wahrscheinlich in gewisser Weise mit relationalen Datenbanken zu tun haben. Sie müssen SQL verstehen. Neben dem Erlernen von SQL muss man auch unbedingt eine RDBMS-Plattform wie MySQL oder PostgreSQL erlernen, da ANSI-SQL Sie nur so weit bringen kann. Die aktuelle Ausgabe von ANSI SQL ist SQL: 2016.

Laut der Umfrage zu Java Tools & Technologies Landscape 2016 von Rebel Lab [27] haben die folgenden RDBMS die größte Meinung unter Java-Entwicklern: Oracle DB mit 39%, MySQL mit 38% und PostgreSQL mit 29%. Es ist wichtig zu beachten, dass die Befragten mehr als ein RDBMS auswählen können.

Wo zu lernen, empfohlene Ressourcen:

Sam bringt sich SQL in 10 Minuten am Tag bei ~ Ben Forta
Dieser Text sollte als Pflichtlektüre für Anwendungsentwickler angesehen werden. Mit 288 Seiten ist es für eine Woche Lesung einigermaßen verdaulich. Sie können nach diesem Buch keinen DBA-Auftrag mehr abrufen, aber das spielt keine Rolle, da Sie nicht versuchen, ein DBA zu sein, sondern ein Java Enterprise-Entwickler. Es ist hilfreich, dass dieses Buch einer der meistgedruckten (wenn nicht sogar der Nummer 1) Texte in SQL ist, ein Beweis für seine Qualität, und folglich wird Forta für seine Arbeit weithin verehrt. Derzeit ist der Text von Forta in der 4. Ausgabe enthalten, die sich mit SQL: 2011 und SQL: 2016 befasst. Obwohl eine Version dahinter steckt, ist SQL: 2011 derzeit die am häufigsten eingesetzte Version, und die Aktualisierungen des SQL-Standards (SQL: 2016) sind online frei verfügbar [11]. Die meisten betreffen JSON. Da es kompakt, prägnant und technisch einwandfrei ist, empfehle ich immer noch, dieses Buch zu lesen.

Sam bringt sich SQL in 10 Minuten bei - Ben Forta

Tutorial's Point MySQL Tutorial
MySQL ist ein sehr beliebtes und sehr leistungsfähiges allgemeines Open-Source-RDBMS. MySQL wurde zum Teil durch die Popularität von LAMP-Stacks (Linux / Apache / MySQL / Perl, Python, PHP) in den späten 1990ern und frühen 2000ern sehr populär. Hier können Sie mehr über die Geschichte lesen.

OOP - Zusammenfassen von "do" und "stuff"

„Es ist gefährlich, Vorhersagen zu treffen, insbesondere in einer Disziplin, die sich so schnell ändert, aber eine Sache, die ich mit Zuversicht sagen kann, ist, dass ich die Zukunft gesehen habe und sie objektorientiert ist“ - Grady Booch, Vater von UML, 1996 [ 9]

Object Oriented Programming (OOP) ist ein Programmierparadigma, mit dem eine Anwendung in Bezug auf Objektverhalten und Interaktion strukturiert wird. In OOP ist ein Objekt eine Abstraktion, die Attribute und Unterroutinen bindet. In der heutigen OOP-Sprache werden Attribute häufig als Felder oder Datenelemente und Subroutinen als Methoden bezeichnet. Klassenbasiertes Objektdesign ist der gängigste zeitgemäße Ansatz für OOP.

Die meisten gängigen und modernen Sprachen: Python, Java, C #, C ++, Ruby, PHP, Scala usw. unterstützen die objektorientierte Programmierung als Kernkomponente ihres Programmiermodells. Tatsache ist, dass ein zeitgenössischer Entwickler das objektorientierte Paradigma wahrscheinlich nicht umgehen kann (es sei denn, Sie sind in seltsame Dinge wie die Programmiersprache "Brainf ***" vertieft, die bereits von Entwicklern objektorientiert erweitert wurde!). Verstehe den Punkt? OOP ist allgegenwärtig.

Der Schlüssel zur architektonischen Gestaltung objektorientierter Software ist die Unified Modeling Language (UML). UML ist eine gängige Methode, mit der Softwareentwickler das Verhalten von Objekten in einer Anwendung beschreiben und gestalten. „Die Unified Modeling Language (UML) ist eine grafische Sprache für OOAD, die eine Standardmethode zum Schreiben des Entwurfs eines Softwaresystems bietet. Es hilft, die Artefakte eines objektorientierten Systems zu visualisieren, zu spezifizieren, zu konstruieren und zu dokumentieren. Es wird verwendet, um die Strukturen und Beziehungen in einem komplexen System darzustellen. “[42] UML ist jedoch nicht auf objektorientiertes Design (OOD) beschränkt.

Die verabscheuungswürdige Wahrheit: Die meisten von uns werden sich wahrscheinlich nicht die Mühe machen, ein generisches objektorientiertes Programmierbuch zu kaufen (puh !, ich sagte es). Stattdessen werden wir wahrscheinlich objektorientiertes Programmieren lernen, während wir eine Programmiersprache lernen oder durch einen Universitätskurs. Wie auch immer Sie es tun, Sie müssen es tun, da diese Fähigkeit für das Feld von grundlegender Bedeutung ist. Sie werden ein besserer Entwickler dafür sein. Sie werden sich dafür bedanken. Ihr Chef wird es Ihnen danken, ebenso wie die zukünftigen Betreuer Ihres Codes;).

Wo zu lernen, empfohlene Ressourcen:

The Object-Oriented Thought Process, 4. Auflage, Developers Library
Meine persönliche Empfehlung. Dieser Text ist sprachunabhängig verfasst (hauptsächlich in C #) und enthält Beispiele in mehreren Sprachen, die online beim Verlag erhältlich sind. Ich mag die Art und Weise, wie dieses Buch geschrieben ist, und ich habe nicht gesehen, dass etwas (zumindest so modernes) so geschrieben ist.

Head First Objektorientierte Analyse und Design
Obwohl ich kein persönlicher Fan der Head First-Reihe bin (gib es mir einfach roh, vergiss das Kinderkram), sind es viele Leute. Dieser Text ist sehr beliebt und ich bin zuversichtlich, dass Sie nicht falsch gesteuert werden. Um technisch korrekt zu sein: In diesem Buch geht es mehr um objektorientierte Analyse als um den letzten Text, der nicht genau mit objektorientierter Programmierung übereinstimmt. Ebenso bedeutet objektorientiertes Design nicht unbedingt Programmieren, und als solches kann Ihr Kilometerstand variieren, wenn Sie dieses Buch speziell für OOP in Betracht ziehen. Davon abgesehen, obwohl sich die philosophische Herangehensweise an das Thema unterscheidet, handelt es sich um dasselbe und ähnliche Material.

Einige Anmerkungen: Während das Lesen von Büchern ein großartiger Ansatz ist, können Sie auch von einem Kurs profitieren, wie ich es getan habe. Dies ist der Ansatz, mit dem (nach meiner Einschätzung) die Mehrheit OOP gelernt hat.

Lernprogramme Point Unified Modeling Language (UML) Lernprogramm

Tutorials Point Object Oriented Analysis & Design Tutorial

Während OOP das vorherrschende Paradigma ist, erlebt Functional Programming einen Anstieg der Popularität und Sie sollten sich dessen auf jeden Fall bewusst sein. Dieser Einfluss hat sich in der gesamten Community bemerkbar gemacht, und Beispiele wie 1) Clojure, Scala, Jaskell, 2) Auftauchen von Funktionsschnittstellen, Lambda-Ausdrücken und Methodenreferenzen in Java 8, 3) Auftauchen von Functional Support im Frühjahr 5 [12] unter Andere bezeugen dies.

HTML, CSS, JavaScript - Visuelle Darstellung von Webseiten und deren Verhalten

„HTML ist die Standardauszeichnungssprache für die Erstellung von Webseiten und Webanwendungen. Mit Cascading Style Sheets (CSS) und JavaScript bildet es einen Dreiklang von Eckpfeilertechnologien für das World Wide Web. HTML spezifiziert den Inhalt von Webseiten, CSS spezifiziert die Darstellung von Webseiten und JavaScript spezifiziert das Verhalten von Webseiten. “[13]

Dieses Trio repräsentiert die Eckpfeiler der Kerntechnologien der sogenannten Front-End-Programmierung. Neben dem Erlernen dieser Sprachen sollten Sie auch ein View / MVC / MMVM-Framework wie AngularJS, Angular 2/4 oder ReactJS + Redux, Vue usw. lernen. Die Einbindung eines dieser Frameworks vereinfacht die Entwicklung für viele Projekte erheblich. Sie müssen sich nicht in jedem Detail von HTML festsetzen. Der heutige Java-Entwickler sollte mit mindestens einem dieser wegweisenden Frameworks vertraut sein.

Wo zu lernen, empfohlene Ressourcen:

HTML5
https://www.tutorialspoint.com/html/

CSS3
https://www.tutorialspoint.com/css/

JavaScript
https://www.tutorialspoint.com/javascript/
JavaScript: Die guten Teile

JavaScript Framework - ReactJS
https://www.tutorialspoint.com/reactjs/
https://facebook.github.io/react/tutorial/tutorial.html
Lernreaktion

Lernreaktion: Funktionale Webentwicklung mit React und Redux

JavaScript Framework - Angular 4 (Angular Platform 2+)
https://angular.io/docs
ng-book: Die komplette Anleitung zu Angular 4

Ein besonderer Hinweis zu Angular:
TypeScript - Ein ECMAScript-Supersatz, der mit JavaScript kompiliert wird (folglich sind alle JavaScript-Programme gültige TypeScript-Programme). TypeScript fügt insbesondere Klassen zwischen verschiedenen Sprachfunktionen hinzu.

AngularJS / Angular 1.X - Das ursprüngliche Angular Framework. In JavaScript geschrieben.

Angular / Angular 2.X - Eine vollständige Überarbeitung von AngularJS. In TypeScript geschrieben.

Angular 4 - Die nächste Version in der Entwicklung von Angular2, abwärtskompatibel mit Angular 2. In TypeScript geschrieben.

Alle drei: HTML, CSS, JavaScript
https://www.amazon.com/Web-Design-HTML-JavaScript-jQuery/dp/1118907442

Obwohl Ducketts Text im Juli 2014 veröffentlicht wurde und die Weiterentwicklung, insbesondere in der CSS- und JavaScript-Community, zu neueren Ausgaben beider Sprachen geführt hat, ist dieser Text immer noch relevant. Der Grund dafür liegt hauptsächlich in der Versionsanpassung. Laut W3Schools [21] ist ECMAScript 5 (2011) die einzige vollständig unterstützte Version aller gängigen Webbrowser, während ECMAScript 6 (2015) teilweise und ECMAScript 7 (2016) nur unzureichend unterstützt wird. Auch wenn CSS4 auf dem Markt ist, haben viele Browser CSS3 noch nicht vollständig unterstützt.

Beispiel: Die Ergebnisse von css3test.com werden auf meiner Win10 x86–64-Box ausgeführt.

Opera Browser v. 46–58% CSS 3-Unterstützung
Google Chrome Browser v.60–58% CSS 3-Unterstützung
Google Canary Browser v.63–59% CSS 3-Unterstützung
Google Chromium Browser v.60–58% CSS 3-Unterstützung
Firefox-Browser - 67% CSS 3-Unterstützung

Stand: 16.09.2017.

Qualitätsarbeit braucht Zeit. Folglich ist dieses Buch immer noch sehr relevant.

Webdesign: HTML, CSS, JavaScript - Jon Duckett

Integrierte Entwicklungsumgebung - Der Workdesk des Entwicklers

Die Java-Umgebung ist reich an Werkzeugen. Unter ihnen sind Integrated Development Environments (IDE) Standardtools, die alle Java-Ingenieure verstehen müssen. Zwar ist es nicht erforderlich, eine IDE zum Erstellen von Software zu verwenden, doch steigern IDEs die Produktivität erheblich, indem sie die verschiedenen gängigen Tools zum Erstellen von Software in eine Umgebung integrieren. Zu einer ganzen Reihe von Produktivitätstools gehören: ein Debugger, Dienstprogramme zum Verwalten von Abhängigkeiten, Funktionen für Plugins, automatische Vervollständigung, Automatisierungstools, Vorlagen, Compiler und vieles mehr. In der Praxis erfordert die Entwicklung der realen Welt, dass Sie die Verwendung und die IDE verstehen.

IDE Mindshare unter Java-Entwicklern.

IDE Mindshare [27]

Es stehen mehrere IDEs zur Verfügung, die unterschiedliche Sprachen und Technologien unterstützen. Meine persönlichen Favoriten sind IntellIJ IDE und NetBeans IDE. Das Unternehmen JetBrains, das IntelliJ entwickelt, hat in der Java-Community einen einzigartigen Einfluss. Neben einer sehr beliebten IDE hat die Android Community IntelliJ als Basis für die Android Studio IDE übernommen. Außerdem unterstützt Google jetzt offiziell Kotlin, eine mit Java kompatible Quell-zu-Quell-JVM-Sprache für die Android-Entwicklung.

Diese Publikation ist die erste einer dreiteiligen Reihe. Wenn Sie den gesamten Artikel lesen möchten, finden Sie ihn hier.

Quelle: ChocolateVanilla.com

Der nächste Artikel in dieser Reihe, "So werden Sie ein Java-Web- oder Enterprise-Entwickler - Teil II: Grundlagen, Daten und das Web für Unternehmen", ist hier verfügbar.

Die für die Publikation zitierten Werke sind im letzten Artikel der Reihe verfügbar.

Interessiert an Java? Tritt meiner Java-Gruppe auf Facebook bei:

Mögen Sie meinen Inhalt? Abonniere meine Mailingliste:

Vergessen Sie nicht, ihm ein ... zu geben. ;)

IEmoji.com