JavaRush /Java Blog /Random-TK /IDE-den Java düzmek we işletmek
Ve4niY
Dereje

IDE-den Java düzmek we işletmek

Toparda çap edildi
Bir gezek reddit.com sahypasynda, IDE-den Java düzmek we işletmek mowzugynda bir sorag berildi: Paketiň içindäki Java faýllarynyň toparyny aýratyn bukjada jemleýän buýruk barmy (geliň, bin diýeliň ) , we täze synp faýllaryny nädip başlamaly? " IDE-den Java düzmek we işletmek - 1Mowzuk ýazyjysy kylolink şeýle düşündirýär:" Java ulanyp başlanymda, ähli düzmek üçin Eclipse bil bagladym we kod ýazmak barada alada etdim. "Bu soragy ençeme gezek gördüm we hakykatdanam şu GPS ulgamlaryny we IDE-lerini blogda goýmaga näme sebäp boldy: gowy ýa-da erbet? Men güýçli häzirki zaman Java IDE-lerini gowy görýärin we olar meniň durmuşymy her gün aňsatlaşdyrýar, ýöne Java-dan ýönekeý mysallary nädip gurmalydygyny we işlemelidigini bilmegiň hem peýdasy bar. Javaazgyny ýönekeý synaglar bilen öwrenmek baradaky blogymda, ýönekeý programmalary ýazmak, gurmak we işletmek üçin käwagt ýönekeý tekst redaktoryny we buýruk setir gurallaryny ulanmagy halaýandygym hakda ýazdym. Mende bar Iň gowy görýän Java IDE-lerimiň näçeräk “artykmaç” talap edilýändigi we çarçuwany ulanmak arkaly gazanylan peýdalaryň “üstünden” aklamak üçin ýeterlikdigi barada ir karar bermek. Hakyky programmalaryň köpüsinde VL IDE-iň gaty gymmatdygyna şek ýok. Şeýle-de bolsa, iň ýönekeý mysal programmalary üçin bu mydama beýle däl. Bu ýazgynyň galan bölegi, bu ýagdaýlar üçin IDE bolmasa Java koduny nädip gurmalydygyny we işlemelidigini görkezýär.

Java koduny ýazmak we ýerine ýetirmek

Mysallary has düşnükli etmek üçin, kompozisiýa ýa-da miras arkaly biri-biri bilen baglanyşykly we dustin.examples atly bir paketde ýerleşýän gaty ýönekeý Java synplaryny ulanaryn . Iki synpda bir funksiýa ýok ; üçünji synp, Main.java, synpy IDE bolmazdan nädip dolandyrmalydygyny görkezmäge mümkinçilik berýän mainfunksiýa bar . mainAşakda bu üç synpyň kody: Parent.java
package dustin.examples;

public class Parent
{
   @Override
   public String toString()
   {
      return "I'm the Parent.";
   }
}
Çaga.java
package dustin.examples;

public class Child extends Parent
{
   @Override
   public String toString()
   {
      return "I'm the Child.";
   }
}
Main.java
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);
   }
}
Aşakdaky skrinshot, bu .java synplary bilen katalog gurluşyny görkezýär . Ekranda, çeşme faýllarynyň bukjanyň adyny görkezýän bukjanyň iýerarhiýasynda ( paket maglumatlary dustin.examples bolany üçin tozan / mysallar ) we bu bukjanyň katalog iýerarhiýasyny görkezýän görnüşi görkezilýär. SRC bukjasynyň aşagyndadyr. Şeýle hem, düzülen .class faýllaryny ýerleşdirmek üçin synplar bukjasyny döretdim (häzirki wagtda boş) , Javac ýok wagty bu bukjany döretmez.

JAVAC bilen gurmak we Java bilen işlemek

Java koduny (Ant, Maven, Gradle ýa-da IDE) döretmek üçin haýsy çemeleşmäni ulansaňam, ahyrsoňy JAVAC-a gelýär. JAVAC buýruk setiriniň guraly bilen üpjün edilen Oracle / Sun-daky adaty opsiýalary JAVAC -help işledip we JAVAC -help -X işledip goşmaça giňeltmek opsiýalaryny görüp bolýar. Bu opsiýalary nädip ulanmalydygy barada has giňişleýin maglumatlary Windows ýa-da Unix / Linux üçin JAVAC gural resminamalarynda tapyp bilersiňiz. Javac resminamalarynyň aýdyşy ýaly, çeşme faýllarynyň bar bolan katalogyny aňlatmak üçin -sourcepath opsiýasy ulanylyp bilner. Aboveokardaky skrinshotda görkezilen katalog gurluşymda, C: \ Java \ mysallar \ javacAndJava \ katalogyndan JAVAC buýrugyny işledýändigimi göz öňünde tutanymda , buýrugymda şuňa meňzeş bir zat bolmaly: Javac -sourcepath src SRC \ Dustin \ mysallar \ *. Java . Aşakdaky skrinshot munuň netijelerini görkezýär. .ClassIDE-den Java düzmek we işletmek - 2 faýllary üçin bir katalog görkezmändigimiz sebäpli , olar düzülen çeşme .java faýllary bilen birmeňzeş katalogda ýerleşdirildi . Bu ýagdaýy düzeltmek üçin warianty ulanyp bileris . Buýrugymyz indi işledilip bilner, meselem, Javac -sourcepath src -d synplary src \ Dustin \ mysallar \ *. Men sen . Öň bellenip geçilişi ýaly, saýlanan bukja (synplar) eýýäm bar bolmaly. Bu waka ýüze çykanda buýruk aşakdaky skrinshotda görkezilişi ýaly .class faýllaryny görkezilen bukjada ýerleşdirer. Görkezilen katalogdaky degişli .class faýllaryna düzülen Java çeşme faýllary bilen , programmany çalt açmak menýusyny ulanyp başlap bileris. Java buýruk setiri guraly. Bu, diňe Java -help ýa-da Java gurallary sahypalarynda berlen görkezmelere eýermek we (ýa-da ) opsiýasy bilen .class faýllarynyň ýerleşişini kesgitlemek arkaly amala aşyrylýar . Aşakdaky skrinshotda .class faýllaryny nireden gözlemelidigini synplar katalogyny kesgitlemek üçin iki çemeleşmäni ulanmak . Iň soňky argument, ýerine ýetirilmeli esasy funksiýa bolan synpyň doly (tutuş Java bukjasy) adydyr. Aşakdaky skrinshotda görkezilen buýruklar java synplary -cp dustin.examples.Main we java sapaklary -classpath dustin.examples.Main. -dIDE-den Java düzmek we işletmek - 3-classpath-cpIDE-den Java düzmek we işletmek - 4

Garynja bilen gurmak we işlemek

Iň ýönekeý Java programmalary üçin, edil görkezilişi ýaly programmany döretmek we işletmek üçin JAVAC we Java ulanmak gaty aňsat. Programmalar birneme çylşyrymlaşdygyça (mysal üçin, birden köp paketde / katalogda bar bolan kod ýa-da üçünji tarap kitaphanalarynda we çarçuwalarynda has çylşyrymly garaşlylyk synplary), bu çemeleşme kyn bolup biler. “Apache Ant” “uly üç” Java gurmak gurallarynyň iň gadymy we müňlerçe programmalarda we enjamlaşdyryşlarda ulanyldy. Öňki blog ýazgymda aýdyşym ýaly, gaty ýönekeý garynja gurmak faýly döretmek aňsat, esasanam bu ýazgyda belläp geçişim ýaly şablon bilen başlasa. Aşakdaky kod sanawy .java faýllaryny .class faýllaryna düzmek we soňra “dustin.examples” synpyny işletmek üçin ulanyp boljak Ant's build.xml faýly üçin . JAVAC we Java bilen ýokarda edilişi ýaly. 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>
Garynja häsiýetlerini ulanmadym we bu mysaly mümkin boldugyça ýönekeýleşdirmek we JAVAC we Java ulanyp öňki mysala ýakyn saklamak üçin adatça goşýan umumy maksatlarymy ("arassa" we "Javadoc") goşmadym. . Şeýle hem, JAVAC garynja meselesi üçin "düzediş" gurnamagy üpjün edendigime üns beriň, sebäbi garynja şowsuz bolan ýagdaýynda bu dogry däl, ýöne JAVAC-yň standarty bilen dogry. Javac meselesi we Java Ant meselesi JAVAC buýruk gurallaryna we Java-a meňzeýär. Ant adyny ulananym üçin, garynja aç-açan görkezilmedikde (build.xml) gurmak faýlyna garaşýar we bu iş üçin "Işlet" nyşanyny "deslapky" hökmünde üpjün edendigim we garaşlylyk hökmünde "düzmek" -i goşanym üçin "Işlet" nyşany we garynja meniň daşky gurşawymda bolany üçin, buýruk setirinde etmeli zadym, garynja mysalyny build.xml faýly bilen katalogda düzmek we işletmek . Bu aşakdaky skrinshotda görkezilýär. IDE-den Java düzmek we işletmek - 5Ant bilen ýönekeý Java programmasyny düzmegi we işlemegi görkezenem bolsam, diňe Ant bilen düzüp, Java bilen işlemäge ýykgyn edýärin (ýa-da synp ýoly agyr bolsa Java diýilýän skript).

Maven bilen gurmak we işlemek

Ant ilkinji Java gurmak guraly bolsa-da, Apache Maven köplenç konwensiýa esaslanýan konfigurasiýa we umumy kitaphana ammarlaryny goldamak sebäpli şöhrat gazandy. Kod we döredilen obýektler adaty katalog ýerleşişine eýerenlerinde Maven ulanmak aňsat. Gynansagam, mysalym bu katalog gurluşyna eýerenok, ýöne Maven garaşylýan deslapky katalog gurluşyny ýok etmäge mümkinçilik berýär. Aşakdaky sanaw, çeşmäniň we maksatly kataloglaryň ýerine ulanylýan we Maven 3.2.1 ulanyp, Maven gurluşy üçin iň az zerur elementleri üpjün edýän Maven POM faýlynyň kody. 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>
Aboveokardaky pom.xml faýly "düzmek" -iň "defaultGoal" -ny kesgitleýändigi we pom.xml faýllarynyň Maven ýerine ýetirip bolýan (MVN) gözleýän adaty POM adatydygy we Maven gurnama binasynyň katalogy diňe meniň ýolumda bolany üçin Aşakdaky skrinshotda görkezilişi ýaly .class faýllaryny düzmek üçin "MVN" işlemeli. IDE-den Java düzmek we işletmek - 6Şeýle hem, Mvn Exec buýrugyny ulanyp, Maven-den düzülen programmany işledip bilerin : Java -Dexec.mainClass = dustin.examples.Main , aşakdaky skrinshotda görülýär. IDE-den Java düzmek we işletmek - 7Ant ýaly bolşy ýaly, ýönekeý Java programmamy işletmek üçin Maven-i ulanman, ýerine Java-ny düzülen kodda ulanýaryn (ýa-da göni uzyn synplarda Java diýilýän skript ulanyň).

Gradle bilen gurmak we işlemek

Gradle, üç sany Java gurmak guralynyň iň täze, iň moda we ajaýyp görnüşidir. Kämahal modanyň nämedigine şübhelenýärin, ýöne Gradle-de halamajak köp zady tapdym (XML-iň ýerine Groowy-da ýazylan, garynja goldawy, gurlan Ivy goldawy, konwensiýa aňsat konfigurasiýa konfigurasiýa etmek, Maven ammar goldawy we ş.m.). Aşakdaky mysal, bu ýazgy üçin esasy nusga kody bolan ýönekeý programmany düzmek we işletmek üçin ulanyp boljak Gradle gurluşyny görkezýär. Bu uýgunlaşdyrylan mysaly “Simple Gradle Java Plugin Customization” blogynda hödürledim. build.gradle
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 faýlyndan ilkinji iki setir Java plagininiň we Programma plugininiň ulanylyşyny görkezýär, netijede bu binada bir topar funksiýa awtomatiki gurulýar. "SourceSets" we "sourceSets.main.output.classesDir" kesgitlemek, degişlilikde Java çeşme kody we ikili synplar üçin Gradle plugin-iň deslapky Java kataloglaryny ýok etmäge mümkinçilik berýär. "MainClassName" size haýsy synpyň işlemelidigini aç-açan kesgitlemäge mümkinçilik berýär. Programma plugin. "DefaultTasks" setiri buýruk setirine diňe "Gradle" ýazmak bilen ýerine ýetiriljek meseleleri kesgitleýär: 'compileJava' Java plugin tarapyndan berlen deslapky mesele we 'Run' Programma plugin tarapyndan berlen esasy mesele. Assambleýalara build.gradle diýip at berdim we şonuň üçinem deslapky meseleleri 'compileJava' we 'Run' diýip kesgitledim we ýolumda Gradle gurnama binasynyň katalogy barlygy sebäpli, mysallary gurmak we işletmek üçin etmeli zadym diňe görnüşdi 'Gradle' we bu aşakdaky skrinshotda görkezilýär. IDE-den Java düzmek we işletmek - 8Iň uly skeptik hem Gradle-iň ýönekeý mysal üçin gaty süýşendigini boýun almaly. Käbir konwensiýalara we çaklamalara bil baglamagyň takyklygyny, zerur bolanda defoltlary ýok etmegiň aňsat mehanizmi bilen birleşdirýär. XML-iň ýerine Groowy-da bolmagy gaty özüne çekiji! Ant we Maven-de bolşy ýaly, men diňe şu gurallar bilen gurulýaryn we düzülen .class faýllaryny göni Java-dan ýa-da Java diýilýän skript bilen işlemäge ýykgyn edýärin. Theeri gelende aýtsak, men bu .classlary işe girizmek üçin bankada arhiwlemäge ýykgyn edýärin, ýöne bu makalanyň çäginden çykmaýar.

Netije

IDE köplenç ýönekeý programmalary we mysallary gurmak üçin zerur däl we ýönekeý mysallar gurmak üçin çykdajylardan has gymmat bolup biler. Şeýle ýagdaýda, mysallary gönüden-göni gurmak we işletmek üçin JAVAC we Java ulanmak gaty aňsat. Has köp gatnaşmagyň mysallary hökmünde Ant, Maven ýa-da Gradle ýaly gurluşyk gurallary has özüne çekiji bolýar. Ösüş gurşawynyň köpüsiniň bu gurluşyk hyzmatlaryny goldaýandygy, ýönekeý bir programma doly hukukly taslama öwrülensoň IDE goldawynyň zerurdygy kesgitlenen bolsa, bir işläp düzüjiniň ozal döredilen gurlan guraly ulanyp IDE-e göçüp biljekdigini aňladýar. .
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION