JavaRush /Java блогы /Random-KK /IDE жоқ Java компиляциясы және іске қосылуы
Ve4niY
Деңгей

IDE жоқ Java компиляциясы және іске қосылуы

Топта жарияланған
Бір кездері reddit.com сайтында Java-ны IDEсіз құрастыру және іске қосу тақырыбында сұрақ қойылды: Пакет ішіндегі Java файлдарының тобын бөлек қалтаға құрастыратын команда бар ма (оны bin деп атаймыз ) , және жаңа сынып файлдарын іске қосу үшін қалай әрекет етер едім? " Java-ны IDEсіз компиляциялау және іске қосу - 1Тақырып авторы, kylolink , түсіндіреді: "Мен Java-ны қолдана бастағанда, мен барлық компиляцияны жасау үшін Eclipse-ге сендім және codeты жазуға алаңдадым." Мен бұл сұрақты бірнеше рет көрдім, және шынымен де, бұл GPS жүйелері мен IDE-лерді блогта жариялауға не түрткі болды: жақсы ма, жаман ба?Мен қуатты заманауи Java IDE-лерді жақсы көремін және олар менің өмірімді күнделікті жеңілдетеді, сонымен қатар қарапайым Java мысалдарын құрастыру және іске қосу жолын білудің де пайдасы бар. Бұл пост мұны қалай жасауға болатыны туралы. Java тілін қарапайым тестілер арқылы үйренуге арналған блогымда мен кейде қарапайым қосымшаларды жазу, құру және іске қосу үшін қарапайым мәтіндік редактор мен пәрмен жолы құралдарын қалай пайдаланғанды ​​ұнататынымды жаздым. Менің сүйікті Java IDE-терім қанша «үстеме шығындарды» талап ететіні туралы өте жақсы идея және негізді пайдалану арқылы қол жеткізілген артықшылықтар «үстеме шығындарды» ақтау үшін жеткілікті ме, жоқ па деген ерте шешім қабылдау. Көптеген нақты қолданбаларда VL IDE көп нәрсеге тұрарлық екеніне күмән жоқ. Дегенмен, ең қарапайым мысал қолданбалары үшін бұл әрдайым бола бермейді. Осы жазбаның қалған бөлігі осы жағдайлар үшін IDE жоқ Java codeын құру және іске қосу жолын көрсетеді.

Java codeын жазу және орындау

Мысалды неғұрлым түсінікті ету үшін мен композиция немесе мұра арқылы бір-бірімен байланысты және dustin.examples деп аталатын бір бумада орналасқан өте қарапайым Java сыныптарын қолданатын боламын . Екі сыныпта функция жетіспейді ; үшінші сынып, Main.java, сыныпты IDEсіз іске қосу жолын көрсетуге мүмкіндік беретін mainфункцияға ие . mainТөменде осы үш сыныптың codeы берілген: Parent.java
package dustin.examples;

public class Parent
{
   @Override
   public String toString()
   {
      return "I'm the Parent.";
   }
}
Бала.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);
   }
}
Келесі скриншот осы .java сыныптары бар каталог құрылымын көрсетеді . Скриншот бастапқы файлдар бума атын білдіретін каталог иерархиясында ( dustin/examples себебі бума ақпараты dustin.examples ) және бұл бума каталог иерархиясын көрсететінін көрсетеді SRC ішкі каталогында орналасқан. Мен сондай-ақ құрастырылған .class файлдарын орналастыру үшін сыныптар ішкі каталогын жасадым ( ол қазір бос) .

JAVAC көмегімен құру және Java-мен жұмыс істеу

Java codeын (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\Дастин\мысалдар\*. Java . Келесі скриншот осының нәтижелерін көрсетеді. Біз .classJava-ны IDEсіз компиляциялау және іске қосу - 2 файлдары үшін каталогты көрсетпегендіктен , олар әдепкі бойынша өздері құрастырылған бастапқы .java файлдарымен бірдей каталогқа орналастырылды . Бұл жағдайды түзету үшін опцияны пайдалана аламыз . Біздің пәрменді қазір іске қосуға болады, мысалы, Javac -sourcepath src -d сыныптары src\Dustin\examples\* ретінде. Мен сен . Жоғарыда айтылғандай, таңдалған қалта (сыныптар) бұрыннан бар болуы керек. Бұл орын алғанда, пәрмен .class файлдарын келесі скриншотта көрсетілгендей көрсетілген қалтаға орналастырады . Көрсетілген каталогтағы сәйкес .class файлдарына жинақталған Java бастапқы файлдарымен біз қолданбаның жылдам іске қосу мәзірін пайдаланып қолданбаны іске қоса аламыз. Java пәрмен жолы құралы. Бұл жай ғана Java -help немесе Java құралдары беттерінде берілген нұсқауларды орындау және (немесе ) опциясымен .class файлдарының орнын көрсету арқылы орындалады . .class файлдарын іздеу керек сыныптар каталогын көрсету үшін екі тәсілді де пайдалану келесі скриншотта көрсетілген. Соңғы аргумент орындалатын негізгі функциясы бар сыныптың толық (барлық Java пакеті) атауы болып табылады. Келесі скриншотта көрсетілген пәрмендер java сыныптары -cp dustin.examples.Main және java сыныптары -classpath dustin.examples.Main. -dJava-ны IDEсіз компиляциялау және іске қосу - 3-classpath-cpJava-ны IDEсіз компиляциялау және іске қосу - 4

Құмырсқамен бірге салу және жүгіру

Ең қарапайым Java қолданбалары үшін жаңа көрсетілгендей, сәйкесінше қолданбаны жасау және іске қосу үшін JAVAC және Java пайдалану өте оңай. Қолданбалар біршама күрделене түскен сайын (мысалы, біреуден көп пакетте/каталогта бар code немесе үшінші тарап кітапханалары мен жақтауларына күрделірек тәуелділік сыныптарында), бұл тәсіл тиімсіз болуы мүмкін. Apache Ant — Java құрастыру құралдарының «үлкен үштігінің» ең көнесі және мыңдаған қолданбалар мен орналастыруларда қолданылған. Алдыңғы блог жазбасында айтқанымдай, өте қарапайым Ant құрастыру файлын жасау оңай, әсіресе ол осы постта сипатталған үлгіден басталса. Төмендегі code тізімі Ant's build.xml файлына арналған , ол .java файлдарын .class файлдарына құрастыру және одан кейін JAVAC және Java көмегімен жоғарыда орындалғандай dustin.examples.Main сыныбын іске қосу үшін пайдаланылуы мүмкін . 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>
Мен Ant сипаттарын пайдаланбадым және осы мысалды мүмкіндігінше қарапайым етіп сақтау және оны JAVAC және Java арқылы алдыңғы мысалға жақын ұстау үшін әдетте қосатын жалпы мақсаттарды («таза» және «Javadoc» сияқты) қоспадым. . JAVAC Ant тапсырмасы үшін "отладка" параметрін "true" күйіне қосқанымды да ескеріңіз, себебі бұл Ant сәтсіздігі жағдайында дұрыс емес, бірақ JAVAC әдепкі бойынша дұрыс. Таңқаларлық емес, Javac тапсырмасы мен Java Ant тапсырмасы JAVAC пәрмен құралдары мен Java-ға ұқсайды. Мен Ant әдепкі атауын пайдаланғандықтан, ол анық көрсетілмеген кезде (build.xml) құрастыру файлын күтеді және осы құрастыру үшін «Орындау» мақсатын «әдепкі» ретінде бергендіктен және тәуелділік іске қосу ретінде «компиляцияны» қосқандықтан. «Іске қосу» мақсаты және Ant менің ортамның жолында болғандықтан, мен пәрмен жолында істеуім керек болған нәрсе, Ant үлгісін build.xml файлы бар каталогта құрастыру және іске қосу болды . Бұл келесі скриншотта көрсетілген. Java-ны IDEсіз компиляциялау және іске қосу - 5Мен Ant көмегімен қарапайым Java қолданбасын құрастыруды және іске қосуды көрсетсем де, мен тек Ant-пен компиляциялауға және Java-мен (немесе сынып жолы ауыр болса Java деп аталатын сценарий) жұмыс істеуге бейіммін.

Мавенмен бірге құрылыс және жүгіру

Ant Java құрастырудың алғашқы негізгі құралы болғанымен, Apache Maven конвенцияға негізделген конфигурацияны қабылдау және ортақ кітапхана репозиторийлерін қолдау арқасында өз атағын алды. Код пен жасалған нысандар оның стандартты каталог орналасуын орындаған кезде Maven пайдалану оңай. Өкінішке орай, менің мысалым бұл каталог құрылымын ұстанбайды, бірақ Maven бізге күтілетін әдепкі каталог құрылымын қайта анықтауға мүмкіндік береді. Төмендегі тізім бастапқы және мақсатты каталогтардың орнына пайдаланылатын Maven POM файлының codeы болып табылады және 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 файлы "компиляцияның" "әдепкі мақсатын" анықтайтындықтан және pom.xml файлы Maven орындалатын файлы (MVN) іздейтін әдепкі POM теңшелімі болғандықтан және Maven орнату қалтасының каталогы менің жолымда болғандықтан, тек Келесі скриншотта айтылғандай .class файлдарын құрастыру үшін "MVN" іске қосуым керек. Java-ны IDEсіз компиляциялау және іске қосу – 6Мен сондай-ақ Mvn Exec пәрменін пайдаланып Maven-тен құрастырылған қолданбаны іске қоса аламын : Java -Dexec.mainClass = dustin.examples.Main , ол келесі скриншотта байқалады. Java-ны IDEсіз компиляциялау және іске қосу – 7Ant сияқты, мен қарапайым Java қолданбасын іске қосу үшін Maven қолданбаймын, оның орнына құрастырылған codeта Java пайдаланыңыз (немесе ұзақ жұмыс істейтін сабақтарда тікелей Java шақыратын сценарийді пайдаланыңыз).

Gradle көмегімен құру және жұмыс істеу

Gradle үш негізгі Java құрастыру құралдарының ең жаңа, ең сәнді және стильді нұсқасы. Мен кейде сәнді нәрсенің мәніне күмәнмен қараймын, бірақ мен Gradle туралы ұнайтын көптеген нәрселерді таптым (XML орнына Groovy тілінде жазылған, кірістірілген Ant қолдауы, кірістірілген Ivy қолдауы, конвенция бойынша конфигурациялау оңай. қайта конфигурациялау үшін, Maven репозиторийін қолдау және т.б.). Келесі мысалда қарапайым қолданбаны құрастыру және іске қосу үшін пайдалануға болатын Gradle құрастыру көрсетілген, ол осы жазбаның негізгі үлгі codeы болып табылады. Мен бұл бейімделген мысалды Simple Gradle Java Plugin Customization блогында ұсындым. 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 файлындағы алғашқы екі жол Java плагинін және Қолданба плагинін пайдалануды көрсетеді, нәтижесінде осы құрастыруға автоматты түрде көптеген функциялар орнатылады. "sourceSets" және "sourceSets.main.output.classesDir" анықтау Gradle плагинінің Java бастапқы codeы және жинақталған екілік сыныптары үшін тиісінше әдепкі Java каталогтарын қайта анықтауға мүмкіндік береді. Қолданба плагині. "defaultTasks" жолы пәрмен жолында жай ғана "Gradle" теру арқылы орындалатын тапсырмаларды анықтайды: "compileJava" - Java плагині қамтамасыз ететін әдепкі тапсырма және "Орындау" - Қолданба плагині қамтамасыз ететін әдепкі тапсырма. Жинақтарды build.gradle деп атағандықтан, сондықтан мен әдепкі тапсырмаларды «compileJava» және «Run» ретінде көрсеттім және менің жолымда Gradle орнату қалтасының каталогы болғандықтан, мысалдарды құрастыру және іске қосу үшін тек теру ғана қалды. 'Gradle' және бұл келесі скриншотта көрсетілген. Java-ны IDEсіз компиляциялау және іске қосу - 8Тіпті ең үлкен скептик Gradle құрастырулары осы қарапайым мысал үшін өте тайғақ екенін мойындауы керек. Ол белгілі бір конвенциялар мен жорамалдарға сүйенудің қысқалығын қажет болған жағдайда әдепкі мәндерді жоюдың өте оңай механизмімен біріктіреді. Оның XML орнына Groovy-де болуы да өте тартымды! Ant және Maven сияқты, мен тек осы құралдармен құрастыруға бейім және құрастырылған .class файлдарын тікелей Java немесе Java деп аталатын сценарийден іске қосуға бейім. Айтпақшы, мен бұл .сыныптарды іске қосу үшін банкаға мұрағаттауға бейіммін, бірақ бұл мақаланың ауқымынан тыс.

Қорытынды

IDE қарапайым қолданбалар мен мысалдарды құру үшін жиі қажет емес және қарапайым мысалдарды құру құнынан да қымбатырақ болуы мүмкін. Мұндай жағдайда мысалдарды тікелей құру және іске қосу үшін JAVAC және Java пайдалану өте оңай. Көбірек қатысу мысалдары ретінде Ant, Maven немесе Gradle сияқты құрастыру құралы тартымдырақ болады. Көптеген әзірлеу орталарының осы құрастыру утorталарын қолдауы фактісі, егер қарапайым қолданба толыққанды жобаға айналған кезде IDE қолдауы қажет екені анықталса, әзірлеуші ​​процесте бұрын жасалған кірістірілген құралды пайдаланып IDE-ге көшуі мүмкін екенін білдіреді. .
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION