**Java** ialah bahasa pengaturcaraan tahap tinggi yang direka oleh Sun Microsystems (kini dimiliki oleh Oracle). Ia menggunakan paradigma **berorientasikan objek (OOP)** dan boleh dijalankan di mana-mana platform menggunakan **Java Virtual Machine (JVM)**, iaitu runtime khas untuk menjalankan aplikasi Java.
Java digunakan secara meluas untuk membangunkan aplikasi web, aplikasi mudah alih (terutama Android), sistem perniagaan, permainan video, dan perisian perusahaan.
> ⚙️ **Untuk sistem SKB yang dibangunkan oleh pasukan kita, Java digunakan sebagai bahasa utama bagi bahagian backend**, kerana kestabilan, keselamatan dan kemampuannya mengendalikan aplikasi berskala besar.
---
## 🔧 Ciri-Ciri Utama Java
Bahasa Java mempunyai beberapa kelebihan penting:
- ✅ **Berorientasikan Objek (OOP)** – Bina aplikasi yang modular dan mudah diurus
- 🔁 **Platform-Independent** – Kod boleh dijalankan di mana-mana platform yang menyokong JVM
- 🛡️ **Selamat & Terkawal** – Dengan pengurusan memori automatik
- 🌐 **Digunakan Secara Luas** – Digunakan oleh syarikat gergasi dan komuniti global
---
## 🧱 Struktur Asas Program Java
🔰 Ini ialah struktur minimum program Java yang sah:
```java
publicclassHelloWorld{
publicstaticvoidmain(String[]args){
System.out.println("Hello, dunia!");
}
}
```
📌 Penjelasan:
-`class HelloWorld` – Semua kod mesti berada dalam kelas
-`main()` – Titik masuk program
-`System.out.println()` – Arahan untuk paparan ke skrin
---
## 🔣 Pemboleh Ubah dan Jenis Data
📌 Kita gunakan **pemboleh ubah** untuk menyimpan nilai dalam memori semasa program dijalankan.
**Docker** ialah platform sumber terbuka yang membolehkan pembangun membungkus aplikasi bersama semua kebergantungan (dependencies) ke dalam satu unit yang dipanggil **container**.
### 🌟 Kelebihan Docker:
- 🚀 **Cepat & Ringan** – Lebih pantas berbanding VM (Virtual Machine) dan guna sumber lebih sedikit.
- 🔄 **Konsisten** – "It works on my machine" tidak lagi jadi masalah.
- 🧪 **Mudah untuk Ujian** – Boleh bina & uji aplikasi dalam persekitaran yang terpencil.
---
## 📦 Konsep Asas Docker
### 1. 🧊 Image
- Imej ialah **template read-only** yang mengandungi segala yang diperlukan untuk menjalankan aplikasi: kod, runtime, pustaka, dan dependencies.
- Contoh: `node:16-alpine`, `mysql:latest`
### 2. 📦 Container
- Container ialah **instance** aktif daripada image.
- Ia adalah persekitaran yang terpencil dan ringan untuk menjalankan aplikasi.
### 3. 💾 Volume
- Volume digunakan untuk **menyimpan data** secara berterusan di luar container.
- Ini penting untuk data seperti pangkalan data yang anda tidak mahu hilang apabila container dimusnahkan.
### 4. 📝 Dockerfile
- Fail konfigurasi yang digunakan untuk **bina image**.
- Mengandungi arahan seperti `FROM`, `COPY`, `RUN`, `EXPOSE`, dan `CMD`.
### 5. 🔗 Docker Compose
- Alat untuk **urus berbilang container** dalam satu fail YAML (`docker-compose.yml`).
- Memudahkan deploy aplikasi yang ada frontend, backend, dan pangkalan data sekaligus.
- Contoh perintah:
```bash
docker-compose up -d--build
```
---
# 🚀 LATIHAN AMALI: Docker untuk Aplikasi React + Spring Boot