جاوا ۾ Classpath ڇا آهي ۽ ان کي ڪيئن انسٽال ڪجي؟
ذريعو: ميڊيم پروگرامنگ جي بنيادي ڄاڻ ۽ پروگرام فائلن جي عمل جي وهڪري کي ڄاڻڻ اسان کي ٻولي سمجھڻ ۾ مدد ڪري ٿي. Classpath پيٽرولر کي ڄاڻڻ بنيادي تصورن مان هڪ آهي جيڪو هر جاوا ڊولپر کي ڄاڻڻ گهرجي. اڄ اسان بحث ڪنداسين ته ڪلاس پاٿ ( Classpath ) ڇا آهي، ان کي ڪيئن سيٽ ڪجي، ۽ اهو ڪيئن JVM کي ڪلاس فائلن تي عمل ڪرڻ ۾ مدد ڪري ٿو.Classpath ڇا آهي؟
Classpath جاوا ۾ مکيه پيراگرافن مان هڪ آهي، پر اهو اڪثر ڪري غلط سمجھيو ويندو آهي نون ايندڙن پاران پروگرامنگ ۾. آسان ڪرڻ لاءِ، هڪ Classpath صرف رستن جو هڪ سيٽ آهي جنهن سان گڏ Java compiler ۽ JVM کي لازمي ڪلاس ڳولڻ گهرجن ٻين طبقن کي گڏ ڪرڻ يا ان تي عمل ڪرڻ لاءِ.ڪيئن Classpath ڪلاس فائلن تي عمل ڪرڻ ۾ JVM جي مدد ڪري ٿي
اچو ته هڪ مثال سان شروع ڪريون. اچو ته فرض ڪريون اسان وٽ Main.java فائل آهي جيڪا /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");
}
}
اچو ته چئو ته اسان /Users/vikram/Documents ۾ آهيون ۽ هن ڪلاس کي گڏ ڪرڻ چاهيون ٿا:
javac test-java/src/com/programming/v1/Main.java
ھاڻي، ھن ڪلاس فائل کي هلائڻ لاءِ، اسان کي جاوا ورچوئل مشين کي ٻڌائڻو پوندو ته .class فائل کي ڪٿي ڳولڻو آھي classpath يا java ڪمانڊ ۾ cp flag استعمال ڪندي .
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
پهريون پيٽرولر روٽ فولڊر آهي جتي پيڪيج لکيو ويو آهي. ٻيو پيٽرولر ڪلاس جي نالي سان پيڪيج جو نالو آهي. جڏهن جاوا ڪمانڊ تي عمل ڪيو ويندو آهي، جاوا ورچوئل مشين test-java/src فولڊر ۾ نظر ايندي آهي ۽ پوء ان کي هلائڻ لاء مکيه ڪلاس لوڊ ڪري ٿي.
Classpath variable ڪيئن سيٽ ڪجي
Classpath variable سيٽ ڪري سگهجي ٿو جيئن هيٺ ڏيکاريل آهي لينڪس مشينن تي:export CLASSPATH="test-java/src"
ڪلاس پاٿ ونڊوز مشين تي شامل ڪري سگھجي ٿو / تازه ڪاري ڪري سگھجي ٿو ماحولياتي متغير استعمال ڪندي. هڪ دفعو ماحوليات متغير مقرر ڪيو ويو آهي، جاوا ڪمانڊ هيٺ ڏنل ڏيکاريل طور تي عمل ڪري سگهجي ٿو:
vg@lp1 Documents % java com.programming.v1.Main
Hello classpath
Classpath بابت ڄاڻڻ لاءِ اهو سڀ ڪجهه آهي . پڙهڻ لاء توهان جي مهرباني!
جاوا ۾ ناقابل تبديلي
ذريعو: جاوا ۾ وچولي متغير ٻن قسمن جا آھن: ابتدائي ۽ حوالو. جاوا ۾ هر شي قدر جي ذريعي گذريو آهي، پر حوالن جي قسمن جي صورت ۾، ماخذ ڊيٽا منظور ٿيل ميموري ايڊريس استعمال ڪندي اپڊيٽ ٿي سگهي ٿو. آخري![ڪافي بريڪ #121. جاوا ۾ Classpath ڇا آهي ۽ ان کي ڪيئن انسٽال ڪجي؟ جاوا ۾ ناقابل تبديلي - 2](https://cdn.javarush.com/images/article/80e209e7-a34c-4125-ba4f-e2dc759963f7/800.jpeg)
جاوا ۾ Imutability جا فائدا
1. سلسلي جي حفاظت
غير متحرڪ قسمون نسل جي حالتن لاءِ مدافعتي آھن گھڻن موضوعن واري ماحول ۾ ڇاڪاڻ ته شئي ٺھي وڃڻ کان پوءِ مستقل رھندي. گھڻن سلسلا پنھنجي اندروني حالت کي تبديل نٿا ڪري سگھن، تنھنڪري هم وقت سازي جي ضرورت نه آھي.2. بنيادي قسم
جاوا معياري لائبريري ۾ اسٽرنگ بنيادي ڪلاس جو هڪ سٺو مثال آهي. هي هڪ تمام سادو ۽ ناقابل بدلو طبقو آهي جيڪو استعمال ڪري سگهجي ٿو ڪاروباري منطق ڊومينز ٺاهڻ لاءِ ان جي مٿان. ساڳئي طرح، هڪ ناقابل قابل قسم هڪ عظيم بنيادي قسم جي طور تي ڪم ڪري سگهي ٿو جنهن تي تعمير ڪرڻ.خاصيتون
1. پرائيويٽ ۽ فائنل فيلڊز
اهي شعبا جيڪي ڪنهن شئي جي حالت تي مشتمل هجن پرائيويٽ ۽ فائنل آهن . خانگي نمائش فيلڊ تائين سڌي رسائي کي روڪي ٿي، جڏهن ته حتمي نمائش يقيني بڻائي ٿي ته فيلڊ صرف هڪ ڀيرو لڳايو ويو آهي.2. ڪو به تبديل ڪرڻ وارو طريقو ناهي
پرائيويٽ فيلڊ کي ڪلاس کان ٻاهر نه ٿو پهچائي سگهجي. عام طور تي، رسائي جا طريقا (Getters) ۽ تبديل ڪرڻ وارا طريقا (setters)، ترتيب سان، فيلڊ کي پڙهڻ ۽ لکڻ لاءِ مهيا ڪيا ويا آهن. استحڪام کي يقيني بڻائڻ لاء، تبديل ڪندڙن جي اجازت نه آهي.3. فائنل ڪلاس
طبقاتي وراثت جي اجازت ڏيڻ ناقابل تبديلي کي ٽوڙي سگھي ٿو. ھڪڙو ذيلي ڪلاس ھڪڙي غير تبديل ٿيندڙ طبقي کي وڌائي سگھي ٿو ھڪڙي اعتراض جي حالت کي متاثر ڪري سگھي ٿو. تنهن ڪري، ڪلاس فائنل آهي .4. دفاعي ڪاپيون
اعتراض ٺاھڻ دوران، ٺاھيندڙ کان دليلن کي سڌو سنئون خانگي شعبن ۾ تفويض ڪرڻ جي بدران، دليلن جي ھڪڙي گہري ڪاپي (يا غير تبديل ٿيل ڪاپي) ٺاھيو ويندو خارجي ترميم. جيڪڏهن دليلن مان هڪ هڪ حوالو قسم آهي، اهو آساني سان سڏيندڙ جي آخر ۾ ٺاهي سگهجي ٿو. حفاظتي ڪاپيون ٺاهڻ توهان کي اجازت ڏئي ٿي ته هن هٿرادو کان بچڻ لاء. ساڳيءَ طرح، رسائيندڙن لاءِ، سڌو سنئون ڪنهن اندروني فيلڊ جي حوالي ڪرڻ بدران، ان جي ڪاپي آزاديءَ سان شيئر ڪري سگهجي ٿي.عمل درآمد
ملازم
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;
}
}
-
سڀني شعبن ۾ تعمير ڪندڙ ۾ حفاظتي ڪاپيون نه آهن. اھو ھن ڪري آھي جو id پرائمري آھي ۽ نالو ۽ joinDate فيلڊ ناقابل بدلائي قسم آھن. اهي ڪالر طرفان تبديل نه ٿي ڪري سگهجن ۽ اڻڄاتل رهندا، جڏهن ته حاصلات جي ميدان کي استعمال ڪندي دليل جي ڪاپي جي ضرورت آهي List.copyOf طريقي سان . اهو ئي سبب آهي ته ڪاپي آف واپسي هڪ ناقابل قابل فهرست .
-
ساڳيءَ طرح، رسيور طريقا دفاعي نقلن جي بجاءِ سڌي طرح فيلڊن کي واپس آڻين ٿا ڇو ته فيلڊ جا سڀ قسم غير مٽا سٽا هوندا آهن (بشمول ڪاميابيون ) ۽ ان ڪري ڪلاس کان ٻاهر تبديل نه ٿي ڪري سگھجي.
سڌارا
جاوا 16 کان اڳ
ملازمن جي عمل درآمد کي لائبريرين سان بهتر ڪري سگھجي ٿو جهڙوڪ Lombok . هي ڪوڊ ۾ فعليت گھٽائي ٿو ۽ ان کي صاف ڏسڻ ۾ مدد ڪري ٿو. لائبريري معياري ڪوڊ کي مختصر ڪرڻ لاء تشريح سان گڏ اچي ٿو. @Value (تشريح) استعمال ڪري سگھجي ٿو حاصل ڪرڻ لاءِ ۽ سڀني دليلن لاءِ ٺاھيندڙ. اهو پڻ هڪ فائنل ڪلاس ۽ نجي ۽ فائنل فيلڊ ٺاهي ٿو . هڪ نوٽ جي طور تي، اهو پڻ ٺاهي ٿو String ، equals ۽ hashCode طريقن . ملازمن تي عمل درآمد @Value استعمال ڪندي ٻيهر لکي سگهجي ٿو جيئن هيٺ ڏيکاريل آهي: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);
}
}
جاوا 16 ۽ بعد ۾
جاوا 16 رليز هڪ نئون رڪارڊ فنڪشن متعارف ڪرايو . اهي (جيئن چيو ويو آهي JEP) اهي طبقا آهن جيڪي ڪم ڪن ٿا شفاف ڪيريئر جي طور تي غير قابل عمل ڊيٽا جي ۽ سمجهي سگهجي ٿو نامزد ٿيل ٽوپلس. ملازم طبقي کي رڪارڊ ملازم طور ٻيهر لاڳو ڪري سگهجي ٿو جيئن هيٺ ڏيکاريل آهي.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