JavaRush /Blog Java /Random-FR /Pause café #119. Introduction à Java Enterprise Edition (...

Pause café #119. Introduction à Java Enterprise Edition (Java EE)

Publié dans le groupe Random-FR
Source : Dev.to Java Enterprise Edition (Java EE) est un ensemble de spécifications et de documentation pour le langage Java qui décrit une architecture de plate-forme serveur permettant de résoudre les problèmes des moyennes et grandes entreprises. Pause café #118.  Introduction à Java Enterprise Edition (Java EE) - 1Lors de l’apprentissage de Java EE, vous rencontrerez les termes suivants :
  • Un serveur d'applications est une implémentation concrète des spécifications abstraites Java EE. Exemples : Payara Server (Glassfish), IBM OpenLiberty et JBoss Wildfly.

  • Une demande de spécification Java (JSR) est une demande formelle adressée à la communauté Java pour ajouter et améliorer des technologies. Il s'agit d'un organisme qui normalise les API sur la plateforme technologique Java et permet de regrouper les API en blocs, comme JAX-RS (Java API for RESTful Web Services). Pour chaque JSR, il existe toujours une implémentation de référence par défaut.

  • Une implémentation de référence est une implémentation/implémentation concrète d’un JSR abstrait. Par exemple, l'implémentation de référence pour JAX-RS s'appelle Jersey. Java EE lui-même est un JSR. Ainsi, le serveur d'applications est un ensemble de différentes implémentations de référence Java EE JSR. Java EE est JSR 366 et l'une de ses implémentations de référence est Glassfish 5.

  • Jakarta EE est le nouveau nom de Java EE à partir de 2018. Actuellement, Oracle a transféré la plate-forme Java sous la gestion de la Fondation Eclipse .

Les bases de JavaEE

Il existe trois API clés dans Java EE :
  1. API de persistance Java (JPA). Il est responsable du stockage et de la récupération des informations des bases de données relationnelles, qui peuvent être étendues pour fonctionner avec les bases de données NoSQL. Il s'agit de la couche de données de l'application.

  2. Injection de contexte et de dépendances (API CDI). Il s'agit d'un moyen standardisé de réduire le couplage dans les applications. Il gère diverses interactions de composants pour assurer un découplage libre.

  3. API Java pour les services Web RESTful (JAX-RS). Il fournit des ressources via HTTP sous forme de services Web.

API d'injection de contexte et de dépendances

L'injection de dépendances est une forme particulière de contrôle d'inversion (une stratégie logicielle dans laquelle les composants individuels reçoivent leurs dépendances). Cela externalise la dépendance dans l'application pour créer des composants à faible couplage.

Caractéristiques du CDI

  • L'injection de dépendances (Typesafe) vous permet de déclarer des dépendances sur les types afin que le compilateur détecte les erreurs au moment de l'exécution.

  • Les contextes de cycle de vie sont la capacité de lier les interactions du cycle de vie et des composants avec état à des composants du cycle de vie bien définis mais extensibles.

  • Les intercepteurs vous permettent d'intercepter les demandes d'accès à une méthode spécifique.

  • Les événements sont un moyen de développer des applications hautement découplées. Les événements peuvent être déclenchés pendant que la méthode Observers écoute les événements déclenchés.

  • L'interface de fournisseur de services (SPI) est un ensemble de techniques, d'API et d'interfaces qui peuvent être utilisées comme extensions, comme dans la bibliothèque Apache.

Quelques concepts de l'API CDI :

  • CDI Bean Discovery est un mécanisme dans lequel la structure d'injection de dépendances analyse et découvre les beans pour contrôler la façon dont les beans sont découverts par défaut, c'est-à-dire les beans avec des annotations telles que @Annotated. Il existe trois types de mode de découverte de bean : ALL (y compris les beans non annotés), ANNOTATED et NONE.

  • Un conteneur CDI est une méthode d'usine dans laquelle les classes Java entrent et sortent avec leurs fonctionnalités et capacités. C'est l'application qui gère les beans.

  • Instances Bean et contextuelles. Un bean est un modèle créé par un développeur. Une instance contextuelle est une instance d'un Bean créée et gérée par un conteneur CDI.

API de persistance Java

JPA est utilisé pour mapper des objets à des tables de base de données relationnelles. L'API Java Persistence suit les principes du manifeste ORM. Manifeste ORM (manifeste de mappage relationnel d'objet) :
  • Des objets, pas des tableaux : les développeurs écrivent des objets, pas des tableaux.

  • Commodité, pas ignorance : un ORM doit être pratique. Les développeurs doivent avoir une connaissance minimale des bases de données relationnelles. ORM n'est pas un moyen de cacher l'ignorance, mais une commodité.

  • Discret et transparent : un ORM doit faire en sorte que les développeurs puissent contrôler ce qui se trouve dans la base de données et avoir un contrôle total sur ce qui est enregistré. Données héritées, nouveaux objets : ORM vous permettra de créer de nouveaux objets à partir de données héritées, c'est-à-dire de reconstruire l'ancienne base de données en objets Java.

  • Assez, mais pas trop : ORM fournira tous les outils pour résoudre les problèmes courants dus à l'inadéquation d'impédance (terme utilisé pour désigner les problèmes qui surviennent en raison des différences entre le modèle de base de données et le langage de programmation). Un ORM ne doit pas être trop lourd.

  • Localité et mobilité : les données sont locales, mais il doit être possible que l'état persistant de l'application se déplace vers différentes parties de l'application.

  • API standard, implémentation enfichable : comptez sur l'API standard, mais pouvez modifier les implémentations si nécessaire.

Quelques concepts JPA importants : Entité JPA
  • Le composant le plus modulaire des objets JPA est le vieil objet Java (POJO). Chaque objet doit avoir un identifiant unique.

  • Les entités JPA utilisent généralement des annotations telles que @MappedSuperClass, qui permettent l'utilisation de superclasses contenant des champs d'entité communs. L'annotation @AttributeOverride est utilisée pour remplacer les entités de superclasse. @Column est utilisé pour configurer les mappages de bases de données. L'annotation @Transient peut être utilisée pour les champs d'une classe d'entité qui ne doivent pas être mappés à une base de données.

  • Le type d'accès est le processus par lequel le fournisseur de persistance accède aux états d'une entité. L'accès aux champs se produit lorsque le fournisseur accède aux champs d'une classe directement par réflexion. L'accès aux propriétés se produit lorsque des méthodes de propriété Java Bean sont utilisées pour accéder aux états, c'est-à-dire que des getters et des setters sont utilisés. Pour utiliser l'accès aux propriétés, le getter doit être annoté avec @Id. Le type d'accès mixte utilise l'accès aux champs et aux propriétés de la même classe d'entité à l'aide de l'annotation @Access.

API Java pour les services Web RESTful

Limites de l'architecture REST :
  1. Le client et le serveur sont indépendants l'un de l'autre.

  2. Apatride : chaque requête individuelle qui arrive au serveur est autonome et unique. Le serveur ne fait aucune hypothèse à partir de la requête précédente.

  3. Mise en cache : le système doit prendre en charge la mise en cache à différents niveaux pour améliorer les performances et l'évolutivité.

  4. Une interface unifiée signifie que le client doit disposer d'une interface unifiée commune pour accéder aux ressources sur le serveur, ainsi que pour interagir avec les ressources sur le serveur. Système multiniveau : le serveur peut être implémenté dans différentes couches de telle sorte que le client n'ait pas à se soucier d'un système multiniveau, tel qu'un serveur prenant en charge l'équilibrage de charge.

Quelques concepts généraux liés à JAX-RS :
  • Méthode HTTP GET : demande d'une ou plusieurs ressources. La méthode de requête GET est idempotente, ce qui signifie que le fait de faire la même requête à plusieurs reprises ne devrait pas modifier l'état de la ressource ou des données sur le serveur.

  • Méthode HTTP POST : La requête POST permet de créer de nouvelles ressources sur le serveur. Cela entraîne une modification des données définies sur le serveur. POST a généralement un corps dans lequel la charge utile ou tout ce que nous voulons créer sur le serveur est publié ou joint.

  • Méthode HTTP PUT : Utilisée sémantiquement pour mettre à jour les ressources sur le serveur.

  • Méthode HTTP DELETE : utilisée pour supprimer des ressources sur le serveur.

  • Types de contenu. Il existe plusieurs types de contenu qui peuvent être consommés et créés par des méthodes de requête : XML, CSV, EXCEL, TEXT et JSON.

  • JAX-RS a le concept d'écriture d'un corps de message. Il s'agit de constructions API utilisées pour convertir les types Java en type attendu par le client. L'annotation @Produces peut être utilisée pour spécifier le type vers lequel la réponse d'un objet Java est convertie.

  • L'annotation @Consumes indique au runtime JAX-RS le type de contenu consommé par une méthode de ressource donnée. Le runtime JAX-RS convertit ensuite le contenu JSON transmis comme charge utile en un objet Java dont le type est le même que le paramètre de méthode.

  • Mappeur d'exceptions JAX-RS : construction d'API utilisée pour mapper les exceptions aux réponses HTTP. L'annotation @Provider est utilisée pour enregistrer par programme un résolveur d'exceptions avec le runtime JAX-RS.

Il s'agit d'une introduction très simple à Java EE. Pour créer des applications Web à l'aide de Java EE, vous devrez approfondir chaque API clé.
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION