Archives Wild Code School
Java

Java - Introduction

Quête 16 sur 43

Introduction

Dans cette introduction à Java, tu vas apprendre comment Java a démarré, ce dont tu as besoin pour le développement logiciel en Java et quelques termes importants que tu dois connaître en tant que développeur Java.

...

🤓 À la fin de cette quête, tu sauras :

✅ Savoir ce qu'est Java ✅ Avoir découvert Java, le JRE, le JDK, la JVM, les JARs, le Compiler (compilateur, le programme qui traduit ton code) et l'écosystème de la JVM


Java est un langage de programmation inventé dans les années 1990 chez Sun Microsystems par James Gosling et quelques autres personnes de la Green Team. D'abord appelé Greentalk, le langage a ensuite été renommé Oak avant que son nom final ne devienne Java. Il a fallu quatre ans à l'équipe avant que la première version de Java soit publiée en 1995. Comme tu peux le voir, Java a une longue histoire.

Le succès de Java est lié à la promesse Write once, run anywhere (écris une fois, exécute partout). Dans les années 1990, le marché de l'informatique était très concurrentiel. Les fabricants utilisaient des processeurs différents et chaque logiciel devait être construit spécifiquement pour chaque ordinateur. Avec Java, le logiciel ne devait être construit qu'une seule fois et pouvait s'exécuter sur n'importe quel ordinateur.

La solution de Java était une machine virtuelle (virtual machine : un ordinateur simulé par un logiciel) qui devait être construite pour chaque architecture d'ordinateur, mais une fois cette machine virtuelle disponible, le logiciel pouvait être construit pour s'exécuter sur cette machine virtuelle.

Java et le JDK

Pour écrire un programme avec Java, tu as besoin d'un Java Developer Kit (JDK) (kit de développement Java). Le JDK est une distribution du langage Java et inclut tout ce dont tu as besoin pour commencer à programmer avec Java. Pour le développement logiciel professionnel, la plupart des programmeurs préfèrent utiliser un Integrated Development Environment (IDE) (environnement de développement intégré) mais ce n'est pas du tout nécessaire.

Java est un langage compilé. Tu écris un logiciel sous une forme lisible par les humains, le source code (code source) qui est traduit sous une forme lisible par la machine. La traduction est faite par un compiler (compilateur) qui fait partie du JDK. Un compilateur fonctionne un peu comme la traduction entre des langues naturelles.

Source code

Le source code est le programme lisible par les humains. Les fichiers de code source utilisent le suffixe .java

Byte code

Le byte code (code intermédiaire compris par la machine virtuelle) est le programme lisible par la machine. Les fichiers de byte code utilisent le suffixe .class

N'importe quel langage de programmation peut être compilé en byte code Java et, pour l'écosystème Java, il existe en réalité un très grand nombre de langages disponibles

  • Java
  • Javascript
  • Python
  • Kotlin
  • Scala
  • Groovy

Tous ces langages, une fois compilés, créent du byte code pour la JVM.

Java est le langage d'origine de la JVM et donc le langage le plus important et le plus utilisé pour la machine virtuelle Java.

L'écosystème Java

L'écosystème Java, c'est en gros tout ce qui a, d'une manière ou d'une autre, un lien avec Java. Cela inclut les langages alternatifs, le code existant fourni sous forme de bibliothèque de code en source code ou en byte code, ou encore des environnements d'exécution (runtime) alternatifs.

JDK

Le Java Developer Kit (JDK) est un ensemble d'outils logiciels. Le JDK n'inclut pas de programme pour écrire concrètement du code. Tu as besoin d'un éditeur, comme vim, ou d'un IDE comme eclipse pour ça. Le JDK fournit un compilateur que tu peux utiliser depuis la ligne de commande pour compiler et exécuter un programme Java.

Le compiler : javac

Le compilateur du JDK est un programme appelé javac.

Le runtime : java

La machine virtuelle Java est fournie par un programme appelé java

Le JRE

Le Java Runtime Environment (JRE) (environnement d'exécution Java) est une version allégée du JDK. Il n'inclut pas le compilateur. Tu peux exécuter des programmes Java, mais tu ne peux pas en créer avec le JRE.

Info

Garde en tête qu'une fois que tu seras un expert en Java, tu pourras créer des programmes Java avec le JRE.

La JVM

La machine virtuelle Java est comme un ordinateur physique qui n'existe que sous forme de logiciel.

Le logiciel qui fournit cette machine virtuelle Java est le programme java. Utiliser une machine virtuelle permet aux logiciels Java de fonctionner sur n'importe quelle architecture d'ordinateur, car c'est le logiciel de la machine virtuelle qui doit être construit pour chaque architecture. La promesse Write once, run anywhere est limitée par le besoin d'avoir une JVM.

Info

Même si Java est disponible pour un grand nombre de machines et de systèmes d'exploitation, il existe aussi un grand nombre de machines et de systèmes d'exploitation qui ne sont pas pris en charge ou qui ne fournissent qu'une implémentation obsolète de Java.

Le JLS

La Java Language Specification (spécification du langage Java) est une spécification formelle du langage Java. En cas de doute, cette spécification fournit la référence définitive du comportement attendu pour le langage Java.

La spécification de la JVM

La JVM Specification (spécification de la JVM) est une spécification formelle de la machine virtuelle Java. En cas de doute, cette spécification fournit la référence définitive du comportement attendu pour la machine virtuelle Java.

Source code

Le source code est un code compréhensible par les humains. Ce source code doit être traduit d'une manière ou d'une autre en machine code (code machine) pour qu'un ordinateur puisse le comprendre. Les programmes qui traduisent du source code vers le machine code s'appellent des compilateurs ou des interpréteurs.

Byte code

Le byte code est un code qui, comme le machine code, est compris par un ordinateur. Le byte code est le langage machine de la JVM. Imagine simplement qu'une personne française veuille parler avec une personne allemande, mais que la personne française ne parle pas allemand et que la personne allemande ne parle pas français. Si toutes les deux parlent anglais, elles peuvent quand même communiquer.

Machine code

Le machine code est un code, le langage naturellement compris par un ordinateur. Comme des ordinateurs différents utilisent des processeurs différents, le machine code diffère lui aussi. C'est comme des langues différentes comprises par des personnes différentes.

Les outils

Le JDK, en plus du compilateur et du runtime (environnement d'exécution), inclut beaucoup d'outils.

jar

L'outil jar est un programme que tu utilises pour regrouper des fichiers ensemble dans un seul fichier. Il utilise le format de fichier ZIP pour créer des fichiers avec le suffixe .jar.

Les fichiers .jar et les fichiers .zip sont en gros la même chose.

JShell

Le JShell est un interpréteur pour Java qui a été introduit avec le JDK 9 de Java. Il fournit une read-eval-print-loop (REPL) (boucle lire-évaluer-afficher) pour Java. Il fournit un retour direct pour les expressions Java.

Ressources

▶
Vidéo YouTube
https://www.youtube.com/watch?v=s5Qw3BYAlC4

☝️ Résumé

Comme tu peux le voir, en programmation Java, il y a beaucoup d'acronymes qui se ressemblent, ne t'en fais pas. Avec le temps et la pratique, tu finiras par te familiariser avec chacun des termes listés ci-dessus !


Quiz

quiz
false|||true|||false
# Le JLS est le code source facilement lisible par un humain
[x] Faux
[] Vrai
# Le bytecode est celui qui est facilement lisible par un humain
[x] Faux
[] Vrai
# Donc, celui qui est facilement lisible par un humain est 
[x] Le source code
[] Le contenu d'un fichier jar
[] Le machine code
# La JVM te permet de
[x] faire tourner ton programme Java sur n'importe quelle architecture d'ordinateur 
[] compiler ton programme java
[] suivre des standards pour écrire du code propre et utiliser de bonnes pratiques
# Qu'est-ce qui te permet de suivre des standards pour écrire du code propre et utiliser de bonnes pratiques ?
[x] JLS
[] JVM
[] JDK
# Qu'est-ce qui te permet de compiler ton programme java ?
[] JLS
[] JVM
[x] JDK 

Introduction

In this introduction to Java you will learn how Java started, what you need for software development in Java and some important terms you should know as a Java developer.

...

🤓 By the end of this quest, you will:

✅ Know what Java is ✅ Have learned about Java, JRE, JDK, JVM, JARs, Compiler and the JVM Ecosystem


Java is a programming language invented in the 1990' at Sun Microsystems by James Gosling and some other people from the Green Team. Initially named Greentalk, the language was later renamed Oak before the final name changed to Java. It took the team four years before the first release of Java was published in 1995. As you can see, Java has a long history.

The success of Java is related to the Write once, run anywhere promise. In the 1990s the computer market was very competitive. Manufactures were using different processors and every software had to be built specifically for each computer. With Java, the software had to be build only once and could run on any computer.

The Java solution was a virtual machine that had to be built for every computer architecture, but once that virtual machine is available, the software could be built to run on this virtual machine.

Java and the JDK

To write a program with Java, you need a Java Developer Kit (JDK). The JDK is a distribution of the Java language and includes everything you need to start programming with Java. For professional software development, most programmers prefer to use an Integrated Development Environment (IDE) but this is not necessary at all.

Java is a compiled language. You write software in a human-readable form, the source code that is translated into a machine-readable form. The translation is done with a compiler that is part of the JDK. A compiler works pretty much like the translation between natural languages.

Source code

The source code is the human-readable program. Source code files use the .java suffix

Byte code

The byte code is the machine-readable program. Byte code files use the .class suffix

Any programming language can be compiled to Java byte code and for the Java Ecosystem there is actually a very large number of languages available

  • Java
  • Javascript
  • Python
  • Kotlin
  • Scala
  • Groovy

All of these languages, when compiled, create byte code for the JVM.

Java is the original language for the JVM and therefore the most prominent and most used language for the Java virtual machine.

Java Ecosystem

The Java Ecosystem is basically everything that has in some way to do with Java. This includes alternative languages, existing code provided as a code library in source code or as byte code or alternative Runtime environments.

JDK

The Java Developer Kit (JDK) is a collection of software tools. The JDK does not include a program to actually write code. You need an editor, like vim, or an IDE like eclipse for that. The JDK provides a compiler that you can use from the command line to compile and run a Java program.

The compiler: javac

The compiler in the JDK is a program called javac.

The runtime: java

The Java virtual machine is provided by a program called java

The JRE

The Java Runtime Environment (JRE) is a stripped-down version of the JDK. It does not include the compiler. You can run Java programs, but you can not create them with the JRE.

Info

Keep in mind that once you are an expert in Java, you could create Java programs with the JRE.

The JVM

The Java virtual machine is like a physical computer that only exists in software.

The software that provides this Java virtual machine is the java program. Using a virtual machine enables Java software to work on any computer architecture because it is the virtual machine software that has to be built for each architecture. The Write once, run anywhere promise is limited by the requirement for a JVM.

Info

While Java is available for a large number of machines and operating systems, there are also a large number of machines and operating systems that are not supported or only provide an outdated implementation of Java.

The JLS

The Java Language Specification is a formal specification of the Java language. When in doubt, this specification provides the definitive reference to the expected behavior for the Java language.

The JVM Specification

The JVM Specification is a formal specification for the Java Virtual Machine. When in doubt, this specification provides the definitive reference to the expected behavior for the Java virtual machine.

Source code

The source code is a code that is understandable to humans. This source code has to be translated in one way or the other into machine code for a computer to understand it. Programs that translate from source code to machine code are called compilers or interpreters.

Byte code

The byte code is a code that, like machine code, understood by a computer. Byte code is the machine language for the JVM. Just imagine somebody from France wants to speak with somebody from Germany, but the french person does not speak german and the german person does not speak french. If both speak English, they can still communicate.

Machine code

The machine code is a code the language that is naturally understood by a computer. Since different computers use different processors, the machine code also differs. It's like different languages understood by different persons.

The tools

The JDK, in addition to the compiler and runtime, includes a lot of tools.

jar

The jar tool is a program that you use to pack files together in a single file. It uses the ZIP file format to create files with the .jar suffix.

.jar files and .zip files are basically the same.

JShell

The JShell is an interpreter for Java that was introduced with Java JDK 9. It provides a read-eval-print-loop (REPL) for Java. It provides direct feedback for Java expressions.

Resources

▶
Vidéo YouTube
https://www.youtube.com/watch?v=s5Qw3BYAlC4

☝️ Summary

As you can see, in java programming, there are a lot of similar acronyms, don't worry about it. With time and practicing, every term listed above, You will be familiar with!


Quiz

quiz
false|||true|||false
# The JLS is the source code easily readable by human
[x] False
[] True
# The bytecode is the one easily readable by human
[x] False
[] True
# So, the one easily readable by human is 
[x] Source code
[] Jar file content
[] Machine code
# The JVM allow you to
[x] make your Java program running on any computer architecture 
[] compile your java program
[] follow standards to write clean code and use good practices
# What doe allow you to follow standards to write clean code and use good practices?
[x] JLS
[] JVM
[] JDK
# What does allow you to compile your java program?
[] JLS
[] JVM
[x] JDK