Java Tutorial: Panduan Lengkap Pemrograman menawarkan wawasan komprehensif tentang bahasa pemrograman Java. Dari dasar-dasar hingga konsep pemrograman berorientasi objek (OOP), tutorial ini akan membimbing Anda melalui setiap langkah.
Tutorial ini mencakup berbagai aspek penting, mulai dari instalasi dan konfigurasi lingkungan pengembangan hingga penggunaan pustaka dan framework populer. Anda akan mempelajari konsep inti seperti variabel, tipe data, operator, struktur kontrol, array, koleksi data, dan tentu saja, objek dan kelas dalam konteks OOP. Selain itu, contoh kasus dan solusi, serta praktik baik dan optimasi kode akan memberikan pemahaman mendalam tentang penerapan Java dalam berbagai skenario.
Pengantar Pembelajaran Java
Java adalah bahasa pemrograman berorientasi objek yang populer dan banyak digunakan di berbagai aplikasi. Bahasa ini dikenal dengan kemampuannya untuk menulis kode yang terstruktur, aman, dan dapat dijalankan di berbagai platform. Mempelajari Java membuka pintu bagi pengembangan aplikasi desktop, web, dan mobile, serta membuka peluang karir yang menjanjikan.
Ringkasan Bahasa Pemrograman Java
Java adalah bahasa pemrograman yang berorientasi objek, artinya kode diorganisasikan dalam bentuk objek-objek yang saling berinteraksi. Bahasa ini dirancang untuk menjadi aman, terstruktur, dan dapat dijalankan di berbagai platform ( write once, run anywhere). Java menggunakan mesin virtual Java (JVM) untuk menjalankan kode, sehingga kode Java dapat dijalankan di berbagai sistem operasi tanpa modifikasi.
Manfaat Mempelajari Java, Java tutorial
Mempelajari Java menawarkan sejumlah manfaat, di antaranya:
- Meningkatkan Pemahaman Pemrograman: Java menyediakan fondasi yang kuat dalam konsep pemrograman berorientasi objek.
- Membuka Banyak Peluang Karir: Java merupakan bahasa pemrograman yang banyak digunakan dalam industri, sehingga penguasaan Java dapat meningkatkan peluang karir di bidang pengembangan perangkat lunak.
- Pengembangan Aplikasi Beragam: Java dapat digunakan untuk mengembangkan berbagai jenis aplikasi, mulai dari aplikasi desktop, web, hingga mobile.
- Komunitas yang Besar dan Aktif: Komunitas Java yang besar dan aktif menyediakan sumber daya, dukungan, dan dokumentasi yang melimpah untuk para pembelajar.
Aplikasi yang Menggunakan Java
Java digunakan dalam berbagai aplikasi, antara lain:
- Aplikasi Desktop: Banyak aplikasi desktop yang menggunakan Java, seperti aplikasi perkantoran, aplikasi bisnis, dan aplikasi multimedia.
- Aplikasi Web: Java Server Pages (JSP) dan JavaServer Faces (JSF) adalah teknologi Java yang digunakan untuk mengembangkan aplikasi web.
- Aplikasi Mobile: Java juga digunakan untuk mengembangkan aplikasi mobile, meskipun saat ini Android lebih banyak menggunakan Kotlin.
- Aplikasi Perbankan: Banyak sistem perbankan menggunakan Java untuk keamanan dan stabilitas.
Perbandingan Java dengan Bahasa Pemrograman Lain
Fitur | Java | Python | JavaScript |
---|---|---|---|
Orientasi Objek | Ya | Ya (tapi fleksibel) | Tidak (umumnya prosedural atau prototipe) |
Platform | Multiplatform (JVM) | Multiplatform (umumnya dengan interpreter) | Multiplatform (umumnya di browser) |
Kecepatan | Relatif cepat | Relatif lambat | Relatif cepat (di browser) |
Penggunaan Umum | Aplikasi enterprise, server-side | Pemrograman umum, data science, scripting | Aplikasi web front-end, mobile |
Contoh Program “Hello, World!”
public class HelloWorld
public static void main(String[] args)
System.out.println("Hello, World!");
Contoh di atas menampilkan teks “Hello, World!” di konsol. Kode ini menggunakan kelas HelloWorld
dan metode main
sebagai titik masuk program.
Tutorial Dasar Pemrograman Java
Memulai perjalanan dalam dunia pemrograman Java memerlukan pemahaman dasar tentang instalasi lingkungan pengembangan dan konsep-konsep inti. Tutorial ini akan memandu Anda melalui langkah-langkah penting untuk membangun fondasi pemrograman Java yang kuat.
Instalasi JDK dan Lingkungan Pengembangan
Langkah awal dalam pemrograman Java adalah menginstal Java Development Kit (JDK). JDK menyediakan alat-alat yang diperlukan untuk mengkompilasi dan menjalankan kode Java. Setelah JDK terinstal, Anda perlu memilih dan menginstal IDE (Integrated Development Environment) seperti Eclipse atau IntelliJ IDEA. IDE ini menyediakan antarmuka visual untuk menulis, mengedit, dan mengkompilasi kode Java.
- Unduh dan instal JDK dari situs web resmi Oracle.
- Konfigurasi variabel lingkungan PATH untuk mengakses compiler Java (javac) dan Java Runtime Environment (JRE).
- Pilih dan instal IDE pilihan Anda. Eclipse dan IntelliJ IDEA merupakan pilihan populer.
Konsep Dasar Pemrograman Java
Pemahaman tentang konsep-konsep dasar pemrograman sangat penting. Konsep-konsep ini meliputi variabel, tipe data, operator, dan ekspresi.
- Variabel digunakan untuk menyimpan data. Variabel memiliki tipe data yang menentukan jenis data yang dapat disimpan di dalamnya. Contoh:
int angka = 10;
- Tipe Data menentukan jenis data yang dapat disimpan dalam variabel. Java memiliki berbagai tipe data, seperti
int
(integer),double
(double-precision floating-point),String
(teks), dan lain-lain. - Operator digunakan untuk melakukan operasi pada data. Contoh:
+
(penjumlahan),-
(pengurangan),*
(perkalian),/
(pembagian). - Ekspresi adalah kombinasi dari variabel, operator, dan literal yang menghasilkan nilai. Contoh:
angka + 5
Contoh Program Input dan Output
Berikut contoh program sederhana yang menampilkan input dari pengguna dan memprosesnya:
import java.util.Scanner;
public class InputOutput
public static void main(String[] args)
Scanner input = new Scanner(System.in);
System.out.print("Masukkan nama Anda: ");
String nama = input.nextLine();
System.out.println("Halo, " + nama + "!");
Program ini meminta pengguna untuk memasukkan nama dan kemudian menampilkan salam kepada pengguna.
Struktur Kontrol Aliran
Struktur kontrol aliran memungkinkan Anda untuk mengendalikan alur eksekusi program. Struktur ini meliputi percabangan ( if-else) dan perulangan ( for, while).
- Percabangan digunakan untuk menjalankan blok kode tertentu hanya jika kondisi tertentu terpenuhi. Contoh:
if (angka > 10) ...
- Perulangan digunakan untuk menjalankan blok kode berulang kali. Contoh:
for (int i = 0; i < 10; i++) ...
Daftar Tipe Data Dasar
Tipe Data | Deskripsi |
---|---|
int |
Bilangan bulat |
double |
Bilangan desimal |
float |
Bilangan desimal presisi tunggal |
char |
Karakter tunggal |
boolean |
Nilai logika (true/false) |
String |
Deretan karakter |
Objek dan Kelas di Java: Java Tutorial
Konsep objek dan kelas merupakan inti dari pemrograman berorientasi objek (OOP) di Java. Pemahaman mendalam tentang objek dan kelas akan membantu dalam membangun aplikasi yang terstruktur, terorganisir, dan mudah dipelihara.
Konsep Objek dan Kelas
Dalam pemrograman berorientasi objek, objek adalah representasi dari entitas dunia nyata, seperti mobil, manusia, atau buku. Kelas, di sisi lain, adalah cetak biru atau template yang mendefinisikan struktur dan perilaku objek. Kelas menentukan jenis data (atribut) yang dimiliki objek dan tindakan (metode) yang dapat dilakukan objek tersebut.
Contoh Implementasi Kelas dan Objek
Berikut contoh implementasi kelas dan objek dalam Java:
public class Mobil
// Atribut
String merek;
String tipe;
int tahun;
// Konstruktor
public Mobil(String merek, String tipe, int tahun)
this.merek = merek;
this.tipe = tipe;
this.tahun = tahun;
// Metode
public void tampilkanDetail()
System.out.println("Merek: " + merek);
System.out.println("Tipe: " + tipe);
System.out.println("Tahun: " + tahun);
public class Main
public static void main(String[] args)
// Membuat objek dari kelas Mobil
Mobil mobil1 = new Mobil("Toyota", "Camry", 2023);
Mobil mobil2 = new Mobil("Honda", "Civic", 2022);
// Memanggil metode tampilkanDetail pada objek mobil1 dan mobil2
mobil1.tampilkanDetail();
mobil2.tampilkanDetail();
Contoh di atas mendefinisikan kelas Mobil
dengan atribut merek
, tipe
, dan tahun
. Konstruktor digunakan untuk menginisialisasi objek Mobil
ketika dibuat. Metode tampilkanDetail
menampilkan detail mobil. Dalam metode main
, dua objek Mobil
, mobil1
dan mobil2
, dibuat dan detailnya ditampilkan.
Enkapsulasi
Enkapsulasi adalah prinsip OOP yang menggabungkan data (atribut) dan metode (perilaku) yang beroperasi pada data ke dalam satu unit (kelas). Hal ini meningkatkan keamanan dan menyembunyikan detail implementasi dari pengguna kelas.
Pewarisan
Pewarisan memungkinkan sebuah kelas (kelas turunan) untuk mewarisi atribut dan metode dari kelas lain (kelas dasar). Ini membantu dalam mengurangi pengulangan kode dan meningkatkan reusability.
Polimorfisme
Polimorfisme memungkinkan objek dari kelas yang berbeda untuk merespon metode dengan nama yang sama dengan cara yang berbeda. Hal ini meningkatkan fleksibilitas dan ekstensibilitas kode.
Diagram Hubungan Objek dan Kelas
Hubungan antara objek dan kelas dapat digambarkan dengan diagram sederhana, seperti diagram kelas UML. Diagram ini menunjukkan kelas dan atributnya, serta hubungan antar kelas, termasuk pewarisan.
Kelas | Atribut | Metode |
---|---|---|
Mobil | merek, tipe, tahun | tampilkanDetail() |
Konstruktor
Konstruktor adalah metode khusus dalam sebuah kelas yang digunakan untuk menginisialisasi objek saat dibuat. Konstruktor memiliki nama yang sama dengan kelas dan tidak memiliki tipe pengembalian. Contohnya telah ditunjukkan dalam implementasi kelas Mobil
sebelumnya.
Array dan Koleksi Data
Array dan koleksi data merupakan struktur data fundamental dalam pemrograman Java untuk menyimpan dan mengelola kumpulan data. Memahami perbedaan dan cara penggunaan keduanya sangat penting dalam pengembangan aplikasi Java.
Array
Array merupakan struktur data yang menyimpan kumpulan elemen dengan tipe data yang sama. Elemen-elemen diakses menggunakan indeks numerik, dimulai dari 0. Array memiliki ukuran tetap yang ditentukan saat deklarasi. Hal ini membuat akses data cepat, tetapi kurang fleksibel jika ukuran data perlu berubah.
- Deklarasi: TipeData[] namaArray = new TipeData[ukuran];
- Inisialisasi: namaArray[indeks] = nilai;
- Akses: nilai = namaArray[indeks];
Contoh:
int[] angka = new int[5];
angka[0] = 10;
angka[1] = 20;
// ... dan seterusnya
int nilai = angka[0]; // Mengakses elemen pertama
System.out.println(nilai); // Output: 10
Perbedaan Array dan Koleksi Data
Koleksi data, seperti ArrayList
dan LinkedList
, menawarkan fleksibilitas yang lebih besar dibandingkan array. Ukuran koleksi dapat berubah dinamis, sehingga lebih cocok untuk situasi di mana jumlah data tidak pasti.
Fitur | Array | ArrayList |
---|---|---|
Ukuran | Tetap | Dinamis |
Tipe Data | Sama | Bisa berbeda (Object) |
Penggunaan Memori | Efisien | Bisa lebih boros (untuk ukuran kecil) |
Akses Data | Cepat (indeks) | Lebih lambat (iterasi) |
ArrayList
ArrayList
merupakan implementasi koleksi data berbasis array. Ia menawarkan kemampuan untuk menyimpan dan mengakses data dengan cepat melalui indeks, dan dapat tumbuh sesuai kebutuhan.
import java.util.ArrayList;
import java.util.List;
public class ArrayListExample
public static void main(String[] args)
List nama = new ArrayList<>();
nama.add("Andi");
nama.add("Budi");
System.out.println(nama.get(0)); // Output: Andi
LinkedList
LinkedList
merupakan implementasi koleksi data berbasis linked list. Ia lebih fleksibel dalam hal penambahan dan penghapusan elemen di tengah list, tetapi akses data menggunakan indeks sedikit lebih lambat daripada ArrayList
.
import java.util.LinkedList;
import java.util.List;
public class LinkedListExample
public static void main(String[] args)
List angka = new LinkedList<>();
angka.add(10);
angka.add(20);
System.out.println(angka.get(0)); // Output: 10
Pengantar Pemrograman Berorientasi Objek (OOP)
Pemrograman Berorientasi Objek (OOP) merupakan paradigma pemrograman yang mengorganisir program dengan menggunakan objek. Objek ini berisi data (atribut) dan metode (fungsi) yang beroperasi pada data tersebut. OOP menawarkan pendekatan yang terstruktur dan mudah dipahami untuk mengembangkan perangkat lunak yang kompleks.
Konsep-konsep Utama OOP
Konsep-konsep utama dalam OOP meliputi abstraksi, enkapsulasi, pewarisan, dan polimorfisme. Pemahaman terhadap konsep-konsep ini sangat penting untuk mengembangkan program Java yang efektif dan terstruktur.
- Abstraksi: Memfokuskan pada detail penting dari suatu objek dan menyembunyikan detail yang tidak relevan. Ini memungkinkan pengguna untuk berinteraksi dengan objek tanpa perlu memahami implementasi internalnya. Contohnya, kita dapat menggunakan objek “mobil” tanpa perlu mengetahui detail kompleksitas mesinnya.
- Enkapsulasi: Menggabungkan data dan metode yang beroperasi pada data tersebut ke dalam suatu unit yang disebut kelas. Ini memungkinkan perlindungan data dan kontrol terhadap akses ke data tersebut. Enkapsulasi meningkatkan keamanan dan ketahanan program.
- Pewarisan: Memungkinkan suatu kelas (kelas turunan) untuk mewarisi atribut dan metode dari kelas lain (kelas dasar). Hal ini memudahkan pengorganisasian dan pengulangan kode, serta meningkatkan efisiensi.
- Polimorfisme: Kemampuan suatu objek untuk mengambil berbagai bentuk. Polimorfisme memungkinkan penggunaan kode yang sama untuk berbagai jenis objek, yang meningkatkan fleksibilitas dan kemudahan pemeliharaan program. Contohnya, metode “mencetak” dapat diterapkan pada berbagai jenis objek, seperti mobil dan pesawat.
Contoh Program Java
Berikut contoh sederhana penerapan OOP di Java:
class Hewan
String nama;
void suara()
System.out.println("Suara hewan");
class Kucing extends Hewan
void suara()
System.out.println("Meong");
public class Main
public static void main(String[] args)
Kucing kucing = new Kucing();
kucing.nama = "Whiskers";
kucing.suara();
Contoh di atas mendemonstrasikan konsep pewarisan dimana kelas Kucing
mewarisi atribut dan metode dari kelas Hewan
.
Pentingnya Interface
Interface di Java berperan penting dalam OOP. Interface mendefinisikan kontrak yang harus diimplementasikan oleh kelas. Hal ini meningkatkan fleksibilitas dan memungkinkan penggunaan kode yang sama untuk berbagai jenis objek yang berbeda.
Perbedaan Class dan Interface
Fitur | Class | Interface |
---|---|---|
Definisi | Blueprint untuk objek | Kontrak yang harus diimplementasikan |
Atribut | Mempunyai atribut | Tidak mempunyai atribut |
Metode | Mempunyai metode | Hanya mendeklarasikan metode, tidak mengimplementasikannya |
Implementasi | Kelas dapat diinstansiasi | Kelas harus mengimplementasikan interface |
Class memiliki implementasi, sementara interface hanya menyediakan kontrak.
Hirarki Kelas dan Pewarisan
Hirarki kelas menggambarkan hubungan antar kelas melalui pewarisan. Diagram berikut menunjukkan contoh hirarki kelas:
(Disini seharusnya ada diagram hirarki kelas, misalnya dengan menggunakan UML. Namun, karena format yang diminta tidak memungkinkan untuk menggambar diagram, penjelasan tertulis saja akan disajikan.)
Contohnya, kelas Mamalia
bisa menjadi kelas dasar, dan kelas Kucing
, Anjing
, dan Gajah
dapat mewarisi dari kelas Mamalia
. Struktur ini menunjukkan hubungan hierarki dan spesialisasi antar kelas.
Contoh Kasus dan Solusi
Dalam pemrograman Java, kemampuan untuk memecahkan masalah menggunakan konsep yang telah dipelajari sangat penting. Contoh kasus berikut akan memperlihatkan penerapan konsep-konsep inti dalam Java untuk menyelesaikan masalah sederhana, beserta solusi alternatif dan pertimbangannya.
Pengelolaan Data Produk
Permasalahan: Sebuah aplikasi membutuhkan sistem untuk menyimpan dan mengelola data produk (nama, harga, stok). Data ini perlu diakses dan dimodifikasi dengan mudah.
Solusi:
- Representasi Objek: Kelas
Product
didefinisikan untuk merepresentasikan setiap produk. Kelas ini memiliki atribut untuk menyimpan nama, harga, dan stok produk. Metode getter dan setter digunakan untuk mengakses dan memodifikasi atribut-atribut ini. - Penggunaan ArrayList:
ArrayList
digunakan untuk menyimpan objekProduct
. Hal ini memungkinkan penambahan dan penghapusan produk dengan mudah. - Metode Pencarian: Metode pencarian dapat diimplementasikan untuk menemukan produk tertentu berdasarkan namanya. Hal ini mempermudah pencarian produk dalam daftar yang besar.
Contoh Kode Java
import java.util.ArrayList; import java.util.List; class Product private String name; private double price; private int stock; // Constructor, getter, dan setter // ... (Kode untuk constructor, getter, dan setter) public class ProductManagement private List<Product> products; public ProductManagement() products = new ArrayList<Product>(); public void addProduct(Product product) products.add(product); public Product findProduct(String productName) for (Product product : products) if (product.getName().equals(productName)) return product; return null; // Produk tidak ditemukan // ...
(Kode untuk metode lainnya)
Solusi Alternatif dan Pertimbangan
Sebagai alternatif, bisa menggunakan HashMap
untuk menyimpan data produk, dengan kunci berupa nama produk. Hal ini dapat meningkatkan kecepatan pencarian. Namun, penggunaan ArrayList
lebih sederhana untuk kasus yang lebih sederhana. Pertimbangannya meliputi kebutuhan aplikasi dan ukuran data yang akan ditangani.
Tips dan Trik
Perhatikan penggunaan
try-catch
block untuk menangani potensi kesalahan, seperti pengecualian saat mengakses atau memodifikasi data. Hal ini sangat penting untuk menjaga stabilitas aplikasi.
Pengelolaan Kesalahan Umum
Kesalahan umum dalam pemrograman Java seringkali terkait dengan kesalahan tipe data, kesalahan logika dalam algoritma, dan masalah akses memori. Periksa kembali tipe data yang digunakan dan logika program untuk mengidentifikasi dan memperbaiki kesalahan ini. Penggunaan debugger dapat membantu dalam menelusuri masalah dan menemukan akar penyebab kesalahan.
Praktik Baik dan Optimasi Kode
Penulisan kode Java yang efektif tidak hanya mencakup logika yang tepat, tetapi juga praktik baik dan optimasi untuk kinerja. Praktik-praktik ini memastikan kode mudah dibaca, dipelihara, dan berjalan dengan efisien. Pemformatan kode yang baik dan optimasi kinerja program sangat penting untuk pengembangan aplikasi Java yang profesional dan andal.
Pemformatan Kode yang Baik
Pemformatan kode yang konsisten dan terstruktur meningkatkan keterbacaan dan pemeliharaan kode. Ini memungkinkan pengembang lain untuk memahami dan berkolaborasi lebih mudah. Dengan pemformatan yang baik, kode akan lebih mudah dipahami dan di-debug.
- Konsistensi dalam penggunaan spasi, tab, dan indentasi.
- Penggunaan penamaan variabel dan metode yang deskriptif.
- Pemisahan kode menjadi modul-modul kecil yang lebih terstruktur dan mudah dipahami.
- Dokumentasi yang jelas dan lengkap pada kode, termasuk variabel, metode, dan kelas.
Optimasi Kinerja Program Java
Optimasi kinerja program Java bertujuan untuk meminimalkan waktu eksekusi dan penggunaan sumber daya. Ini penting untuk aplikasi yang membutuhkan responsif dan efisiensi tinggi. Optimasi dapat dilakukan pada berbagai aspek, mulai dari algoritma hingga penggunaan memori.
- Penggunaan Algoritma yang Efektif: Memilih algoritma yang tepat untuk tugas tertentu sangat penting. Algoritma yang kompleks dan tidak efisien dapat memperlambat program secara signifikan.
- Penggunaan Struktur Data yang Tepat: Memilih struktur data yang sesuai dengan kebutuhan aplikasi dapat meningkatkan kinerja. Misalnya, menggunakan ArrayList untuk data yang ukurannya tidak tetap, dan LinkedList untuk operasi penyisipan dan penghapusan yang sering.
- Penggunaan Koleksi Data yang Efisien: Pilih koleksi data yang sesuai dengan kebutuhan dan hindari overhead yang tidak perlu. Contohnya, penggunaan HashMap untuk pencarian data yang cepat.
- Penggunaan Metode yang Teroptimasi: Pilih metode-metode bawaan Java yang sudah teroptimasi untuk tugas-tugas tertentu.
Daftar Praktik Baik Pemrograman Java
No | Praktik Baik | Penjelasan |
---|---|---|
1 | Pemformatan Kode yang Konsisten | Memastikan konsistensi dalam penggunaan spasi, tab, dan indentasi untuk meningkatkan keterbacaan kode. |
2 | Penamaan Variabel dan Metode yang Deskriptif | Memilih nama variabel dan metode yang mencerminkan fungsinya untuk meningkatkan pemahaman kode. |
3 | Penggunaan Komentar yang Efektif | Menambahkan komentar yang menjelaskan tujuan dan fungsi kode untuk pemeliharaan dan pemahaman lebih lanjut. |
4 | Penggunaan Struktur Data yang Tepat | Memilih struktur data yang sesuai dengan kebutuhan aplikasi untuk meningkatkan efisiensi. |
5 | Penggunaan Algoritma yang Efektif | Memilih algoritma yang tepat untuk tugas tertentu untuk meminimalkan waktu eksekusi. |
Contoh Implementasi Optimasi Kode
Contoh berikut menunjukkan bagaimana penggantian for loop dengan Stream API dapat meningkatkan performa:
// Kode sebelum optimasi
List numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = 0;
for (int number : numbers)
sum += number;
// Kode setelah optimasi
List numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.stream().mapToInt(Integer::intValue).sum();
Contoh ini menunjukkan penggantian for loop dengan Stream API untuk perhitungan jumlah. Stream API seringkali lebih efisien dan lebih mudah dibaca untuk operasi koleksi data.
Ulasan Penutup
Semoga tutorial ini memberikan pemahaman yang komprehensif dan praktis tentang bahasa pemrograman Java. Dengan menguasai konsep-konsep yang telah dibahas, Anda akan siap menghadapi tantangan pemrograman dan mengembangkan aplikasi yang handal. Teruslah berlatih dan eksplorasi kemampuan Anda lebih lanjut!
Pertanyaan Umum (FAQ)
Apa perbedaan utama antara Java dan Python?
Java adalah bahasa pemrograman yang dikompilasi, sedangkan Python adalah bahasa pemrograman yang ditafsirkan. Java umumnya lebih cepat dalam eksekusi, sedangkan Python lebih mudah dipelajari dan digunakan untuk pemrograman cepat.
Bagaimana cara menginstal JDK?
Langkah-langkah instalasi bervariasi tergantung pada sistem operasi. Anda dapat menemukan panduan instalasi JDK di situs web resmi Oracle.
Apakah Java cocok untuk pengembangan aplikasi mobile?
Ya, Java dapat digunakan untuk pengembangan aplikasi mobile melalui platform seperti Android.
Bagaimana cara mengatasi kesalahan “Error: Could not find or load main class”?
Pastikan nama file Java sama dengan nama class dan file berada di direktori yang benar.