Rumah  >  Artikel  >  Java  >  Gambaran Keseluruhan Ekosistem Java

Gambaran Keseluruhan Ekosistem Java

PHPz
PHPzasal
2024-08-21 06:20:321001semak imbas

Jadual Kandungan

  1. Pengenalan
  2. JVM (Mesin Maya Java)
    • Seni bina JVM
      • Pemuat Kelas
      • Memori JVM
        • Kaedah Kawasan
        • Timbunan
        • Kawasan Timbunan
        • Daftar Kaunter Program (PC)
        • Timbunan Kaedah Asli
      • Enjin Perlaksanaan
        • Jurubahasa
        • Penyusun Just-In-Time (JIT)
        • Pengumpul Sampah
  3. JRE (Persekitaran Masa Jalan Java)
    • Komponen Utama JRE
      • Tugas Pelaksanaan
      • Perpustakaan Kelas
      • Antara Muka Asli Java (JNI)
      • Pengurus Keselamatan
  4. JDK (Kit Pembangunan Java)
    • Ciri Teras JDK
      • javac (Penyusun Java)
      • java (Pelancar Aplikasi Java)
      • jdb (Penyahpepijat Java)
      • jar (Alat Arkib Java)
      • javadoc (Penjana Dokumentasi Java)
  5. JVM lwn JRE lwn JDK: Apakah Perbezaannya?
  6. JDK, JRE, Hierarki JVM

pengenalan

Ekosistem Java ialah set luas alatan, teknologi, perpustakaan dan rangka kerja yang mengelilingi dan menyokong bahasa pengaturcaraan Java. Ia merangkumi semua yang diperlukan untuk membangun, menggunakan dan mengurus aplikasi Java. Ia berkisar tentang JDK, JRE, JVM

JVM (Kit Pembangunan Java)

JVM bertindak seperti penterjemah yang membenarkan komputer anda menjalankan program Java dan bahasa lain yang disusun ke dalam kod bait Java. Ia menterjemah kod kepada sesuatu yang boleh difahami dan dilaksanakan oleh perkakasan komputer anda.

Seni bina JVM

Java Ecosystem Overview

Pemuat Kelas

  1. Memuatkan beban
    Muatkan fail .class ke dalam memori. Mengesan, memuatkan dan memautkan fail kelas (Kod bait Java) untuk pelaksanaan.

  2. Memautkan

    • Pengesahan: Mengesahkan kod bait.
    • Persediaan: Memperuntukkan memori untuk pembolehubah statik dan memulakan memori kepada nilai lalai.
    • Penyelesaian: Menyelesaikan rujukan simbolik kepada rujukan langsung.
  3. Permulaan
    Permulaan ialah langkah terakhir di mana JVM menyediakan kelas atau antara muka untuk digunakan. Langkah ini berlaku selepas kelas telah dimuatkan (ke dalam ingatan) dan dipautkan.

Memori JVM

  1. Kaedah Kawasan
    Kawasan kaedah Menyimpan data peringkat kelas seperti kaedah dan pembolehubah, kumpulan pemalar masa jalan dan kod untuk kaedah.

    public class Person {
        private String name;
    
        public void setName(String name) {
            this.name = name;
        }
    }
    

    Apabila anda mentakrifkan Orang kelas, Kawasan Kaedah menyimpan struktur kelas Orang, termasuk kaedahnya (setName) dan medan (nama), dan kumpulan pemalar masa jalan yang mengandungi rujukan seperti nama kaedah dan nilai tetap.

  2. Timbunan
    Heap ialah tempat objek memori masa jalan diperuntukkan. Timbunan itu dikongsi antara semua benang dan merupakan tempat proses pengumpulan sampah berlaku.

    Person p = new Person();
    

    Apabila anda mencipta objek Orang baharu, ia diperuntukkan pada Heap.

  3. Kawasan Timbunan
    Kawasan tindanan menyimpan bingkai, yang mengandungi pembolehubah tempatan, tindanan operan dan rujukan kepada kumpulan pemalar masa jalan bagi kelas yang dilaksanakan. Setiap benang mempunyai tindanan sendiri.

    public void someMethod() {
        int a = 10;
        int b = 20;
        int sum = a + b;
    }
    

    Setiap kali someMethod dipanggil, bingkai baharu ditolak ke Kawasan Tindanan. Bingkai ini termasuk pembolehubah setempat (a, b dan jumlah), tindanan operan untuk pengiraan perantaraan dan rujukan kepada kelas kaedah dalam Runtime Constant Pool.

  4. Daftar Kaunter Program (PC)
    PC mengandungi alamat arahan JVM semasa yang sedang dilaksanakan. Setiap rangkaian mempunyai daftar PC sendiri.

  5. Timbunan Kaedah Asli
    Serupa dengan timbunan Java, tetapi digunakan untuk kaedah asli.

Enjin Perlaksanaan

  1. Jurubahasa
    Jurubahasa membaca kod bait Java dan melaksanakannya baris demi baris, menukar setiap arahan kod bait kepada urutan arahan peringkat mesin yang boleh dilaksanakan oleh CPU.

  2. Penyusun Just-In-Time (JIT)
    Menukar bytecode kepada kod mesin asli pada masa jalan untuk meningkatkan prestasi.

  3. Pengumpul Sampah
    Pengumpul sampah bertanggungjawab untuk menguruskan memori secara automatik dalam JVM. Ia mengenal pasti dan mendelokasikan memori yang tidak lagi digunakan, membebaskannya untuk objek baharu.

JRE

JRE ialah pakej perisian yang menyediakan persekitaran yang diperlukan untuk menjalankan aplikasi Java. Ia direka bentuk untuk melaksanakan kod bait Java pada mesin, menjadikannya bahagian penting dalam prinsip Java "tulis sekali, jalankan di mana-mana" (WORA).

public class Person {
    private String name;

    public void setName(String name) {
        this.name = name;
    }
}
Person p = new Person();
public void someMethod() {
    int a = 10;
    int b = 20;
    int sum = a + b;
}
JDK (Java Development Kit)
│
├── JRE (Java Runtime Environment)
│   │
│   ├── JVM (Java Virtual Machine)
│   │   ├── Class Loader
│   │   ├── Bytecode Verifier
│   │   ├── Execution Engine
│   │   │   ├── Interpreter
│   │   │   ├── Just-In-Time (JIT) Compiler
│   │   │   └── Garbage Collector
│   │   └── Runtime Libraries (core libraries like java.lang, java.util, etc.)
│   │
│   └── Java APIs (Core libraries and additional libraries)
│
├── Development Tools (like javac, jdb, jar, javadoc, etc.)
└── Documentation (API docs, guides)
KunciKomponendariJRE

  1. PelaksanaanTugas
    TheJREmemudahkanpelaksanaanJavaaplikasiolehmenyediakanJVMdan 🎝>perpustakaandansumber yang diperlukan.JREmemastikanbahawaJVMmempunyaiselamanya >iaperluuntukmelaksanakantugasinipadamana-manaplatform.Fikirkan JREsebagaipakejlengkapyangtermasukJVM,yangmelakukanberat mengangkat,danlainkomponenyangmenyokongpelaksanaanJavaaplikasi.

  2. KelasPerpustakaan
    JREtermasuksatusetdaristandardkelasJavaperpustakaan,yangmenyediakankodboleh digunakan semula untukmelaksanakantugasbiasa,sepertidatastruktur,I/O,rangkaian,konkurensi, danlagi.

  3. JawaNativeAntaramuka(JNI)
    JNImembenarkanJavaaplikasiuntukberinteraksidengankodasliditulisdalambahasa 🎝>CatauC++.Iniciriadalahpentinguntukmenyepadukancirikhusus platform menggunakanperpustakaanasli yang sedia ada.

  4. KeselamatanPengurus
    KeselamatanPengurusmenguatkuasakandasarkeselamatanuntukJavaaplikasi,mengehadkantindakansepertiseperti failakses,rangkaiansambungan,danpelaksanaanberpotensikodtidak selamat.

JDK(JavaPembangunanKit)

JDKialahalatyangmembolehkanpembangunmenulis,menyusun,nyahpepijat, danmenjalankanJavaaplikasi.IaadalahsatusupersetdariJREdantermasuktambahan alatuntukJawapembangunan.

TerasCiriJDK

  • javac(JavaPenyusun)
    javacadalahgunakanuntukuntukmenukarJavasumberkod(.javafail)ke dalambytecode(.classfail).InibytecodesedangkemudiandilaksanakanolehJavaVirtual Mesin(JVM).

  • java(JavaAplikasiPelancar)
    javaarahanmelancarkanaJavaaplikasi.Iamemuatkankelasyang diperlukan, mentafsirkod bait,danmemulakanaplikasi.

  • jdb(JavaPenyahpepijat)
    jdbialahbaris arahanpenyahpepijatuntukJavaprogram.IamembolehkanandauntukperiksadannyahpepijatJavaaplikasipadamasa jalan.

  • jar(JavaArkibAlat)
    jaralatpakejberbilangfailke dalamasatuarkibfail,biasanyadengana .jarsambungan.IniJARfailadalahdigunakanuntukmengedarkanJavaaplikasidan perpustakaan.

  • javadoc(JavaDokumentasiPenjana)
    javadocmenjanaHTMLdokumentasidariJavasumberkod,menggunakanyangistimewa/***/ulasandikenalisebagaidoculasan.

JVM vs JVE vs JDK, what's the difference?

Feature/Aspect JVM JRE JDK
Purpose Executes Java bytecode Provides the environment to run Java applications Provides tools to develop, compile, debug, and run Java applications
Includes JVM itself, which includes class loader, bytecode verifier, and execution engine JVM + Core libraries (like java.lang, java.util, etc.), and other runtime components JRE + Development tools (like javac, jdb, jar, etc.), documentation
Components - Class Loader
- Bytecode Verifier
- Execution Engine (Interpreter, JIT)
- JVM
- Core Java libraries
- Java Plug-in
- Java Web Start
- JRE
- Java Compiler (javac)
- JAR Tool (jar)
- Debugger (jdb)
- Documentation Generator (javadoc)
- Other development tools
Main Functionality Executes Java bytecode, enabling platform independence Provides the minimum requirements to run Java applications Allows developers to write, compile, and debug Java code
Who Uses It? End-users running Java applications End-users running Java applications Java developers writing and compiling Java applications
Installation Size Smallest Larger than JVM but smaller than JDK Largest (includes JRE and development tools)
Developer Tools No No Yes (includes compiler, debugger, profiler, etc.)
Required to Run Java Programs Yes Yes No (but needed to create Java programs)
Platform Independence Provides platform independence by abstracting the underlying hardware Yes, because it includes the JVM Yes, it includes everything from JRE
Examples of Usage - Running any Java application (e.g., desktop applications, servers) - Running Java applications in production or end-user environments - Writing and compiling Java code
- Packaging applications
- Debugging
Availability Part of JRE and JDK Standalone or part of JDK Standalone package

JDK, JRE, JVM hierarchy

JDK (Java Development Kit)
│
├── JRE (Java Runtime Environment)
│   │
│   ├── JVM (Java Virtual Machine)
│   │   ├── Class Loader
│   │   ├── Bytecode Verifier
│   │   ├── Execution Engine
│   │   │   ├── Interpreter
│   │   │   ├── Just-In-Time (JIT) Compiler
│   │   │   └── Garbage Collector
│   │   └── Runtime Libraries (core libraries like java.lang, java.util, etc.)
│   │
│   └── Java APIs (Core libraries and additional libraries)
│
├── Development Tools (like javac, jdb, jar, javadoc, etc.)
└── Documentation (API docs, guides)

Atas ialah kandungan terperinci Gambaran Keseluruhan Ekosistem Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn