Je suis architecte de développement système et PM chez SIer. Java est toujours le courant dominant dans SI, mais je me rends compte que le moment est venu où vous ne pouvez pas jouer un rôle actif simplement en comprenant la grammaire et le codage. Mon patron m'a expliqué en utilisant l'expression unique ** "Technical Whirlpool" **, mais de 2000 à 2006, écrire Java signifie implémenter diverses dernières technologies. C'était une époque où je pouvais apprendre. Il y a beaucoup de choses telles que le serveur d'application, XML, SOAP, MQ, CORBA, multi-thread, etc. qui ne sont pas bonnes pour une évaluation moderne, mais comme il y avait beaucoup de défis techniques de ce type, les ingénieurs Java n'ont pas osé sortir et l'informatique principale J'ai pu apprendre la technique.
Cependant, depuis l'avènement du Web 2.0 et de l'iPhone / Android, le vortex de la technologie s'est déplacé vers les applications via le front-end. Et récemment, j'ai l'impression que nous nous dirigeons vers le cloud, l'IA, la blockchain et le traitement réactif et distribué qui les prend en charge en tant que technologies. Chez Qiita, vous verrez souvent des ingénieurs front-end écrire d'excellents articles techniquement stimulants et devenir un pilier de tout le monde. Je descends vraiment. En regardant un tel article, "Je dois contester le développement MVVM avec React et Angular ..." "Je dois écrire ES2015 (ES6) ou TypeScript en utilisant Visual Studio Code, pas en JavaScript que je connais depuis longtemps." "Kotlin et Scala sont similaires à Java, alors essayons de les écrire."
Vous pensez peut-être.
Cependant, ** les ingénieurs Java appartenant au SIer qui n'ont généralement pas beaucoup d'opportunités d'écrire des programmes, il peut être judicieux de le laisser là. ** Il est assez difficile de rattraper ce retard dans ce domaine à partir de maintenant. De plus, la région évolue trop rapidement, et même si vous étudiez maintenant chez les tout-petits, au moment où vous vous en souvenez, les jeunes diront simplement: «C'est vrai».
Heureusement, Java est toujours un langage majeur. Bien qu'il soit dit que Kotlin, Scala, etc., Fin de la mise à jour publique d'Oracle Java SDK etc. ont été annoncés maintenant. Il faut dire que les langages qui ont bénéficié de l'interopérabilité avec Java sont devenus plus instables dans le monde de l'entreprise.
Pourquoi ne pas sauter dans le vortex technologique le plus vigoureux maintenant sans abandonner Java au lieu du vortex technologique où la vitesse du vent a commencé à s'affaiblir? Certaines personnes disent que la langue n'est qu'un moyen, mais je ne pense pas qu'il y ait beaucoup de super ingénieurs qui peuvent parler n'importe quelle langue. Passons à un nouveau domaine avec les actifs que vous possédez déjà.
Maintenant, afin de défier certains candidats de tourbillon technologiques avec Java que j'ai maintenant, je vais aborder les thèmes principaux et les technologies nécessaires. Enfin, en résumé, j'ai brièvement décrit comment acquérir les compétences nécessaires, bien que ce soit mon expérience personnelle.
On dit que la blockchain a un traitement lent des transactions et qu'il n'y a pas encore de solution pratique, mais c'est un domaine qui continue de croître en impliquant les dernières technologies. Même si j'entre ici à partir de maintenant, ce sera toujours dans le temps.
Je laisserai l'explication de la blockchain elle-même à un blog spécialisé, mais en tant qu'ingénieur Java, je pense qu'il est bon d'apprendre d'abord à travers les trois bibliothèques suivantes pour Java. Cependant, du point de vue de l'entreprise, BitCoinJ a des bogues de sécurité qui restent ouverts et des problèmes d'évolutivité en termes de performances, je recommande donc personnellement de l'exclure, sauf si vous voulez vraiment comprendre BitCoin. J'y pense.
Et si vous essayez de développer une application à l'aide de ces bibliothèques, vous constaterez que les principales technologies suivantes sont inévitables.
Je me demande quoi écrire maintenant, mais étonnamment SIer a expérimenté EC2 / RDS / S3 et d'autres projets qui ** élèvent ** le système actuel vers le cloud, mais le ** transfèrent **. Je pense que c'est souvent inexpérimenté. Ici, nous ciblons le champ dit natif du cloud.
Je dois dire que Java est clairement inférieur dans les projets cloud natifs à ce stade. Il est souvent livré avec des frontaux qui sont bons en JavaScript, et lors de l'utilisation d'AWS Lambda, je pense que Node.js et Python sont souvent adoptés à la place de Java. Cependant, AWS Lambda et Azure Functions peuvent être implémentés en Java. De plus, le langage à typage statique a l'avantage d'être plus facile à utiliser avec SI. Il y a une opinion que Java va baisser en termes de performances, mais je pense qu'il y a une contre-mesure. De plus, non seulement les applications fonctionnelles, mais également les applications Web peuvent être facilement configurées de manière native dans le cloud à l'aide de Docker. Dans de telles circonstances, je pense que les technologies majeures suivantes sont inévitables pour devenir un ingénieur Java cloud natif.
J'ai pris la blockchain et le cloud comme exemples, mais vous pouvez penser que vous ne pouvez même pas modifier l'exemple d'application sans un peu de compréhension de Docker, de la programmation réactive et fonctionnelle, des flux, etc.
Avec l'avènement de Java 8 et Rx Java 2, les tendances récentes peuvent également être implémentées en Java, mais elles apportent à Java une architecture qui existe déjà dans d'autres langages. Bien que cela garantisse que la conception est correcte, cela peut être un obstacle pour les ingénieurs n'ayant aucune base technique pour y travailler. J'ai souvent déjà parlé dans une autre langue, et j'ai également senti qu'il n'y avait pas beaucoup de livres pour Java qui expliquent cette partie de manière facile à comprendre. Dans ce cas, lire un livre sur le terrain dans une autre langue est un détour, mais cela peut aussi conduire à une compréhension plus approfondie.
Voici quelques livres, chacun avec une petite quantité, que j'ai appris et compris. Cela peut être "poulet et oeuf", mais même si vous apprenez uniquement RxJava et la programmation fonctionnelle, on vous demandera peut-être "à quoi devriez-vous l'utiliser?", Donc dans le contexte de la blockchain et du cloud, voici ce qui suit Je pense que c'est une façon de l'apprendre sans frustration.
Programmation pratique Java SE 8 que les programmeurs Java veulent apprendre Après tout, une bonne compréhension de Java 8 est importante. Si vous êtes préoccupé par les expressions lambda et les flux et que vous souhaitez les comprendre, veuillez les lire environ 3 fois lors de l'écriture d'un programme.
Qiita: Écrivez du code de type Java8 en Java8 Il est important qu'il ressemble à Java8. La plupart des bibliothèques sont déjà Java 8-ish.
Programmation fonctionnelle apprise avec JavaScript Apprenez les bases de la programmation fonctionnelle à l'aide de JavaScript Dans une certaine mesure, il est décrit dans le premier livre Java, mais je pense que vous pouvez comprendre la puissance de la programmation fonctionnelle en lisant les deux livres ci-dessus. Si vous essayez de comprendre uniquement avec Java, il sera difficile pour de nombreuses personnes de comprendre pourquoi vous utilisez des types fonctionnels. De plus, en tant que sous-produit, vous serez en mesure de comprendre la signification de JavaScript, qui était difficile à lire car il était plein de parenthèses.
Mystery of Agile Software Development 2nd Edition L'essence du développement orienté objet et de l'artisanat Les bibliothèques telles que la blockchain utilisent les principes et les modèles de conception SOLID, et il est nécessaire de comprendre ce domaine afin de comprendre le mouvement global.
Développement piloté par les tests (nouvelle traduction) Je suis gêné de penser que "le développement piloté par les tests ne peut pas être fait avec SI!" Ce livre n'est pas un manuel basé sur les principes du TDD. Vous remarquerez que le code de test affine le code de production réel. Le chapitre 1 est Java, alors essayez de le copier. Vous pouvez voir des traces d'améliorations du code, par exemple ne pas savoir pourquoi le code produit a été créé de cette façon.
Programmation réactive RxJava Le réactif est souvent utilisé dans les architectures modernes. Ce livre est basé sur RxJava2 et devrait convenir en 2017. WebFlux est adopté comme implémentation réactive dans Spring5, mais comme la spécification est conforme aux mêmes flux réactifs que RxJava2, je pense que la compréhension de ce document sera suffisamment utile pour utiliser WebFlux.
Techniques de développement d'applications natives Amazon Web Services Cloud: acquérir les connaissances et technologies les plus importantes Le cloud évolue constamment, donc je pense qu'il est bon que les informations sur le site Web soient fraîches. Cependant, je saute souvent les bases, donc je pense que c'est un raccourci pour lire ce livre et apprendre les bases des natifs du cloud. Faites attention de ne pas être un oncle Lambda qui ne fabrique que AWS Lambda.
Par tous les moyens, veuillez relever le défi avec Java au centre de la nouvelle technologie, et pas seulement le Web conventionnel uniquement Servlet tel que JavaEE7 et Spring4. Je pense que vous pouvez éprouver la difficulté et le plaisir dans une partie beaucoup plus essentielle que d'essayer le frontal et Scala.
Recommended Posts