En savoir plus sur Java, Qu'est-ce que c'est et pourquoi il est si populaire

Inside Java offre un aperçu de la plateforme Java et des technologies associées. Dans la colonne de ce mois, je vais vous montrer un aperçu du langage de programmation Java.

Java - une île d'Indonésie, un type de café et un langage de programmation. Trois significations très différentes, chacune d'importance variable. Cependant, la plupart des programmeurs s'intéressent au langage de programmation Java. En quelques années seulement (depuis fin 1995), Java a pris d'assaut la communauté des logiciels. Son succès phénoménal a fait de Java le langage de programmation dont la croissance est la plus rapide. Il y a beaucoup de hype sur Java, et ce qu'il peut faire. Beaucoup de programmeurs, et les utilisateurs finaux, sont confus sur exactement ce que c'est, et ce que Java offre.

Java est un langage révolutionnaire

Les propriétés qui rendent Java si attrayant sont présentes dans d'autres langages de programmation. De nombreuses langues sont parfaitement adaptées à certains types d'applications, d'autant plus que Java. Mais Java réunit toutes ces propriétés dans un même langage. C'est un saut révolutionnaire pour l'industrie du logiciel.

Regardons quelques propriétés plus en détail: -

Orienté objet

Beaucoup de langues plus anciennes, comme C et Pascal, étaient des langages procéduraux. Les procédures (également appelées fonctions) étaient des blocs de code faisant partie d'un module ou d'une application. Les procédures ont transmis des paramètres (types de données primitifs tels que les entiers, les caractères, les chaînes et les nombres à virgule flottante). Le code a été traité séparément pour les données. Vous deviez contourner les structures de données, et les procédures pouvaient facilement modifier leur contenu.

Java est un langage orienté objet. Un langage orienté objet traite les objets. Les objets contiennent à la fois des données (variables membres) et du code (méthodes). Chaque objet appartient à une classe particulière, qui est un plan décrivant les variables membres et les méthodes qu'offre un objet. En Java, presque toutes les variables sont des objets d'un type ou d'un autre - même des chaînes. La programmation orientée objet nécessite une façon de penser différente, mais

Portable

La plupart des langages de programmation sont conçus pour un système d'exploitation et une architecture de processeur spécifiques. Lorsque le code source (les instructions qui composent un programme) est compilé, il est converti en code machine qui ne peut être exécuté que sur un type de machine. Ce processus produit du code natif, qui est extrêmement rapide.

Un autre type de langage est celui qui est interprété. Le code interprété est lu par une application logicielle (l'interpréteur), qui exécute les actions spécifiées. Le code interprété n'a souvent pas besoin d'être compilé - il est traduit comme il est exécuté. Pour cette raison, le code interprété est assez lent, mais souvent portable sur différents systèmes d'exploitation et architectures de processeur.

Java prend le meilleur des deux techniques. Le code Java est compilé dans un code machine neutre à la plate-forme, appelé Java bytecode. Un type spécial d'interprète, connu sous le nom de Java Virtual Machine (JVM), lit le bytecode et le traite. La figure 1 montre un démontage d'une petite application Java. Le bytecode, indiqué par la flèche, est représenté sous forme de texte ici, mais une fois compilé, il est représenté sous la forme d'octets pour économiser de l'espace.

Multi-thread

Si vous avez déjà écrit des applications complexes en langage C ou PERL, vous aurez probablement déjà rencontré le concept de processus multiples. Une application peut se diviser en copies séparées, qui s'exécutent simultanément. Chaque copie réplique le code et les données, ce qui entraîne une augmentation de la consommation de mémoire. Obtenir les copies pour parler ensemble peut être complexe et frustrant. La création de chaque processus implique un appel au système d'exploitation, qui consomme également du temps processeur supplémentaire.

Un meilleur modèle consiste à utiliser plusieurs threads d'exécution, appelés en abrégé threads. Les threads peuvent partager des données et du code, ce qui facilite le partage de données entre les instances de threads. Ils utilisent également moins de mémoire et de ressources processeur. Certains langages, comme C ++, prennent en charge les threads, mais ils sont complexes à utiliser. Java prend en charge plusieurs threads d'exécution intégrés directement dans le langage. Les threads nécessitent une façon de penser différente, mais peuvent être compris très rapidement. Le support de threads en Java est très simple à utiliser, et l'utilisation de threads dans les applications et les applets est assez courante.

Collecte automatique des ordures

Non, nous ne parlons pas de sortir la poubelle (même si un ordinateur qui pourrait littéralement faire ça serait plutôt soigné). Le terme garbage collection fait référence à la récupération de l'espace mémoire inutilisé. Lorsque les applications créent des objets, la JVM alloue de l'espace mémoire pour leur stockage. Lorsque l'objet n'est plus nécessaire (aucune référence à l'objet n'existe), l'espace mémoire peut être récupéré pour une utilisation ultérieure.

Garantir

La sécurité est un gros problème avec Java. Étant donné que les applets Java sont téléchargés à distance et exécutés dans un navigateur, la sécurité est très préoccupante. Nous ne voudrions pas que les applets lisent nos documents personnels, suppriment des fichiers ou causent des méfaits. Au niveau de l'API, il existe de fortes restrictions de sécurité sur l'accès aux fichiers et au réseau pour les applets, ainsi que la prise en charge des signatures numériques pour vérifier l'intégrité du code téléchargé. Au niveau du bytecode, des vérifications sont effectuées pour les hacks évidents,

Réseau et "Internet" au courant

Java a été conçu pour être "conscient" d'Internet et pour prendre en charge la programmation réseau. L'API Java fournit un support réseau étendu, depuis les sockets et les adresses IP jusqu'aux URL et HTTP. Il est extrêmement facile d'écrire des applications réseau en Java, et le code est complètement portable entre les plates-formes. Java inclut également la prise en charge d'une programmation réseau plus exotique, telle que l'invocation de méthode distante (RMI), CORBA et Jini. Ces technologies de systèmes distribués font de Java un choix intéressant pour les grands systèmes distribués.