Apa Classpath ing Jawa lan carane nginstal?
Sumber: Sedheng Ngerti dhasar pemrograman lan aliran eksekusi file program mbantu kita ngerti basa. Ngerti parameter Classpath minangka salah sawijining konsep dhasar sing kudu dingerteni saben pangembang Java. Dina iki kita bakal ngrembug apa classpath ( Classpath ) iku, carane nyetel, lan carane mbantu JVM nglakokaké file kelas.Apa iku Classpath?
Classpath minangka salah sawijining parameter dhasar ing Jawa, nanging asring disalahake dening wong anyar babagan program. Kanggo nyederhanakake, Classpath mung minangka kumpulan path sing compiler Java lan JVM kudu nemokake kelas sing perlu kanggo ngumpulake utawa nglakokake kelas liyane.Carane Classpath mbantu JVM ing eksekusi file kelas
Ayo dadi miwiti karo conto. Ayo nganggep kita duwe file Main.java sing dumunung ing folder /Users/vikram/Documents/test-java/src/com/programming/v1/Main.java .package com.programming.v1;
public class Main {
public static void main(String[] args) {
System.out.println("Hello classpath");
}
}
Contone, kita ana ing /Users/vikram/Documents lan pengin ngumpulake kelas iki:
javac test-java/src/com/programming/v1/Main.java
Saiki, kanggo nglakokaké file kelas iki, kita kudu ngandhani Java Virtual Machine ngendi kanggo nggoleki file .class nggunakake classpath utawa flag cp ing printah java .
vg@lp1 Documents % java -cp "test-java/src" com.programming.v1.Main
Hello classpath
vg@lp1 Documents % java -classpath "test-java/src" com.programming.v1.Main
Hello classpath
Parameter pisanan yaiku folder root ing ngendi paket kasebut ditulis. Parameter kapindho yaiku jeneng paket kanthi jeneng kelas. Nalika printah Jawa dieksekusi, Java Virtual Machine katon ing folder test-java / src banjur mbukak kelas utama kanggo nglakokaké.
Cara nyetel variabel Classpath
Variabel Classpath bisa disetel kaya ing ngisor iki ing mesin Linux:export CLASSPATH="test-java/src"
Classpath ing mesin Windows bisa ditambahake / dianyari nggunakake variabel lingkungan. Sawise variabel lingkungan disetel, printah java bisa dieksekusi kaya ing ngisor iki:
vg@lp1 Documents % java com.programming.v1.Main
Hello classpath
Iku kabeh sing kudu dingerteni babagan Classpath . Matur nuwun kanggo maca!
Imut ing Jawa
Sumber: Variabel Sedheng ing basa Jawa ana rong jinis yaiku primitif lan referensi. Kabeh ing Jawa liwati dening Nilai, nanging ing cilik saka jinis referensi, data sumber bisa dianyari nggunakake alamat memori liwati. Tembung kunci pungkasan digunakake kanggo nggawe variabel tumindak minangka konstanta, yaiku, supaya ora diganti. Iki bisa digunakake kanthi apik kanggo primitif sing ora duwe memori tumpukan, dene kanggo jinis referensi mung reassignment diwatesi lan negara internal bisa diganti. Iki bisa nyebabake akeh masalah konkurensi lan kahanan balapan. Dadi, kalebu ciri sing ora owah ing jinis biasa ing Jawa menehi akeh keuntungan.Paedah Imbuhan ing Jawa
1. Utas safety
Jinis sing ora bisa diowahi kekebalan kanggo kahanan balapan ing lingkungan multi-thread amarga obyek bakal tetep konsisten sawise digawe. Akeh utas ora bisa ngganti kahanan internal, mula sinkronisasi ora dibutuhake.2. Jinis dhasar
String ing Pustaka Standar Jawa minangka conto sing apik kanggo kelas dhasar. Iki minangka kelas sing gampang banget lan ora bisa diganti sing bisa digunakake kanggo mbangun domain logika bisnis ing ndhuwur. Kajaba iku, jinis sing ora bisa diganti bisa tumindak minangka jinis dhasar sing apik kanggo dibangun.Karakteristik
1. Lapangan pribadi lan Final
Kolom sing ngemot status obyek iku pribadi lan final . Visibilitas pribadi ngalangi akses langsung menyang lapangan, dene visibilitas pungkasan njamin yen lapangan ditugasake mung sapisan.2. Ora ana cara modifier
Lapangan pribadi ora bisa diakses ing njaba kelas. Biasane, metode akses (getters) lan metode modifier (setter), diwenehake kanggo maca lan nulis menyang lapangan. Kanggo mesthekake konsistensi, modifiers ora diijini.3. Kelas pungkasan
Ngidini warisan kelas bisa ngilangi immutability. A subclass ngluwihi kelas immutable bisa mengaruhi negara obyek. Mulane, kelas pungkasan .4. Salinan pertahanan
Sajrone nggawe obyek, tinimbang menehi argumen saka konstruktor langsung menyang lapangan pribadi, nggawe salinan jero (utawa salinan sing ora bisa diganti) saka argumen kasebut bakal nyedhiyakake modifikasi eksternal. Yen salah siji argumen minangka jinis referensi, bisa gampang dimanipulasi ing mburi panelpon. Nggawe salinan protèktif ngidini sampeyan ngindhari manipulasi iki. Kajaba iku, kanggo aksesoris (getters), tinimbang langsung ngrujuk lapangan internal, salinan kasebut bisa dituduhake kanthi bebas.Implementasine
pegawe
import java.time.LocalDate;
import java.util.List;
import static java.util.List.copyOf;
public final class Employee {
private final long id;
private final String name;
private final LocalDate joinDate;
private final List<String> achievements;
public Employee(long id,
String name,
LocalDate joinDate,
List<String> achievements) {
this.id = id;
this.name = name;
this.joinDate = joinDate;
this.achievements = copyOf(achievements);
}
public long getId() {
return id;
}
public String getName() {
return name;
}
public LocalDate getJoinDate() {
return joinDate;
}
public List<String> getAchievements() {
return achievements;
}
}
-
Ora kabeh lapangan duwe salinan protèktif ing konstruktor. Iki amarga id primitif lan jeneng lan kolom joinDate minangka jinis sing ora bisa diganti. Padha ora bisa diganti dening panelpon lan bakal tetep ora diganti, nalika lapangan prestasi mbutuhake salinan argumen digawe nggunakake List.copyOf cara . Iki amarga copyOf ngasilake Daftar sing ora bisa diganti .
-
Kajaba iku, metode accessor ngasilake lapangan kanthi langsung tinimbang salinan defensif amarga kabeh jinis lapangan ora bisa diganti (kalebu prestasi ) lan mulane ora bisa diowahi ing njaba kelas.
dandan
Sadurunge Jawa 16
Implementasi Karyawan bisa ditambah karo perpustakaan kayata Lombok . Iki nyuda verbosity ing kode lan mbantu katon luwih resik. Pustaka dilengkapi karo anotasi kanggo nyepetake kode standar. @Value (anotasi) bisa digunakake kanggo nggawe getter lan konstruktor kanggo kabeh argumen. Iki uga nggawe kelas final lan lapangan pribadi lan final . Minangka cathetan, uga ngasilake toString , equals lan metode hashCode . Implementasi Karyawan bisa ditulis maneh nggunakake @Value kaya ing ngisor iki:import lombok.Value;
import java.time.LocalDate;
import java.util.List;
import static java.util.List.copyOf;
@Value
public class Employee {
long id;
String name;
LocalDate joinDate;
List<String> achievements;
public Employee(long id,
String name,
LocalDate joinDate,
List<String> achievements) {
this.id = id;
this.name = name;
this.joinDate = joinDate;
this.achievements = copyOf(achievements);
}
}
Jawa 16 lan mengko
Rilis Java 16 ngenalake fitur Rekam anyar . Iki (kaya sing kasebut JEP) minangka kelas sing tumindak minangka operator transparan data sing ora bisa diganti lan bisa dianggep minangka tuple nominal. Kelas Karyawan bisa dileksanakake maneh minangka karyawan rekaman kaya ing ngisor iki.import java.time.LocalDate;
import java.util.List;
import static java.util.List.copyOf;
public record Employee(long id,
String name,
LocalDate joinDate,
List<String> achievements) {
public Employee(long id,
String name,
LocalDate joinDate,
List<String> achievements) {
this.id = id;
this.name = name;
this.joinDate = joinDate;
this.achievements = copyOf(achievements);
}
}
GO TO FULL VERSION