kotlin(1)-HelloWorld
標簽: kotlin
新人報道–Kotlin(HelloWorld)
本人大三,是新人,需要大神們多多指教哈!
今天是我第一次發blog,,也是java的生日,先祝我們的CafeBaby 生日快樂。
- Kotlin–Hello World!
- 與Java相比
- 運行所加載的類
- 加載額外的類
- 查看類的結構
- 用java反編譯器查看
Kotlin–Hello World!
當單一的Java開發已經無法滿足當前軟件的復雜需求時,越來越多基于Java虛擬機的語言開發被應用到軟件項目中,Java平臺上的多語言混合編程正成為主流,每種語言都可以針對自己擅長的方面更好地解決問題。
昨天剛接觸了下一門運行在jvm上的語言—kotlin,他的語法與java相比下,簡單易懂。
所以做了個簡單測試HelloWorld,我是使用eclipse,用習慣了。
fun main(args: Array<String>) {
println("HelloWorld!")
}
這個結構與public static void main(String args[]){….}有點相似。
輸出結果必然是“HelloWorld!”。
與Java相比
Kotlin與java語言都是運行在jvm上的語言,既然運行在jvm之上運行,那必須符合jvm的排序規則,編譯加載.class文件(關于類加載機制過程就不詳細講解了,過段時間專門寫一個關于這樣的專題)。
我就很好奇它的加載過程,我就做了個測試,代碼很簡單。
Kotlin:
fun main(args: Array<String>) {
println("HelloWorld!")
}
Java:
public static void main(String[] args) {
System.out.println("Hello World");
}
代碼很簡單
運行所加載的類
Kotlin:
Java:
前面加載的一模一樣,但是往后看就會發現不同。
加載額外的類
java:
到此加載完畢后輸出結果
Kotlin:
它加載并沒有結束,還通過sun.misc.URLClassPath$JarLoader去加載額外的jar包
[Loaded sun.security.util.SignatureFileVerifier from C:\Program Files\Java\jre1.8.0_101\lib\rt.jar]
[Loaded sun.security.util.ManifestEntryVerifier from C:\Program Files\Java\jre1.8.0_101\lib\rt.jar]
[Loaded kotlin.jvm.internal.Intrinsics from file:/F:/eclipse/configuration/org.eclipse.osgi/1310/0/.cp/lib/kotlin-runtime.jar]
[Loaded kotlin.KotlinNullPointerException from file:/F:/eclipse/configuration/org.eclipse.osgi/1310/0/.cp/lib/kotlin-runtime.jar]
加載了kotlin.jvm.internal.Intrinsics這個類從kotlin-runtime.jar里。
我那時候發現[Loaded kotlin.jvm.internal.Intrinsics…,這個是kotlin中的一個類,但是很好奇的是代碼中沒有出現或者說沒有去聲明。
查看類的結構
我比較好奇這個類為什么會被加載,我拿出Kotlin編譯好的class文件,看了下他的結構:
很驚奇的發現這個類確實被加載進來引用
也發現了Helloworld這個類是被final修飾的(kotlin生成類的規范, 包含類、方法、變量, 默認是final等),我還想查看個究竟,通過反編譯查看這個代碼。
用java反編譯器查看
后來發現這個類是在運行時檢查參數是否為空值,null檢查與kotlin語法的關系生成的java類名與kotlin文件名的對應關系。
在應用上來看,kotlin的語法的確比較簡單易用(本人目前來看),但是我相信每種語言都可以針對自己擅長的方面更好地解決問題。
關于kotlin的一些知識或者我個人對他的一些看法會持續更新喔,歡迎大家來多多提意見哈!
由于這是本人第一次寫博客,需要大家多多指教。有啥意見問題多留言哈!
智能推薦
(1)JPA - 概述,HelloWorld
1 概述 1.1 JPS是什么? 1.2 JAP 和 Hibernate的關系 1.3 JAP的優勢 1.4 JPA包括3方面的技術 2 HelloWorld 2.1 使用JPA持久化對象的步驟 2.2 創建了導入jar包 創建lib,加入jar包。 2.3 連接數據庫的基本信息 新建數據庫:jpa 配置文件里面已經默認加載了。 2.4 配置JPA 實現產品的基本屬性,配置hibernate的基本...
SpringMVC - (1)HelloWorld
一.創建動態Web工程 二.導入需要的包 三.配置web.xml 使用spring提供給我們的servlet 一個servlet對應一個請求,以前的servlet都是我們自己寫的,我們知道具體是做什么的,現在springMVC為我們提供了一個servlet。 會根據你 <init-param>中的參數找到 springmvc.xml 四.配置springmvc.xml 1.namesp...
SpringBoot系列:1、HelloWorld
環境: maven:3.6.2 jdk:1.8 SpringBoot:2.1.9.RELEASE 開發工具:IDEA 1、SpringBoot簡介 簡化Spring應用的初始化搭建以及開發過程 整個Spring技術棧的一個大整合 J2EE開發的一站式解決方案 約定大于配置 2、微服務 英文版:https://martinfowler.com/articles/microservices.html微...
SpringMVC -1 - 歸檔 、 HelloWorld
文章目錄 一些整理: 正式開始: 一些整理: 官網 - http://projects.spring.io/spring-framework/ 官方文檔: Spring Framework 5.2.3.RELEASE API : https://docs.spring.io/spring/docs/current/javadoc-api/ Spring Framework Documentatio...
SpringMVC(1) helloWorld項目
通過SpringMVC,創建HelloWorld項目 添加依賴 配置web.xml 在resources下,創建springmvc-servlet.xml配置文件 創建Hello (com.pual.controller.Hello)類 在WEB-INF下,創建jsp/hello.jsp 6.啟動服務器測試 常見問題...
猜你喜歡
1、SpringBoot入門-helloWorld
1、SpringBoot入門-helloWorld 什么是 Spring Boot 快速入門 Maven 構建項目 Idea 構建項目 引入 web 模塊 參考:http://www.ityouknow.com/spring-boot.html 這兩天在做一個springBoot的單元測試,發現不會寫了spingBoot-test的注解,尷尬了,決定把springBoot的東西梳理記錄下 什么是 ...
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...
requests實現全自動PPT模板
http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...