JavaRush /جاوا بلاگ /Random-SD /IDE کان سواءِ جاوا کي گڏ ڪرڻ ۽ هلائڻ
Ve4niY
سطح

IDE کان سواءِ جاوا کي گڏ ڪرڻ ۽ هلائڻ

گروپ ۾ شايع ٿيل
هڪ دفعي reddit.com تي ، موضوع ۾ جاوا کي گڏ ڪرڻ ۽ هلائڻ IDE کان سواءِ ، سوال پڇيو ويو: ڇا ڪو اهڙو حڪم آهي جيڪو جاوا فائلن جو هڪ گروپ گڏ ڪري ٿو جيڪو هڪ پيڪيج جي اندر هڪ الڳ فولڊر ۾ آهي (اچو ته ان کي بن سڏين ) ، ۽ مان نئين ڪلاس فائلن کي شروع ڪرڻ بابت ڪيئن ڪندس؟ " IDE کان سواءِ جاوا کي گڏ ڪرڻ ۽ هلائڻ - 1موضوع ليکڪ، kylolink ، وضاحت ڪري ٿو: "جڏهن مون جاوا استعمال ڪرڻ شروع ڪيو، مون Eclipse تي ڀروسو ڪيو ته منهنجي لاء سڀ ڪم ڪرڻ لاء ۽ صرف ڪوڊ لکڻ جي باري ۾ پريشان هئي." مون هن سوال کي ڪيترائي ڀيرا ڏٺو آهي، ۽، حقيقت ۾، هي اهو ڇا آهي جنهن مون کي بلاگ پوسٽ ڪرڻ لاءِ آگاهه ڪيو GPS سسٽم ۽ IDEs: سٺو يا خراب؟ مون کي طاقتور جديد جاوا IDEs پسند آهن ۽ اهي روزاني جي بنياد تي منهنجي زندگي کي آسان بڻائي رهيا آهن، پر اهو ڄاڻڻ جا فائدا پڻ آهن ته جاوا کان سواءِ سادي مثالن کي ڪيئن ٺاهيو ۽ هلائڻو آهي. اهي. هي پوسٽ ان بابت آهي ته اهو ڪيئن ڪجي. منهنجي بلاگ ۾ جاوا سکڻ تي سادي تجربن سان، مون ان بابت لکيو ته ڪيئن آئون ڪڏهن ڪڏهن هڪ سادي ٽيڪسٽ ايڊيٽر ۽ ڪمانڊ لائين اوزار استعمال ڪرڻ پسند ڪندو آهيان سادي ايپليڪيشن لکڻ، ٺاهڻ ۽ هلائڻ لاءِ. هڪ تمام سٺو خيال هاڻي ته ڪيترو ”اوور هيڊ“ منهنجي پسنديده Java IDEs جي ضرورت آهي ۽ هڪ ابتدائي فيصلو ڪيو ته ڇا فريم ورڪ استعمال ڪندي حاصل ڪيل فائدا ”اوور هيڊ“ کي صحيح ثابت ڪرڻ لاءِ ڪافي آهن. اڪثر حقيقي ايپليڪيشنن ۾، ڪو شڪ ناهي ته VL IDE تمام گهڻو قيمتي آهي. بهرحال، آسان ترين مثال ايپليڪيشنن لاء، اهو هميشه ناهي. هن پوسٽ جو باقي حصو ڏيکاري ٿو ته انهن حالتن لاءِ IDE کان سواءِ جاوا ڪوڊ ڪيئن ٺاهيو ۽ هلائڻ.

جاوا ڪوڊ لکڻ ۽ عمل ڪرڻ

مثال کي وڌيڪ واضح ڪرڻ لاءِ، مان ڪجھ تمام سادو جاوا ڪلاس استعمال ڪندس جيڪي هڪ ٻئي سان ٺهڪندڙ يا وراثت جي ذريعي لاڳاپيل آهن ۽ ساڳئي پيڪيج ۾ آهن جنهن کي dustin.examples سڏيو ويندو آهي . ٻن طبقن ۾ هڪ فنڪشن غائب آهي main؛ ٽيون طبقو، Main.java، هڪ فنڪشن آهي mainجيڪو توهان کي ظاهر ڪرڻ جي اجازت ڏئي ٿو ته ڪلاس کي بغير IDE کان ڪيئن هلائڻ. ھيٺ ڏنل ڪوڊ آھي انھن ٽنھي طبقن لاءِ: Parent.java
package dustin.examples;

public class Parent
{
   @Override
   public String toString()
   {
      return "I'm the Parent.";
   }
}
ٻار.جاوا
package dustin.examples;

public class Child extends Parent
{
   @Override
   public String toString()
   {
      return "I'm the Child.";
   }
}
مين.جاوا
package dustin.examples;

import static java.lang.System.out;

public class Main
{
   private final Parent parent = new Parent();
   private final Child child = new Child();

   public static void main(final String[] arguments)
   {
      final Main instance = new Main();
      out.println(instance.parent);
      out.println(instance.child);
   }
}
هيٺ ڏنل اسڪرين شاٽ ڊاريڪٽري جي جوڙجڪ کي ڏيکاري ٿو انهن .java طبقن سان . اسڪرين شاٽ ڏيکاري ٿو ته ماخذ فائلون ڊاريڪٽري جي درجي بندي ۾ آهن جيڪي پيڪيج جي نالي جي نمائندگي ڪن ٿيون ( dustin/examples ڇاڪاڻ ته پيڪيج جي معلومات dustin.examples آهي ) ۽ اهو پيڪيج ڊاريڪٽري جي درجه بندي کي ظاهر ڪري ٿو. سب ڊاريڪٽري SRC تحت آهي. مون گڏ ڪيل .class فائلن کي گھرائڻ لاءِ هڪ ڪلاسز سب ڊاريڪٽري (جيڪا هن وقت خالي آهي) پڻ ٺاهي آهي ته جيئن Javac اها ڊاريڪٽري نه ٺاهي جڏهن اها موجود نه هجي.

JAVAC سان تعمير ۽ جاوا سان هلندڙ

ڪابه پرواه ناهي ته جاوا ڪوڊ ٺاهڻ لاءِ ڪهڙو طريقو استعمال ڪيو وڃي (Ant، Maven، Gradle يا IDE)، اهو آخرڪار JAVAC ڏانهن اچي ٿو. Oracle/Sun ۾ معياري آپشن مهيا ڪيل JAVAC ڪمانڊ لائن ٽول کي JAVAC -help هلائڻ سان ڏسي سگھجي ٿو ۽ JAVAC -help -X کي هلائڻ سان اضافي توسيع جا اختيار ڏسي سگھجن ٿا. انهن اختيارن کي ڪيئن استعمال ڪجي وڌيڪ تفصيل Windows يا Unix/Linux لاءِ JAVAC ٽول دستاويزن ۾ ڳولهي سگهجن ٿا. جيئن ته Javac دستاويز چوي ٿو، -sourcepath آپشن استعمال ڪري سگھجي ٿو ڊاريڪٽري کي ظاهر ڪرڻ لاءِ جنهن ۾ ماخذ فائلون موجود آهن. مٿي ڏنل اسڪرين شاٽ ۾ ڏيکاريل منهنجي ڊاريڪٽري جي جوڙجڪ ۾، ان جو مطلب اهو آهي ته، فرض ڪري رهيو آهيان ته مان C:\Java\examples\javacAndJava\ ڊاريڪٽري مان JAVAC ڪمانڊ هلائي رهيو آهيان ، مون کي پنهنجي ڪمانڊ ۾ هن طرح ڪجهه هجڻ گهرجي: Javac -sourcepath. src SRC\Dustin\مثال\*. جاوا . هيٺ ڏنل اسڪرين شاٽ ان جا نتيجا ڏيکاري ٿو. ڇاڪاڻ ته اسان .classIDE کان سواءِ جاوا کي گڏ ڪرڻ ۽ هلائڻ - 2 فائلن لاءِ ڊاريڪٽري جي وضاحت نه ڪئي هئي ، اهي ڊفالٽ طور ساڳي ڊاريڪٽري ۾ رکيا ويا آهن جيئن ته ماخذ .java فائلون جنهن مان اهي ٺهيل هيون. اسان هن صورتحال کي درست ڪرڻ لاء اختيار استعمال ڪري سگهون ٿا . اسان جو حڪم ھاڻي هلائي سگھجي ٿو، مثال طور، Javac -sourcepath src -d classes src\Dustin\examples\*. آئون تون . جيئن اڳ بيان ڪيو ويو آهي، چونڊيل فولڊر (ڪلاس) اڳ ۾ ئي موجود هجڻ گهرجي. جڏهن ائين ٿئي ٿو، ته ڪمانڊ .class فائلن کي مخصوص فولڊر ۾ رکي ويندي جيئن هيٺ ڏنل اسڪرين شاٽ ۾ ڏيکاريل آهي جاوا سورس فائلن سان گڏ مخصوص ڊاريڪٽري ۾ لاڳاپيل .clاس فائلن ۾ گڏ ٿيل، اسان ايپليڪيشن کي لانچ ڪري سگھون ٿا جلدي لانچ مينيو استعمال ڪندي. جاوا ڪمانڊ لائن اوزار. اهو صرف Java -help يا Java اوزار جي صفحن تي ڏنل هدايتن تي عمل ڪندي ۽ (يا ) اختيار سان .class فائلن جي جڳھ کي بيان ڪرڻ سان ڪيو ويندو آهي . ڪلاس ڊاريڪٽري کي بيان ڪرڻ لاءِ ٻنهي طريقن کي استعمال ڪندي .class فائلن کي ڳولڻ لاءِ هيٺ ڏنل اسڪرين شاٽ ۾ ڏيکاريو ويو آهي. آخري دليل آهي مڪمل (سڄو جاوا پيڪيج) ڪلاس جو نالو جنهن کي عمل ڪرڻ جو مکيه ڪم آهي. هيٺ ڏنل اسڪرين شاٽ ۾ ڏيکاريل ڪمانڊ جاوا ڪلاسز -cp dustin.examples.Main ۽ java classes -classpath dustin.examples.Main آهن. -dIDE کان سواءِ جاوا کي گڏ ڪرڻ ۽ هلائڻ - 3-classpath-cpIDE کان سواءِ جاوا کي گڏ ڪرڻ ۽ هلائڻ - 4

اڏاوت ۽ رننگ انٽ سان

آسان ترين جاوا ايپليڪيشنن لاءِ، JAVAC ۽ Java استعمال ڪرڻ بلڪل آسان آهي ايپليڪيشن ٺاهڻ ۽ هلائڻ لاءِ، ترتيب سان، جيئن صرف ڏيکاريل آهي. جيئن ته ايپليڪيشنون ٿورو وڌيڪ پيچيده ٿي وڃن ٿيون (مثال طور، ڪوڊ هڪ کان وڌيڪ پيڪيج/ڊائريڪٽري ۾ موجود آهن يا ٽئين پارٽي جي لائبريرين ۽ فريم ورڪ تي وڌيڪ پيچيده انحصار ڪلاس)، اهو طريقو ناقابل برداشت ٿي سگهي ٿو. Apache Ant ”وڏي ٽن“ جاوا تعميراتي اوزارن مان سڀ کان پراڻي آهي ۽ استعمال ڪئي وئي آهي هزارين ايپليڪيشنن ۽ ڊيپلائيمينٽن ۾. جيئن مون پوئين بلاگ پوسٽ ۾ چيو آهي، هڪ تمام سادي اينٽ بلڊ فائل ٺاهڻ ۾ آسان آهي، خاص طور تي جيڪڏهن اها ٽيمپليٽ سان شروع ٿئي ٿي جيئن مون هن پوسٽ ۾ بيان ڪيو آهي. هيٺ ڏنل ڪوڊ لسٽ Ant's build.xml فائل لاءِ آهي، جيڪا .java فائلن کي .class فائلن ۾ ڪمپوز ڪرڻ لاءِ استعمال ٿي سگهي ٿي ۽ پوءِ ڪلاس dustin.examples.Main کي هلائي سگهجي ٿي جيئن مٿي JAVAC ۽ Java سان ڪيو ويو آهي. build.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="BuildingSansIDE" default="run" basedir=".">
   <description>Building Simple Java Applications Without An IDE</description>

   <target name="compile"
           description="Compile the Java code.">
      <javac srcdir="src"
             destdir="classes"
             debug="true"
      includeantruntime="false" />
   </target>

   <target name="run" depends="compile"
           description="Run the Java application.">
      <java classname="dustin.examples.Main" fork="true">
         <classpath>
           <pathelement path="classes"/>
         </classpath>
      </java>
   </target>
</project>
مون اينٽ پراپرٽيز استعمال نه ڪئي هئي ۽ عام مقصد شامل نه ڪيا هئا جن کي آئون عام طور تي شامل ڪريان ٿو (جهڙوڪ "خالص" ۽ "جاواڊڪ") هن مثال کي جيترو ٿي سگهي سادو رکڻ ۽ ان کي اڳئين مثال جي ويجهو رکو JAVAC ۽ Java استعمال ڪندي . اهو پڻ نوٽ ڪريو ته مون "ڊيبگ" سيٽ کي فعال ڪيو آهي "سچ" لاءِ JAVAC Ant ٽاسڪ ڇو ته اهو Ant ناڪامي جي صورت ۾ درست ناهي، پر JAVAC جي ڊفالٽ سان صحيح آهي. تعجب جي ڳالهه ناهي، جاواڪ ٽاسڪ ۽ جاوا اينٽ ٽاسڪ JAVAC ڪمانڊ ٽولز ۽ جاوا وانگر. ڇاڪاڻ ته مون ڊفالٽ نالو استعمال ڪيو Ant هڪ بلڊ فائل جي توقع رکي ٿو جڏهن اهو واضح طور تي بيان نه ڪيو ويو آهي (build.xml) ۽ ڇاڪاڻ ته مون هن تعمير لاءِ "ڊفالٽ" طور "رن" ٽارگيٽ مهيا ڪيو ۽ ڇاڪاڻ ته مون "مرتب" کي هڪ انحصار رن جي طور تي شامل ڪيو. "رن" ٽارگيٽ ۽ ڇاڪاڻ ته Ant منهنجي ماحول جي رستي تي هئي، مون کي ڪمانڊ لائن تي صرف اهو ڪرڻو هو ته Ant کي گڏ ڪرڻ ۽ ڊاريڪٽري ۾ ant مثال کي build.xml فائل سان گڏ ڪرڻ . اهو هيٺ ڏنل اسڪرين شاٽ ۾ ڏيکاريل آهي. IDE کان سواءِ جاوا کي گڏ ڪرڻ ۽ هلائڻ - 5جيتوڻيڪ مون هڪ سادي جاوا ايپليڪيشن کي گڏ ڪرڻ ۽ هلائڻ جو مظاهرو ڪيو آهي Ant سان، مان صرف Ant سان گڏ گڏ ڪرڻ ۽ جاوا سان هلائڻ جو رجحان رکندو آهيان (يا هڪ اسڪرپٽ جنهن کي جاوا سڏيندو آهي جيڪڏهن ڪلاس پاٿ وڏي آهي).

تعمير ۽ Maven سان هلائڻ

جيتوڻيڪ Ant پهريون بنيادي جاوا تعمير ڪرڻ وارو اوزار هو، Apache Maven آخرڪار ان جي شهرت حاصل ڪئي ان جي ڪنوينشن جي بنياد تي ترتيب ڏيڻ ۽ گڏيل لائبريري جي ذخيرن جي حمايت جي ڪري. Maven استعمال ڪرڻ آسان آهي جڏهن ڪوڊ ۽ ٺاهيل شيون ان جي معياري ڊاريڪٽري جي ترتيب جي پيروي ڪندا آهن. بدقسمتي سان، منهنجو مثال هن ڊاريڪٽري جي جوڙجڪ جي پيروي نٿو ڪري، پر Maven اسان کي متوقع ڊفالٽ ڊاريڪٽري جي جوڙجڪ کي ختم ڪرڻ جي اجازت ڏئي ٿو. هيٺ ڏنل فهرست هڪ Maven POM فائل لاءِ ڪوڊ آهي جيڪو ماخذ ۽ ٽارگيٽ ڊائريڪٽرن جي جاءِ تي استعمال ٿئي ٿو ۽ Maven 3.2.1 استعمال ڪندي Maven تعمير لاءِ ٻيا گهٽ ۾ گهٽ گهربل عنصر مهيا ڪري ٿو. pom.xml
<project>
   <modelVersion>4.0.0</modelVersion>
   <groupId>dustin.examples</groupId>
   <artifactId>CompilingAndRunningWithoutIDE</artifactId>
   <version>1</version>

   <build>
      <defaultGoal>compile</defaultGoal>
      <sourceDirectory>src</sourceDirectory>
      <outputDirectory>classes</outputDirectory>
      <finalName>${project.artifactId}-${project.version}</finalName>
   </build>
</project>
جيئن ته مٿين pom.xml فائل "مرتب" جي "defaultGoal" جي وضاحت ڪري ٿي ۽ ڇاڪاڻ ته pom.xml فائلون ڊفالٽ POM ڪسٽم آهن جيڪي Maven executable (MVN) ڳولي ٿو ۽ ڇاڪاڻ ته Maven انسٽاليشن بن ڊاريڪٽري منهنجي رستي تي آهي، صرف هيٺ ڏنل اسڪرين شاٽ ۾ بيان ڪيل .clاس فائلن کي گڏ ڪرڻ لاءِ مون کي ”MVN“ هلائڻو پوندو. IDE کان سواءِ جاوا کي گڏ ڪرڻ ۽ هلائڻ - 6مان پڻ Mvn Exec ڪمانڊ استعمال ڪندي Maven مان مرتب ٿيل ايپليڪيشن کي هلائي سگهان ٿو : Java -Dexec.mainClass = dustin.examples.Main ، جيڪو هيٺ ڏنل اسڪرين شاٽ ۾ ڏٺو ويو آهي. جاوا کي گڏ ڪرڻ ۽ هلائڻ بغير IDE - 7جيئن Ant سان، مان پنهنجي سادي جاوا ايپليڪيشن کي هلائڻ لاءِ Maven استعمال نه ڪرڻ چاهيان ٿو، پر ان جي بدران جاوا استعمال ڪريو مرتب ٿيل ڪوڊ تي (يا هڪ اسڪرپٽ استعمال ڪريو جيڪو جاوا کي سڌو سنئون ڊگهي ڪلاسن تي سڏي ٿو).

Gradle سان تعمير ۽ هلائڻ

Gradle جديد ترين، جديد ترين، ۽ سجيل آهي ٽن وڏن جاوا تعميراتي اوزارن مان. مان ڪڏهن ڪڏهن ان ڳالهه جي باري ۾ شڪي آهيان ته ڇا رجحان آهي، پر مون کي Gradle جي باري ۾ پسند ڪرڻ لاءِ تمام گهڻيون شيون مليون آهن (XML جي بدران Groovy ۾ لکيل، بلٽ ان اينٽ سپورٽ، بلٽ ان Ivy سپورٽ، ڪنوينشن ذريعي ترتيب ڏيڻ جيڪا آسان آهي. ٻيهر ترتيب ڏيڻ، Maven مخزن جي حمايت، ۽ وغيره). هيٺ ڏنل مثال ڏيکاري ٿو هڪ Gradle تعمير جيڪو هڪ سادي ايپليڪيشن کي گڏ ڪرڻ ۽ هلائڻ لاءِ استعمال ٿي سگهي ٿو، جيڪو هن پوسٽ لاءِ مکيه نموني ڪوڊ آهي. مون هي ترتيب ڏنل مثال Simple Gradle Java Plugin ڪسٽمائيزيشن بلاگ تي پيش ڪيو. تعمير. درجو
apply plugin: 'java'
apply plugin: 'application'

// Redefine where Gradle should expect Java source files (*.java)
sourceSets {
    main {
        java {
            srcDirs 'src'
        }
    }
}

// Redefine where .class files are written
sourceSets.main.output.classesDir = file("classes")

// Specify main class to be executed
mainClassName = "dustin.examples.Main"

defaultTasks 'compileJava', 'run'
build.gradle فائل مان پهرين ٻه لائينون جاوا پلگ ان ۽ ايپليڪيشن پلگ ان جي استعمال کي ظاهر ڪن ٿيون، نتيجي ۾ ڪارڪردگي جو هڪ گروپ خود بخود هن تعمير ۾ ٺهيل آهي. "sourceSets" ۽ "sourceSets.main.output.classesDir" جي وضاحت ڪرڻ توهان کي ترتيب ڏيڻ جي اجازت ڏئي ٿي Gradle پلگ ان جي ڊفالٽ جاوا ڊائريڪٽريز کي جاوا سورس ڪوڊ ۽ مرتب ڪيل بائنري ڪلاسز لاءِ، ترتيب سان. ايپليڪيشن پلگ ان. لائن "defaultTasks" انهن ڪمن جي وضاحت ڪري ٿي جيڪي صرف ڪمانڊ لائن تي "Gradle" ٽائپ ڪرڻ سان هلندا: 'compileJava' جاوا پلگ ان پاران مهيا ڪيل ڊفالٽ ڪم آهي ۽ 'رن' ايپليڪيشن پلگ ان پاران مهيا ڪيل ڊفالٽ ڪم آهي. ڇاڪاڻ ته مون اسيمبلين جو نالو build.gradle رکيو آهي ۽ ان ڪري مون ڊفالٽ ڪمن کي 'compileJava' ۽ 'رن' طور بيان ڪيو آهي ۽ ڇاڪاڻ ته مون وٽ منهنجي رستي ۾ Gradle انسٽاليشن بن ڊاريڪٽري آهي، ان ڪري مون کي بس ڪرڻي هئي مثالن کي ٺاهڻ ۽ هلائڻ لاءِ. 'Gradle' ۽ اھو ھيٺ ڏنل اسڪرين شاٽ ۾ ڏيکاريل آھي. IDE کان سواءِ جاوا کي گڏ ڪرڻ ۽ هلائڻ - 8ايستائين جو سڀ کان وڏو شڪي شخص کي تسليم ڪرڻ گهرجي ته گرڊل تعميرات هن سادي مثال لاءِ تمام پرچي آهن. اهو ڪجهه ڪنوينشن ۽ مفروضن تي ڀروسو ڪرڻ جي جامعيت کي گڏ ڪري ٿو هڪ تمام آسان ميڪانيزم سان جڏهن ضروري هجي ته ڊفالٽ کي ختم ڪرڻ لاءِ. حقيقت اها آهي ته اهو XML جي بدران Groovy ۾ آهي پڻ تمام پرڪشش آهي! جيئن Ant ۽ Maven سان گڏ، مان صرف انهن اوزارن سان ٺاھڻ جو رجحان رکندو آھيان ۽ مرتب ڪيل .class فائلن کي سڌو جاوا مان ھلائيندو آھيان يا ھڪڙي اسڪرپٽ جيڪا جاوا سڏين ٿا. رستي جي ذريعي، آئون انهن ڪلاسز کي پڻ آرڪائيو ڪرڻ جو ارادو ڪريان ٿو لانچ لاءِ جار ۾، پر اهو هن مضمون جي دائري کان ٻاهر آهي.

نتيجو

هڪ IDE اڪثر ضروري ناهي ته سادي ايپليڪيشنون ۽ مثال ٺاهڻ لاءِ ۽ ان کان به وڌيڪ مهانگو ٿي سگهي ٿو سادو مثال ٺاهڻ جي قيمت کان. اهڙي صورت ۾، JAVAC ۽ Java استعمال ڪرڻ بلڪل آسان آهي مثالن کي سڌو سنئون ۽ هلائڻ لاءِ. جيئن ته وڌيڪ ملوث ٿيڻ جا مثال، هڪ تعمير جو اوزار جهڙوڪ اينٽ، ميون، يا گرڊل وڌيڪ پرڪشش بڻجي ويندو آهي. حقيقت اها آهي ته ڪيترائي ترقياتي ماحول انهن تعميراتي يوٽيلٽيز کي سپورٽ ڪن ٿا مطلب ته هڪ ڊولپر IDE ڏانهن لڏپلاڻ ڪري سگهي ٿو هڪ بلٽ ان ٽول استعمال ڪندي پروسيس ۾ اڳ ۾ ٺاهيو ويو جيڪڏهن اهو طئي ڪيو ويو ته IDE سپورٽ جي ضرورت هئي جيئن هڪ سادي ايپليڪيشن هڪ مڪمل پروجيڪٽ ۾ وڌي وئي. .
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION