Это пост о том, как я познакомился с языком Kotlin, какие ресурсы и инструменты для этого использовал, как скомпилировал его в jar и запустил в консоли.
В общем, я PHP-программист с небольшим знанием Java. На днях я решил присмотреться к Котлину.
Это менее строго типизированный язык от JetBrains до такой степени, что он по существу статически типизирован.
В этом его главное принципиальное отличие от Java, плюс у Котлина свой приятный синтаксис.
Kotlin можно скомпилировать в JVM или JavaScript. Начнем знакомиться.
Сначала вам нужна идея IDE. http://www.jetbrains.com/idea/ Инструкция по установке также есть на сайте.
Версия 13+.
Внутри IDE я создал простой Java-проект. Далее вам необходимо установить плагин JetBrains для IDE. http://confluence.jetbrains.com/display/Kotlin/Getting+Started Плагин добавляет автодополнение и возможность создавать проекты Kotlin. Также добавлены инструменты для компиляции Kotlin. Особенность Kotlin в том, что он полностью совместим с Java. Те.
Код, написанный на Kotlin, можно вызывать на Java и наоборот. Поэтому все инструменты и библиотеки, которые используются для работы с Java, применимы и для Kotlin. Если проект в IDE изначально создан не Kotlin, то после установки плагина вы можете включить поддержку Kotlin. После включения в проект jar-библиотеки Kotlin будут добавлены в каталог /lib. Я включил Kotlin и написал следующий тестовый код в папке /src/testing:
Я специально оставил комментарии в файле Kotlin. Это примеры со страницы http://confluence.jetbrains.com/display/Kotlin/Hello%2C+world%21 Для начала я отдельно запустил файл Kotlin в IDE, чтобы убедиться, что плагин работает и код скомпилирован.//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" }) }
Затем я создал класс Java: //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);
}
}
Здесь вы можете видеть, что я хочу взять аргумент и передать его непосредственно в Котлин.
В Котлине я использовал пример с языками и добавил еще один свой, который зависит от аргумента — моего ника.
В Java вы можете вызывать методы и получать доступ к переменным из Kotlin, вызывая PackageNamePackage.methodname().
Если правильно настроить выполнение проекта в IDE, то можно указать, с каким аргументом будет вызываться программа.
Но это очень неудобно; Я хотел бы изменить аргумент на лету, чтобы отловить ошибки для тестирования.
Мне нужно было создать банку для запуска с консоли.
В проекте изначально не было maven, поэтому я добавил его туда.
Эта страница помогла мне в этом.
http://confluence.jetbrains.com/display/Kotlin/Kotlin+Build+Tools Документация Kotlin достаточно информативна, чтобы изучить язык с ее помощью.
Также, что касается построения с использованием maven и gradle, вы можете увидеть следующие примеры.
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>
При этом используется настройка kotlin-maven-plugin, которая указывает, в каком каталоге искать файлы.
Также используется плагин maven-jar. Очень важно правильно написать < манифестировать > , иначе придется долго разбираться, почему jar не запускается с ошибкой" Нет основного атрибута манифеста ".
После сборки jar-файл проекта будет расположен в каталоге /target. В Idea есть отдельное окно maven-проектов, откуда удобно управлять конструкцией.
Для запуска jar обычно выполняется команда java -jar /path/to/file.jar argument1 argument2
В моем случае это не сработало, потому что.
я не использовал плагин maven, который бы добавил в сборку jar-библиотеку Kotlin.
Поэтому я получаю ошибку java -jar target/idea_test-1.0-SNAPSHOT.jar 1
Hello 1
Exception in thread "main" java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics
Теги: #ide #idea #jar #java #jetbrains #Kotlin #программирование #java #Kotlin
-
Обзор: Управление Документами Liferay
19 Oct, 24 -
Удар Полуночи
19 Oct, 24 -
Зеленый Веб-Хостинг — Это Трюк?
19 Oct, 24 -
Лакруа, Жан
19 Oct, 24 -
Lumix Gf3 - Хакер
19 Oct, 24 -
Язык Разметки Эмоций (Emotionml) 1.0
19 Oct, 24