jetbrain kotlin試用筆記

筆記

試用了一下kotlin語言,挺有意思的:一個基於jvm的語言,能夠在jdk6上享用jdk8的lambda、deferred method、stream語法、C#的delegate、類scala語法和類型推斷、ruby的code block 等特性。



以前弄過一段時間的scala,實在無法忍受scala的編譯速度和一次編寫到處編譯的特性(字節碼不兼容)、天書般的APIdoc。不談語法,爲了一些特性,scala把java的集合類都重新實現了一遍----能不用jdk原生的api就不用,這和kotlin剛好相反,基本上是基於jdk的api通過語法糖來做擴展,所以kotlin說自己是簡化版的scala,學習門檻也更低了。


kotlin可以認爲是一個不囉嗦的java,從編譯成javascript的歪路回到重點支持android mobile開發,現在已經被譽爲andorid的swift。支持編譯成javascript之所以被認爲邪路,想想TypeScript、coffeescript、Dartjs、Haxe,kotlin的這個方向對java程序員來說只是一個雞肋。服務器端有scala、groovy,而且kotlin團隊不願意與eclipse xtend團隊合作,本以爲kotlin會逐漸泯然於衆多jvm語言中,沒想到別出心裁切入android移動開發,現在已經被譽爲andorid的swift,相對於java,kotlin提供的語法糖至少能提高20%的效率。


javaer在用jdk8之前,特別是android開發同學應該試試kotlin。我用kotlin開發了一個阿里雲oss上傳工具,整個過程比較順暢。


kotlin的語法點:

https://realm.io/cn/news/droidcon-michael-pardo-kotlin/

官方example:

http://try.kotlinlang.org/

知乎上的評論

http://www.zhihu.com/question/25289041


和Java代碼互相調用之後在jvm上執行,需要進行maven配置:

<dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-stdlib</artifactId>
            <version>${kotlin.version}</version>
        </dependency>
</pre><pre name="code" class="html"><plugin>
                <artifactId>kotlin-maven-plugin</artifactId>
                <groupId>org.jetbrains.kotlin</groupId>
                <version>${kotlin.version}</version>


                <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>

打包成可執行文件:

<plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.4</version>
                <executions>  <!--執行器 mvn assembly:assembly-->
                    <execution>
                        <id>make-jar</id>
                        <!--名字任意 -->
                        <phase>package</phase>
                        <!-- 綁定到package生命週期階段上 -->
                        <goals>
                            <goal>single</goal>
                            <!-- 只運行一次 -->
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <finalName>cdnoss</finalName>
                    <archive>
                        <manifest>
                            <mainClass>com.alipay.dpc.alisis.CdnOssKt</mainClass>
                            <!-- 你的主類 -->
                        </manifest>
                    </archive>

                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <outputDirectory>./</outputDirectory>
                    <!-- 你的輸出路徑 -->
                </configuration>
            </plugin>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章