LA CLOCHE

Il y a ceux qui ont lu cette nouvelle avant vous.
Abonnez-vous pour recevoir les derniers articles.
Email
Nom
Nom de famille
Comment voulez-vous lire The Bell
Pas de spam

Dernière mise à jour: 15.04.2018

Aujourd'hui, le langage Java est l'un des langages de programmation les plus répandus et les plus populaires. La première version du langage est apparue en 1996 dans les entrailles de Sun Microsystems, qui a ensuite été acquise par Oracle. Java a été conçu comme un langage de programmation universel pouvant être utilisé pour différents types de tâches. Et maintenant, le langage Java a parcouru un long chemin, avec de nombreuses versions différentes publiées. La version actuelle est Java 12, qui a été publiée en mars 2019. Et Java est passé d'un simple langage universel à une plate-forme et à un écosystème complets qui réunissent diverses technologies utilisées dans diverses tâches: de la création d'applications de bureau à l'écriture de grands portails et services Web. En outre, le langage Java est activement utilisé pour créer des logiciels pour une variété d'appareils: PC ordinaires, tablettes, smartphones et téléphones portables et même des appareils électroménagers. Il suffit de rappeler la popularité de l'OS mobile Android, dont la plupart des programmes sont écrits en Java.

Fonctionnalités Java

Une caractéristique clé du langage Java est que son code est d'abord traduit en un bytecode spécial indépendant de la plate-forme. Et puis ce bytecode est exécuté par la JVM (Java Virtual Machine). À cet égard, Java diffère des langages interprétés standard comme PHP ou Perl, dont le code est immédiatement exécuté par l'interpréteur. Dans le même temps, Java n'est pas un langage purement compilé comme C ou C ++.

Cette architecture offre une portabilité multiplateforme et matérielle des programmes vers Java, de sorte que ces programmes peuvent être exécutés sur diverses plates-formes sans recompilation - Windows, Linux, Mac OS, etc. Chaque plateforme peut avoir sa propre implémentation de la machine virtuelle JVM, mais chacune d'elles peut exécuter le même code.

Java est un langage avec une syntaxe de type C et est proche à cet égard de C / C ++ et C #. Par conséquent, si vous êtes familier avec l'un de ces langages, il sera plus facile de maîtriser Java.

Un de plus caractéristique clé Java est qu'il prend en charge le garbage collection automatique. Cela signifie que vous n'avez pas besoin de libérer manuellement la mémoire des objets précédemment utilisés, comme en C ++, car le garbage collector le fera automatiquement pour vous.

Java est un langage orienté objet. Il prend en charge le polymorphisme, l'héritage, le typage statique. L'approche orientée objet vous permet de résoudre les problèmes de création d'applications volumineuses, mais en même temps flexibles, évolutives et extensibles.

Installez Java

Pour que les programmes Java s'exécutent, JRE (Java Runtime Environment) doit être installé sur la machine cible. Le JRE introduit une implémentation minimale de machine virtuelle ainsi qu'une bibliothèque de classes. Par conséquent, si nous voulons exécuter des programmes, nous devons installer le JRE. Il existe une version différente du JRE pour chaque plateforme.

Cependant, puisque nous allons non seulement exécuter des programmes, mais aussi les développer, nous aurons besoin d'un kit de développement spécial JDK (Java Development Kit). Le JDK contient déjà le JRE et comprend également un numéro programmes supplémentaires et des utilitaires, en particulier le compilateur Java.

Vous pouvez télécharger et installer la version correspondante du JDK à partir du site Web officiel d'Oracle: http://www.oracle.com/technetwork/java/javase/downloads/index.html

Donc, à partir de l'adresse ci-dessus, téléchargez le programme d'installation JDK pour la dernière version Java.

Ensuite, nous serons redirigés vers une page où nous devons sélectionner la version pour le système d'exploitation cible - Windows, MacOS ou Linux:

Il existe deux options de démarrage pour chaque système d'exploitation: en tant que programme d'installation ou en tant qu'archive qui n'a pas besoin d'être installée. Par exemple, mon système d'exploitation est Windows, je télécharge donc jdk_12_windows-x64_bin.exe, qui représente le programme d'installation.

Après le téléchargement, exécutez le programme d'installation:

Cliquez sur le bouton Suivant. Sur l'écran suivant, vous devez spécifier dans quel dossier l'installation sera effectuée:

Laissez la sélection de dossier par défaut et cliquez sur Suivant pour terminer l'installation.

Une fois l'installation de JDK terminée, nous verrons une fenêtre comme celle-ci:

Donc, après avoir installé le JDK, créons le premier programme Java.

En 1995, le géant du logiciel Sun Microsystems a lancé une nouvelle plate-forme appelée Java. Il comprenait un langage de programmation et le soi-disant Java Runtime Environment ou un environnement d'exécution pour les applications écrites à l'aide de Java. Le JRE, à son tour, comprend le système de type de base Java, une machine virtuelle, plus communément appelée machine Java, et toute une bibliothèque de classes d'assistance.



De toute évidence, le principal objectif de l'innovation de cette époque était les applications multiplateformes, qui avant l'avènement de Java étaient fortement liées au «matériel» auquel elles étaient destinées. Java, en revanche, permettait d'exécuter des applications quelle que soit la plate-forme installée sur l'ordinateur.

En savoir plus sur Java

Contrairement aux applications créées, par exemple, en C, le JRE collecte différemment les fichiers de code source d'une application créée à l'aide du langage Java. À la suite de la compilation, l'application C passe par l'étape de création du soi-disant code objet ou code machine (étape d'assemblage), à \u200b\u200bpartir de laquelle l'éditeur de liens construit un fichier exécutable qui dépend de la plate-forme installée sur le PC. Une application écrite à l'aide de Java, à la suite du processus de compilation, crée ce qu'on appelle le bytecode, indépendamment de l'environnement d'exploitation dans lequel il est construit. Cependant, pour que ce bytecode soit compilé sur une plate-forme donnée dans un fichier exécutable, le JRE doit être installé sur cette plate-forme. C'est l'outil sur lequel les utilisateurs s'interrogent souvent: "Pourquoi avez-vous besoin de Java sur un ordinateur?"


Un peu sur la popularité des programmes Java

Java moderne est devenu une norme de développement presque universellement acceptée. Les applications réseau, les jeux, les logiciels d'entreprise, les applets bien connues pour les navigateurs Web, les logiciels embarqués et mobiles sont développés dans ce langage. Selon les statistiques, dans le monde, Java est installé sur 97% des ordinateurs de bureau d'entreprise. Les outils écrits dans cette langue sont utilisés dans trois milliards de téléphones portables. Java est également populaire auprès des appareils TV. La popularité des applications construites à l'aide du langage de programmation Java est donc indéniable. La raison de cette popularité était la possibilité de se développer dans un environnement d'exploitation et d'exécuter l'application créée dans un environnement complètement différent. C'est ce qu'on appelle la multiplateforme, basée sur le bytecode indépendant, qui a été discuté juste ci-dessus.


Existe-t-il une alternative Java?

Un exemple d'alternative pour Java serait la plate-forme .Net d'un autre géant du logiciel appelé Microsoft. Il a également un composant multiplateforme dans son but, grâce à la présence de code MSIL, qui est analogue au bytecode Java. Cependant, contrairement à Java, la plate-forme Microsoft est installée uniquement pour les environnements d'exploitation Windows et reste donc dépendante de la plate-forme, bien qu'il y ait une tentative de portage de cette plate-forme vers d'autres systèmes d'exploitation sous la forme du projet Mono. Un avantage important de cette plate-forme est la possibilité de la développer dans de nombreux langages compatibles .Net.

Java - Logiciel Java de Sun microsystems. Il a été développé à l'origine comme langage de programmation d'appareils électroniques, mais est ensuite devenu utilisé pour écrire des applications logicielles de serveur. Les programmes Java sont multiplateformes, c'est-à-dire qu'ils peuvent s'exécuter sur n'importe quel système d'exploitation.

Principes de base de la programmation Java

Java, en tant que langage orienté objet, répond aux principes de base de la POO:

  • héritage;
  • polymorphisme;
  • encapsulation.

Au centre de Java, comme dans les autres OOL, il y a un objet et une classe avec des constructeurs et des propriétés. Il est préférable de commencer à apprendre le langage de programmation Java non pas à partir de ressources officielles, mais à partir de tutoriels pour débutants. Dans ces manuels, les capacités sont décrites en détail, des exemples de code sont fournis. Des livres comme "Le langage de programmation Java pour les débutants" expliquent en détail les principes de base et les caractéristiques du langage nommé.

Fonctionnalités:

Le code Java est traduit en bytecode, puis exécuté dans la machine virtuelle JVM. La conversion en bytecode se fait dans Javac, Jikes, Espresso, GCJ. Il existe des compilateurs qui traduisent le bytecode C en Java. Ainsi, une application C peut s'exécuter sur n'importe quelle plateforme.

La syntaxe Java est caractérisée comme suit:

  1. Les noms de classe doivent commencer par une majuscule. Si le nom se compose de plusieurs mots, le second doit commencer par une majuscule.
  2. Si plusieurs mots sont utilisés pour former une méthode, le second d'entre eux doit commencer par une majuscule.
  3. Le traitement commence par la méthode main () - il fait partie de chaque programme.

Les types

Le langage de programmation Java a 8 types primitifs. Ils sont présentés ci-dessous.

  • Booléen - type booléen, prend seulement deux valeurs true et false.
  • Octet - le plus petit type entier 1 octet de taille. Il est utilisé pour traiter des données ou des fichiers binaires bruts. A une plage de -128 à 127.
  • Short a une plage de -32768 à 32767 et est utilisé pour représenter des nombres. La taille des variables de ce type est de 2 octets.
  • Int signifie également des nombres, mais sa taille est de 4 octets. Il est le plus souvent utilisé pour travailler avec des données entières, et byte et short sont parfois promus en int.
  • Long sont utilisés pour les grands entiers. Les valeurs possibles sont comprises entre -9223372036854775808 et 9223372036854775807.
  • Float et double sont utilisés pour représenter des valeurs fractionnaires. La différence est que float est pratique lorsque vous n'avez pas besoin de haute précision dans la partie fractionnaire d'un nombre.
  • Double affiche tous les caractères après le séparateur ".", Et float - seulement le premier.
  • String est le type primitif le plus couramment utilisé pour spécifier des chaînes.

Classes et objets

Les classes et les objets jouent un rôle important dans l'apprentissage du langage de programmation Java pour les débutants.

Une classe définit un modèle pour un objet, elle doit avoir des attributs et des méthodes. Pour le créer, utilisez le mot clé Class. S'il est créé dans fichier séparé, le nom de la classe et le nom du fichier doivent être identiques. Le nom lui-même se compose de deux parties: le nom et l'extension Java.

En Java, vous pouvez créer une sous-classe qui héritera des méthodes du parent. Le mot étend est utilisé pour cela:

  • class nom_classe étend nom_classe ();

Un constructeur fait partie de n'importe quelle classe, même s'il n'est pas explicitement spécifié. Dans ce cas, le compilateur le crée lui-même:

  • public class Classe (public Class () () public Class (String name) ())

Le nom du constructeur est le même que le nom de la classe, par défaut il n'a qu'un seul paramètre:

  • public Puppy (nom de chaîne)

L'objet est créé à partir d'une classe à l'aide de l'opérateur new ():

  • Point p \u003d nouveau point ()

Il reçoit toutes les méthodes et propriétés de la classe, avec lesquelles il interagit avec d'autres objets. Un objet peut être utilisé plusieurs fois sous différentes variables.

    Point p \u003d nouveau point ()

    classe TwoPoints (

    public static void main (String args) (

    Point p1 \u003d nouveau point ();

    Point p2 \u003d nouveau point ();

    Les variables d'objet et les objets sont des entités complètement différentes. Les variables d'objet sont des références. Ils peuvent pointer vers n'importe quelle variable de type non primitif. Contrairement au C ++, leur conversion de type est strictement réglementée.

    Champs et méthodes

    Les champs sont toutes des variables associées à une classe ou à un objet. Ils sont locaux par défaut et ne peuvent pas être utilisés dans d'autres classes. L'opérateur "." Permet d'accéder aux champs:

    • classname.variable

    Vous pouvez définir des champs statiques avec mot-clé statique. Ces champs sont le seul moyen de stocker des variables globales. Cela est dû au fait qu'il n'y a tout simplement pas de variables globales en Java.

    Implémentation de la possibilité d'importer des variables pour accéder à d'autres packages:

    • import nom de classe statique;

    La méthode est une sous-routine pour les classes dans lesquelles elle est déclarée. Décrit au même niveau que les variables. Il est défini comme une fonction et peut être de n'importe quel type, y compris void:

    • classe Point (int x, y;

      void init (int a, int b) (

    Dans l'exemple ci-dessus, la classe Point a un entier x et y, une méthode init (). Les méthodes, comme les variables, sont accessibles à l'aide de l'opérateur ".":

    • Point.init ();

    La propriété init ne renvoie rien, elle est donc nulle.

    Variables

    Dans le langage d'auto-apprentissage du langage de programmation Java, les variables occupent une place distincte. Toutes les variables ont un type spécifique, il définit l'espace nécessaire pour stocker les valeurs, la plage de valeurs possibles, la liste des opérations. Avant de manipuler les valeurs, les variables sont déclarées.

    Plusieurs variables peuvent être déclarées en même temps. Une virgule est utilisée pour les lister:

    • int a, b, c;

    L'initialisation a lieu après ou pendant l'annonce:

    int a \u003d 10, b \u003d 10;

    Il en existe plusieurs types:

    • variables locales (locales);
    • variables d'instance
    • variables statiques.

    Les variables locales sont déclarées dans les méthodes et les constructeurs, elles sont créées lors du lancement de ces derniers et détruites à la fin. Il leur est interdit de spécifier des modificateurs d'accès et de contrôler le niveau d'accessibilité. Ils ne sont pas visibles en dehors du bloc déclaré. En Java, les variables n'ont pas valeur initiale, il doit donc être attribué avant la première utilisation.

    Les variables d'instance doivent être déclarées dans la classe. Ils sont utilisés comme méthodes, mais vous ne pouvez y accéder qu'après la création de l'objet. La variable est détruite lorsque l'objet est détruit. Les variables d'instance, contrairement aux variables locales, ont des valeurs par défaut:

    • nombres - 0;
    • la logique est fausse;
    • les références sont nulles.

    Les variables statiques sont appelées variables de classe. Leurs noms commencent par un caractère majuscule et sont instanciés avec le modificateur statique. Ils sont utilisés comme constantes, donc un spécificateur de la liste leur est ajouté:

    • final;
    • privé;
    • publique.

    Ils sont lancés au début du programme, détruits lorsque l'exécution s'arrête. Tout comme les variables d'instance, elles ont des valeurs standard qui sont affectées à des variables vides. Les nombres ont une valeur de 0, les booléens sont faux et les références d'objet sont initialement nulles. Les variables statiques sont appelées comme suit:

    • ClassName.VariableName.

    Éboueur

    Dans le didacticiel du langage de programmation Java pour débutants, la section du ramasse-miettes automatique est la plus intéressante.

    En Java, contrairement au langage "C", il est impossible de supprimer manuellement un objet de la mémoire. Pour cela, une méthode d'élimination automatique est implémentée - un garbage collector. Avec la suppression traditionnelle via , seule la suppression de la référence d'objet se produit et l'objet lui-même est supprimé. Il existe des méthodes pour le garbage collection forcé, bien qu'elles ne soient pas recommandées pour une utilisation normale.

    Le module de suppression automatique des objets inutilisés s'exécute en arrière-plan et démarre lorsque le programme est inactif. Pour effacer des objets de la mémoire, le programme s'arrête, après avoir libéré de la mémoire, l'opération interrompue est reprise.

    Modificateurs

    Il existe différents types de modificateurs. En plus de ceux qui déterminent la méthode d'accès, il existe des modificateurs de méthodes, de variables, de classe. Les méthodes déclarées privées ne sont disponibles que dans la classe déclarée. Ces variables ne peuvent pas être utilisées dans d'autres classes et fonctions. Public autorise l'accès à n'importe quelle classe. Si vous avez besoin d'obtenir la classe Public d'un autre package, vous devez d'abord l'importer.

    Le modificateur protected est similaire en effet à public - il ouvre l'accès aux champs de la classe. Dans les deux cas, les variables peuvent être utilisées dans d'autres classes. Mais le modificateur public est disponible pour absolument tout le monde, et le modificateur protected n'est disponible que pour les classes héritées.

    Le modificateur utilisé lors de la création de méthodes est statique. Cela signifie que la méthode générée existe indépendamment des instances de la classe. Le modificateur Final ne contrôle pas l'accès, mais indique l'impossibilité de poursuivre la manipulation des valeurs de l'objet. Il interdit de modifier l'élément pour lequel il est spécifié.

    Final pour les champs, il est impossible de changer la première valeur d'une variable:

      public static void mthod (String args) (

      nom int final \u003d 1;

      int Name \u003d 2; // lancera une erreur

    Les variables avec le modificateur final sont des constantes. Il est d'usage de les écrire uniquement en majuscules. CamelStyle et d'autres méthodes ne fonctionnent pas.

    Final pour les méthodes indique l'interdiction de changer la méthode dans la classe héritée:

      final void myMethod () (

      System.out.printIn («Bonjour tout le monde»);

    Final pour les classes signifie que vous ne pouvez pas créer d'héritiers de classe:

      classe publique finale (

    Abstract - un modificateur pour créer des classes abstraites. Toute classe abstraite et méthode abstraite sont destinées à être étendues à d'autres classes et blocs. Modificateur transitoire indique à la machine virtuelle de ne pas traiter la variable donnée. Dans ce cas, il ne survivra tout simplement pas. Par exemple, transient int Name \u003d 100 ne persistera pas, mais int b le sera.

    Plateformes et versions

    Familles de langage de programmation Java existantes:

    • Édition standard.
    • Edition pour entreprise.
    • Micro Edition.
    • Carte.

    1. SE - est le principal, largement utilisé pour créer des applications personnalisées à usage individuel.
    2. EE est un ensemble de spécifications pour le développement de logiciels d'entreprise. Il contient plus de fonctionnalités que SE, il est donc utilisé commercialement dans les grandes et moyennes entreprises.
    3. ME - conçus pour les appareils avec une puissance et une mémoire limitées, ils ont généralement une petite taille d'affichage. Ces appareils sont des smartphones et des PDA, des récepteurs télévision numérique.
    4. Carte - conçue pour les appareils avec des ressources informatiques extrêmement limitées, tels que les cartes à puce, les cartes SIM, les guichets automatiques. À ces fins, le bytecode, les exigences de la plate-forme, constituant les bibliothèques ont été modifiés.

    Application

    Les programmes Java ont tendance à être plus lents et à prendre plus mémoire vive... Une analyse comparative des langages Java et C a montré que C est un peu plus productif. Après de nombreux changements et optimisation de la machine virtuelle, Java a amélioré ses performances.

    Il est activement utilisé pour les applications Android. Le programme est compilé en bytecode non standard et exécuté sur la machine virtuelle ART. Android Studio est utilisé pour la compilation. Cet IDE de Google est officiel pour le développement Android.

    Microsoft a développé sa propre implémentation de la machine virtuelle Java MSJVM. Il y avait de telles différences qui ont brisé le concept fondamental de multiplateforme - il n'y avait pas de support pour certaines technologies et méthodes, il y avait des extensions non standard qui ne fonctionnaient que sur la plate-forme Windows. Microsoft a publié le langage J #, dont la syntaxe et le fonctionnement global sont très similaires à Java. Il ne répondait pas aux spécifications officielles et a finalement été supprimé de la boîte à outils standard des développeurs Microsoft. Visual Studio.

    Environnement et langage de programmation Java

    Le développement logiciel est effectué dans les IDE suivants:

    1. IDE NetBeans.
    2. Eclipse IDE.
    3. IntelliJ IDEA.
    4. JDeveloper.
    5. Java pour iOS.
    6. Geany.

    Le JDK est distribué par Oracle en tant que kit de développement Java. Comprend un compilateur, des bibliothèques standard, des utilitaires, un système exécutif. Les IDE modernes sont basés sur le JDK.

    Il est pratique d'écrire du code dans le langage de programmation Java dans Netbeans et l'IDE Eclipse. Ce sont des environnements de développement intégrés gratuits, ils conviennent à toutes les plateformes Java. Également utilisé pour la programmation en Python, PHP, JavaScript, C ++.

    IntelliJ IDE de Jetbrains est disponible en deux versions: gratuite et commerciale. Prend en charge l'écriture de code dans de nombreux langages de programmation, il existe des plugins tiers de développeurs, dans lesquels encore plus de langages de programmation sont implémentés.

    JDeveloper est un autre développement d'Oracle. Il est entièrement écrit en Java, donc il fonctionne sur tous les systèmes d'exploitation.

Une brève histoire du langage Java

Cette section décrit brièvement l'histoire du langage Java. Cette section est basée sur divers documents publiés (principalement des entretiens avec les créateurs du langage Java dans le numéro de juillet journal électronique SunWorld 1995).

L'histoire de Java remonte à 1991, lorsqu'un groupe d'ingénieurs Sun dirigé par Patrick Naughton et membre du conseil d'administration (et assistant informatique polyvalent) James Gosling a développé un petit langage qui pourrait être utilisé pour programmer le consommateur. périphériques, tels que les contrôleurs pour la commutation des chaînes de télévision par câble (boîtes de commutation de télévision par câble).

Étant donné que ces appareils ne consomment pas beaucoup d'énergie et ne disposent pas de grandes puces mémoire, je devais être petit et générer des programmes très compacts. De plus, étant donné que différents fabricants peuvent choisir différentes unités centrales de traitement (CPU), il était important de ne pas s'enliser dans une seule architecture d'ordinateur. Le projet portait le nom de code "Green".

Dans un effort pour inventer un code petit, compact et indépendant de la machine, les développeurs ont relancé le modèle utilisé dans la mise en œuvre des premières versions du langage Pascal à l'aube de l'ère des ordinateurs personnels. Niklaus Wirth, le créateur du langage Pascal, a développé une fois un langage indépendant de la machine qui génère du code intermédiaire pour une machine hypothétique. Ce langage est devenu un produit commercial appelé UCSD Pascal. (Ces machines hypothétiques sont souvent appelées machines virtuelles - par exemple, la machine virtuelle Java ou JVM.)
Ce code intermédiaire peut être exécuté sur n'importe quelle machine disposant d'un interpréteur approprié. Les ingénieurs qui ont travaillé sur le projet Green ont également utilisé une machine virtuelle, qui a résolu leur problème principal.

Cependant, la plupart des employés de Sun avaient de l'expérience avec le système d'exploitation UNIX, de sorte que le langage qu'ils ont développé était basé sur C ++, pas Pascal. En particulier, ils ont rendu le langage orienté objet plutôt que procédural.

Comme Gosling l'a dit dans une interview: " La langue est toujours un moyen, pas une fin". Au début, Gosling a décidé de le nommer" Oak "(Oak). (Peut-être parce qu'il aimait regarder le chêne poussant juste sous les fenêtres de son bureau à Sun.) Puis les employés de Sun ont appris que le mot Oak était déjà utilisé dans comme nom du langage de programmation précédemment créé et a changé le nom Java.

En 1992, le projet Green a lancé son premier produit, nommé
"* 7". C'était un véhicule pour un extrêmement intelligent télécommande... (Il avait le pouvoir poste de travail SPARK dans une boîte de 6x4x4 '') Malheureusement, aucun des entreprises de fabrication l'ingénierie électronique ne s'intéresse pas à cette invention.

Le groupe a ensuite développé un appareil de télévision par câble qui pourrait fournir de nouveaux services tels que la vidéo à la demande. Encore une fois, ils n'ont pas reçu un seul contrat. (Ironiquement, l'une des entreprises qui ont refusé de signer avec eux était dirigée par Jim Clark, le fondateur de Netscape, une entreprise qui a continué à faire de Java un succès.)

Tout au long de 1993 et \u200b\u200bla moitié de 1994, la recherche infructueuse d'acheteurs de produits développés dans le cadre du projet "Green" (sous le nouveau nom "First Person, Inc.") s'est poursuivie. (Patrick Naughton, l'un des fondateurs du groupe, qui a ensuite été principalement impliqué dans le marketing, a parcouru plus de 300 000 miles au total pour essayer de vendre la technologie développée.) Projet "First Person, Inc." a été abandonné en 1994.

Pendant ce temps, le World Wide Web se développait sur Internet. La clé de ce réseau est le navigateur, qui transforme l'hypertexte en une image à l'écran.
En 1994, la plupart des gens utilisaient le navigateur Mosaic, un navigateur Web non commercial développé au Supercomputing Center de l'Université de l'Illinois en 1993. (Ce navigateur a été écrit en partie par Mark Andreessen pour 6,85 $ l'heure. À l'époque, Mark était diplômé de l'université et le navigateur était son thèse... Il est ensuite devenu l'un des fondateurs et programmeur en chef de Netscape, et la gloire et la fortune lui sont venues.)

Dans une interview accordée au magazine Sun World, Gosling a déclaré qu'à la mi-1994, les concepteurs de langage ont réalisé: "Nous devons créer un navigateur vraiment cool. Ce navigateur devrait être l'une des rares applications de la mode. technologie client-serveurdans lequel exactement ce que nous avons fait serait vital: indépendance architecturale, exécution en temps réel, fiabilité, sécurité - des questions qui n'étaient pas extrêmement importantes pour les postes de travail. Et nous avons créé un tel navigateur. "

En fait, le navigateur a été développé par Patrick Naughton et Johnatan Payne. Il a ensuite évolué pour devenir le navigateur HotJava moderne. Ce navigateur a été écrit dans le langage Java pour démontrer sa pleine puissance. Cependant, les développeurs n'ont pas oublié les puissantes fonctionnalités désormais appelées applets en donnant à leur navigateur la possibilité d'exécuter du code dans les pages Web. La "Démonstration technologique" a été présentée au Sun World 95 le 23 mai 1995 et a déclenché un engouement Java qui continue à ce jour.

Sun a publié la première version du langage Java au début de 1996. Quelques mois plus tard, Java 1.02 est sorti. Les gens ont rapidement compris que Java 1.02 n'était pas adapté au développement d'applications sérieuses. Bien sûr, cette version peut être utilisée pour développer des pages Web avec des danseurs, mais en Java 1.02, rien ne peut même être imprimé.

Pour être honnête, Java 1.02 était encore brut. Son successeur, Java 1.1, a comblé la plupart des trous béants en améliorant considérablement la capacité de réflexion et en ajoutant nouveau modèle événements pour la programmation graphique interface utilisateur... Malgré cela, il était encore assez limité.

La sortie de Java 1.2 a été le point culminant de la conférence JavaOne de 1998. Dans la nouvelle version, les outils faibles de création d'interfaces utilisateur graphiques et d'applications graphiques ont été remplacés par des outils complexes et à grande échelle. C'était un pas en avant vers la mise en œuvre du slogan «Write Once, Run Anywhere» ™, mis en avant lors du développement des versions précédentes.

En décembre 1998, trois jours (!) Après la sortie, le nom de la nouvelle version a été changé en la phrase encombrante Java 2 Standart Edition Software Development Kit Version 1.2.

En plus de l'édition standard du package ("Standard Edition"), deux autres options ont été proposées: "micro edition" ("Micro Edition") pour les appareils portables, par exemple, pour les téléphones mobiles, et. "Enterprise Edition" pour créer des applications serveur. Notre livre se concentre sur l'édition standard.

Les versions 1.3 et 1.4 de l'édition standard du Toolkit sont beaucoup plus avancées que la version originale de Java 2. Elles ont de nouvelles fonctionnalités et, bien sûr, sont beaucoup moins boguées. Table La figure 1-1 montre la croissance exponentielle de la bibliothèque d'API à mesure que de nouvelles versions du SDK Standard Edition deviennent disponibles.

Tableau 1.1. Croissance du volume de la bibliothèque d'API à partir du package Java Standart Edition

Nombre de classes et d'interfaces

Nombre de méthodes et de champs

Idées fausses courantes sur le langage Java

Cette section répertorie et commente certaines des idées fausses courantes sur Java.

Le langage Java est une extension langage HTML.

Java est un langage de programmation et HTML est une manière de décrire la structure des pages Web. Ils n'ont rien de commun, à l'exception des extensions HTML qui permettent d'héberger des applets Java sur des pages Web.

Je travaille en langage XML, donc je n'ai pas besoin du langage Java.

Java est un langage de programmation et XML est simplement un moyen de décrire des données. Les données décrites à l'aide de XML peuvent être traitées par des programmes écrits dans n'importe quel langage de programmation, mais seule la bibliothèque API Java fournit un support supérieur pour le traitement de ces données. De plus, Java implémente de nombreuses fonctionnalités de XML. Ils sont décrits plus en détail dans le deuxième volume.

Java est facile à apprendre.

Il n'y a pas de langage de programmation aussi puissant que Java qui puisse être facilement appris. Les programmes jouets sont faciles à écrire, mais le travail acharné est toujours difficile. Notez également qu'il n'y a que quatre chapitres consacrés à la discussion du langage Java lui-même dans ce livre. Les chapitres restants expliquent comment travailler avec ses bibliothèques contenant des milliers de classes et d'interfaces, ainsi que plusieurs milliers de fonctions. Heureusement, vous n'avez pas besoin de connaître chacun d'eux, mais une quantité surprenante de connaissances est requise de la part de l'utilisateur pour mener à bien un vrai projet.

Java est facile à programmer.

Le SDK Java n'est pas facile à utiliser pour tout le monde sauf pour les programmeurs habitués ligne de commande... Il existe des environnements de programmation intégrés qui incluent des éditeurs de texte, des compilateurs, des outils de création de formulaires par glisser-déposer, mais ils semblent trop compliqués et intimidants pour un débutant. De plus, ils génèrent souvent des programmes de centaines de lignes. Il nous semble que ce n'est pas une très bonne idée de commencer à apprendre le langage Java à l'aide de programmes longs, générés automatiquement et remplis de commentaires comme "NE TOUCHEZ PAS!" Nous pensons qu'il est préférable d'apprendre le langage Java en utilisant votre éditeur de texte... C'est exactement ce que nous allons faire.

Java deviendra à terme un langage de programmation universel pour toutes les plates-formes.

Ceci est théoriquement possible. C'est ce dont rêvent tous les éditeurs de logiciels, à l'exception de Microsoft. Cependant, il existe de nombreuses applications qui fonctionnent très bien sur les ordinateurs personnels qui ne fonctionneront pas aussi bien sur d'autres appareils ou sous un navigateur. De plus, ces applications sont écrites pour tirer pleinement parti des processeurs et des bibliothèques dépendant de la machine. Dans tous les cas, ils ont déjà été portés sur toutes les plates-formes importantes. Ces applications incluent du texte et éditeur graphiqueainsi que les navigateurs Web. En règle générale, ces applications sont écrites en C ou C ++, et l’utilisateur ne gagnera rien à les réécrire en Java. Entre autres, la réécriture en Java rendra ces programmes plus lents et moins efficaces, du moins dans un proche avenir.

Le langage Java n'est qu'un autre langage de programmation.

Java est un merveilleux langage de programmation. De nombreux programmeurs le préfèrent au C ou au C ++. Cependant, il existe des centaines d'excellents langages de programmation dans le monde qui n'ont jamais été largement adoptés, tandis que les langages présentant des défauts évidents tels que C ++ et Visual Basic ont obtenu un succès retentissant.

Pourquoi? Le succès de tout langage de programmation est largement déterminé par l'aspect pratique de son système de support, et non par l'élégance de sa syntaxe. Existe-t-il des bibliothèques utiles, pratiques et standard pour faire exactement ce dont le programmeur a besoin? Avez-vous développé un environnement pratique pour créer et déboguer des programmes? Le langage et ses outils sont-ils intégrés à l'infrastructure informatique? Le langage Java a fait des progrès dans les applications côté serveur car ses bibliothèques de classes facilitent les tâches qui étaient auparavant difficiles, telles que la mise en réseau et le multithreading. Le fait que Java ait réduit le nombre d'erreurs de pointeur joue également en sa faveur. Grâce à cela, la productivité des programmeurs a augmenté. Cependant, ce n'est pas la raison de son succès.

Les programmes Java sont interprétés, ce qui signifie que les applications sérieuses s'exécuteront trop lentement sur une plate-forme particulière.

De nombreux programmes passent la plupart de leur temps à interagir avec l'interface utilisateur ou à attendre les données du réseau. Tous les programmes, quelle que soit la langue dans laquelle ils sont écrits, doivent répondre à un clic de souris dans un certain laps de temps. Bien sûr, vous ne devez pas effectuer de tâches nécessitant des performances élevées. unité centrale de traitement, à l'aide de l'interpréteur Java. Cependant, sur les plates-formes qui permettent la compilation synchrone, il vous suffit d'exécuter les bytecodes pour l'exécution, et la plupart des questions disparaîtront tout simplement.

Après tout, Java est idéal pour développer des programmes de mise en réseau. L'expérience a montré qu'il peut facilement maintenir des vitesses de transmission réseau élevées même lors de calculs intensifs tels que le cryptage. Comme Java est plus rapide que les données réseau, peu importe si les programmes C ++ peuvent s'exécuter encore plus rapidement. Java est plus facile à programmer et les programmes écrits en Java sont indépendants de la machine.

Tous les programmes Java s'exécutent sous des navigateurs Web.

Toutes les applets Java fonctionnent sous les navigateurs Web. En fait, c'est la définition d'une applet - un programme exécuté par un navigateur Web. Cependant, il est parfaitement possible et approprié de créer des programmes Java autonomes qui s'exécutent indépendamment d'un navigateur Web.

Ces programmes (communément appelés applications) sont totalement indépendants de la machine. Prenez simplement le programme et exécutez-le sur une autre machine! Parce que Java est plus convivial et moins sujet aux erreurs que C ++, il est un bon choix... Lorsqu'il est combiné avec des outils de base de données tels que Java Database Connectivity, Java est tout simplement irrésistible. Il est particulièrement pratique de l'apprendre comme premier langage de programmation.
La plupart des programmes de ce livre sont complètement autonomes. Bien sûr, les applets sont très amusants. Cependant, les applications Java sont plus importantes et utiles dans la pratique.

Les applets Java représentent un gros risque de sécurité.

Plusieurs rapports de bogues dans la sécurité du langage Java ont été publiés. La plupart d'entre eux traitaient de l'implémentation du langage Java à l'aide d'un navigateur spécifique. Les chercheurs ont pris cela comme un défi et ont commencé à rechercher des failles de sécurité dans le langage Java pour surmonter la force et la complexité du modèle de sécurité des applets. Les erreurs techniques découvertes ont été rapidement corrigées et, à notre connaissance, aucun système réel n'a jamais été compromis. Pour apprécier l'importance de ce fait, pensez aux millions de virus présents sur les fichiers exécutables du système d'exploitation Windows et aux macros de traitement de texte qui ont vraiment causé beaucoup de problèmes, et à la critique étonnamment édentée des faiblesses de la plate-forme attaquée. De plus, le mécanisme ActiveX du navigateur Internet Explorer pourrait susciter beaucoup de critiques, mais les moyens de le casser sont si évidents que peu d'experts prennent la peine de publier leurs recherches.

Certains administrateurs système ont même désactivé les protections du langage Java dans leurs navigateurs afin que les utilisateurs puissent continuer à charger des fichiers exécutables, des contrôles ActiveX et des documents créés avec le traitement de texte. C'est drôle qu'à l'heure actuelle la probabilité de dépasser le système de protection des applets en langage Java soit comparable à la probabilité de mourir dans un accident d'avion, alors que le risque d'infecter un ordinateur en ouvrant un document créé par un traitement de texte Word est comparable au risque de mourir sous les roues d'une voiture traversant la route en une heure. de pointe.

JavaScript est une version simplifiée du langage Java.

JavaScript est un langage de script qui peut être utilisé dans les pages Web. Il a été développé par Netscape et s'appelait à l'origine LiveScript. La syntaxe de JavaScript est similaire à celle de Java, mais c'est là que s'arrêtent les similitudes (sauf pour le nom, bien sûr). Un sous-ensemble de JavaScript a été standardisé sous le nom ECMA-262, mais ses extensions sont nécessaires pour vrai travail, n'étaient pas standardisés.

Langage Java. Introduction.

Pendant longtemps, il a été difficile d'imaginer un magazine informatique sans article sur le langage Java. Même des journaux et magazines populaires comme Le nouveau York Times, The Washington Post et Business Week.

Il est impossible de se souvenir que la National Public Radio ait jamais consacré une émission de dix minutes à un langage de programmation. Le bien ou le mal dépend du point de vue. Et l'investissement de 100 millions de dollars dans la production de logiciels créés à l'aide d'un langage de programmation spécifique?! Sociétés de télévision CNN, CNBC et autres médias médias de masse ils ont juste parlé, et ils parlent encore, de la façon dont le langage Java peut et va le faire.

Cependant, ce livre est destiné aux programmeurs sérieux, et comme Java est un langage de programmation sérieux, nous avons beaucoup à dire. Donc, nous n'allons pas plonger dans l'analyse des promesses publicitaires et essayer de découvrir ce qui est vrai et ce qui est de la fiction en elles. Au lieu de cela, nous décrirons Java comme un langage de programmation avec suffisamment de détails (y compris, bien sûr, les fonctionnalités qui lui permettent d'être utilisé pour travailler sur Internet, ce qui, en fait, a provoqué tant de battage publicitaire). Après cela, nous essayerons de séparer la réalité de la fantaisie en expliquant ce que le langage Java peut et ne peut pas faire.

Au début, il y avait un décalage entre les promesses publicitaires et les capacités réelles du langage Java. Au fur et à mesure de sa maturation, la technologie est devenue plus stable et plus fiable et les attentes sont tombées à un niveau raisonnable. Java est maintenant de plus en plus utilisé pour créer un «middleware» qui maintient la communication entre les clients et les ressources du serveur (telles que les bases de données).

Bien que ces applications importantes ne soient pas écrasantes, c'est là que Java s'est révélé le plus utile en raison de son indépendance de la machine, de son multithreading et de ses capacités de programmation réseau. De plus, Java a pris la tête des systèmes embarqués, devenant ainsi la norme de facto pour les appareils portables, les kiosques virtuels, les ordinateurs de bord de voiture, etc. Cependant, les premières tentatives de réécriture de programmes répandus pour les ordinateurs personnels en Java ont échoué - les applications résultantes se sont avérées être de faible puissance et lentes. Avec l'avènement de la nouvelle version, certains de ces problèmes ont été résolus, et pourtant il faut admettre que les utilisateurs, en général, sont complètement indifférents à la langue dans laquelle les programmes qu'ils ont achetés sont écrits. Nous pensons que les principaux avantages du langage Java viendront de la création de nouveaux types d'appareils et d'applications, plutôt que de réécrire des programmes existants.

Java comme outil de programmation

Comment le langage de programmation Java a dépassé ses promesses publicitaires. C'est sans aucun doute l'un des meilleures languesdisponible pour les programmeurs sérieux. Potentiellement, Java a toutes les conditions préalables pour devenir un excellent langage de programmation, mais il est probablement trop tard maintenant. Lorsqu'un nouveau langage de programmation apparaît, le désagréable problème de compatibilité avec les logiciels précédemment créés se pose immédiatement. De plus, même si des modifications peuvent être apportées à ces programmes sans interférer avec leur texte, il est difficile pour les créateurs d'un langage si chaleureusement accueilli par le public, comme Java, de dire directement: «Oui, nous avons peut-être commis une erreur lors du développement de la version X, mais de la version Y ira mieux. " En conséquence, en attendant de nouvelles améliorations, nous devons déclarer que la structure du langage Java ne changera pas de manière significative dans un proche avenir.

La question évidente est: " Comment avez-vous amélioré le langage Java?"Il s'avère que cela n'a pas été fait en améliorant le langage de programmation lui-même, mais en changeant radicalement les bibliothèques de programmes écrits en langage Java. Sun Microsystems a tout changé: à commencer par les noms des fonctions de bibliothèque individuelles (les rendant plus significatives) et les méthodes de travail des modules graphiques ( modifier la façon dont les événements sont gérés et réécrire en partie les programmes de travail) et se terminer par la création de nouvelles propriétés de langage, par exemple des outils d'impression, qui n'étaient pas dans Java 1.0. Le résultat était une plate-forme logicielle beaucoup plus utile que tout versions précédentes Langage Java.

Microsoft a publié son propre produit appelé J ++, qui est lié au langage Java. J ++ est interprété par la machine virtuelle Java lors de l'exécution du bytecode, mais les langages ont des interfaces différentes avec les codes externes. Les langages J ++ et Java ont presque la même syntaxe. Cependant, Microsoft a créé des constructions de langage supplémentaires. Tous ont une valeur plutôt douteuse, à l'exception de l'interface. API Windows... Outre le fait que ces langages ont la même syntaxe, leurs principales bibliothèques (chaînes, utilitaires, outils de programmation réseau, outils multithreading, bibliothèques mathématiques, etc.) sont essentiellement les mêmes.

Cependant, les bibliothèques graphiques, l'interface utilisateur et l'accès aux objets à distance sont complètement différents entre ces langages. Microsoft ne prend actuellement plus en charge J ++, développant un nouveau langage, C #, qui a beaucoup en commun avec Java, mais utilise une machine virtuelle différente. Ce livre ne décrit pas J ++ ou C #.

Avantages du langage Java

1) L'un des principaux avantages du langage Java est indépendance de la plateforme sur laquelle les programmes sont exécutés: le même code peut être exécuté en fonctionnement systèmes Windows, Solaris, Linux, Machintosh, etc.
Ceci est vraiment nécessaire lorsque des programmes sont téléchargés sur Internet pour une exécution ultérieure sous différents systèmes d'exploitation.

2) Un autre avantage est que la syntaxe du langage Java est similaire à celle du langage C ++, et il n'est pas difficile pour les programmeurs qui connaissent les langages C et C ++ de l'apprendre... Il est vrai que pour les programmeurs familiarisés avec le langage Visual Basic, cette syntaxe peut être inhabituelle.

Si vous n'avez jamais programmé en C ++, certains des termes utilisés dans cette section peuvent ne pas vous être clairs. Dans ce cas, vous pouvez l'ignorer. Au moment où vous arriverez à la fin du chapitre 6, ces termes vous deviendront familiers.

3) Aussi, Java - langage complètement orienté objet, encore plus que C ++... Toutes les entités en Java sont des objets, à l'exception de quelques types primitifs tels que les nombres. (Parce qu'il est facile de développer des projets complexes avec une programmation orientée objet, elle remplace l'ancienne programmation structurée. Si vous n'êtes pas familier avec la programmation orientée objet, les chapitres 3 à 6 vous donneront tout ce que vous devez savoir à ce sujet.)

Cependant, il ne suffit pas de développer un autre dialecte, légèrement amélioré, du langage C ++. Il est d'une importance fondamentale qu'il soit plus facile de développer des programmes sans erreur en Java qu'en C ++. Pourquoi? Les développeurs Java se demandent depuis longtemps pourquoi les programmes écrits en C ++ sont si sujets aux erreurs. Ils ont fourni au langage Java des outils pour éliminer la possibilité même de créer des programmes qui masqueraient les erreurs les plus courantes. Pour ce faire, le langage Java a effectué les opérations suivantes.

4) La possibilité d'allocation explicite et de libération de mémoire a été exclue.
La mémoire Java est automatiquement récupérée par le garbage collection. Le programmeur est garanti contre les erreurs liées à une mauvaise utilisation de la mémoire.

5) Introduit de vrais tableaux et une arithmétique de pointeur non autorisée.
Maintenant, les programmeurs, en principe, ne peuvent pas effacer les données de la mémoire en raison d'une mauvaise utilisation des pointeurs.

6) Élimination de la possibilité de confondre l'opérateur d'affectation avec l'opérateur de comparaison d'égalité.
Maintenant, vous ne pouvez même pas compiler l'instruction if (ntries \u003d 3). ... ... (Les programmeurs Visual Basic peuvent ne remarquer aucun problème ici du tout, car cette erreur est la source de la plupart des malentendus en C et C ++).

7) L'héritage multiple est exclu. Il a été remplacé par un nouveau concept - une interface empruntée au langage Objective C.
L'interface donne au programmeur presque tout ce que le programmeur peut tirer de l'héritage multiple, tout en évitant la complexité de la gestion des hiérarchies de classes.

Caractéristiques du langage Java

Plaine
Interprété
Distribué
Fiable
Sûr
Indépendant de la machine
Orienté objet
Haute performance
Multithread
Dynamique
Architecture informatique indépendante

Nous avons déjà abordé certains de ces points dans la dernière section. Dans cette section, nous allons: fournir des citations du manuel du langage Java qui révèlent les caractéristiques du langage; Partageons avec les lecteurs nos réflexions sur certaines propriétés de la langue, basées sur notre propre expérience avec sa dernière version.

Plaine

Nous voulions créer un système facile à programmer, ne nécessitant pas de formation supplémentaire et tenant compte des pratiques établies et des normes de programmation. Par conséquent, bien que nous ayons jugé le langage C ++ inadapté à ces fins, le langage Java a été conçu pour être aussi similaire que possible afin de rendre le système plus accessible. Le langage Java manque de nombreuses fonctionnalités C ++ rarement utilisées, obscures et obscures qui, à notre avis, font plus de mal que de bien.

La syntaxe Java est essentiellement une version nettoyée de la syntaxe C ++. Ce langage n'a pas de fichiers d'en-tête, d'arithmétique de pointeurs (et de pointeurs eux-mêmes), de structures, d'unions, de surcharge d'opérateurs, de classes de base virtuelles, etc. (Les différences entre Java et C ++ sont décrites dans les notes C ++ dispersées dans tout le livre.) Cependant, les développeurs n'ont pas cherché à corriger toutes les lacunes du langage C ++.

Par exemple, la syntaxe de l'instruction switch en Java est restée inchangée. Connaissant le langage C ++, il sera facile de passer à la syntaxe Java.
Si vous utilisez généralement un environnement de programmation visuelle (tel que Visual Basic), le langage Java vous semblera compliqué.
Sa syntaxe semble souvent assez étrange (bien qu'il ne soit pas difficile de comprendre le sens de l'expression). Plus important encore, le langage Java nécessite beaucoup plus de programmation. La beauté de Visual Basic est qu'il environnement visuel la programmation vous permet de créer presque automatiquement une infrastructure d'application. Obtenir le même résultat avec Java nécessite une programmation manuelle, mais aboutit à des programmes beaucoup plus courts.

Il existe cependant un troisième type d'environnement de programmation qui vous permet de créer des programmes à l'aide de la technologie «glisser-déposer».

Un autre aspect de la simplicité est la brièveté. L'un des objectifs du langage Java est de permettre le développement de programmes pouvant être exécutés de manière totalement indépendante sur de petites machines. Les principaux services d'interprétation et de soutien aux classes ont une taille d'environ 40 Ko; les bibliothèques standard et les outils de thread (en particulier le micro-noyau autonome) prennent encore 17: Ko.
C'est un énorme succès. Notez, cependant, que les bibliothèques de support GUI sont beaucoup plus volumineuses.

Orienté objet

En termes simples, la programmation orientée objet est une technique de programmation qui se concentre sur les données (c'est-à-dire les objets) et les moyens d'y accéder. Par analogie avec la menuiserie, l'artisan orienté objet se concentre principalement sur la chaise qu'il fabrique et ne s'intéresse que secondairement aux outils nécessaires pour ce faire; en même temps, le menuisier non orienté objet ne pense qu'à ses outils. Les propriétés orientées objet de Java et C ++ sont essentiellement les mêmes.

L'orientation objet a fait ses preuves au cours des 30 dernières années, et sans elle, il est impossible d'imaginer un langage de programmation moderne. En effet, les fonctionnalités orientées objet du langage Java sont comparables à celles du langage C ++. La principale différence entre eux réside dans le mécanisme d'héritage multiple, pour lequel on trouve le langage Java la meilleure décisionainsi que dans le modèle de métaclasse Java.

La réflexion (chapitre 5) et la sérialisation des objets (chapitre 12) vous permettent d'implémenter des objets persistants et des outils pour créer des interfaces utilisateur graphiques à partir de composants prêts à l'emploi.

Si vous n'avez jamais programmé dans des langages orientés objet, lisez attentivement les chapitres 4-6. Ces chapitres couvrent les bases de la programmation orientée objet et vous montrent les avantages du développement de projets complexes par rapport aux langages traditionnels orientés procéduraux tels que C ou Basic.

Distribué

Java possède une grande bibliothèque de programmes de transfert de données basés sur TCP / IP (Transmission Control Protocol / Internet Protocol), HTTP (Hypertext Transfer Protocol) ou FTP (File Transfer Protocol). Protocole de transfer de fichier). Les applications écrites en langage Java peuvent ouvrir et accéder à des objets sur le réseau en utilisant etLes URL (Uniform Resource Location) sont aussi simples que aw réseau local.

Le langage Java offre une expérience Web puissante et pratique. Quiconque a déjà essayé d'écrire des programmes pour travailler sur Internet dans d'autres langues sera agréablement surpris par la facilité avec laquelle les tâches les plus difficiles, par exemple l'ouverture de connexions réseau (connexion de sockets), sont résolues en Java. Un mécanisme élégant de soi-disant servlets rend le travail du serveur extrêmement efficace.

Les servlets sont pris en charge par de nombreux serveurs Web populaires. (La mise en réseau sera traitée dans le volume II.) La communication entre les objets distribués en Java est assurée par le mécanisme d'appel de méthode à distance (ce sujet est également traité dans le volume 2).

Fiable

Le langage Java est conçu pour créer des programmes qui doivent fonctionner de manière fiable dans toutes les situations. Le langage Java se concentre sur la détection précoce erreurs possibles, contrôle dynamique (lors de l'exécution du programme), et exception des situations sujettes à des erreurs ... La seule différence significative entre le langage Java et le langage C ++ est le modèle Java des pointeurs, qui exclut la possibilité d'écrasement de la mémoire et de corruption des données.

Cette propriété est également très utile. Le compilateur Java détecte les erreurs que d'autres langages trouvent uniquement lors de l'exécution. De plus, les programmeurs qui ont passé de nombreuses heures à rechercher une erreur qui a causé une corruption de mémoire en raison d'un pointeur invalide seront très heureux que de tels problèmes ne puissent pas survenir dans le langage Java.

Si vous avez déjà programmé dans un langage Visual Basic ou COBOL qui n'utilise pas explicitement de pointeurs, vous ne comprendrez peut-être pas pourquoi c'est si important. Les programmeurs C ont moins de chance. Ils ont besoin de pointeurs pour accéder aux chaînes, aux tableaux, aux objets et même aux fichiers. Lors de la programmation en langage Visual Basic, rien de cela n'est requis et le programmeur n'a pas à se soucier de l'allocation de mémoire pour ces entités. D'autre part, de nombreuses structures de données dans un langage sans pointeur sont très difficiles à implémenter. Pour les structures courantes telles que les chaînes et les tableaux, les pointeurs ne sont pas nécessaires. La puissance des pointeurs n'entre en jeu que là où vous ne pouvez pas vous en passer, par exemple lors de la création de listes liées. Le programmeur Java est à jamais exempt de mauvais pointeurs, de mauvaises allocations et de fuites de mémoire.

Sûr

Le langage Java est destiné à être utilisé dans un environnement en réseau ou distribué. Pour cette raison, une grande attention a été accordée à la sécurité. Le langage Java vous permet de créer des systèmes protégés contre les virus et la falsification.

Dans la première édition, nous avons écrit: «Ne dites jamais jamais», et nous avions raison. Un groupe d'experts en sécurité de l'Université de Princeton a découvert les premiers bogues de sécurité dans Java 1.0 peu de temps après la sortie de la première version du JDK. De plus, eux et d'autres spécialistes ont continué et ont par la suite trouvé de plus en plus de bogues dans les mécanismes de sécurité de toutes les versions ultérieures du langage Java.

Du côté positif de cette situation, l'équipe de développement du langage Java a déclaré sa tolérance zéro pour tout bogue de sécurité et a immédiatement commencé à résoudre tout problème rencontré dans le mécanisme de sécurité de l'applet. En particulier, en publiant les spécifications internes de l'interpréteur Java, Sun a beaucoup facilité la recherche de bogues de sécurité cachés et a fait appel à des experts indépendants pour les trouver.

Cela augmentait la probabilité que toutes les erreurs de sécurité soient bientôt découvertes. Dans tous les cas, il est extrêmement difficile de tromper le système de sécurité du langage Java. Les bogues trouvés jusqu'à présent sont presque subtils et (relativement) petits.

La page Web de sécurité de Sun a l'URL suivante: http://java.sun.com/sfaq/.

Voici quelques-unes des situations que le système de sécurité Java empêche.

1) Débordement de pile d'un programme exécutable, causé par un fameux "ver" se propageant sur Internet.

2) Dommages aux zones de mémoire en dehors de l'espace alloué au processus.

3) Lire et écrire des fichiers locaux à l'aide d'un chargeur de classe sécurisé, tel qu'un navigateur Web, qui interdit cet accès aux fichiers.

Toutes ces mesures de sécurité sont appropriées et fonctionnent généralement parfaitement, mais la discrétion ne fait jamais de mal. Bien que les bogues trouvés jusqu'à présent soient loin d'être anodins et que tous les détails de leur recherche sont souvent tenus secrets, il faut admettre qu'il est probablement impossible de prouver la sécurité du langage Java.

Au fil du temps, de nouvelles protections ont été ajoutées à la langue. À partir de la version 1.1, le concept de classes signées numériquement est apparu dans le langage Java. Lorsque vous utilisez une classe signée numériquement, vous pouvez être sûr de l'auteur. Si vous lui faites confiance, vous pouvez accorder à cette classe tous les privilèges disponibles sur votre machine.

Le mécanisme alternatif de livraison de code proposé par Microsoft repose sur la technologie ActiveX et utilise uniquement des signatures numériques pour la sécurité. De toute évidence, cela ne suffit pas - tout utilisateur de logiciels Microsoft peut attester que les programmes de fabricants renommés se bloquent souvent, créant ainsi un risque de corruption des données. La sécurité Java est beaucoup plus fiable qu'ActiveX car elle contrôle l'application dès son démarrage et l'empêche de causer des dommages.

Architecture indépendante

Le compilateur génère un fichier objet dont le format ne dépend pas de l'architecture de l'ordinateur - le programme compilé peut être exécuté sur n'importe quel processeur sous le contrôle du système d'exécution de programme Java. Pour cela, le compilateur Java génère des commandes byte-code qui ne dépendent pas de l'architecture spécifique de l'ordinateur. Le bytecode est conçu de manière à pouvoir être facilement interprété sur n'importe quelle machine ou traduit à la volée en code dépendant de la machine.

N'est pas nouvelle idée... Il y a plus de 20 ans, le système d'implémentation Pascal développé par Niclaus Wirth et le système UCSD Pascal utilisaient la même technologie. L'utilisation de bytecodes donne un gros gain dans l'exécution du programme (bien que la compilation synchrone le compense dans de nombreux cas). Les développeurs Java ont fait un excellent travail de développement d'un ensemble de commandes bytecode qui fonctionnent très bien sur la plupart ordinateurs modernesse traduisant facilement en véritables commandes de la machine.

Indépendant de la machine

Contrairement à C et C ++, la spécification Java n'a pas d'aspects spécifiques à l'implémentation. La taille des types de données de base et les opérations arithmétiques sur ceux-ci sont bien définies.

Par exemple, int en Java signifie toujours un entier 32 bits. En C et C ++, le type int peut signifier un entier 16 bits ou 32 bits, ainsi qu'un entier de taille arbitraire, comme choisi par le développeur d'un compilateur particulier. La seule limitation est que la taille d'un int ne peut pas être inférieure à la taille d'un int court, et plus de taille de type long int. La taille fixe des types numériques évite de nombreux tracas associés à l'exécution de programmes sur différents ordinateurs. Les données binaires sont stockées et transmises dans un format fixe, ce qui évite également les malentendus associés à différents ordres d'octets sur différentes plates-formes (conflit «big endian / little endian»). Les lignes sont enregistrées dans format standard Unicode.

Les bibliothèques, qui font partie du système, définissent une interface indépendante de la machine. Par exemple, le langage fournit une classe abstraite Window et ses implémentations pour les systèmes d'exploitation Unix, Windows et Macintosh.

Quiconque a déjà essayé d'écrire un programme qui fonctionne aussi bien sur Windows, Macintosh et dix versions d'Unix sait que c'est une tâche très difficile. La version Java a fait une tentative héroïque pour résoudre ce problème en fournissant une boîte à outils simple qui adapte les éléments communs de l'interface utilisateur à un grand nombre de plates-formes logicielles... Malheureusement, la bibliothèque, qui a demandé beaucoup de travail, ne nous a pas permis d'obtenir des résultats acceptables sur différentes plateformes. (Dans le même temps, différentes erreurs sont apparues dans les programmes graphiques sur différentes plates-formes.)

Cependant, ce n'était que le début. Dans de nombreuses applications, l'indépendance de la machine est bien plus importante que la sophistication d'une interface utilisateur graphique. Ce sont les applications qui ont bénéficié de Java 1.0. Cependant, la boîte à outils de l'interface utilisateur graphique a été entièrement repensée et ne dépend plus de l'interface utilisateur de l'ordinateur hôte. Une nouvelle version plus significatifs et, à notre avis, plus attractifs pour l'utilisateur que les précédents.

Interprété

L'interpréteur Java peut être envoyé à n'importe quelle machine et exécuter directement le bytecode dessus. Étant donné que l'édition de liens est un processus plus facile, le développement de logiciels peut devenir beaucoup plus rapide et plus efficace.

Cela peut être un avantage lors du développement d'applications, mais la citation est clairement exagérée. Dans tous les cas, le compilateur Java du Java Software Development Kit (JSDK) est plutôt lent. (Certains compilateurs du troisième type, comme ceux d'IBM, sont beaucoup plus rapides.) La vitesse de recompilation n'est qu'un des facteurs qui caractérise l'efficacité d'un environnement de programmation. Lorsque vous comparez la vitesse des environnements de programmation Java par rapport à Visual Basic, vous pourriez être déçu.

Haute performance

Alors que les bytecodes interprétés sont généralement plus que suffisants en termes de performances, il existe des situations où des performances encore plus élevées sont nécessaires. Les bytecodes peuvent être traduits à la volée (au moment de l'exécution) en codes machine pour un processeur spécifique sur lequel l'application s'exécute.

Si un interpréteur est utilisé pour exécuter des bytecodes, n'utilisez pas la phrase " haute performance«Cependant, sur de nombreuses plates-formes, un autre type de compilation est possible, fourni par des compilateurs JIT juste à temps. Ils traduisent le bytecode en code dépendant de la machine, stockent le résultat en mémoire, puis l'appellent si nécessaire. exécutée une seule fois, cette approche augmente la vitesse de travail plusieurs fois.

Malgré le fait que les compilateurs synchrones sont encore plus lents que les compilateurs dépendants de la machine, ils sont, dans tous les cas, beaucoup plus rapides que les interprètes, fournissant une accélération de 10, voire 20 fois pour certains programmes. Cette technologie s'améliore constamment et peut finalement atteindre des vitesses que les compilateurs traditionnels ne peuvent jamais dépasser. Par exemple, un compilateur synchrone peut déterminer quel morceau de code est exécuté le plus souvent et l'optimiser pour la vitesse d'exécution.

MULTI-FLUX

Fournit une meilleure interactivité et une meilleure exécution du programme.

Si vous avez déjà essayé des calculs multithreads dans un autre langage de programmation, vous serez agréablement surpris de voir à quel point il est facile de le faire en Java. Les threads Java peuvent tirer parti des systèmes multiprocesseurs si le système d'exploitation le permet. Malheureusement, les implémentations de thread sur la plupart des plates-formes sont très différentes les unes des autres, et les développeurs de langage Java ne font aucune tentative pour parvenir à l'uniformité. Seul le code pour appeler les threads reste le même pour toutes les machines; le langage Java déplace l'implémentation du multithreading vers le système d'exploitation sous-jacent ou la bibliothèque de threads. (Les threads sont traités dans le volume II.) Malgré cela, c'est la facilité du multithreading qui rend Java si attrayant pour le développement de logiciels serveur.

Dynamique

À bien des égards, Java est plus dynamique que C ou C ++. Il a été conçu pour s'adapter facilement à un environnement en constante évolution. De nouvelles méthodes et objets peuvent être ajoutés librement aux bibliothèques sans causer de dommages. Le langage Java permet d'obtenir facilement des informations sur la progression d'un programme.

Ceci est très important lorsque vous devez ajouter du code à un programme déjà en cours d'exécution. Un bon exemple de ceci est le code qui est téléchargé d'Internet pour être exécuté par un navigateur. Dans Java 1.0, il n'était pas facile d'obtenir des informations sur la progression d'un programme en cours d'exécution, mais la version actuelle du langage Java expose à la fois la structure et le comportement des objets du programme en cours d'exécution au programmeur.
Ceci est très utile pour les systèmes qui ont besoin d'analyser des objets pendant l'exécution du programme. Ces systèmes incluent des générateurs d'interface graphique, des débogueurs intelligents, des plug-ins et des bases de données d'objets.

Java et Internet

L'idée est simple: les utilisateurs téléchargent des bytecodes Java sur Internet et les exécutent sur leurs machines. Les programmes Java qui s'exécutent sur des navigateurs Web sont appelés applets. Pour utiliser l'applet, vous avez besoin d'un navigateur Web compatible Java capable d'interpréter les bytecodes. La source du langage Java est concédée sous licence à Sun, qui insiste sur l'immuabilité à la fois du langage lui-même et de la structure de ses bibliothèques principales. Malheureusement, ce n'est pas le cas en réalité. Prise en charge de différentes versions des navigateurs Netscape et Internet Explorer différentes versions le langage Java, et certaines de ces versions sont considérablement obsolètes. Cette situation malheureuse crée de plus en plus d'obstacles dans le développement d'applets qui tirent parti de la dernière version du langage Java. Pour résoudre ce problème, Sun a développé le plug-in Java, qui fournit l'environnement le plus moderne pour exécuter des programmes Java basés sur les navigateurs Netscape et Internet Explorer.

Le chargement d'une applet revient à incorporer une image dans une page Web. L'applet fait partie de la page et le texte s'enroule autour de l'espace qu'il occupe. Cependant, la différence est que l'image est maintenant vivante. Il réagit aux commandes de l'utilisateur, modifie son apparence et assure le transfert de données entre l'ordinateur sur lequel l'applet est visualisée et l'ordinateur exécutant l'applet.

Charger une applet revient à insérer une image dans une page Web. L'applet fait partie de la page et le texte s'enroule autour de l'espace qu'il occupe. Le fait est que l'image est «vivante». Il répond aux entrées de l'utilisateur, modifie son apparence et transfère les données entre l'ordinateur exécutant l'applet et l'ordinateur exécutant l'applet.

En figue. 1.1 spectacles bon exemple page Web dynamiquequi effectue des calculs complexes et utilise une applet pour afficher les molécules. Pour mieux comprendre la structure de la molécule, vous pouvez la faire pivoter ou zoomer à l'aide de la souris. De telles manipulations ne peuvent pas être implémentées sur statique les pages Webcependant, les applets rendent cela possible. (Cette applet peut être trouvée à http: //jmol.sourceforge.net.)

Figure: 1.1. Applet Jmol

Les applets peuvent être utilisés pour ajouter de nouveaux boutons et champs de texte à une page Web. Cependant, ces applets sont lents à charger sur la ligne téléphonique.

La même chose peut être faite en utilisant le HTML dynamique, les formulaires HTML (Hypertext Markup Language) ou un langage de script tel que JavaScript. Bien sûr, les premières applets étaient destinées à l'animation: globes tournants, personnages de dessins animés dansants, textes fantaisistes, etc. Cependant, la plupart des éléments ci-dessus peuvent également créer des GIF animés, et le HTML dynamique, combiné à la création de scripts, fait bien plus que des applets.

En raison d'incompatibilités de navigateur et de chargement incohérent sur des connexions réseau lentes, les applets pour les pages Web n'ont pas été une énorme avancée. Dans les réseaux locaux (intranets), la situation est complètement différente. Ils n'ont généralement pas de problèmes associés à débit channel, donc le temps de chargement des applets est sans importance. Sur le réseau local, vous pouvez sélectionner le navigateur souhaité ou utiliser le programme Java Plug-In. Les employés ne peuvent pas déplacer un programme fourni sur le réseau vers le mauvais emplacement ou l'installer de manière incorrecte, et administrateur du système il n'est pas nécessaire de contourner toutes les machines clientes et de mettre à jour leurs programmes. Un grand nombre de programmes conçus pour la comptabilité des stocks, la planification des vacances, le remboursement des voyages et autres ont été développés par de nombreuses entreprises sous forme d'applets basés sur un navigateur.

Au fur et à mesure que nous écrivions le livre, le pendule est passé des programmes clients à la programmation côté serveur. Plus précisément, les serveurs d'applications peuvent utiliser les capacités de surveillance de la machine virtuelle Java pour équilibrer automatiquement la charge, regrouper les connexions à la base de données, synchroniser les objets, arrêter et recharger en toute sécurité, ainsi que d'autres processus requis pour les applications serveur évolutives. qui sont presque impossibles à mettre en œuvre correctement. Ainsi, les programmeurs créant des applications ont pu acheter ces mécanismes complexes, au lieu de les développer eux-mêmes. Cela a augmenté la productivité des programmeurs - ils se sont concentrés sur la logique de leurs programmes, sans être distraits par les détails du serveur.

LA CLOCHE

Il y a ceux qui ont lu cette nouvelle avant vous.
Abonnez-vous pour recevoir les derniers articles.
Email
Nom
Nom de famille
Comment voulez-vous lire The Bell
Pas de spam