Ich bin Systementwicklungsarchitekt und PM bei SIer. Java ist immer noch der Mainstream in SI, aber mir ist klar, dass die Zeit gekommen ist, in der man keine aktive Rolle spielen kann, wenn man nur die Grammatik und die Codierung versteht. Mein Chef erklärte mit dem einzigartigen Ausdruck ** "Technical Whirlpool" **, aber von 2000 bis 2006 bedeutet das Schreiben von Java die Implementierung verschiedener neuester Technologien. Es war eine Ära, in der ich lernen konnte. Es gibt viele Dinge wie Anwendungsserver, XML, SOAP, MQ, CORBA, Multithread usw., die für eine moderne Evaluierung nicht gut sind, aber da es viele solche technischen Herausforderungen gab, trauten sich die Java-Ingenieure nicht, die Haupt-IT zu verlassen Ich konnte die Technik lernen.
Seit dem Aufkommen von Web 2.0 und iPhone / Android hat sich der Wirbel der Technologie jedoch über das Front-End auf Apps verlagert. Und in letzter Zeit habe ich das Gefühl, dass wir auf Cloud, KI, Blockchain und reaktive und verteilte Verarbeitung umsteigen, die sie als Technologien unterstützen. Bei Qiita werden Sie oft sehen, wie Front-End-Ingenieure großartige, technisch anspruchsvolle Beiträge schreiben und zu einer Säule aller werden. Ich komme wirklich runter. Wenn man sich einen solchen Artikel ansieht, "Ich muss die MVVM-Entwicklung mit React and Angular herausfordern ..." "Ich muss ES2015 (ES6) oder TypeScript mit Visual Studio Code schreiben, nicht mit JavaScript, das ich seit langem kenne." "Kotlin und Scala ähneln Java, also versuchen wir, sie zu schreiben."
Sie denken vielleicht.
** Java-Ingenieure von SIer, die normalerweise nicht viel Gelegenheit haben, Programme zu schreiben, können jedoch eine gute Idee sein, sie dort zu belassen. ** Es ist von nun an ziemlich schwer, in diesem Bereich aufzuholen. Darüber hinaus entwickelt sich das Gebiet zu schnell, und selbst wenn Sie jetzt von Kleinkindern lernen, werden junge Leute, wenn Sie sich daran erinnern, einfach sagen: "Das ist richtig."
Glücklicherweise ist Java immer noch eine wichtige Sprache. Obwohl gesagt wird, dass Kotlin, Scala usw. Ende des öffentlichen Updates des Oracle Java SDK usw. jetzt angekündigt wurden. Es muss gesagt werden, dass Sprachen, die von der Interoperabilität mit Java profitiert haben, in der Unternehmenswelt instabiler geworden sind.
Warum springen Sie jetzt nicht in den stärksten Technologiewirbel, ohne Java aufzugeben, anstatt in den Technologiewirbel, in dem die Windgeschwindigkeit allmählich nachlässt? Einige Leute sagen, dass Sprache nur ein Mittel ist, aber ich glaube nicht, dass es viele Superingenieure gibt, die jede Sprache sprechen können. Lassen Sie uns mit den bereits vorhandenen Assets in ein neues Feld springen.
Um einige Technologie-Whirlpool-Kandidaten mit Java herauszufordern, die ich jetzt habe, werde ich die Hauptthemen und notwendigen Technologien ansprechen. Abschließend habe ich kurz beschrieben, wie man die notwendigen Fähigkeiten erlernt, obwohl dies meine persönliche Erfahrung ist.
Es wird gesagt, dass Blockchain langsame Verarbeitungstransaktionen hat und es noch keine praktische Lösung gibt, aber es ist ein Bereich, der durch die Verwendung der neuesten Technologie weiter wächst. Auch wenn ich von nun an hier eintrete, wird es immer noch pünktlich sein.
Ich werde die Erklärung der Blockchain selbst einem spezialisierten Blog überlassen, aber als Java-Ingenieur denke ich, dass es gut ist, zuerst die folgenden drei Bibliotheken für Java zu lernen. Aus Unternehmenssicht weist BitCoinJ jedoch Sicherheitslücken auf, die offen bleiben, und Skalierbarkeitsprobleme in Bezug auf die Leistung. Ich persönlich empfehle daher, diese auszuschließen, es sei denn, Sie möchten BitCoin wirklich verstehen. Ich denke darüber nach.
Wenn Sie versuchen, eine Anwendung mit diesen Bibliotheken zu entwickeln, werden Sie feststellen, dass die folgenden Haupttechnologien unvermeidlich sind.
Ich frage mich, was ich jetzt schreiben soll, aber überraschenderweise hat SIer EC2 / RDS / S3 und andere Projekte erlebt, die das aktuelle System in die Cloud heben, aber verschieben. Ich denke das ist oft unerfahren. Hier zielen wir auf das sogenannte Cloud-native Feld.
Ich muss sagen, dass Java in Cloud-nativen Projekten zu diesem Zeitpunkt eindeutig unterlegen ist. Es kommt oft mit Frontends, die gut mit JavaScript umgehen können, und bei Verwendung von AWS Lambda denke ich, dass Node.js und Python häufig anstelle von Java übernommen werden. Es können jedoch sowohl AWS Lambda- als auch Azure-Funktionen in Java implementiert werden. Die statisch typisierte Sprache hat außerdem den Vorteil, dass sie mit SI einfacher zu verwenden ist. Es gibt eine Meinung, dass Java in Bezug auf die Leistung sinken wird, aber ich denke, es gibt eine Gegenmaßnahme. Darüber hinaus können nicht nur funktionale Anwendungen, sondern auch Webanwendungen mithilfe von Docker problemlos in der Cloud konfiguriert werden. Unter solchen Umständen denke ich, dass die folgenden wichtigen Technologien unvermeidlich sind, um ein Cloud-nativer Java-Ingenieur zu werden.
Ich habe Blockchain und Cloud als Beispiele genommen, aber Sie haben möglicherweise das Gefühl, dass Sie die Beispielanwendung nicht einmal ändern können, ohne ein wenig Verständnis für Docker, reaktive, funktionale Programmierung, Streams und mehr zu haben.
Mit dem Aufkommen von Java 8 und Rx Java 2 können aktuelle Trends auch in Java implementiert werden, aber sie bringen eine Architektur nach Java, die bereits in anderen Sprachen existiert. Dies stellt zwar sicher, dass das Design korrekt ist, kann jedoch ein Hindernis für Ingenieure ohne technische Basis sein, daran zu arbeiten. Ich habe oft schon in einer anderen Sprache gesprochen und ich hatte auch das Gefühl, dass es nicht viele Bücher für Java gibt, die diesen Teil auf leicht verständliche Weise erklären. In diesem Fall ist das Lesen eines Feldbuchs in einer anderen Sprache ein Umweg, kann aber auch zu einem tieferen Verständnis führen.
Im Folgenden sind einige Bücher mit jeweils einer kleinen Menge aufgeführt, die ich gelernt und verstanden habe. Es kann "Huhn und Ei" sein, aber selbst wenn Sie nur RxJava und funktionale Programmierung lernen, werden Sie möglicherweise gefragt, "wofür sollten Sie es verwenden?". Im Zusammenhang mit Blockchain und Cloud also das Folgende Ich denke, es ist eine Möglichkeit, es ohne Frustration zu lernen.
Java SE 8 Praktische Programmierung, die Java-Programmierer lernen möchten Schließlich ist ein korrektes Verständnis von Java 8 wichtig. Wenn Sie sich Sorgen über Lambda-Ausdrücke und -Streams machen und diese verstehen möchten, lesen Sie sie bitte etwa dreimal, während Sie ein Programm schreiben.
Qiita: Schreiben Sie Java8-ähnlichen Code in Java8 Es ist wichtig, dass es wie Java8 aussieht. Die meisten Bibliotheken sind bereits Java 8-ish.
Mit JavaScript erlernte funktionale Programmierung Lernen Sie die Grundlagen der funktionalen Programmierung mit JavaScript Bis zu einem gewissen Grad wird es im ersten Java-Buch beschrieben, aber ich denke, dass Sie die Leistungsfähigkeit der funktionalen Programmierung verstehen können, indem Sie die beiden oben genannten Bücher lesen. Wenn Sie versuchen, nur mit Java zu verstehen, wird es für viele Menschen schwierig sein zu verstehen, warum Sie Funktionstypen verwenden. Darüber hinaus können Sie als Nebenprodukt die Bedeutung von JavaScript verstehen, das schwer zu lesen war, weil es voller Klammern stand.
Geheimnis der agilen Softwareentwicklung 2. Auflage Die Essenz objektorientierter Entwicklung und Handwerkskunst Bibliotheken wie Blockchain verwenden SOLID-Prinzipien und Entwurfsmuster, und es ist notwendig, diesen Bereich zu verstehen, um die Gesamtbewegung zu verstehen.
Testgetriebene Entwicklung (neue Übersetzung) Es ist mir peinlich zu denken, dass "testgetriebene Entwicklung mit SI nicht möglich ist!" Dieses Buch ist kein Lehrbuch mit TDD-Prinzipien. Sie werden feststellen, dass der Testcode den tatsächlichen Produktionscode verfeinert. Kapitel 1 ist Java. Bitte versuchen Sie es zu kopieren. Möglicherweise sehen Sie Spuren von Codeverbesserungen, z. B. wenn Sie nicht wissen, warum der Produktcode auf diese Weise erstellt wurde.
RxJava Reactive Programming Reaktiv wird häufig in modernen Architekturen verwendet. Dieses Buch basiert auf RxJava2 und sollte 2017 in Ordnung sein. WebFlux wird in Spring5 als reaktive Implementierung übernommen. Da die Spezifikation jedoch denselben reaktiven Streams wie RxJava2 entspricht, ist das Verständnis dieses Dokuments meines Erachtens für die Verwendung von WebFlux hilfreich genug.
Entwicklungstechniken für native Cloud-Anwendungen von Amazon Web Services: Erwerben Sie die wichtigsten Kenntnisse und Technologien Die Cloud entwickelt sich ständig weiter, daher finde ich es gut, dass die Informationen auf der Website aktuell sind. Ich überspringe jedoch oft die Grundlagen, daher denke ich, dass es eine Abkürzung ist, dieses Buch zu lesen und die Grundlagen von Cloud Natives zu lernen. Seien Sie vorsichtig, kein Onkel Lambda zu sein, der immer nur AWS Lambda herstellt.
Fordern Sie auf jeden Fall Java im Zentrum der neuen Technologie heraus, nicht nur das herkömmliche Nur-Servlet-Web wie JavaEE7 und Spring4. Ich denke, Sie können die Schwierigkeit und den Spaß in einem viel wichtigeren Teil erleben, als das Frontend und die Scala auszuprobieren.
Recommended Posts