[Java] Trois fonctionnalités de Java
Fonctionnalités Java
- ** Orientation objet **
- ** Machine virtuelle Java **
- ** Collecte des ordures **
Orienté objet pense aux données
- En premier lieu, l'essentiel est de savoir comment traiter les données et ce que vous voulez faire est centré sur les données
- En orientation objet, l'objet manipulé dans le programme est représenté par une chose (objet)
- Tout ce qui compose une application est représenté par des objets et la combinaison constitue l'application.
- ** Capsule / intégrer les données et leurs opérations et écrire le code **
- Une erreur courante est d'écrire une méthode qui référence les données d'un autre objet, et la méthode de l'autre objet fait référence aux données d'un autre objet.
- La méthode de l'objet 1 n'a plus de sens → On l'appelle un objet de données (mauvaise cohésion)
- ** Les données de l'objet 1 doivent être référencées par la méthode de l'objet 1 **
- Fondamentalement, intégrons les données et les méthodes!
La machine virtuelle Java est du code binaire
- Java fonctionne sur des machines virtuelles Java
- Java est une version améliorée de C ++ (que l'on peut qualifier de) mais a une structure complètement différente lors de son exécution.
C++
- Le PC est alimenté et le CPU fonctionne
- Le processeur fonctionne en langage machine
- Description de l'assembleur (C / C ++) → Compiler → Langage machine (code binaire)
- L'assembleur devient directement un langage machine
- Seul le code binaire peut exécuter directement le CPU
Java
- Fonctionne sur la machine virtuelle Java
- Créez une machine virtuelle Java au-dessus du CPU
- Code binaire qui permet aux machines virtuelles Java d'exécuter directement le CPU
- La machine virtuelle Java ne fonctionne que si JDK et JRE sont installés
- La compilation de Java crache du code intermédiaire
- Le code intermédiaire doit fonctionner sur du code binaire
- Plus lent que C ++ qui exécute directement le CPU car il passe par du code intermédiaire (dit)
- Java donc ce n'est pas lent
Le garbage collection libère automatiquement de la mémoire
Configuration CPU / mémoire (DRAM) / stockage (HDD / SSD)
- CPU / DRAM a les jambes collées sur la carte
- Connecté par bus de données et bus d'adresse
- La capacité que la DRAM peut stocker est de 8 octets
- ** Address Bus ** indique à quelle adresse de 0 à 7 vous souhaitez accéder
- ** Databus ** affiche son contenu
- ** CPU / mémoire est sur une seule fondation **
- Séparément de cela, il est directement connecté
- Le bus d'adresse a un port appelé ** port d'E / S ** qui spécifie l'espace d'E / S.
- ** Le disque dur / SSD est connecté au port E / S **
- Le stockage (HDD / SSD) n'est pas directement connecté au CPU et la DRAM est directement connectée.
- La mémoire du CPU disparaît lorsque l'alimentation n'est pas allumée, et le disque dur écrit sur le matériau magnétique, donc il reste même si l'électricité est coupée.
- Type de puce mémoire
- ** DRAM **: norme DDR4, etc. (norme qui détermine l'accès au processeur et la latence)
- ** SRAM **: haute vitesse (je ne l'utilise pas beaucoup maintenant)
- ** Mémoire flash **: utilisée comme mémoire externe (SSD, etc.)
Comment fonctionne la mémoire
- Par exemple, dans le cas du Z80,
8 bus de données + 16 bus d'adresses (= indique l'adresse à laquelle la CPU veut accéder)
- 0000 0000 0000 0000 ~ 1111 1111 1111 1111 accessible
- Dans le cas du Z80 avec CPU 8 bits, il y a ** 0 à 65535 **
- ** La machine virtuelle Java nécessite que le système d'exploitation n'utilise aucune mémoire **
- ** OS a une fonction pour gérer la mémoire par blocs **
- La machine virtuelle Java nécessite 100 octets de mémoire du système d'exploitation
- Renvoyer une adresse inutilisée gérée par le système d'exploitation à la machine virtuelle
- Java peut utiliser cette mémoire
- ** Fuite de mémoire **: Si une machine virtuelle est utilisée dans une certaine application et qu'elle meurt sans dire la fin, elle restera utilisée pendant 100 octets et ne pourra pas être utilisée pour d'autres zones.
- En C / C ++, utilisez un pointeur, allouez à l'aide d'un allocateur de mémoire et relâchez avec une instruction release.
- En Java, la mémoire fournie est sous le contrôle de la machine Java du JDK.
- Écrivez
hoge = null;
ou ** libérez automatiquement la mémoire lorsque la machine virtuelle Java est fermée **