JavaRush /Blog Java /Random-FR /Un guide pour le futur développeur Java. Entreprise - par...
Diana
Niveau 41

Un guide pour le futur développeur Java. Entreprise - partie 1

Publié dans le groupe Random-FR
« Ne soyez pas trop fier des réalisations technologiques que vous avez réalisées. La capacité de détruire une planète n’est rien comparée à la puissance de la Force. » – Dark Vador sur l’Étoile de la Mort. Un guide pour le futur développeur Java.  Entreprise - partie 1 - 1

Introduction

Les deux prochaines parties de la série d’articles sont probablement les plus attendues pour beaucoup, et pour cause. Qu’y a-t-il, au-delà de l’horizon, au-delà du Java pur ? Que respirent les développeurs Java dans chaque projet ? Considérez ceci comme un véritable guide d'auto-apprentissage complet pour tout ingénieur back-end moyen dont le langage de programmation principal est Java. J'ai l'intention de couvrir autant que possible la moyenne hospitalière et de décrire non seulement les cadres les plus populaires, mais aussi les solutions jugées pertinentes à l'heure actuelle. Naturellement, il existe de nombreux outils, et comprendre lesquels sont les plus importants et les meilleurs ne mène nulle part. Chacun d'entre vous a consulté la section « Emplois » sur DOU et a trouvé une pile de technologies qui se répètent constamment d'un poste vacant à l'autre. Je comprends qu’il est impossible de tout décrire, mais proposer un cadre général, c’est bien, alors essayons de suivre cette direction. D'une manière ou d'une autre, dans le passé, sur l'un des projets, un embarras assez intéressant s'est produit, qui, je pense, s'est répété et se répète constamment de temps en temps pour beaucoup dans un domaine ou un autre. La tâche consistait à attacher le rendu d'une page HTML à la fonctionnalité terminée simplement pour afficher l'état des entités individuelles. En conséquence, mon collègue a décidé d'attacher spring thymeleaf, qui extrait une partie des dépendances principales de Spring lui-même, alors que personne n'utilisait Spring. Et tout cela est pour une page standard, qui montre simplement le statut de 2-3 entités. "Je n'ai jamais vu grand intérêt à utiliser deux sabres laser... c'est une frimousse à mon avis" - Obi-Wan Kenobi. D'une part, le développeur a résolu le problème le plus rapidement possible, a installé un framework avec lequel il avait de l'expérience et l'a intégré au projet en quelques heures. Mais d’un autre côté, notre programme a pris de l’ampleur, de sorte que la question simple devient : a-t-il fait le bon choix ? Pour de telles tâches atomiques, quand vous savez avec certitude que ce thymeleaf/Spring MVC, etc. est plus gros. Il ne sera utilisé nulle part, il vaut mieux ne pas l'utiliser du tout. Je suis toujours surpris par des phrases comme « Oh ! Oui, nous avons utilisé Hibernate ici ! Regardez, tout est cool, ORM ! », et lorsqu'on leur pose la question logique de savoir s'il était possible de s'en sortir avec JDBC classique ici, ils haussent les épaules. Il existe une architecture ordinaire, qui doit être simple, qui doit être traitée avec appréhension, et non encombrée de cadres à la mode et super modernes. Comme Obi-Wan l'a dit plus haut, il ne s'agit que de se faire valoir, même s'il faut savoir s'en servir. Le jeune Javaiste, à mon avis, est le plus malchanceux de tous - tant de spécifications, tant de bibliothèques à étudier. Java EE à lui seul possède une documentation fulgurante. La question se pose : que doit faire un débutant, que doit-il apprendre ensuite, que doit-il faire après Horstmann ? Réponse simple : malheureusement, je rencontre beaucoup de monde. Et nous ne commencerons pas par des cadres commerciaux, mais par des choses nécessaires plus banales.

Systèmes d'exploitation

Linux

En plus de Windows et/ou du confortable Yosemite, vous devez vous initier à Linux avec le sourire. Pour certains projets, il suffit d'être utilisateur et de savoir utiliser la ligne de commande, pour d'autres, bien plus encore. Quelle méthode est la meilleure ? Il existe tout simplement des tonnes de livres/tutoriels sur Internet. Commencez par installer Ubuntu ou toute autre distribution que vous aimez et essayez de l'utiliser comme système d'exploitation principal pendant un mois ou deux. Ce sera bien mieux si vous commencez à apprendre Java sous Linux en compilant et en manipulant des fichiers à l'aide du terminal. Un guide pour le futur développeur Java.  Entreprise - partie 1 - 2La ligne de commande Linux par William Shotts . Lisez ce livre non pas comme un roman « 50 nuances de Grey », mais comme un cours interactif à part entière - ouvrez un terminal et répétez après l'auteur. Voulez-vous les bases et comment fonctionne Linux ? Ne suivons pas le cours d'informatique et de systèmes d'exploitation - c'est dans la partie suivante. Allez sur edx.org et essayez le cours simple d'introduction à Linux . Il existe également un livre de la série mentionnée ci-dessus How Linux Works: What Every Superuser Should Know de Brian Ward . Une publication assez illustrée qui s'intéresse aux réseaux, aux appareils et à la gestion des ressources. Un guide pour le futur développeur Java.  Entreprise - partie 1 - 3Poursuivre? Il y a un excellent livre, que d'ailleurs j'ai quelque part ici... ouais (secoue la poussière)... le voici ! Unix et Linux : Guide de l'administrateur système. Evi Nemeth. Un guide pour le futur développeur Java.  Entreprise - parties 1 à 4Un manuel assez volumineux, bien traduit. Pour être honnête, personnellement, je ne l'ai pas maîtrisé, mais j'ai beaucoup aimé les bases de l'administration (la première partie). Naturellement, vous ne pouvez pas ignorer les scripts Shell. Il est préférable d'essayer tout cela dans la pratique, mais dans les livres, vous pouvez consulter Learning the bash Shell: Unix Shell Programming de Cameron Newham. Un guide pour le futur développeur Java.  Entreprise - parties 1 à 5Une telle quantité de littérature sur Linux/Unix ne peut pas être couverte dans son intégralité, en particulier dans cet article, où Linux est en arrière-plan. Mon collègue de travail, qui a mangé le chien à ce sujet, m'a conseillé une chose plutôt pratique : téléchargez ArchLinux et essayez de le faire fonctionner. Dans le processus, vous apprendrez le plus que je ne veux pas !

les fenêtres

Dans les CV des programmeurs, il y a une colonne : « Expérience Windows de plus de 10 ans ». Bien sûr, je vous félicite du fait que vous jouez au compteur depuis l'âge de 10 ans sous Windows, mais je vous demande de ne pas vous creuser un trou à l'avance lors de l'entretien, car sur un projet où vous travaillez en étroite collaboration avec IIS, batch/powershell, Dieu nous en préserve, le registre, l'entretien ne sera pas vraiment difficile, et en plus du sourire en face de la personne assise. Lida, vous recevrez également une dose d'humiliation. As tu besoin de ça? La réponse se suggère. Mettez de côté votre Windows piraté du torrent et essayez de l'installer sur une sorte de machine virtuelle Windows Server. Étudiez-le non seulement du côté utilisateur et de l'installation JAVA_HOME. À cet égard, un guide presque complet existe sous la forme du livre Mastering Windows Server 2012 R2 de Mark Minasi . Un guide pour le futur développeur Java.  Entreprise - parties 1 à 6Par exemple, si vous utilisez PowerShell, consultez l'excellent livre Windows PowerShell in Action de Manning de Bruce Payette . Je comprends qu’il est impossible de parcourir 1000 pages, mais au moins vous pouvez le garder avec vous comme référence. Rien d'autre n'est nécessaire, je pense. Un guide pour le futur développeur Java.  Entreprise - partie 1 - 7Par conséquent, faites attention aux lacunes dans vos connaissances sur l’utilisation de Windows et recherchez les informations qui vous intéressent sur Internet.

Outils de construction

Maven

Quelle est la chose la plus importante à comprendre dans Maven ? Voici les premières étapes et tâches :
  1. Apprenez ce que Maven fait dans chaque phase, vous pouvez même le mémoriser. Cela représente près de 80 % de réussite et vous donnera une image claire.
  2. Créez vos propres projets sandbox localement avec un système multi-modules, avec une gestion explicite des dépendances. Essayez de joindre des bibliothèques tierces, essayez de créer quelque chose en les utilisant.
  3. Jouez avec le profil
  4. Comprenez la gestion des plugins et étudiez la liste des plugins les plus populaires sur le site officiel.
  5. Découvrez comment utiliser au mieux Maven dans votre projet. Par exemple, les builds parallèles peuvent réduire considérablement le temps de build.
Pour une plongée rapide, accédez à la version russe du site Web Apache Maven et recherchez quelques didacticiels sur Google. Pourtant, la troisième édition de l’un des principaux livres sur Maven ne sortira pas. Jusqu'à présent, il s'agit de la deuxième édition de Sonatype's Maven: The Definitive Guide . Un guide pour le futur développeur Java.  Entreprise - partie 1 - 8Pour le niveau avancé, créer votre propre plugin convient. Ne vous inquiétez pas du type de plugin que vous devez créer, car il en existe déjà beaucoup ! Essayez de créer une sorte d'analogue, étudiez les phases comme deux et deux.

FOURMI

Cet outil semble beaucoup plus simple, il n’y a donc pas grand chose à apprendre ici. Il existe encore des projets dans lesquels ANT est le seul outil de build. C'est tout à fait normal : ANT s'est révélé être un outil de build simple et direct dans le cadre de la gestion de petites tâches atomiques (tâches fourmis). Bien sûr, il existe de nombreux plugins ici, tout comme Maven. Pour démarrer avec ANT, procédez comme suit :
  • Essayez de manipuler des fichiers et des dossiers
  • Implémentez différents ordres pour exécuter les tâches. Sur cette base, découvrez les dépendances et la priorité des tâches dans ANT.
  • Décompressez et/ou archivez zip. Dans les tâches, essayez de jouer avec le contenu de l'archive, etc.
Il n’est pas nécessaire de proposer de nombreuses ressources pour apprendre ANT. Pour une plongée plus ou moins approfondie, la page officielle d'Apache Ant suffit. ( ant.apache.org ) et les livres Ant in Action de Steve Loughran . Un guide pour le futur développeur Java.  Entreprise - partie 1 - 9

Graduation

Pour moi, Gradle est plus proche d'ANT que de Maven, mais on peut tout à fait l'appeler le demi-frère de ces deux gars. Il a un cycle de vie similaire à celui de Maven et la flexibilité des mêmes tâches que celles d'ANT. Eh bien, le plus important est que Gradle n'utilise pas XML et, de plus, vous pouvez en faire ce que vous voulez si vous êtes plus ou moins familier avec Groovy. En général, c'est une chose assez savoureuse. N'ayez pas peur d'utiliser Ant/Maven/Gradle dans le contexte de votre IDE. Ces outils sont étroitement intégrés à Eclipse/IDEA, et leur utilisation dans le contexte de l'EDI est assez confortable.

Intégration continue

Théorie

Ce sont des programmes providentiels qui vous protègent du licenciement. En bref, il s'agit d'un logiciel qui surveille les modifications apportées au code, crée et exécute des tests écrits pour vous. Si tout va bien après chaque validation/fusion, alors la construction brille d'une agréable lumière verte/bleue. Dès que vous cassez quelque chose, le système CI le signalera immédiatement. Cependant, un peu de théorie, c'est classique ! Intégration continue : améliorer la qualité des logiciels et réduire les risques par Paul Duvall . (alias « Intégration continue » en russe) Un guide pour le futur développeur Java.  Entreprise - partie 1 - 10Ce livre traite même de la création de votre propre système CI. Examinons les deux solutions les plus populaires dans ce domaine.

Jenkins

Jenkins, alias Hudson. Application ouverte, conviviale et facile à utiliser. Pour vous familiariser davantage avec Jenkins, essayez ce qui suit :
  1. Téléchargez-le sur votre ordinateur. Installez et configurez JDK, Maven, ANT et tout ce dont vous avez besoin pour le projet.
  2. Créez le premier Job et spécifiez l'emplacement de votre projet, par exemple, le pom.xml principal. Exécutez-le, assurez-vous d'avoir une sorte de test pour qu'il soit clairement visible.
  3. Apprenez à exécuter votre projet avec différents paramètres et options.
  4. Attachez différents plugins et voyez comment ils fonctionnent en conjonction avec votre projet.
  5. Construisez des déclencheurs pour différentes tâches. Créez un petit pipeline.
  6. Explorez le DSL et essayez de l'intégrer à Jenkins.
  7. Configurez un esclave à partir d'un autre ordinateur et/ou faites-en une machine standard pour exécuter des builds.
  8. Créez des builds nocturnes.
Parmi les livres, lisez simplement Jenkins: The Definite Guide de John Ferguson Smart . Un guide clair avec de nombreuses captures d'écran. Un guide pour le futur développeur Java.  Entreprise - partie 1 - 11

ÉquipeCité

Oui, TeamCity n'est pas gratuit, mais regardez à quel point il est bien intégré à l'écosystème de produits JetBrains. Intellij Idea et TeamCity forment une grande union. Dans l'ensemble, si vous connaissez déjà Jenkins, TeamCity ne sera pas une forêt sombre pour vous, et vice versa. Au lieu d'esclaves, il y a des agents, les mêmes déclencheurs, etc. Mais contrairement à Jenkins, TeamCity possède des fonctionnalités étonnantes telles que, par exemple, l'exécution à distance, également connue sous le nom de validation pré-testée, des statistiques bien plus visuelles et bien plus encore. J'aime beaucoup le guide de l'utilisateur sur YouTube, créé par JetBrains lui-même ( TeamCity User Guide (Part 1 of 9) - Introduction ). Je trouve TeamCity intuitif et la documentation d'un niveau élevé. Mais si vous pensez qu’il existe un livre qui mérite d’être consulté, laissez-le dans les commentaires. Bien sûr, je n'ai répertorié qu'une petite partie de ces systèmes CI, mais notre portée est limitée. Le meilleur guide pour apprendre est probablement la pratique. Je l'ai installé sur mon ordinateur, je l'ai lancé, j'ai planté/restauré les builds et je me suis couché. Et puis vous pourrez m'apporter le livre des records en toute sécurité (si vous le souhaitez :).

Système de contrôle de version

Cela ne sert à rien de parler beaucoup de VCS. C'est juste quelque chose qui devrait exister, et sans lequel la gestion de projet serait comme l'ère mésozoïque. Semblable aux systèmes CI, examinons deux des solutions les plus populaires : Git et SVN.

Git

Notre Git s’est révélé être un système de contrôle de version distribué stable. Commencez à apprendre à partir d'ici et parcourez tous les chapitres avec Git déjà configuré. Ensuite, il existe une merveilleuse série de didacticiels interactifs de Code School. Il existe également un petit guide intitulé Try Git: Code School . D'après les livres, je peux recommander Contrôle de version avec Git de Jon Loeliger. Un guide pour le futur développeur Java.  Entreprise - partie 1 - 12 Si vous êtes tellement habitué à la tortue (TortoiseSVN, ndlr) et que vous avez peur de la console, vous pouvez bien sûr télécharger son analogue TortoiseGit, mais, à mon avis, beaucoup plus agréable et esthétique La solution est un produit d'Atlassian - SourceTreeApp. Vous pouvez vous entraîner avec des référentiels distants, car il existe suffisamment de services d'hébergement sur Internet. Si vous le souhaitez, formez-vous localement. Non? Créez ensuite un compte sur GitHub et travaillez en mode complet : effectuez quelques commits, créez un projet open source, effectuez quelques fusions entre branches, etc.

SVN

Un autre VCS tout aussi populaire est SVN. Ce système ne peut pas se vanter de distribution. Chacun d’eux a ses propres approches, ses propres avantages et inconvénients. Assurez-vous de lire la conversation intéressante entre un débutant et un utilisateur SVN . Il existe un livre gratuit sur read-bean.com avec une traduction en russe. Un mini-cours de TutorialsPoint sera également extrêmement utile . Ne manquez pas le site officiel d'Apache subversion.apache.org . Le client le plus intéressant pour moi est TortoiseSVN susmentionné. Parmi les livres, on peut souligner : Version Control with Subversion de Michael Pilato . Un guide pour le futur développeur Java.  Entreprise - partie 1 - 13Je l'ai aimé car il fait attention à l'administration du serveur SVN lui-même. J'espère que je n'ai pas manqué les points principaux.

Outils de test

Ce serait une bonne idée de comprendre dans vos petits projets sandbox ce que sont les tests unitaires, les tests d'intégration et de régression. JUnit La théorie des tests unitaires est bien décrite dans les livres de l'article précédent. En particulier, Clean Code décrit même Junit comme l'une des bibliothèques les plus populaires dans ce domaine. Mais lorsqu'il s'agit spécifiquement de JUnit, il existe un excellent petit livre intitulé Practical Unit Testing with JUnit and Mockito de Tomek Kaszanowski Un guide pour le futur développeur Java.  Entreprise - partie 1 - 14 . Bien sûr, il ne se limite pas à JUnit et Mockito. Ici, l'auteur présente Matchers, propose des exemples de tests paramétrés et présente brièvement TDD. Il y a aussi un livre qui est sorti assez récemment. Il s'agit de Jeff Langr Pragmatic Unit Testing in Java 8. Un guide pour le futur développeur Java.  Entreprise - partie 1 - 15 L'auteur présente Hamcrest, décrit les meilleures pratiques et, bien sûr, Java 8. Vous pouvez lire en toute sécurité après le livre de Tomek. Au fait, à propos de TDD. Je ne veux pas soulever de questions sur la question de savoir si cela vaut la peine de les utiliser, si c'est bon ou mauvais, si les clients en ont besoin. N'oubliez pas : travailler en TDD n'est pas une nouveauté, et de nombreux projets utilisent cette méthodologie, et pour beaucoup de personnes, c'est la règle unique et incontestable. En théorie, vous pouvez lire les classiques. Kent Beck - Développement piloté par les tests : par exemple . Ce que j'ai le plus aimé, c'est la partie sur les modèles TDD. Un guide pour le futur développeur Java.  Entreprise - partie 1 - 16Étonnamment, il existe un bon cours à la première personne - Let's Play TDD (200 vidéos !) sur Youtube. Non moins intéressante est la propre discussion de Fowler sur la question de savoir si cela vaut la peine d'utiliser TDD, si cela gâche la conception, etc. N'oubliez pas ceci une fois pour toutes : TDD ne crée pas un mauvais design, vous le créez. Si vous utilisez davantage BDD (l'un n'interfère pas avec l'autre) et, par exemple, utilisez Cucumber sur un projet, alors il s'agit d'un plan légèrement différent. Un bon livre à ce sujet est Manning BDD in Action: Behaviour-driven development for the Whole Software Lifecycle par John Ferguson Smart . Un guide pour le futur développeur Java.  Entreprise - partie 1 - 17À propos, John Ferguson Smart fait activement la promotion de ce sujet auprès des masses. Si vous êtes un Scrum Master ou un PM qui ne se fait finalement pas mal aux yeux, mais qui aime regarder les tests quand-si-alors, alors assurez-vous de suivre John sur Twitter . Concernant Cucumber, regardez l'implémentation Java sur le site officiel et lisez le livre The Cucumber Book: Behavior-Driven Development de Matt Wayne . Un guide pour le futur développeur Java.  Entreprise - partie 1 - 18

Bibliothèques tierces

Il est important de pouvoir utiliser les bibliothèques populaires lorsque cela est nécessaire : elles simplifient la vie quotidienne de chaque développeur Java. Les solutions populaires incluent les suivantes : Joda Time. Propose de remplacer complètement la date et l'heure natives peu pratiques par JodaTime, plus pratique. Voici une bonne référence . Veuillez noter que si vous utilisez déjà Java 8, JodaTime ne vous sera pas d'une grande aide. Le fait est que la nouvelle API DateTime a complètement remplacé cette bibliothèque et, à certains endroits, elle a même été intelligemment copiée et collée. Selon le propre article de l'auteur , chaque classe Joda peut être facilement remplacée par un analogue de java.time. Google Goyave. À bien des égards, Java 8 remplace même Guava. Les mêmes objets, l'API Stream, le prédicat Java et bien d'autres choses suggèrent de le remplacer et de ne pas l'utiliser du tout. Je le répète, si vous n'avez pas Java 8, il n'y a rien de mieux que ce guide et vos mains directes.

Apache Commons

Ce monstre n'est pas si simple à gérer : une quarantaine de bibliothèques pour toutes les occasions, du célèbre commons.lang à la validation xml, de DBUtils à commons.io . Naturellement, vous n’avez pas besoin de tout connaître, mais des livres de recettes et des tutoriels seront utiles à avoir avec vous. Par exemple, pour comprendre ce qu'est Apache Commons, vous pouvez consulter le livre de recettes Jakarta Commons de Timothy O'Brein. Un guide pour le futur développeur Java.  Entreprise - partie 1 - 19

Conclusion

Enterprise est si vaste qu'il serait stupide de commencer à discuter de JavaEE et d'autres frameworks sans tout ce qui entoure cette Enterprise. Par conséquent, dans la deuxième partie, nous nous concentrerons sur chaque couche de l’architecture multiniveau, considérerons les services, etc. Merci beaucoup pour votre attention. Fin de la première partie. Parties précédentes de la série :
  1. Un guide pour le futur développeur Java. Bases de Java
  2. Un guide pour le futur développeur Java. Code élégant
Original avec DOU
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION