Article de reference

Plateforme Java, édition standard

Java Platform, Standard Edition ( Java SE ) est une plateforme informatique , une norme technique pour l'exécution d'applications sur des plateformes Java indépendantes , ainsi ...

plateforme informatique , une norme technique pour l'exécution d'applications sur des plateformes Java indépendantes , ainsi que du code portable pour les environnements de bureau et serveur . Java SE était auparavant connu sous le nom de Java 2 Platform, Standard Edition ( J2SE ).

La plateforme utilise le langage de programmation Java et fait partie de la famille des plateformes logicielles Java . Java SE définit un ensemble d' API génériques , telles que les API Java pour la bibliothèque de classes Java , et inclut également la spécification du langage Java et la spécification de la machine virtuelle Java . OpenJDK est l' implémentation de référence officielle depuis la version 7.

Java EE ) et Micro Edition ( Java ME ). Le « 2 » visait initialement à souligner les changements majeurs introduits dans la version 1.2, mais a été supprimé dans la version 1.6. La convention de nommage a été modifiée à plusieurs reprises au cours de l' histoire des versions de Java . À partir de J2SE 1.4 (Merlin), Java SE est développé dans le cadre du Java Community Process , qui produit des descriptions des spécifications proposées et finales pour la plateforme Java, appelées Java Specification Requests (JSR) . La ​​JSR 59 était la spécification de base pour J2SE 1.4 et la JSR 176 spécifiait J2SE 5.0 (Tiger). Java SE 6 (Mustang) a été publié sous la JSR 270.

Java Platform, Enterprise Edition (Java EE) est une spécification connexe qui inclut toutes les classes de Java SE, plus un certain nombre de classes plus utiles aux programmes exécutés sur des serveurs plutôt que sur des postes de travail .

Java Platform, Micro Edition (Java ME) est une spécification connexe destinée à fournir une collection certifiée d'API Java pour le développement de logiciels pour les petits appareils aux ressources limitées tels que les téléphones portables , les PDA et les décodeurs .

L' environnement d'exécution Java (JRE) et le kit de développement Java (JDK) sont les fichiers téléchargés et installés sur un ordinateur pour exécuter ou développer des programmes Java, respectivement.

paquets à usage général

La majorité de ces packages sont exportés par le java.basemodule du système de modules de la plateforme Java (depuis Java 9).

java.lang

Le package Javainterfaces fondamentales étroitement liées au langage et au système d'exécution . Il inclut les classes racines qui forment la hiérarchie des classes , les types associés à la définition du langage, les exceptions de base , les fonctions mathématiques, le multithreading , les fonctions de sécurité, ainsi que des informations sur le système natif sous-jacent. Ce package contient 22 des 32 java.lang.Errorclasses fournies dans le JDK 6.

Les principales classes et interfaces java.langsont :

Les classes java.langsont automatiquement importées dans chaque fichier source .

java.lang.ref

Ce références plus flexibles que ceux disponibles par ailleurs, permettant une interaction limitée entre l'application et le ramasse-miettes de la machine virtuelle Java (JVM) . Il s'agit d'un package important, suffisamment central pour que les concepteurs du langage l'aient placé dans l' espace de noms dédié , mais il est relativement spécifique et peu utilisé par les développeurs. Ce package a été ajouté dans J2SE 1.2.java.lang

Java possède un système de références expressif et permet un comportement spécifique pour le ramasse-miettes. Une référence classique en Java est appelée « référence forte ». Le java.lang.refpackage définit trois autres types de références : les références souples, faibles et fantômes. Chaque type de référence est conçu pour un usage particulier.

  • Un objet cache . Un objet non accessible par une référence forte (c'est-à-dire non directement accessible), mais référencé par une référence faible, est dit « faiblement accessible ». Un objet faiblement accessible peut être collecté par le ramasse-miettes à la discrétion de ce dernier. En général, cela signifie que les objets faiblement accessibles ne sont collectés que lorsque la mémoire libre est faible ; toutefois, là encore, cela reste à la discrétion du ramasse-miettes. Sémantiquement, une référence faible signifie : « Conservez cet objet tant qu'aucun autre objet ne le référence, sauf si la mémoire est nécessaire. »
  • On utilise `A` faiblement accessible ». Un objet faiblement accessible est collecté par le ramasse-miettes lors du prochain cycle de ramassage. Ce comportement est utilisé dans la classe `A` pool d'internes de chaînes de caractères . Sémantiquement, une référence faible signifie : « supprimez cet objet lorsqu'aucune autre référence ne le référence lors du prochain ramassage des ordures ».
  • A , mais pas encore récupérés. Un objet qui n'est ni fortement, ni faiblement, ni accessible, mais qui est référencé par une référence fantôme, est dit « accessible fantôme ». Ceci permet un nettoyage plus flexible qu'avec le seul mécanisme de finalisation. Sémantiquement, une référence fantôme signifie : « Cet objet n'est plus nécessaire et a été finalisé en vue de son ramassage. »

Chacun de ces types de référence étend la méthode permettant de renvoyer une référence forte à l'objet référent (ou nullsi la référence a été effacée ou si le type de référence est fantôme), et la La programmation réflexive (ou réflexion) est une composante de l' API Java qui permet au code Java d'examiner et d'interagir avec les composants Java lors de l'exécution, et d'utiliser les membres ainsi mis en évidence. Les classes de ce les débogueurs , les interpréteurs , les inspecteurs d'objets, les explorateurs de classes et les services comme la sérialisation d'objets et les JavaBeans , nécessitent l'accès aux membres publics d'un objet cible (en fonction de sa classe d'exécution) ou aux membres déclarés par une classe donnée. Ce package a été ajouté dans le JDK 1.1.

La réflexion permet d'instancier des classes et d'appeler des méthodes par leur nom, un concept qui rend possible la programmation dynamique. Classes, interfaces, méthodes, champs et constructeurs peuvent ainsi être découverts et utilisés à l'exécution. La réflexion s'appuie sur les métadonnées que la JVM possède sur le programme.

Techniques

La réflexion fait appel à des techniques de base :

  • Découverte – cela consiste à prendre un objet ou une classe et à découvrir ses membres, ses superclasses, ses interfaces implémentées, puis éventuellement à utiliser les éléments découverts.
  • Utilisation par nom – consiste à commencer par le nom symbolique d'un élément et à utiliser l'élément nommé.
Découverte

La découverte commence généralement par un objet et l'appel de la les classes internes ) de la classe ou de l'interface.

  • , ). Avec un java.lang.Class<T>objet, les membres java.lang.reflect.Method, java.lang.reflect.Constructor<T>ou java.lang.reflect.Fieldpeuvent être obtenus en utilisant le nom symbolique du membre. Par exemple :

    • méthode statique , le premier java.lang.Objectparamètre est ignoré et peut être nul null.)
    • des entrées/sorties . Ces classes sont principalement orientées flux ; toutefois, une classe pour les fichiers à accès aléatoire est également fournie. Les classes centrales du paquetage sont ` read` et `write`, qui sont des classes de base abstraites pour la lecture et l'écriture de flux d'octets , respectivement. Les classes associées ` read` et `write` sont des classes de base abstraites pour la lecture et l'écriture de flux de caractères , respectivement. Le paquetage comprend également quelques classes diverses pour la gestion des interactions avec le système de fichiers hôte .

      Rivières

      Les classes de flux suivent le modèle décorateur en étendant la sous-classe de base pour ajouter des fonctionnalités. Les sous-classes des classes de flux de base sont généralement nommées d'après l'un des attributs suivants :

      • la source/destination des données du flux
      • le type de données écrites dans/lues depuis le flux
      • traitement ou filtrage supplémentaire effectué sur les données du flux

      Les sous-classes de flux sont nommées selon le modèleXxxStreamType de nommage où Xxxest le nom décrivant la fonctionnalité et StreamTypeest l'un des suivants java.io.InputStream: , java.io.OutputStream, java.io.Reader, ou java.io.Writer.

      Le tableau suivant présente les sources/destinations directement prises en charge par le java.iopackage :

      Source/DestinationNomTypes de fluxEntrée/sortieCours
      byte[]Tableau d'octetsbytededans, dehorsde filtres de flux . Les classes de filtres acceptent toutes un autre objet flux compatible comme paramètre du constructeur et enrichissent le flux encapsulé de fonctionnalités supplémentaires. Les filtres sont créés en étendant l'une des classes de filtres de base encodage de caractères par défaut de la plateforme, qui, depuis J2SE 5.0, est représenté par le `
      OpérationNomTypes de fluxEntrée/sortieCours
      mise en mémoire tampontypes primitifs de lecture/écrituresérialisation d'objets (lecture/écriture d'objets)aléatoires de fichiers. Elle utilise un pointeur de fichier représentant un décalage en octets dans le fichier pour la prochaine opération de lecture ou d'écriture. Le pointeur de fichier est déplacé implicitement lors de la lecture ou de l'écriture, et explicitement lors de l'appel des chemin d'accès à un fichier ou un répertoire dans un système de fichiers . Les objets permettent de créer, supprimer et renommer des fichiers et des répertoires, ainsi que de manipuler leurs attributs, tels que la propriété « lecture seule » et la date de dernière modification . Les objets représentant des répertoires permettent d'obtenir la liste de tous les fichiers et répertoires qu'ils contiennent.java.io.Filejava.io.File

      Cette descripteur de fichier représentant une source ou une destination d'octets. Il s'agit généralement d'un fichier, mais cela peut également être une console ou un socket réseau . java.io.FileDescriptorLes objets servent à créer java.io.Filedes flux. Ils sont obtenus à partir java.io.Filedes classes `streams`, java.net`sockets` et `datagram sockets`.

      java.nio

      les E/S mappées en mémoire , facilitant ainsi les opérations d'E/S au plus près du matériel sous-jacent et offrant parfois des performances nettement supérieures. Ce java.niopackage prend en charge plusieurs types de tampons. Le sous-package NIO encodages de caractères pour les données de type caractère. Le sous-package NIO l'arithmétique multiprécision (y compris les opérations arithmétiques modulaires) et fournit des générateurs de nombres premiers multiprécision utilisés pour la génération de clés cryptographiques. Les principales classes du package sont :

      java.text

      Ce les structures de données qui agrègent des objets. Il inclut l' API Collections , une hiérarchie de structures de données organisée, fortement influencée par les principes des patrons de conception .

      colis à usage spécifique

      java.applet

      d'applets Java , ce signature numérique sur une applet, la déclarant ainsi sûre. Cela permet à l'utilisateur d'autoriser l'applet à effectuer des opérations restreintes (comme l'accès au disque dur local) et de supprimer tout ou partie des restrictions de l'environnement isolé. Les certificats numériques sont délivrés par des autorités de certification .

      Les applets Java étant désormais obsolètes, ce package l'est lui-même.

      java.beans

      architecture JavaBeans . Cette architecture fournit des mécanismes pour manipuler les propriétés des composants et déclencher des événements lorsque ces propriétés changent.

      Les API java.beanssont destinées à être utilisées par un outil d'édition de beans, permettant de combiner, personnaliser et manipuler ces beans. Un exemple d'éditeur de beans est un concepteur d'interface graphique dans un environnement de développement intégré .

      java.awt

      d'interface graphique (GUI) basés sur le jeu de widgets natif de la plateforme sous-jacente. Il constitue le cœur du sous-système d'événements d'interface graphique et assure l'interface entre le système de fenêtrage natif et l'application Java. Il fournit également plusieurs gestionnaires de mise en page de base , un module de transfert de données pour le Presse-papiers et le glisser-déposer , l'interface avec les périphériques d'entrée tels que la souris et le clavier , ainsi que l'accès à la zone de notification sur les systèmes compatibles. Ce module, ainsi que d'autres modules, javax.swingcontient le plus grand nombre d'énumérations (7 au total) dans le JDK 6.

      java.rmi

      l'invocation de méthodes à distance Java afin de prendre en charge les appels de procédures à distance entre deux applications Java exécutées dans des JVM différentes .

      java.security

      La prise en charge de la sécurité, notamment de l'algorithme de hachage, est incluse dans le JDBC (utilisée pour accéder aux bases de données SQL ) est intégrée au package.Swing est un ensemble de routines qui s'appuient les unes sur les autres java.awtpour fournir une boîte à outils de widgets indépendante de la plateforme . Elle utilise les routines de dessin 2D pour afficher les composants de l'interface utilisateur au lieu de s'appuyer sur la prise en charge de l'interface graphique native du système d'exploitation

      Ce paquetage contient le plus grand nombre de classes (133 au total) du JDK 6. Il java.awtcontient également le plus grand nombre d'énumérations (7 au total) du JDK 6. Il prend en charge les apparences et les sensations personnalisables (PLAF) afin que les widgets de l'interface graphique puissent imiter ceux du système natif sous-jacent. Les patrons de conception sont omniprésents, notamment une modification du patron MVC (Modèle-Vue-Contrôleur ) qui atténue le couplage entre la fonction et l'apparence. Une incohérence réside dans le fait que (depuis J2SE 1.3) les polices sont générées par le système natif sous-jacent et non par Java, ce qui limite la portabilité du texte. Des solutions de contournement, comme l'utilisation de polices bitmap, existent. En général, des « mises en page » sont utilisées et assurent une cohérence esthétique des éléments de l'interface graphique sur toutes les plateformes.

      javax.swing.text.html.parser

      Ce du World Wide Web Consortium (principalement XML ) sous l'espace de noms org.w3c. Beaucoup d'entre eux se trouvent dans le java.xmlmodule.

      org.w3c.dom

      Ces modèle objet de document (DOM).

      org.xml.sax

      Ces API simple pour XML (SAX).

      org.omg

      org.omg.CORBA

      protocole General Inter-ORB et prend en charge d'autres fonctionnalités de l' architecture Common Object Request Broker . À l'instar de RMI et RMI-IIOP , il sert à appeler des méthodes distantes d'objets sur d'autres machines virtuelles (généralement via le réseau).

      Ce package contenait le plus grand nombre de java.lang.Exceptionclasses (45 au total) dans JDK 6. De toutes les possibilités de communication, CORBA est portable entre différents langages ; cependant, cela s'accompagne d'une plus grande complexité.

      Ces packages ont été dépréciés dans Java 9 et supprimés de Java 11.

      org.omg.PortableInterceptor

      Le org.omg.PortableInterceptorpackage contenait le plus grand nombre d'interfaces (39 au total) dans JDK 6. Il fournit un mécanisme pour enregistrer des hooks ORB par lesquels les services ORB interceptent le flux normal d'exécution de l'ORB.

      Sécurité

      Plusieurs failles de sécurité critiques ont été signalées. Des alertes de sécurité d'Oracle annoncent des correctifs de sécurité critiques pour Java SE.

      Plus d articles de Worldlex Wiki

      Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

      Explorer l index