JavaRush /Java блогы /Random-KK /Java тілінде құрастыру

Java тілінде құрастыру

Топта жарияланған
IDE-де бағдарламалау керемет: codeтық тәуелділіктердің үйлесімділігі, ыңғайлы жөндеу, анық тестілеу, қараңғы тақырып. Сонымен, IDE арқасында даму қарқынмен дамып келеді. Бірақ ол босаңсыды. Күн сайын IDE функционалдығына еніп, әзірлеуші ​​​​бір түймені орындауға немесе екі рет басу арқылы құруға дағдыланады. Java тілінде құрастыру – 1Пәрмен жолындағы жұмысты елемей, IDE-де басынан бастап жұмыс істейтін бағдарламалауды жаңа бастағандармен жағдай әлдеқайда нашар. Мысалы, Intellij IDEA бағдарламасында Java қолданбасының компиляциясы төменгі панельдегі жүктеу жолағы арқылы көрсетіледі және барлық компиляция параметрлері, класс жолын өңдеу және Java өмірінің басқа да ләззаттары сахна артында қалады. IDE жоқ Java-да компиляциялау туралы айтуды ұсынамыз. Осы мақаладағы мысалдарды іске қосу үшін JDK 1.7 немесе одан кейінгі нұсқасы құрылғыңызда орнатылғанын тексеріңіз.

Бағдарламаны қалай құрастыруға болады?

Бағдарламалаудағы компиляция – бұл бағдарламаны кейіннен іске қосу үшін бастапқы codeты byte codeқа қысқарту. Бастапқы codeтан бағдарламаны іске қосуға дейінгі әрекеттер тізбегі келесідей:
  1. ClassName.java деп аталатын файлда бастапқы code бар;
  2. Егер codeта қателер болмаса, ол byte-codeқа құрастырылады (ClassName.class файлында);
  3. Бағдарлама басталады.
Әдетте, әрбір бағдарлама жеке каталогта болады. Қарапайым мысал ретінде шығысты консольге алайық:
class Test {
   public static void main(String[] args) {
      System.out.println("Это говорит приложение из командной строки");
   }
}

Javac командасы не үшін қолданылады?

Жарайды, бірінші нүкте орындалды. Түсіну үшін әрі қарай барайық: қалай құрастыру керек? :) Бұған javac командасы көмектеседі, оның аргументі қажетті файлды көрсетуі керек:

javac Test.java
Егер codeта қателер болмаса, Test.java файлының жанында Test.class файлы пайда болады. Бұл құрастырылған byte-code. Енді оны іске қосу керек. Мұнда біз byte-codeты іске қосатын java пәрменін қолданамыз: Java тілінде құрастыру – 2Скриншот шығыста кейбір иероглифтерді алатынымызды көрсетеді: анық, бұл бұзылған codeтау. Әдетте бұл Windows жүйесінде орын алады. Консольде кириллица алфавитін дұрыс көрсету үшін келесі пәрмендер бар:

REM change CHCP to UTF-8
CHCP 65001
CLS
Олар ағымдағы терезенің ұзақтығы үшін ағымдағы қабық codeының бетін өзгертеді. Қайталап көрейік:

D:\Java>java Test
Бұл қолданба пәрмен жолынан айтады. Javac командасының қалай жұмыс істейтінін білу өте пайдалы, өйткені бұл пәрмен кез келген жобаны құрастыру жүйесінің негізі болып табылады.

Бірнеше сыныптарды құрастыру және іске қосу

Бірнеше сыныптармен жұмыс істеу үшін сізге сынып жолы қажет. Ол сыныптар қамтылған файлдық жүйеге ұқсайды және бумалар қалталар ретінде әрекет етеді. Осы сәтте бастапқы code файлдарын құрастырылған файлдардан бөлу туралы ойлану керек. Әдетте, көздер src каталогында, ал құрастырылған сыныптар қалтада болады. Мысалы, бізде әдіс бар класс Boxжәне класс бар . Сынып : BoxMachinemainBox
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 пәрменін пайдаланыңыз:

java -classpath ./bin BoxMachine
-classpath— жалауша, одан кейін құрастырылған сыныптардың орнын көрсету керек. Java осы каталогтан негізгі сыныпты және барлық қатыстыларын іздейді. ./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 файлдарын жасау

Бағдарламаны портқа және іске қосуды жеңілдету үшін құрастырылған сыныптарды jar файлына – класс мұрағатына жинауға болады. Zip немесе rar мұрағаттарынан басты айырмашылығы - манифест файлының болуы. Бұл манифест jar файлы орындалған кезде іске қосылатын негізгі сыныпты, сынып жолын және көптеген қосымша ақпаратты көрсетеді. Негізгі каталогта manifest.mf файлын жасайық. Оның мазмұны келесідей болады:

main-class: src.BoxMachine
class-path: bin/
main-classәдісті қамтитын mainжәне іске қосу кезінде орындалатын сыныпты көрсетеді. class-path— құрастырылған сыныптарға немесе қосымша кітапханаларға жол. Енді jar пәрменін пайдаланып IDE жоқ нақты бағдарламаны құру уақыты келді:

jar -cmf manifest.mf box-machine.jar  -C bin .
-cmf— жалауша, одан кейін манифест файлына жолды көрсету керек. manifest.mf— манифестке апаратын жол. box-machine.jar— шығыс jar файлының аты. — жалауша, одан кейін құрастырылған сыныптарға жол көрсетіледі. .— jar файлы орналасатын жол. Біздің жағдайда бұл негізгі каталог. Енді іске қосуға болады. jar файлдарын іске қосу java пәрмені арқылы да орындалады, бірақ одан кейін жалаушаны көрсету керек -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 жоқ Java-да компиляция: құрастыру жүйелеріне шолу

Пәрмен жолын қолданудың салыстырмалы жеңілдігіне қарамастан, оны қолдану арқылы орта және үлкен жобаларды құру өте қиын. Бұл көп уақытты қажет етеді және әртүрлі дәрежедегі қателерге толы. Бақытымызға орай, жұмыс процесін айтарлықтай жеңілдететін құрастыру жүйелері бар. Бірнеше командалармен бұл жүйе кез келген күрделіліктегі жобаны жинай алады және мұндай жүйелердің болуы кезінде жасалған плагиндердің көптігі кез келген дерлік бас ауруын жоя алады.

Java қалай компиляциялауға болады?

Ең танымал Java құрастыру жүйелері - 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
Tag <target>құрастыру мен файлдық жүйені басқаруға мүмкіндік беретін әртүрлі тапсырмаларды көрсете алады. Ant құжаттамасында тізімделген 150-ден астам қол жетімді пәрмендерге ие. Төмендегі мысалда біз тек 5-ті қолданамыз:
  • mkdir - каталогтарды жасау
  • delete- файлдар мен каталогтарды жою
  • javac- Java codeын құрастыру
  • java- құрастырылған codeты іске қосу
Қарапайым компиляция, құрастыру немесе тазалау сценарийі осылай көрінеді:
<?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 және clean. compileішіндегі сыныптары бар нәтиже каталогын жасайды, содан кейін жасалған каталогқа сыныптарды құрастыру үшін javac пайдаланады. runjava пәрменімен құрастырылған сыныптарды іске қосады. cleanнәтижелер каталогын жояды. Негізгі каталогта ant пәрменін аргументсіз іске қоссаңыз, компиляция әрекеті орындалады. Егер белгілі бір әрекетті орындау қажет болса, ол аргументте көрсетіледі.

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 құрылыс жобаларына сәл басқаша көзқарасты ұсынады. Мұнда әзірлеуші ​​Ant-тен айырмашылығы, оның жобасын және ол қолданатын қосымша құралдарды сипаттайды, мұнда құрастыру әрекеттер тізбегі болып табылады. Maven оңай тәуелділікті басқару және барлық әзірлеу орталарымен ыңғайлы интеграция арқасында әзірлеушілер арасында танымал. Maven-пен жұмыс істегенде біз келесі жоба құрылымын ұстанамыз: Java тілінде компиляция – 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 ішінде құрастыру тегі құрастыру мақсатын – компиляцияны, бастапқы codeтың каталогтарын және компиляция нәтижесі файлдарын, сонымен қатар жоба атын анықтайды. Maven-те сынақтарды орындау, Jar файлдарын жасау, дистрибутивтерді құру және басқа тапсырмалар үшін әртүрлі құрастыру мақсаттары мен плагиндері бар.

Градл

Бұл Ant және Maven негізіндегі ең жас құрылыс жүйесі. Негізгі айырмашылығы - ол тапсырмалар ретін анықтау үшін циклдік график негізінде жұмыс істейді. Бұл қосымша және көп жобаны құрастыру сияқты күрделірек тапсырмалар үшін өте пайдалы. Gradle көмегімен құрастыру кезінде Maven жобасының қалта құрылымын ұстану ұсынылады. Айтпақшы, 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'
Файл плагиндерді қамтиды, бастапқы code файлдарының каталогын (егер Maven жобасының құрылымы пайдаланылмаса), құрастыру нәтижелерінің каталогын, негізгі сыныптың атауын және әдепкі тапсырмаларды анықтайды. build.gradle файлы орналасқан каталогтағы 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-сіз codeты құрастыру және жинау мүмкіндігі пайдасыз болып көрінеді. Шынында да, плагиндері бар ыңғайлы IDE, мүмкін болатын барлық нәрсені автоматты түрде тексеру (қазіргі IDE IQ деңгейін тексермейді) және танымал жүйелермен интеграция болған кезде командалық жолдар мен Google барлық пәрмендерімен неге алаңдау керек. Дегенмен, тәжірибе көрсеткендей, әзірлеу ортасынсыз codeты жинақтау және осы процестің әрбір қадамын түсіну өте қажет. Бұл дағды сізге және сіздің компанияңызға көптеген жүйке жасушалары мен уақытты үнемдейді. IDE пайдалануды, code жазуды үйренуге және, әрине, Java бағдарламалау негіздерін осында - JavaRush сайтында алуға болады. Оқуға қайта оралу уақыты :)
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION