कोटलिन का परिचय और मवन के साथ जार का निर्माण

यह पोस्ट इस बारे में एक टिप्पणी है कि मैं कोटलिन भाषा से कैसे परिचित हुआ, मैंने इसके लिए किन संसाधनों और उपकरणों का उपयोग किया और कैसे मैंने इसे एक जार में एक साथ रखा और इसे कंसोल में लॉन्च किया।

सामान्य तौर पर, मैं एक PHP प्रोग्रामर हूं, जो जावा के साथ एक कबाड़ है। दूसरे दिन मैंने कोटलिन को देखने का फैसला किया। यह JetBrains से कम दृढ़ता से टाइप की जाने वाली भाषा है कि यह अनिवार्य रूप से सांख्यिकीय रूप से टाइप किया गया है। यह जावा से इसका मुख्य मूलभूत अंतर है, इसके अलावा कोटलिन का अपना अच्छा वाक्यविन्यास है। कोटलिन को जेवीएम या जावास्क्रिप्ट में संकलित किया जा सकता है।

आइए एक-दूसरे को जानें। सबसे पहले आपको आईडीई आइडिया चाहिए।

http://www.jetbrains.com/idea/

उसी साइट पर इंस्टॉलेशन निर्देश। संस्करण 13+।

आईडीई के अंदर, मैंने एक सरल जावा प्रोजेक्ट बनाया। अगला, आपको IDE के लिए JetBrains प्लगइन स्थापित करने की आवश्यकता है।
http://confluence.jetbrains.com/display/Kotlin/Getting+Started

प्लगइन स्वत: पूर्णता और कोटलिन परियोजनाओं को बनाने की क्षमता जोड़ता है।
कोटलिन संकलन उपकरण भी जोड़े जाते हैं।

कोटलिन की विशेषता यह है कि यह जावा के साथ पूरी तरह से संगत है। यानी कोटलिन कोड को जावा में कहा जा सकता है और इसके विपरीत। इसलिए, सभी उपकरण और पुस्तकालय जो जावा के साथ काम करने के लिए उपयोग किए जाते हैं, वे भी कोटलिन पर लागू होते हैं।

यदि IDE में प्रोजेक्ट शुरू में Kotlin द्वारा नहीं बनाया गया था, तो प्लगइन स्थापित करने के बाद, आप Kotlin समर्थन को सक्षम कर सकते हैं। परियोजना में शामिल किए जाने के बाद, कोटलिन पुस्तकालय के जार को / परिवाद निर्देशिका में जोड़ा जाएगा।

मैंने कोटलिन को चालू किया और परीक्षण के लिए निम्नलिखित कोड / src / परीक्षण फ़ोल्डर में लिखा:

//first.kt package testing /** * Created by seyfer on 26.03.14. */ //fun main(args : Array<String>) { // println("Hello, world!") //} //fun main(args : Array<String>) { // if (args.size == 0) { // println("Please provide a name as a command-line argument") // return // } // println("Hello, ${args[0]}!") //} /*fun main(args : Array<String>) { for (name in args) println("Hello, $name!") }*/ fun main(args: Array<String>) { val language = if (args.size == 0) "EN" else args[0] println(when (language) { "EN" -> "Hello!" "FR" -> "Salut!" "IT" -> "Ciao!" "seyfer" -> "seed!" else -> "Sorry, I can't greet you in $language yet" }) } 


कोटलिन फ़ाइल में मैंने उद्देश्य पर टिप्पणी छोड़ दी। ये पृष्ठ से उदाहरण हैं।
http://confluence.jetbrains.com/display/Kotlin/Hello%2C+world%21

सबसे पहले, मैंने आईडीई में कोटलिन फ़ाइल को अलग से चलाया ताकि यह सुनिश्चित हो सके कि प्लग काम करता है और कोड संकलित करता है।

फिर मैंने एक जावा क्लास बनाई:

 //first.java package testing; /** * Created with IntelliJ IDEA. * User: seyfer * Date: 24.07.13 * Time: 21:02 * To change this template use File | Settings | File Templates. */ public class first { public static void main(String[] args) { System.out.print("Hello " + args[0] + "\n"); TestingPackage.main(args); } } 


यहां यह स्पष्ट है कि मैं तर्क को स्वीकार करना चाहता हूं और इसे सीधे कोटलिन को पारित करना चाहता हूं। कोटलिन में, मैंने भाषाओं के साथ एक उदाहरण का उपयोग किया और मेरा एक और जोड़ा, जो तर्क पर निर्भर करता है - मेरा उपनाम। जावा में, आप कॉलिन से तरीकों और एक्सेस चर को कॉल कर सकते हैं - PackageNamePackage.method नाम ()।

यदि प्रोजेक्ट IDE में सही तरीके से कॉन्फ़िगर किया गया है, तो आप यह निर्दिष्ट कर सकते हैं कि प्रोग्राम को किस तर्क से बुलाया जाना चाहिए। लेकिन यह बहुत सुविधाजनक नहीं है, मैं परीक्षण के लिए त्रुटियों को पकड़ने के लिए मक्खी पर तर्क को बदलना चाहूंगा। कंसोल से चलने के लिए मुझे एक जार बनाने की जरूरत थी।
इस परियोजना में शुरू में मावेन नहीं था, और मैंने इसे वहां जोड़ा।

इस पेज ने मेरी मदद की।
http://confluence.jetbrains.com/display/Kotlin/Kotlin+Build+Tools
कोटलिन प्रलेखन काफी जानकारीपूर्ण है जिससे वह एक भाषा सीख सकता है।
इसके अलावा, मावेन और ग्रेडेल के उपयोग से निर्माण के संबंध में, आप निम्न उदाहरण देख सकते हैं।
https://github.com/JetBrains/kotlin-examples

यहाँ मेरी pom.xml फ़ाइल है
 <?xml version="1.0" encoding="UTF-8"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <groupId>org.jetbrains.kotlin.examples</groupId> <artifactId>idea_test</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>idea_test</name> <url>http://maven.apache.org</url> <properties> <kotlin.version>0.1-SNAPSHOT</kotlin.version> <junit.version>4.10</junit.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-stdlib</artifactId> <version>${kotlin.version}</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <!-- Build an executable JAR --> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> <mainClass>testing.first</mainClass> </manifest> </archive> </configuration> </plugin> <plugin> <artifactId>kotlin-maven-plugin</artifactId> <groupId>org.jetbrains.kotlin</groupId> <version>${kotlin.version}</version> <configuration><sourceDirs> < source > src/ < / s ource > </sourceDirs></configuration> <executions> <execution> <id>compile</id> <phase>process-sources</phase> <goals> <goal>compile</goal> </goals> </execution> <execution> <id>test-compile</id> <phase>process-test-sources</phase> <goals> <goal>test-compile</goal> </goals> </execution> </executions> </plugin> </plugins> </build> <repositories> <repository> <id>sonatype.oss.snapshots</id> <name>Sonatype OSS Snapshot Repository</name> <url>http://oss.sonatype.org/content/repositories/snapshots</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>sonatype.oss.snapshots</id> <name>Sonatype OSS Snapshot Repository</name> <url>http://oss.sonatype.org/content/repositories/snapshots</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> </project> 




यहां कोटलिन-मावेन-प्लगइन की सेटिंग का उपयोग किया जाता है, जहां यह इंगित किया जाता है कि फाइलों को खोजने के लिए किस निर्देशिका में है।
इसके अलावा, maven-jar-plugin का उपयोग किया जाता है। इसे सही ढंग से सेट करने के लिए बहुत महत्वपूर्ण है, अन्यथा यह पता लगाने में लंबा समय लगेगा कि जार " मुख्य मेन मैनिफेस्ट एट्रीब्यूट " त्रुटि के साथ क्यों नहीं शुरू होता है।
निर्माण के बाद, प्रोजेक्ट जार / लक्ष्य निर्देशिका में होगा। आइडिया के पास एक अलग मावेन प्रोजेक्ट विंडो है, जहां से निर्माण का प्रबंधन करना सुविधाजनक है।

जार को चलाने के लिए, कमांड को आमतौर पर निष्पादित किया जाता है

 java -jar /path/to/file.jar argument1 argument2 


मेरे मामले में, यह काम नहीं किया, क्योंकि मैंने मावेन प्लगइन का उपयोग नहीं किया, जो कि कोटलिन जार लाइब्रेरी को बिल्ड में जोड़ देगा।
इसलिए मुझे एक त्रुटि मिलती है

 java -jar target/idea_test-1.0-SNAPSHOT.jar 1 Hello 1 Exception in thread "main" java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics at testing.TestingPackage-first-39a20e2.main(first.kt:27) at testing.TestingPackage.main(first.kt:1) at testing.first.main(first.java:16) Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 


यहाँ से यह स्पष्ट है कि कोटलिन पुस्तकालय स्थित नहीं है।
जार निर्भरता को दर्शाने वाले सही कॉल

 java -cp target/idea_test-1.0-SNAPSHOT.jar:lib/kotlin-runtime.jar testing.first seyfer Hello seyfer seed! 


अब कोड सही तरीके से काम करता है। जैसा कि आप देख सकते हैं, मैंने जावा में तर्क प्राप्त किया, इसे आउटपुट किया, फिर मैंने इसे कोटलिन को पारित कर दिया, और इसके आधार पर मैंने निर्माण के समय काम किया (अर्थ के संदर्भ में यह स्विच-केस जैसा दिखता है)।

निर्माण में निर्भर जार के समावेश के साथ जार बनाने के लिए, आप मावेन प्लगइन - मावेन-निर्भरता-प्लगइन का उपयोग कर सकते हैं। या वन-जार प्रोजेक्ट के लिए वनजर-मावेन-प्लगइन।

मैंने एक-जार का उपयोग करने का फैसला किया।
यहाँ आपको pom.xml को जोड़ने की आवश्यकता है
 <plugin> <groupId>org.dstovall</groupId> <artifactId>onejar-maven-plugin</artifactId> <version>1.4.5</version> <executions> <execution> <configuration> <binlibs> <fileSet> <directory>${project.build.directory}/../lib/</directory> <includes> <include>kotlin-runtime.jar</include> </includes> </fileSet> </binlibs> <!-- Optional, default is false --> <attachToBuild>true</attachToBuild> <!-- Optional, default is "onejar" --> <classifier>onejar</classifier> </configuration> <goals> <goal>one-jar</goal> </goals> </execution> </executions> </plugin> <pluginRepository> <id>onejar-maven-plugin.googlecode.com</id> <url>http://onejar-maven-plugin.googlecode.com/svn/mavenrepo</url> </pluginRepository> 



इसके बाद, प्रोजेक्ट का पुनर्निर्माण करें।
 mvn package 


प्रोजेक्ट name.one-jar.jar फ़ाइल / लक्ष्य निर्देशिका में दिखाई देगी। इसे सामान्य तरीके से बुलाया जा सकता है।

 java -jar target/idea_test-1.0-SNAPSHOT.one-jar.jar seyfer Hello seyfer seed! 


यह मेरे लिए प्रोजेक्ट सेटअप पूरा करता है। ऊपर दिए गए दस्तावेज़ीकरण लिंक का उपयोग करके आप कोटलिन का पता लगा सकते हैं
निजी तौर पर, मुझे वास्तव में भाषा पसंद आई। निस्संदेह, यह अपने आला, साथ ही हैक भाषा, जिसे फेसबुक द्वारा विकसित किया गया है, अपने पीएचपी के संस्करण के रूप में कब्जा कर लेगा।

कोटलिन आधिकारिक पेज।
http://kotlin.jetbrains.org/

उदाहरण के साथ ब्राउज़र में निष्पादन के साथ संपादक।
http://kotlin-demo.jetbrains.com/

वैसे, कोटलिन में पहले से ही एक वेब फ्रेमवर्क लिखा हुआ है।
http://karaframework.com/

Source: https://habr.com/ru/post/In221269/


All Articles