Vérifié contenu

Java (langage de programmation)

Sujets connexes: Programmation informatique

Contexte des écoles Wikipédia

SOS croit que l'éducation donne une meilleure chance dans la vie des enfants dans le monde en développement aussi. Mères SOS chaque regard après une une famille d'enfants parrainés .

Java
Java logo.svg
Paradigm (s) multi-paradigme: orienté objet, structurée, impératif, générique, réfléchissant
Paru dans 1995 (1995)
Conçu par James Gosling et
Sun Microsystems
Promoteur Oracle Corporation
Version stable Java Standard Edition 7 Update 21 (1.7.21) (16 Avril, 2013 (16/04/2013))
Typing discipline Statique, forte, sûre, nominatif, manifeste
Les grandes implémentations OpenJDK, beaucoup d'autres
Dialectes Générique Java, Pizza
Influencé par Ada 83, C ++ , C #, Eiffel, Générique Java, Mesa, Modula-3, Oberon, Objective-C, UCSD Pascal, Smalltalk
Influencé Ada 2005, BeanShell, C #, Clojure, D, ECMAScript, Groovy, J #, JavaScript PHP, Python , Scala, Seed7, Vala
langage de mise en œuvre C et C ++
OS Croix-plate-forme (multi-plateforme)
Licence GNU General Public License, Java Community Process
Habituel les extensions de fichier .java, .class, .jar
  • Pour les développeurs Java
  • Programmation Java au Wikibooks

Java est une d'usage général, concurrente, basé sur des classes, orienté objet langage de programmation informatique qui est spécifiquement conçu pour avoir aussi peu de dépendances de mise en œuvre possible. Il est destiné à permettre aux développeurs d'application "écrire une fois, exécuter partout" (WORA), ce qui signifie que le code qui se exécute sur une plate-forme n'a pas besoin d'être recompilées pour fonctionner sur une autre. Les applications Java sont généralement compilé à bytecode ( fichier de classe) qui peut fonctionner sur ne importe quel Machine virtuelle Java (JVM), indépendamment de l'architecture de l'ordinateur. Java est, à partir de 2012, l'une des langues les plus populaires de programmation dans l'utilisation, en particulier pour les applications web client-serveur, avec 10 millions d'utilisateurs déclarés. Java a été initialement développé par James Gosling au Sun Microsystems (qui a depuis fusionné dans Oracle Corporation) et publié en 1995 en tant que composante de base de Sun Microsystems » plate-forme Java. La langue tire une grande partie de son la syntaxe de C et C ++ , mais il a moins installations de bas niveau que l'un d'eux.

L'original et implémentation Java de référence compilateurs, les machines virtuelles, et bibliothèques de classes ont été développés par Sun de 1991 et le premier publié en 1995. En mai 2007, en conformité avec les spécifications de la Java Community Process, Sun relicenciée la plupart de ses technologies Java sous la GNU General Public License. D'autres ont également développé d'autres mises en oeuvre de ces technologies Sun, tels que la GCJ et GNU Classpath.

Histoire

James Gosling, Mike Sheridan, et Patrick Naughton a lancé le projet de langage Java en Juin 1991. Java a été conçu à l'origine pour la télévision interactive, mais il était trop avancé pour l'industrie de la télévision numérique par câble à l'époque. La langue a été initialement appelé Oak après une chêne arbre qui se trouvait devant le bureau de Gosling; il est allé par le nom vert plus tard, et a été rebaptisé Java, à partir de Java, a déclaré à être consommés en grandes quantités par les créateurs de la langue. Gosling visait à mettre en œuvre une machine virtuelle et une langue qui avait un familier C / C ++ style de notation.

Sun Microsystems a publié la première mise en œuvre du public que Java 1.0 en 1995. Il a promis " Write Once, Run Anywhere "(WORA), offrant sans frais temps d'exécution sur la populaire les plates-formes. La sécurité configurable assez sécurisé et mettant en vedette, il a permis restrictions du réseau et d'accès aux fichiers. Navigateurs Web principaux bientôt incorporées la possibilité d'exécuter Applets Java dans les pages Web, et Java est rapidement devenu populaire. Avec l'avènement de Java 2 (publié initialement comme J2SE 1.2 en Décembre 1998 à 1999), de nouvelles versions ont de multiples configurations construites pour différents types de plates-formes. Par exemple, J2EE ciblé applications d'entreprise et la version J2ME grandement allégée pour les applications mobiles (mobile Java). J2SE désigné la Standard Edition. En 2006, à des fins de marketing, Sun rebaptisé nouvelles versions J2 Java EE, Java ME, et Java SE, respectivement.

En 1997, Sun Microsystems approché le Normes ISO / IEC JTC1 corps et plus tard, le Ecma International pour officialiser Java, mais il est vite retiré du processus. Un reste Java la norme de facto, contrôlée par le Java Community Process. À une certaine époque, Sun a fait la plupart de ses implémentations Java disponibles sans frais, en dépit de leur le statut de logiciel propriétaire. Sun a généré des revenus de Java par la vente de licences pour les produits spécialisés tels que Java Enterprise System. Sun établit une distinction entre son Kit de développement logiciel (SDK) et Runtime Environment (JRE) (un sous-ensemble du SDK); La principale distinction implique la Le manque de JRE du compilateur, les programmes utilitaires et les fichiers d'en-tête.

Le 13 Novembre 2006, Sun a publié une grande partie de Java logiciel libre et open source, (FOSS), selon les termes de la GNU General Public License (GPL). Le 8 mai 2007, Sun a terminé le processus, ce qui rend tout le code de base de Java disponible sous libres conditions de distribution des logiciels / open-source, mis à part une petite portion de code à laquelle Sun ne détenaient pas le droit d'auteur.

Vice-président de Sun Rich Green a dit que le rôle idéal de Sun en ce qui concerne Java était comme un "évangéliste." Après Oracle Corporation l 'acquisition de Sun Microsystems en 2009-2010, Oracle se est décrit comme le "gardien de la technologie Java avec un engagement sans relâche à la promotion d'une communauté de participation et de transparence". Ce ne était pas titulaire Oracle, cependant, de déposer une plainte contre Google peu de temps après que, pour l'utilisation de Java dans le SDK Android (voir la section Google ci-dessous). logiciel Java fonctionne sur les ordinateurs portables à les centres de données, les consoles de jeux à scientifiques superordinateurs. Il ya 930 millions Java Runtime Environment télécharge chaque année et de 3 milliards de téléphones mobiles exécuter Java. Le 2 Avril 2010, James Gosling a démissionné de Oracle.

Principes

James Gosling, le créateur de Java

Il y avait cinq objectifs principaux dans la création du langage Java:

  1. Il devrait être «simple, orienté objet et familier"
  2. Il devrait être "robuste et sécurisée"
  3. Il devrait être "l'architecture neutre et portable"
  4. Il doit exécuter avec "haute performance"
  5. Il doit être "interprétée, fileté, et dynamique"

Versions

Versions majeures de Java, ainsi que leurs dates de sortie:

  • JDK 1.0 (21 Janvier, 1996)
  • JDK 1.1 (19 Février, 1997)
  • J2SE 1.2 (8 Décembre, 1998)
  • J2SE 1.3 (8 mai 2000)
  • J2SE 1.4 (6 Février 2002)
  • J2SE 5.0 (30 Septembre, 2004)
  • Java SE 6 (11 Décembre 2006)
  • Java SE 7 (28 Juillet 2011)

Pratiques

Plate-forme Java

Une caractéristique de Java est la portabilité, ce qui signifie que les programmes informatiques écrits en langage Java doivent fonctionner de façon similaire sur ne importe quelle plateforme / système d'exploitation du matériel. Ce résultat est obtenu en compilant le code de langage Java à une représentation intermédiaire appelée bytecode Java, au lieu de directement à plate-forme spécifique code machine. instructions de bytecode Java sont analogues en code machine, mais ils sont destinés à être interprété par un machine virtuelle (VM) écrit spécifiquement pour le matériel hôte. Les utilisateurs finaux utilisent couramment une Java Runtime Environment (JRE) installé sur leur propre machine pour les applications Java autonomes, ou dans un navigateur Web pour Java applets.

Bibliothèques normalisées fournit un moyen générique pour accéder aux fonctionnalités spécifiques à l'hôte tels que des graphiques, filetage, et la mise en réseau.

Un avantage majeur de l'utilisation de bytecode est le portage. Toutefois, les frais généraux d'interprétation signifie que les programmes interprétés courent presque toujours plus lentement que les programmes compilés à des exécutables natifs ferait. Juste-à-temps (JIT) compilateurs ont été introduites à un stade précoce qui compilent bytecode en code machine en cours d'exécution.

Implémentations

Oracle Corporation est le propriétaire actuel de la mise en œuvre officielle de la plate-forme Java SE, suite à leur acquisition de Sun Microsystems, le 27 Janvier 2010. Cette mise en œuvre est basée sur la mise en œuvre initiale de Java de Sun. La mise en œuvre est disponible pour Oracle Mac OS X, de Windows et Solaris. Parce que Java n'a pas toute standardisation formelle reconnue par Ecma International, ISO / CEI, ANSI, ou un autre organisme de normalisation de tiers, la mise en œuvre Oracle est le la norme de facto.

La mise en œuvre Oracle est emballé en deux distributions différentes: le Java Runtime Environment (JRE) qui contient les parties de la plate-forme Java SE requis pour exécuter les programmes Java et est destiné aux utilisateurs finaux, et de la Java Development Kit (JDK), qui est destiné aux développeurs de logiciels et comprend des outils de développement tels que la Compilateur Java, Javadoc, Jar, et un débogueur.

OpenJDK est une autre implémentation Java SE remarquable qui est sous licence GPL. La mise en œuvre a commencé lorsque Sun a commencé à libérer le code source Java sous GPL. À partir de Java SE 7, OpenJDK est la mise en œuvre officielle de référence de Java.

Le but de Java est de faire toutes les implémentations de Java compatible. Historiquement, la licence de marque de Sun pour l'utilisation de la marque Java insiste pour que toutes les implémentations être «compatible». Il en est résulté un litige avec Microsoft après que Sun a affirmé que la mise en œuvre Microsoft ne prend pas en charge RMI ou JNI et avait ajouté des fonctionnalités spécifiques à la plateforme de leur propre. Sun a poursuivi en 1997, et a gagné en 2001 un règlement de 20 millions de dollars, ainsi que d'une ordonnance du tribunal de faire respecter les termes de la licence de Sun. En conséquence, Microsoft navires ne sont plus de Windows avec Java.

Indépendant de la plateforme Java est essentielle pour Java EE, et une validation encore plus rigoureux est nécessaire pour certifier une mise en œuvre. Cet environnement permet aux applications portables côté serveur.

Performance

Les programmes écrits en Java ont la réputation d'être plus lente et nécessitant plus de mémoire que celles écrites en C ++ . Cependant, la vitesse d'exécution de programmes Java nettement amélioré grâce à l'introduction de Compilation en 1997/1998 pour Just-in-time Java 1.1, l'ajout de fonctionnalités de langage à l'appui une meilleure analyse de code (comme les classes internes, la classe StringBuffer, affirmations optionnels, etc.), et des optimisations dans la machine virtuelle Java lui-même, comme HotSpot devenir le défaut de la JVM de Sun en 2000. En Décembre 2012, microbenchmarks montrent Java 7 est environ 44% plus lent que le C ++.

Certaines plates-formes offrent un soutien matériel direct pour Java; il ya des microcontrôleurs qui peuvent se exécuter Java dans le matériel au lieu d'un logiciel machine virtuelle Java, et processeurs ARM à base peuvent avoir un support matériel pour l'exécution de bytecode Java par leur L'option Jazelle.

La gestion automatique de la mémoire

Java utilise une garbage collector automatique pour gérer la mémoire dans le objet cycle de vie. Le programmateur détermine le moment où les objets sont créés, et le runtime Java est chargé de récupérer la mémoire une fois les objets ne sont plus en cours d'utilisation. Une fois aucune référence à un objet demeurent, le mémoire inaccessible devient admissible à être libéré automatiquement par le garbage collector. Quelque chose de semblable à un fuite de mémoire peut encore se produire si le code d'un programmeur contient une référence à un objet qui ne est plus nécessaire, généralement lorsque les objets qui ne sont plus nécessaires sont stockés dans des conteneurs qui sont encore en usage. Si les méthodes d'un objet inexistant sont appelés, une «exception de pointeur nul" est levée.

L'une des idées derrière modèle de gestion automatique de la mémoire de Java est que les programmeurs peuvent être épargnés le fardeau d'avoir à effectuer une gestion manuelle de la mémoire. Dans certains langages, une mémoire pour la création d'objets est implicitement attribuée à la pile, ou explicitement alloué et désalloué du tas. Dans ce dernier cas, la responsabilité de la gestion de la mémoire réside avec le programmateur. Si le programme ne pas libérer un objet, un fuite de mémoire se produit. Si le programme tente d'accéder à ou de la mémoire deallocate qui a déjà été désallouée, le résultat est indéfini et difficiles à prévoir, et le programme est susceptible de devenir instable et / ou de collision. Ceci peut être en partie résolu par l'utilisation de pointeurs intelligents, mais ceux-ci ajoutent des frais généraux et de la complexité. Notez que la collecte des ordures ne empêche pas les fuites de mémoire "logiques", ce est à dire ceux où la mémoire est toujours référencé mais jamais utilisé.

Collecte des ordures ménagères peut arriver à tout moment. Idéalement, il se produit lorsqu'un programme est inactif. Il est assuré d'être déclenchée si la mémoire libre est insuffisant sur le tas d'allouer un nouvel objet; cela peut provoquer un programme à bloquer momentanément. Gestion de la mémoire explicite ne est pas possible en Java.

Java ne supporte pas C / C ++ de style l'arithmétique des pointeurs, où les adresses des objets et des entiers non signés (généralement longs nombres entiers) peuvent être utilisés de manière interchangeable. Cela permet le garbage collector de déménager des objets référencés et assure la sécurité et la sécurité de type.

Comme dans C ++ et quelques autres langages orientés objet, les variables de Java de types de données primitifs sont pas des objets. Les valeurs des types primitifs sont soit directement stockés dans des champs (pour les objets) ou sur la empiler (pour les méthodes) plutôt que sur le tas, comme souvent vrai pour les objets (mais voir Échappent à l'analyse). Ce était une décision consciente par les concepteurs de Java pour des raisons de performances. Pour cette raison, Java ne était pas considéré comme un langage de programmation orienté objet pur. Cependant, comme de Java 5.0, autoboxing permet aux programmeurs de faire comme si les types primitifs étaient des cas de leur classe wrapper.

Java contient plusieurs types de collecteurs d'ordures. Par défaut, utilise le HotSpot Concurrent Mark Sweep collecteur, également connu sous le Garbage Collector CMS. Cependant, il ya aussi plusieurs autres éboueurs qui peuvent être utilisés pour gérer le tas. Pour 90% des applications en Java, le Garbage Collector CMS est assez bon.

Syntaxe

La syntaxe de Java est largement dérivée de C ++ . Contrairement à C ++, qui combine la syntaxe pour structurée, générique et la programmation orientée objet, Java a été construit presque exclusivement comme un langage orienté objet. Tout le code est écrit à l'intérieur d'une classe, et tout est un objet, à l'exception des types de données primitifs (par exemple, entiers, nombres à virgule flottante, les valeurs booléennes, et caractères), qui ne sont pas des classes pour des raisons de performances.

Contrairement à C ++, Java ne fonctionne pas opérateur surcharge ou l'héritage multiple pour les classes. Cela simplifie la langue et aide à prévenir les erreurs potentielles et conception anti-modèle.

Java utilise des méthodes similaires à commentant C ++. Il ya trois différents styles de commentaires: un style de ligne unique marqué par deux barres obliques ( // ), un style de ligne multiples ouverte avec /* et fermés avec */ , et de la Javadoc commentant le style ouvert avec /** et fermé avec */ . Le style Javadoc de commenter permet à l'utilisateur de lancer l'exécutable Javadoc d'établir une documentation pour le programme.

Exemple:

 // Ce est un exemple d'un commentaire d'une seule ligne en utilisant deux barres obliques
 
 / * Ceci est un exemple d'un commentaire de plusieurs lignes en utilisant la barre oblique et astérisque. 
   Ce type de commentaire peut être utilisé pour contenir beaucoup d'informations ou désactiver 
   code, mais il est très important de se rappeler de fermer le commentaire.  * /
 
 / ** 
   * Ceci est un exemple d'un commentaire Javadoc;  Javadoc peut compiler la documentation 
   * À partir de ce texte. 
   * /
 
 / ** Enfin, un exemple d'une méthode écrite en Java, enveloppé dans une classe.  * /
 fibsandlies de colis;
 java.util.HashMap importation;
 
 FibCalculator public class étend Fibonacci implémente Calculatrice {
     HashMap private static <Integer, Integer> memoized = new HashMap <Integer, Integer> ();
 
     / ** Compte tenu d'un certain nombre FIBINDEX non-négatif, les retours, 
       * Le nombre Nième Fibonacci, où N est égal FIBINDEX. 
       *param FibIndex L'indice du nombre de Fibonacci 
       *return Le nombre de Fibonacci se 
       * /
     Override
     public static int Fibonacci (int fibIndex) {
         if (memoized. contient (fibIndex)) {
             retourner memoized obtenir (fibIndex).
         } Else {
             int réponse = Fibonacci (fibIndex - 1) + Fibonacci (fibIndex - 2);
             . memoized mis (fibIndex, réponse);
             retourner réponse;
         }
     }
 }

Exemples

Bonjour le monde

La traditionnelle Bonjour programme mondial peut être écrit en Java que:

 classe HelloWorldApp {
     main (String [] args) {public static void
         Système hors de println ("Bonjour tout le monde!");.. // Affiche la chaîne.
     }
 }

Pour comparer à d'autres langages de programmation voir la liste des bonjour exemples de programmes de monde.

Les fichiers sources doivent être nommés d'après la classe publique qu'ils contiennent, ajoutant le suffixe .java , par exemple, HelloWorldApp.java . Il doit d'abord être compilé en bytecode, en utilisant un compilateur Java, produisant un fichier nommé HelloWorldApp.class . Ce est alors seulement peut-il être exécuté, ou «lancé». Le fichier source Java ne peut contenir une classe publique, mais il peut contenir plusieurs classes avec d'autres que l'accès public et un certain nombre de publics les classes internes.

Une class qui ne est pas déclarée public peut être stockée dans un fichier .java. Le compilateur génère un fichier de classe pour chaque classe définie dans le fichier source. Le nom du fichier de classe est le nom de la classe, avec .class annexées. Pour la génération de fichier de classe, classes anonymes sont traités comme si leur nom était la concaténation du nom de leur classe englobante, un $, et un entier.

Le mot-clé public indique qu'une méthode peut être appelée à partir de code dans d'autres classes, ou une classe peut être utilisé par les classes en dehors de la hiérarchie de classes. La hiérarchie de classe est liée à le nom du répertoire dans lequel le fichier .java est situé.

Le mot-clé static devant une méthode indique une méthode statique, qui est associé uniquement à la classe et non pas avec toute instance spécifique de cette classe. Seules les méthodes statiques peuvent être invoquées sans référence à un objet. Les méthodes statiques ne peuvent pas accéder à tous les membres de la classe qui ne sont pas aussi statique.

Le mot-clé void indique que la principale méthode ne retourne aucune valeur à l'appelant. Si un programme Java est de sortir avec un code d'erreur, il doit appeler System.exit () explicitement.

Le nom de la méthode " main "ne est pas un mot-clé dans le langage Java. Il est tout simplement le nom de la méthode du lanceur Java appelle à passer le contrôle au programme. classes Java qui se exécutent dans des environnements gérés comme les applets et Enterprise JavaBean Ne pas utiliser ou besoin d'une main() méthode. Un programme Java peut contenir plusieurs classes qui ont main méthodes, ce qui signifie que la machine virtuelle doit être explicitement dit quelle classe pour lancer à partir.

La principale méthode doit accepter un tableau de String objets. Par convention, il est référencé comme args bien que tout autre nom légal de identifiant peut être utilisé. Depuis Java 5, la principale méthode peut également utiliser arguments variables, sous la forme de public static void main(String... args) , permettant la méthode principale pour être invoquées avec un nombre arbitraire de String arguments. L'effet de cette déclaration suppléant est sémantiquement identiques ( args paramètre est toujours un ensemble de String objets), mais il permet une syntaxe alternative pour la création et passant le tableau.

Le lanceur lance Java Java en chargeant une classe donnée (indiquée sur la ligne de commande ou comme un attribut dans une JAR) et à partir de son public static void main(String[]) méthode. Programmes autonomes doivent déclarer cette méthode explicitement. Le String[] args paramètre est un tableau de String objets contenant tous les arguments transmis à la classe. Les paramètres à main sont souvent transmis au moyen d'un ligne de commande.

L'impression est partie d'une bibliothèque Java standard: Le System classe définit un champ statique public appelé out . Le out objet est une instance de la PrintStream classe et fournit de nombreuses méthodes pour l'impression de données la sortie standard, y compris println(String) qui ajoute aussi une nouvelle ligne à la chaîne passée.

La chaîne "Bonjour tout le monde!" est automatiquement converti en un objet String par le compilateur.

Un exemple plus complet

 // OddEven.java
 javax.swing.JOptionPane importation;
 
 public class OddEven {
     / ** 
       * "Entrée" est le nombre que l'utilisateur donne à l'ordinateur 
       * /
     entrée privée int; // un nombre entier ("int" signifie entier)
 
     / ** 
       * Ce est la méthode constructeur.  Il est appelé quand un objet du type OddEven 
       * Est en cours de création. 
       * /
     OddEven publique () {
         / * 
           * Dans la plupart des programmes Java constructeurs peuvent initialiser des objets avec des valeurs par défaut, ou créer 
           * autres objets que cet objet pourrait utiliser pour se acquitter de ses fonctions.  Dans certains programmes Java, le 
           * Constructeur peut être simplement une fonction vide si rien ne doit être initialisé avant la 
           * Fonctionnement de l'objet.  Dans le cas de ce programme, un constructeur vide suffirait. 
           * Un constructeur doit exister;  Toutefois, si l'utilisateur ne met pas en une puis le compilateur 
           * Créera un vide. 
           * /
     }
 
     / ** 
       * Ce est la méthode principale.  Il est appelé lorsque cette classe est dirigée par un interpréteur Java. 
       * Arguments de ligne de commandeparam args (utilisé) 
       * /
     public static void main (String finale [] args) {
        / * 
          * Cette ligne de code crée une nouvelle instance de cette classe appelée "nombre" (aussi connu comme un 
          * Object) et l'initialise en appelant le constructeur.  La ligne suivante d'appels de code 
          * Le "showDialog ()" méthode, qui fait apparaître une invite à vous demander un certain nombre 
          * /
        Numéro OddEven = new OddEven ();
        . Numéro showDialog ();
     }
 
     public void showDialog () {
         / * 
           * "Essayer" fait que rien ne va mal.  Si quelque chose est le cas, 
           * L'interprète passe à "attraper" pour voir ce qu'il doit faire. 
           * /
         try {
             / * 
               * Le code ci-dessous fait apparaître une JOptionPane, qui est une boîte de dialogue 
               * La chaîne retournée par le "showInputDialog ()" méthode est converti en 
               * Un entier, rendant le programme traiter comme un nombre au lieu d'un mot. 
               * Après cela, cette méthode appelle une deuxième méthode, calculer () qui sera 
               * Afficher "Même" ou "Odd." 
               * /
             .. cette entrée = Entier parseInt (. JOptionPane showInputDialog ("Se il vous plaît entrez un numéro."));
             ce calcul ().
         } Catch (finale NumberFormatException e) {
             / * 
               * Monter le bloc catch signifie qu'il y avait un problème avec le format de 
               * Le nombre.  Probablement quelques lettres ont été saisis à la place d'un nombre. 
               * /
             . Système tromper println ("ERROR: entrée non valide Se il vous plaît saisir une valeur numérique..");.
         }
     }
 
     / ** 
       * Lorsque ce est appelée, il envoie un message à l'interprète. 
       * L'interprète montre généralement sur l'invite de commande (Pour les utilisateurs de Windows) 
       * Ou le terminal (pour les utilisateurs * nix). (En supposant que ce est ouvert) 
       * /
     private void calculer () {
         if ((cette entrée. 2%) == 0) {
             JOptionPane showMessageDialog (null, "Même.");
         } Else {
             . JOptionPane showMessageDialog (null, "Odd");
         }
     }
 }
  • Le instruction import importe le JOptionPane classe à partir du javax.swing package.
  • Le OddEven classe déclare une seule privé champ de type int nommé input . Chaque instance de la OddEven classe a sa propre copie de l' input domaine. La déclaration privé signifie qu'aucun autre classe peut accéder (lecture ou écriture) l' input domaine.
  • OddEven() est un public constructeur. Constructeurs avoir le même nom que la classe englobante ils sont déclarés dans, et contrairement à une méthode, ne ont pas le type de retour. Un constructeur est utilisé pour initialiser un objet qui est une instance nouvellement créée de la classe.
  • Le calculate() méthode est déclarée sans static mot-clé. Cela signifie que la méthode est appelée au moyen d'un exemple spécifique de la OddEven classe. (La référence utilisé pour invoquer la méthode est passé comme un paramètre non déclarée de Type OddEven nommé this ). La méthode teste l'expression input % 2 == 0 utilisant le if mot-clé pour voir si le reste de la division l' input champ appartenant à l'instance de la classe par deux est zéro. Si cette expression est vraie, alors elle imprime Même; si cette expression est fausse, il imprime Odd. (L' input champ peut être équivalente accessible comme this.input , qui utilise explicitement le non déclaré this paramètre.)
  • OddEven number = new OddEven(); déclare un objet local variable de référence dans la main méthode nommée number . Cette variable peut contenir une référence à un objet de type OddEven . La déclaration initialise number en créant d'abord une instance de la OddEven classe, en utilisant le new mot-clé et l' OddEven() constructeur, puis en attribuant cette instance à la variable.
  • La déclaration number.showDialog(); appelle la méthode de calcul. L'instance de OddEven objet référencé par le number variable locale est utilisée pour invoquer la méthode et passé comme non déclaré this paramètre à la calculate méthode.
  • input = Integer.parseInt(JOptionPane.showInputDialog("Please Enter A Number")); est une déclaration qui convertit le type de String à la primitive type de données int en utilisant une fonction d'utilité dans le primitive Entier de classe wrapper.

Des classes spéciales

Applet

Les applets Java sont des programmes qui sont incorporés dans d'autres applications, typiquement dans une page Web affichée dans un navigateur Web.

 // Hello.java
 javax.swing.JApplet importation;
 java.awt.Graphics d'importation;
 
 public class Bonjour extends JApplet {
     paintComponent public void (Graphics finale g) {
         g de drawString ("Bonjour, du monde!", 65, 95).;
     }
 }

Les import déclarations dirigent le compilateur Java pour inclure le javax.swing.JApplet et java.awt.Graphics classes dans la compilation. L'instruction import permet ces classes pour être référencés dans le code source en utilisant le nom de classe simple (c.-à- JApplet ) au lieu du nom complet de la classe (ce est à dire javax.swing.JApplet ).

Le Hello classe extends ( sous-classes) l' JApplet (Applet Java) classe; l' JApplet classe fournit le cadre pour l'application hôte pour afficher et contrôler la cycle de vie de l'applet. Le JApplet classe est un JComponent (composant graphique Java) qui fournit l'applet avec la capacité d'afficher une l'interface utilisateur graphique (GUI) et de répondre à l'utilisateur événements.

Le Hello classe remplace la paintComponent(Graphics) méthode (en outre indiqué à la annotation, soutenu dans le JDK 1.5, Override ) héritée de la Récipient superclasse pour fournir le code pour afficher l'applet. Le paintComponent() méthode est adopté une Graphics objet qui contient le contexte graphique utilisé pour afficher l'applet. Le paintComponent() méthode appelle le contexte graphique drawString(String, int, int) méthode pour afficher le "Bonjour, monde!" chaîne à une pixel décalage de ( 65, 95 ) à partir du coin supérieur gauche de l'écran de l'applet.

 
  "Http://www.w3.org/TR/html4/strict.dtd"> 
  
  <Html> 
      <Head> 
          <Title> Bonjour tout le monde applet </ title> 
      </ Head> 
      <Body> 
          <Applet code = largeur "Hello.class" = "200" height = "200"> 
          </ Applet> 
      </ Body> 
  </ Html> 
 

Un applet est placé dans un Le document HTML en utilisant le Élément HTML. L' applet tag a trois attributs définis: code="Hello" spécifie le nom de la JApplet classe et width="200" height="200" définit la largeur en pixels et la hauteur de l'applet. Les applets peuvent également être intégrés dans HTML en utilisant soit le object ou embed élément, bien que le soutien de ces éléments par les navigateurs Web est incompatible. Cependant, l' applet tag est obsolète, donc le object tag est préférable lorsque pris en charge.

L'application hôte, généralement un navigateur Web, instancie le Hello et crée un applet AppletContext pour l'applet. Une fois que l'applet lui-même a été initialisé, il est ajouté à la hiérarchie de signalisation AWT. Le paintComponent() méthode est appelée par l'AWT événement envoi fil lorsque l'afficheur a besoin de l'applet de se dessiner.

Servlet

La technologie Java Servlet fournit aux développeurs Web avec un mécanisme simple, cohérente pour étendre les fonctionnalités d'un serveur Web et pour l'accès aux systèmes d'entreprise existants. Les servlets sont Java côté serveur Composants d'EE qui génèrent des réponses (généralement pages HTML) aux demandes (généralement des requêtes HTTP) de clients. Une servlet peut presque être considéré comme une applet qui se exécute sur le côté-serveur sans un visage.

 // Hello.java
 import java.io. *;
 importer javax.servlet. *;
 
 public class Bonjour extends GenericServlet {
     Service public void (demande de ServletRequest finale, réponse ServletResponse final)
     jette ServletException, IOException {
         . setContentType réponse ("text / html");
         finale PrintWriter pw = réponse getWriter ().
         try {
             . pw println ("Bonjour, monde!");
         } Finally {
             . pw close ();
         }
     }
 }

Les import déclarations directes le compilateur Java pour inclure toutes les classes publiques et interfaces de la java.io et javax.servlet paquets dans la compilation.

Le Hello classe extends la GenericServlet classe; l' GenericServlet classe fournit l'interface pour le serveur de transmettre les demandes à la servlet et de contrôler le cycle de vie du servlet.

Le Hello classe remplace la service(ServletRequest, ServletResponse) méthode définie par le Servlet une interface pour fournir le code du gestionnaire de demande de service. Le service() méthode est passé: un ServletRequest objet qui contient la demande du client et un ServletResponse objet utilisé pour créer la réponse renvoyée au client. Le service() méthode déclare qu'il throws le exceptions ServletException et IOException si un problème empêche de répondre à la demande.

Le setContentType(String) méthode dans l'objet de réponse est appelé à régler le MIME type de contenu des données renvoyées à "text / html". Le getWriter() méthode dans la réponse renvoie une PrintWriter objet qui est utilisé pour écrire les données qui sont envoyées au client. Le println(String) méthode est appelée pour écrire le "Bonjour, monde!" chaîne à la réponse et ensuite le close() méthode est appelée à fermer l'écrivain d'impression, ce qui provoque les données qui a été écrit à la rivière pour être renvoyé au client.

JavaServer Pages

JavaServer Pages (JSP) sont côté serveur Java EE composants qui génèrent des réactions, généralement pages HTML, à requêtes HTTP de clients. JSP intégrer du code Java dans une page HTML en utilisant la spéciale délimiteurs <% et %> . Une JSP est compilé à un servlet Java, une application Java dans son propre droit, la première fois qu'il est accessible. Après cela, le servlet généré crée la réponse.

application Swing

Swing est une interface utilisateur graphique bibliothèque pour la plate-forme Java SE. Il est possible de spécifier un regard différent et se sentir à travers le enfichable regarder et système Swing sentir. Clones de de Windows , GTK + et Motif sont fournis par Sun. d'Apple fournit également une Aqua look and feel pour Mac OS X. Où implémentations antérieures de ces regards et se sent peut-être été considéré comme manquant, Swing in Java SE 6 résout ce problème en utilisant plus natif GUI widget de routines de dessin des plates-formes sous-jacentes.

Cet exemple d'application Swing crée une seule fenêtre avec "Bonjour tout le monde!" à l'intérieur:

 // Hello.java (Java SE 5)
 importer javax.swing. *;
 
 public class Bonjour extends JFrame {
     Bonjour publique () {
         super ("bonjour");
         Super setDefaultCloseOperation (de WindowConstants EXIT_ON_CLOSE.).;
         . Super ajouter (nouvelle JLabel ("Bonjour, monde!"));
         super pack ().
         . Super setVisible (true);
     }
 
     public static void main (String finale [] args) {
         Bonjour nouvelle ();
     }
 }

La première import comprend toutes les classes publiques et les interfaces de la javax.swing package.

Le Hello classe extends la JFrame classe; l' JFrame classe implémente une une fenêtre avec la barre de titre et une clôture contrôle.

Le Hello() constructeur initialise le cadre en appelant d'abord le constructeur de la superclasse, passant le paramètre "hello" , qui est utilisé comme le titre de la fenêtre. Elle appelle ensuite la setDefaultCloseOperation(int) méthode héritée de JFrame pour régler le fonctionnement par défaut lorsque le contrôle étroit sur la barre de titre est sélectionné pour WindowConstants.EXIT_ON_CLOSE - ce qui provoque le JFrame à être éliminés lorsque le cadre est fermé (par opposition à simplement masqué), ce qui permet à la machine virtuelle Java pour quitter le programme et de mettre fin. Ensuite, un JLabel est créé pour la chaîne "Bonjour, monde!" et le add(Component) méthode héritée de la Container superclasse est appelée pour ajouter l'étiquette de la trame. Le pack() méthode héritée de la Window superclasse est appelé à la taille de la fenêtre et se coucha sur son contenu.

Le main() méthode est appelée par la machine virtuelle Java au démarrage du programme. Il instancie une nouvelle Hello cadre et l'amène à être affiché en appelant le setVisible(boolean) méthode héritée de la Component superclasse avec le paramètre booléen true . Une fois l'image est affichée, la sortie de la main méthode ne provoque pas le programme de mettre fin parce que l'AWT événement envoi fil reste active jusqu'à ce que toutes les fenêtres battantes haut niveau ont été éliminés.

Génériques

En 2004, génériques ont été ajoutés au langage Java, dans le cadre de J2SE 5.0. Avant l'introduction des génériques, chaque déclaration de variable devait être d'un type spécifique. Pour les classes de conteneurs, par exemple, ce est un problème parce qu'il n'y a pas de moyen facile de créer un conteneur qui ne accepte que les types spécifiques d'objets. Soit le récipient fonctionne sur tous les sous-types d'une classe ou d'une interface, habituellement Object ou une classe de conteneur différent doit être créé pour chaque classe contenue. Generics permettent de type compilation contrôle sans avoir à créer un grand nombre de classes de conteneurs, contenant chacun un code presque identique. En plus de permettre un code plus efficace, certaines exceptions d'exécution sont convertis au moment de la compilation des exceptions, une caractéristique connue comme la sécurité de type.

Critique

Critiques adressées à Java comprennent la mise en œuvre des génériques, la vitesse, la manipulation de nombres non signés, la mise en œuvre de l'arithmétique flottante, et une histoire de failles de sécurité dans l'application Java VM primaireHotSpot.

Utilisation par des sociétés externes

Androidfait un usage intensif de la technologie Java liés

Google

Google et Android, Inc. ont choisi d'utiliser Java comme un pilier essentiel dans la création du système d'exploitation Android , un open-source du système d'exploitation de smartphone. Outre le fait que le système d'exploitation, construit sur ​​le noyau Linux, a été écrit en grande partie en C, le SDK Android utilise Java pour concevoir des applications pour la plate-forme Android.

Le 7 mai 2012, un jury de San Francisco a constaté que si les API pourraient être déposés, puis Google avait violé les droits d'auteur d'Oracle par l'utilisation de Java dans les appareils Android. La position d'Oracle dans cette affaire a soulevé des questions sur le statut juridique de la langue. Cependant, la. Honorable William Alsup Haskell a statué le 31 mai 2012, que les API ne peuvent pas être protégés.

Gaikai

Gaikai utilise le navigateur plug-in Java pour écouter des démos de jeux à un PC. Gaikai (japonais pour "océan") est un service de jeu basé sur le cloud qui permet aux utilisateurs de jouer à des jeux PC et consoles haut de gamme via le nuage et instantanément jeux de démonstration et d'applications à partir d'une page Web sur n'importe quel ordinateur ou appareil connecté à Internet.

bibliothèques de classe

  • Le Java Class Library sont compilées les bytecode d' code source développés par l'exécutant JRE pour soutenir le développement d'applications en Java. Des exemples de ces bibliothèques sont:
    • Les bibliothèques de base, qui comprennent:
      • bibliothèques de collecte qui mettent en œuvredes structures de données telles quedes listes, desdictionnaires,des arbres, desensembles,des files d'attente et lesfiles d'attente à deux extrémités, oudes piles
      • Traitement XML (analyse syntaxique, la transformation, Validation) bibliothèques
      • Sécurité
      • bibliothèques d'internationalisation et de localisation
    • Les bibliothèques d'intégration, qui permettent à l'auteur de l'application de communiquer avec des systèmes externes. Ces bibliothèques comprennent:
      • Le Java Database Connectivity (JDBC)API pour l'accès de base de données
      • Naming and Directory Interface Java (JNDI) pour recherche et de découverte
      • RMI etCORBA pour le développement d'applications distribuées
      • JMX pour les applications de gestion et de surveillance
    • les bibliothèques de l'interface utilisateur, qui comprennent:
      • Le (poids lourds, ounatif)Abstract Window Toolkit (AWT), qui fournit descomposants d'interface graphique, les moyens pour la pose sur les composants et les moyens pour la gestion des événements de ces composants
      • Les (léger)bibliothèques Swing, qui sont construits sur AWT mais fournissent (non-natif) implémentations de la widgetry AWT
      • API pour la capture audio, le traitement et la lecture
  • Une mise en œuvre dépend de la plate-forme de la machine virtuelle Java qui est le moyen par lequel les codes d'octets des bibliothèques Java et des applications tierces sont exécutées
  • Plugins, qui permettentà des applets être exécutés dans navigateurs Web
  • Java Web Start, qui permet aux applications Java d'être distribué efficacement auxutilisateurs finaux à travers leInternet
  • Licences et documentation.

Documentation

Javadoc est un système complet de documentation, créé par Sun Microsystems, utilisés par de nombreux développeurs Java. Il fournit aux développeurs un système organisé pour documenter leur code. commentaires Javadoc ont un astérisque supplémentaire au début, à savoir les balises sont / ** et * /, tandis que les commentaires normales multi-lignes en Java sont mis en valeur avec les balises / * et * /.

Editions

Sun a défini et soutient quatre éditions de Java ciblant différents environnements d'application et segmentée nombre de ses API afin qu'ils appartiennent à l'une des plates-formes. Les plates-formes sont:

  • Java Card pour cartes à puce.
  • Java Platform, Micro Edition (Java ME) - ciblant des environnements avec des ressources limitées.
  • Java SE (Java SE) - ciblant les environnements de postes de travail.
  • Java EE (Java EE) - ciblant les grands environnements d'entreprise ou Internet distribués.

Le classes dans les API Java sont organisés en groupes distincts appelés paquets. Chaque paquet contient un ensemble de connexes interfaces, classes et exceptions. Conseiller aux plates-formes distinctes pour une description des paquets disponibles.

L'ensemble d'API est contrôlé par Sun Microsystems en coopération avec d'autres à travers le programme de Java Community Process. Les entreprises ou les personnes qui participent à ce processus peuvent influer sur la conception et le développement de l'API. Ce processus a été un sujet de controverse.

Sun a également fourni une édition appeléePersonalJava qui a été remplacée par la suite, basés sur les standards Java ME configuration profil appariements.

Récupéré à partir de " http://en.wikipedia.org/w/index.php?title=Java_(programming_language)&oldid=555476562 "