JavaRush /جاوا بلاگ /Random-SD /جاوا ۾ گڏ ڪرڻ

جاوا ۾ گڏ ڪرڻ

گروپ ۾ شايع ٿيل
هڪ IDE ۾ پروگرامنگ عظيم آهي: ڪوڊ انحصار جي مطابقت، آسان ڊيبگنگ، صاف جاچ، اونداهي موضوع. تنهن ڪري، IDE جي مهرباني، ترقي leaps ۽ حدن ذريعي ترقي ڪري رهيو آهي. پر هوءَ آرام ڪري ٿي. هر روز، پاڻ کي IDE جي ڪارڪردگي ۾ غرق ڪرڻ، ڊولپر کي هڪ بٽڻ سان ڪم ڪرڻ يا ٻن ڪلڪن سان تعمير ڪرڻ لاء استعمال ڪيو ويندو آهي. جاوا ۾ گڏ ڪرڻ - 1صورتحال تمام خراب آهي انهن سان پروگرامنگ ۾ نوان جيڪي IDE ۾ شروعات کان ڪم ڪن ٿا، ڪمانڊ لائن تي ڪم کي نظرانداز ڪري. مثال طور، Intellij IDEA ۾، جاوا ايپليڪيشن جي تاليف کي هيٺئين پينل ۾ لوڊ ڪرڻ واري بار سان ڏيکاريو ويو آهي، ۽ سڀني تاليف جي پيراگراف، ڪلاس پاٿ پروسيسنگ ۽ جاوا جي زندگي جي ٻين نعمتن جي پردي جي پويان رهي ٿو. اسان هڪ IDE کان سواء جاوا ۾ گڏ ڪرڻ بابت ڳالهائڻ جي صلاح ڏيو ٿا. هن مضمون ۾ مثالن کي هلائڻ لاء، پڪ ڪريو ته JDK 1.7 يا بعد ۾ توهان جي مشين تي نصب ٿيل آهي.

ڪيئن هڪ پروگرام گڏ ڪرڻ لاء؟

پروگرامنگ ۾ تاليف آهي بائيٽ ڪوڊ ۾ سورس ڪوڊ جي گھٽتائي پروگرام جي ايندڙ شروعات لاءِ. سورس ڪوڊ کان پروگرام لانچ تائين عملن جو سلسلو هن طرح نظر اچي ٿو:
  1. ClassName.java نالي هڪ فائل ۾ سورس ڪوڊ آهي.
  2. جيڪڏهن ڪوڊ ۾ ڪا به غلطي نه آهي، اهو بائيٽ ڪوڊ ۾ مرتب ڪيو ويو آهي (فائل ۾ ClassName.class)؛
  3. پروگرام شروع ٿئي ٿو.
عام طور تي، هر پروگرام هڪ الڳ ڊاريڪٽري ۾ شامل آهي. هڪ سادي مثال طور، اچو ته ڪنسول ڏانهن آئوٽ وٺو:
class Test {
   public static void main(String[] args) {
      System.out.println("Это говорит приложение из командной строки");
   }
}

javac حڪم ڇا لاء استعمال ڪيو ويو آهي؟

چڱو، پهريون نقطو ٿي چڪو آهي. اچو ته سمجھڻ لاء اڳتي وڃو: ڪيئن گڏ ڪرڻ؟ :) javac حڪم اسان کي هن سان مدد ڪندي، جنهن جو دليل لازمي طور تي گهربل فائل کي ظاهر ڪرڻ گهرجي:

javac Test.java
جيڪڏهن ڪوڊ ۾ ڪا به غلطي نه آهي، هڪ Test.class فائل Test.java فائل جي اڳيان ظاهر ٿيندي. هي آهي مرتب ڪيل بائيٽ ڪوڊ. هاڻي ان کي شروع ڪرڻ جي ضرورت آهي. هتي اسان جاوا ڪمانڊ استعمال ڪريون ٿا، جيڪو هلندو آهي بائيٽ ڪوڊ: جاوا ۾ گڏ ڪرڻ - 2اسڪرين شاٽ ڏيکاري ٿو ته اسان کي آئوٽ پٽ ۾ ڪجهه هيروگليفس مليا آهن: ظاهر آهي، هي هڪ ٽوٽل انڪوڊنگ آهي. اهو عام طور تي ونڊوز سسٽم تي ٿئي ٿو. ڪنسول ۾ سيريلڪ الفابيٽ کي صحيح نموني ڏيکارڻ لاءِ، ھيٺ ڏنل حڪم آھن:

REM change CHCP to UTF-8
CHCP 65001
CLS
اهي موجوده شيل ڪوڊ واري صفحي کي موجوده ونڊو جي مدت لاء تبديل ڪندا آهن. اچو ته ٻيهر ڪوشش ڪريون:

D:\Java>java Test
اھو اھو آھي جيڪو ايپليڪيشن ڪمان لائن مان چوي ٿو. ڄاڻو ته javac ڪمانڊ ڪيئن ڪم ڪري ٿو تمام ڪارائتو آهي، ڇاڪاڻ ته هي حڪم ڪنهن به منصوبي جي تعميراتي نظام جو بنياد آهي.

ڪيترن ئي ڪلاسن کي گڏ ڪرڻ ۽ هلائڻ

ڪيترن ئي طبقن سان ڪم ڪرڻ لاءِ توهان کي ڪلاس پاٿ جي ضرورت آهي. اهو هڪ فائيل سسٽم وانگر آهي جنهن ۾ ڪلاس شامل آهن، ۽ پيڪيجز فولڊر طور ڪم ڪن ٿا. ھن نقطي تي، اھو سوچڻ جي قابل آھي ماخذ ڪوڊ فائلن کي مرتب ڪيل فائلن کان الڳ ڪرڻ بابت. ضابطي جي طور تي، ذريعا src ڊاريڪٽري ۾ واقع آهن، ۽ مرتب ڪيل ڪلاس بن ۾ آهن. مثال طور، اسان وٽ ھڪڙو طبقو آھي Box۽ ھڪڙو طبقو آھي BoxMachineجنھن ۾ ھڪڙو طريقو آھي main. ڪلاس Box:
package src;

public class Box {
   private double size;

   public Box(double size) {
       this.size = size;
   }

   public String toString() {
       return "Box have size " + size;
   }
}
اهو src پيڪيج ۾ آهي، هن کي درست ڪرڻ جي ضرورت آهي. ڪلاس BoxMachine:
package src;

public class BoxMachine {
   public static void main(String[] args) {
       for(int  i = 0; i < 5; i++) {
           System.out.println(new Box(Math.random()*10));
       }
   }
}
هي ڪلاس پڻ ملي ٿو src پيڪيج ۾. طريقي ۾ main، اهو Boxمختلف سائزن جا پنج ڪلاس شيون ٺاهي ٿو ۽ انهن بابت معلومات ڪنسول ڏانهن ڏيکاري ٿو. طبقن جي هن گروپ کي گڏ ڪرڻ لاء، توهان کي استعمال ڪرڻ گهرجي javac ڪمانڊ مکيه ڊاريڪٽري مان (جنهن ۾ src ۽ bin فولڊر شامل آهن) دليلن سان:

javac -d bin ./src/*
-d- ھڪڙو جھنڊو جنھن کان پوء توھان کي جڳھ جي نشاندهي ڪرڻ گھرجي جتي مرتب ڪيل ڪلاس ويندا. اهو تمام آسان آهي، ڇاڪاڻ ته منتقلي، مثال طور، 1000 ڪلاس هڪ تمام محنت وارو عمل آهي. bin- فولڊر جو نالو. ./src/*- ماخذ فائلن جو هنڌ. *ظاهر ڪري ٿو ته سڀني فائلن کي گڏ ڪيو وڃي. ھاڻي مرتب ڪيل ڪلاس بن فولڊر ۾ نظر اچن ٿا. انهن کي هلائڻ لاءِ، ساڳي ڊاريڪٽري مان جاوا ڪمانڊ استعمال ڪريو، پڻ دليلن سان:

java -classpath ./bin BoxMachine
-classpath- هڪ پرچم جنهن کان پوء توهان کي مرتب ڪيل طبقن جي مقام کي ظاهر ڪرڻ گهرجي. جاوا هن ڊاريڪٽري ۾ مکيه ڪلاس ۽ سڀني لاڳاپيل ماڻهن کي ڳوليندا. ./bin- فولڊر جو نالو جنهن ۾ مرتب ڪيل ڪلاس موجود آهن. BoxMachine- مکيه طبقي جو نالو. جيئن ته پهرين صورت ۾، بيان نه ڪيو وڃي .class، ڇاڪاڻ ته هي هڪ طبقي جو نالو آهي، نه هڪ فائل. نتيجو:

D:\Java>java -classpath ./bin src.BoxMachine
Box have size 4.085985295359718
Box have size 8.63682158248986
Box have size 6.027448124299726
Box have size 7.288317703877914
Box have size 1.106181659384694

JAR فائلون ٺاهڻ

پروگرام کي پورٽ ڪرڻ ۽ هلائڻ لاءِ آسان بنائڻ لاءِ، توهان مرتب ڪيل ڪلاسن کي هڪ جار فائل ۾ گڏ ڪري سگهو ٿا - هڪ ڪلاس آرڪائيو. zip يا rar آرڪائيوز کان بنيادي فرق ظاهر ٿيل فائل جي موجودگي آهي. هي منشور بيان ڪري ٿو مکيه ڪلاس جيڪو هلايو ويندو جڏهن جار فائل تي عمل ڪيو ويندو، ڪلاس پاٿ، ۽ تمام گهڻي اضافي معلومات. اچو ته مين ڊاريڪٽري ۾ manifest.mf فائل ٺاھيو. ان جو مواد هن ريت هوندو:

main-class: src.BoxMachine
class-path: bin/
main-classڪلاس کي بيان ڪري ٿو جنهن ۾ طريقو شامل آهي main۽ شروع ٿيڻ تي عمل ڪيو ويندو. class-path- مرتب ڪيل طبقن يا اضافي لائبريرين ڏانهن رستو. ھاڻي اھو وقت آھي ھڪڙو حقيقي پروگرام ٺاھيو بغير IDE کان سواءِ jar ڪمانڊ استعمال ڪندي:

jar -cmf manifest.mf box-machine.jar  -C bin .
-cmf- ھڪڙو جھنڊو جنھن کان پوء توھان کي پڌرو فائل ڏانھن رستو بيان ڪرڻ گھرجي. manifest.mf- ظاهر ڏانهن رستو. box-machine.jar- output jar فائل جو نالو. - ھڪڙو جھنڊو جنھن کان پوء مرتب ڪيل طبقن جو رستو اشارو ڪيو ويو آھي. .- رستو جتي جار فائل رکيل هوندي. اسان جي صورت ۾، هي مکيه ڊاريڪٽري آهي. هاڻي توهان لانچ ڪري سگهو ٿا. جار فائلن کي لانچ ڪرڻ پڻ جاوا ڪمانڊ استعمال ڪندي ڪيو ويندو آھي، پر پوء توھان کي جھنڊو بيان ڪرڻ جي ضرورت آھي -jar: اھو اشارو ڪري ٿو ته جار فائل شروع ٿي رھيو آھي، ۽ ٻيو دليل فائل جو رستو آھي jar، جنھن ۾ واڌارو شامل آھي :

java -jar box-machine.jar
نتيجو:

Box have size 5.5495235762547965
Box have size 9.695870044165662
Box have size 2.3408385788129227
Box have size 7.2790741216674135
Box have size 2.3620854470160513

IDE کان سواءِ جاوا ۾ گڏ ڪرڻ: بلڊ سسٽم جو جائزو

ڪمانڊ لائن جي استعمال جي نسبتا آسانيء جي باوجود، ان کي استعمال ڪندي وچولي ۽ وڏي منصوبن کي تعمير ڪرڻ تمام ڏکيو آهي. اهو تمام گهڻو وقت وٺندو آهي ۽ مختلف درجي جي غلطين سان ڀريل آهي. خوشقسمتيء سان، اتي اسيمبليء جو نظام آهن جيڪي ڪم جي عمل کي تمام آسان بڻائي ٿو. ڪيترن ئي ٽيمن سان، هي سسٽم ڪنهن به پيچيدگي جي منصوبي کي گڏ ڪري سگهي ٿو، ۽ اهڙي سسٽم جي وجود دوران پيدا ٿيل پلگ ان جي گهڻائي تقريبن ڪنهن به سر درد کي ختم ڪري سگهي ٿي.

جاوا کي ڪيئن گڏ ڪجي؟

سڀ کان وڌيڪ مشهور جاوا تعميراتي نظام آهن Ant، ​​Maven ۽ Gradle. ڪو به سٺو يا خراب ناهي: انهن مان هر هڪ کي ڪجهه مسئلن کي حل ڪرڻ لاء پيدا ڪيو ويو آهي. اچو ته انهن مان هر هڪ کي وڌيڪ تفصيل سان ڏسو.

آنٽ

Ant هڪ تعمير وارو اوزار آهي جيڪو هڪ اسڪرپٽ استعمال ڪري ٿو جيڪو بيان ڪيل هڪ xml فائل استعمال ڪندي آهي. xml فائل جي جوڙجڪ:
<?xml version="1.0"?>
<project name="NameПроекта" default="сценарийПоУмолчанию">
    <target name="NameСценария">
  //  Действия сценария
        <echo>Hello, World!</echo>
    </target>
  //  Второй сценарий
  //  И тд
</project>
اچو ته هڪ build.xml فائل ٺاهيون مکيه ڊاريڪٽري ۾ هيٺين مواد سان:
<?xml version="1.0"?>
<project name="BoxMachine" default="test">
   <target name="test">
       <echo>First build in Ant!</echo>
   </target>
</project>
ساڳئي ڊاريڪٽري ۾، ant حڪم کي ڪال ڪريو:

D:\Java>D:\Temp\ant\bin\ant
Buildfile: D:\Java\build.xml

test:
     [echo] First build in Ant!

BUILD SUCCESSFUL
Total time: 0 seconds
ٽيگ <target>مختلف ڪمن کي بيان ڪري سگھي ٿو جيڪي توهان کي اسيمبلي ۽ فائيل سسٽم کي منظم ڪرڻ جي اجازت ڏين ٿيون. Ant وٽ 150 کان وڌيڪ حڪم موجود آهن، جيڪي دستاويز ۾ درج ٿيل آهن. هيٺ ڏنل مثال ۾ اسان صرف 5 استعمال ڪندا آهيون:
  • mkdir - ڊاريڪٽري ٺاهڻ
  • delete- فائلون ۽ ڊائريڪٽري کي ختم ڪرڻ
  • javac- جاوا ڪوڊ گڏ ڪرڻ
  • java- گڏ ٿيل ڪوڊ هلائڻ
اھو اھو آھي جيڪو ھڪڙو سادو مرتب، ٺاھڻ، يا صاف ڪرڻ وارو اسڪرپٽ ڏسڻ ۾ اچي ٿو:
<?xml version="1.0"?>
<project name="BoxMachine" default="compile">
   <target name="compile">
       <mkdir dir="result/classes"/>
       <javac destdir="result/classes" includeantruntime="false">
           <src path="src"/>
       </javac>
   </target>
   <target name="run" depends="compile">
       <java classname="BoxMachine" classpath="result/classes"/>
   </target>
   <target name="clean">
       <delete dir="result"/>
   </target>
</project>
رسم الخط ٽن عملن کي بيان ڪري ٿو - compile, ,code>run and clean. compileنتيجو ڊاريڪٽري ٺاهي ٿو ان ۾ ڪلاسن سان، پوءِ استعمال ڪري ٿو javac طبقن کي گڏ ڪرڻ لاءِ ٺهيل ڊاريڪٽري ۾. runجاوا ڪمانڊ سان گڏ ڪيل ڪلاسز کي هلائي ٿو. cleanنتيجو ڊاريڪٽري کي ختم ڪري ٿو. جيڪڏهن توهان ڪنهن به دليلن کان سواءِ مين ڊاريڪٽري ۾ اينٽي ڪمانڊ هلائيندا آهيو، ڪمپل ايڪشن هلندو. جيڪڏهن هڪ خاص عمل کي انجام ڏيڻ جي ضرورت آهي، اهو دليل ۾ بيان ڪيو ويو آهي.

D:\Java>D:/Temp/ant/bin/ant compile
Buildfile: D:\Java\build.xml

compile:
    [mkdir] Created dir: D:\Java\result\classes
    [javac] Compiling 2 source files to D:\Java\result\classes

BUILD SUCCESSFUL
Total time: 1 second

ميون

Maven منصوبن جي تعمير لاء ٿورو مختلف انداز پيش ڪري ٿو. هتي، ڊولپر بلڪه پنهنجي پروجيڪٽ کي بيان ڪري ٿو ۽ اضافي اوزار جيڪو هو استعمال ڪري ٿو، ان جي برعڪس، جتي تعمير عملن جو هڪ سلسلو آهي. Maven ڊولپرز جي وچ ۾ مشهور آهي ان جي آسان انحصار جي انتظام ۽ سڀني ترقياتي ماحول سان آسان انضمام جي ڪري. جڏهن Maven سان ڪم ڪري رهيا آهيون، اسان هيٺ ڏنل پروجيڪٽ جي جوڙجڪ تي عمل ڪندا آهيون: جاوا ۾ گڏ ڪرڻ - 3تعمير ضابطا، انحصار، وغيره pom.xml فائل ۾ بيان ڪيل آهن. عام طور تي اهو مکيه پروجيڪٽ فولڊر ۾ واقع آهي. شروعاتي تي، Maven فائل جي جوڙجڪ ۽ نحو کي چيڪ ڪري ٿو، توهان کي غلطين بابت ڊيڄاري ٿو. مکيه ڊاريڪٽري ۾، bin ۽ src فولڊر جي اڳيان، pom.xml فائل ٺاھيو، اندر شامل ڪريو:
<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>ru.javarush.testmaven</groupId>
  <artifactId>testMavenWithoutIde</artifactId>
  <version>1.0.0</version>

  <build>
     <defaultGoal>compile</defaultGoal>
     <sourceDirectory>src</sourceDirectory>
     <outputDirectory>bin</outputDirectory>
     <finalName>${project.artifactId}-${project.version}</finalName>
  </build>
</project>
اڳيون، ڪمانڊ لائن تي mvn ڪمانڊ کي هلائڻ:

D:\Java>mvn
[INFO] Scanning for projects...
[INFO]
[INFO] -------------< ru.javarush.testmaven:testMavenWithoutIde >--------------
[INFO] Building testMavenWithoutIde 1.0.0
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ testMavenWithoutIde ---
[WARNING] Using platform encoding (Cp1251 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory D:\Java\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ testMavenWithoutIde ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding Cp1251, i.e. build is platform dependent!
[INFO] Compiling 2 source files to D:\Java\bin
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 15.521 s
[INFO] Finished at: 2019-06-25T20:18:05+03:00
[INFO] ------------------------------------------------------------------------
ھاڻي bin فولڊر ۾ ھڪڙو src فولڊر آھي جتي مرتب ڪيل ڪلاس واقع آھن. pom.xml ۾، بلڊ ٽيگ ٺاھڻ جو مقصد بيان ڪري ٿو - تاليف، ماخذ ڪوڊ جي ڊائريڪٽري ۽ تاليف جي نتيجن جي فائلن، ۽ گڏوگڏ پروجيڪٽ جو نالو. Maven وٽ مختلف قسم جا مقصد آھن ۽ پلگ ان ھلندڙ ٽيسٽن لاءِ، جار فائلون ٺاھڻ، ڊسٽريبيوشن جي تعمير ۽ ٻين ڪمن لاءِ.

گرڊل

هي سڀ کان ننڍڙو تعميراتي نظام آهي، جيڪو اينٽ ۽ ميون تي ٻڌل آهي. بنيادي فرق اهو آهي ته اهو ڪمن جي ترتيب کي طئي ڪرڻ لاء هڪ ايڪيڪلڪ گراف جي بنياد تي ڪم ڪري ٿو. اهو وڌيڪ پيچيده ڪمن لاءِ تمام ڪارائتو آهي، جهڙوڪ واڌارو ۽ ملٽي پروجيڪٽ ٺاهي. جڏهن Gradle سان تعمير ڪريو، اهو پڻ سفارش ڪئي وئي آهي ته ماون پروجيڪٽ فولڊر جي جوڙجڪ تي لٺ. رستي ۾، Gradle ۾ عمارت جي فائل کي build.gradle سڏيو ويندو آهي ۽ Maven کان تمام ننڍو ڏسڻ ۾ اچي ٿو. اسان جي ڪلاسن لاءِ مثال:
apply plugin: 'java'
apply plugin: 'application'

sourceSets {
   main {
       java {
           srcDirs 'src'
       }
   }
}
sourceSets.main.output.classesDir = file("bin")

mainClassName = "src.BoxMachine"

defaultTasks 'compileJava', 'run'
فائل ۾ پلگ ان شامل آهن، ماخذ ڪوڊ فائلن جي ڊاريڪٽري کي بيان ڪري ٿو (جيڪڏهن Maven پروجيڪٽ جي جوڙجڪ استعمال نه ڪئي وئي آهي)، ڊاريڪٽري جي تعمير جي نتيجن، مکيه طبقي جو نالو، ۽ ڊفالٽ ڪم. ڊاريڪٽري ۾ gradle حڪم جتي build.gradle فائل واقع آهي تعمير شروع ڪرڻ لاء ذميوار آهي:

d:\Java>D:\Temp\gradle\bin\gradle

Welcome to Gradle 5.4.1!

Here are the highlights of this release:
 - Run builds with JDK12
 - New API for Incremental Tasks
 - Updates to native projects, including Swift 5 support

For more details see https://docs.gradle.org/5.4.1/release-notes.html

Starting a Gradle Daemon (subsequent builds will be faster)

> Task :help

Welcome to Gradle 5.4.1.

To run a build, run gradle <task> ...

To see a list of available tasks, run gradle tasks

To see a list of command-line options, run gradle --help

To see more detail about a task, run gradle help --task <task>

For troubleshooting, visit https://help.gradle.org

BUILD SUCCESSFUL in 52s
1 actionable task: 1 executed

نتيجو

پهرين نظر ۾، IDE کان سواء ڪوڊ گڏ ڪرڻ ۽ گڏ ڪرڻ جي صلاحيت بيڪار لڳي ٿي. درحقيقت، ڪمانڊ لائينز ۽ گوگل جي سڀني حڪمن سان ڇو پريشان ڪيو وڃي جڏهن پلگ ان سان گڏ هڪ آرامده IDE آهي، هر ممڪن جي آٽو چيڪنگ (جديد IDEs IQ ليول کي چيڪ نه ڪندا آهن) ۽ مشهور سسٽم سان انضمام. بهرحال، مشق ڏيکاري ٿو ته ڪوڊ گڏ ڪرڻ جي صلاحيت بغير ڪنهن ترقي واري ماحول جي ۽ انهي عمل جي هر قدم کي سمجهڻ هڪ سخت ضرورت آهي. هي مهارت توهان ۽ توهان جي ڪمپني لاءِ ڪيترائي اعصاب خانا ۽ وقت بچائيندو. توهان سکي سگهو ٿا IDE ڪيئن استعمال ڪجي، ڪوڊ لکڻ جي مشق ڪريو، ۽ يقيناً، جاوا پروگرامنگ جا بنيادي اصول هتي حاصل ڪريو - JavaRush تي. سکيا ڏانهن واپس وڃڻ جو وقت :)
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION