成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

三分鐘帶你遨游各種JVM語言

譯文
云計算
無論您最熟悉的Java、Scala還是其它JVM語言,總會有更多JVM語言不斷出現并伴隨著各種相關特性。最重要的是,總有一些來自某些語言的、優秀的“基本”元素在其它語言中難覓其蹤。

【51CTO.com快譯】無論您最熟悉的Java、Scala還是其它JVM語言,總會有更多JVM語言不斷出現并伴隨著各種相關特性。最重要的是,總有一些來自某些語言的、優秀的“基本”元素在其它語言中難覓其蹤。


[[182064]]

正因為如此,我們整理出了這樣一篇精簡的囊括Groovy、Scala、Clojure、Kotlin以及Java的部分最佳特性的文章。闡述了它們的區別,以幫助你在項目研發里面合理的選擇他們。
1.是否檢查異常情況
Java中最具爭議的特性當屬Checked Exceptions,Checked Exceptions會在編譯時強制執行,同時需要進行某種排序處理。這意味著我們需要在方法中對其進行捕捉或者聲明。
雖然部分開發者更傾向于忽略Checked Exceptions,但這一特性確實能夠強制要求大家處理例外情況并借此改善代碼質量。因此,雖然其人氣不高甚至在一定程度上可以忽略,但必須承認其對于提升編碼思路還是有所助益的。

三分鐘帶你遨游各種JVM語言


Kotlin、Clojure、Groovy以及Scala都不支持Checked Exceptions。
2.非空即真的Elvis操作符
在這里之所以選擇Elvis操作符作為討論對象,是因為其是一種相當便捷的默認值處理方式,且有助于降低重構情況下的錯誤風險。在它的幫助下,我們無需復制表達式以進行條件與主動返回值測試,從而輕松實現Null Safety。

[[182065]]


elvis這個二元運算操作符會返回第一個為true的操作數,否則則返回第二個操作數。Elvis操作符屬于三元運算符的精簡版(三元運算符同樣可用于Java),后者本身又是用于將值分配至變量的if/else分支表達式的精簡版。下面是Groovy代碼示例:
// Ternary operator - works the same on Java
def ternaryOutput = (sampleText != null) ? sampleText : 'Hello Groovy!'
// The Elvis operator in action. We must read: 'If sampleText is not null assign
// sampleText to elvisOuput, otherwise assign 'Viva Las Vegas!' to elvisOutput.
def elvisOutput = sampleText ?: 'Viva Las Vegas!'
Kotlin同樣使用Elvis操作符在null引用中實現null安全,但必須使用“?”。如果該操作符左側的表達式非null,則Elvis會將其返回。否則,其返回該操作符右側的表達式。整個過程可以簡單翻譯為以下行:
val l = b?.length ?: -1
Java并不提供Elvis操作符,但其利用類似的方式實現Null Safety,因此大家需要在處理null輸入時做好準備。大家可以使用Optional<T>作為可選方案,其能夠容納一個可以或不可以包含非null值的對象。因此如果某個值切實存在,isPresent()將返回true而用get()將返回該值。
同樣,Scala采用類似的Optional[T]實現相同效果。其能夠容納符合特定類型的0或1元素。如果某值缺失,大家會收到具有None值的Some[T]。
3.類似弱類型語言的類型推斷機制
Kotlin和Scala都引入了一種類型推斷機制,允許我們在定義變量的時候不需要指定類型,即整形、字符串、浮點型等等。而由語言本身在運行的時候去決定這個變量是什么類型,下面是基于Scala和Kotlin定義變量的實例。
var randomVar = 6;
val randomVal = "What should I write here?";
val box = Box(1) // 1 has type Int, so the compiler figures out that we are talking about Box<Int>
因為類型推斷機制給我們帶來了很多優勢,比如不用去記去寫很多繁瑣的字符,所以甲骨文意識到這點,并且開始向技術社區征求實現局部變量推斷的意向調查,這說明在未來,Java將有機會引入這個機制。
4.Java即將引入節約時間成本的REPL
Clojure、Groovy、Kotlin以及Scala都具有一個節約時間成本的命令行工具Read-Eval-Print-Loop(簡稱REPL)。該工具允許在無需打包為類或者方法的前提下直接運行語句、如果我們需要立即獲得反饋,那么這種方法顯然更加簡便易行。
好消息是,Java 9即將引入longtools軟件包,而REPL正是其中的組成部分,該工具將允許我們評估聲明、語句及表達式,也能夠在JShell持續讀取用戶輸入內容、評估輸入內容并顯示輸入值或者因輸入造成的狀態變更說明,進而快速完成代碼原型設計。
總結
各類JVM語言都擁有自己的獨到優勢,這也是我們喜愛它們的原因。而在談到技術社區最大的愿望時,人們顯然希望能夠將部分Scala特性引入Java當中。


原文鏈接:https://dzone.com/articles/java-wish-list-the-top-differences-between-java-sc
原文標題:The Top Differences Between Java, Scala, Groovy, Clojure, and Kotlin
原文作者:Henn Idan
文章審核人:回憶的翅膀 譯者: 核子可樂

【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】

責任編輯:關崇 來源: 51CTO
相關推薦

2024-01-16 07:46:14

FutureTask接口用法

2021-04-20 13:59:37

云計算

2022-02-17 09:24:11

TypeScript編程語言javaScrip

2024-08-30 08:50:00

2020-06-30 10:45:28

Web開發工具

2022-02-21 18:16:38

Go語言枚舉

2024-07-05 09:31:37

2024-01-12 07:38:38

AQS原理JUC

2021-02-03 14:31:53

人工智能人臉識別

2020-03-08 16:45:58

數據挖掘學習數據量

2024-09-13 08:49:45

2024-02-22 07:37:37

對象JVM內存

2024-06-06 08:50:43

2024-05-16 11:13:16

Helm工具release

2009-11-09 12:55:43

WCF事務

2024-12-18 10:24:59

代理技術JDK動態代理

2023-12-27 08:15:47

Java虛擬線程

2020-11-03 09:20:30

MySQLOracle數據庫

2013-06-28 14:30:26

棱鏡計劃棱鏡棱鏡監控項目

2024-08-05 09:05:44

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产玖玖 | 涩涩视频网 | 亚洲欧美在线一区 | 在线视频日韩 | 国产日韩精品在线 | 国产成人精品综合 | 久久久久久亚洲精品 | 国产精品久久久久久 | 亚洲激情一区二区 | 日韩中文字幕视频在线观看 | 中文字幕亚洲欧美 | 欧美精品一二三 | 日本不卡免费新一二三区 | 欧美久久久久久久久中文字幕 | 国产午夜精品久久久久 | 日本福利在线观看 | 日本精品视频 | 国产精品久久久久久久7电影 | 一区二区在线 | 亚洲精品视频在线播放 | 国产精品一区久久久久 | 一级欧美黄色片 | 亚洲综合在线视频 | 久久久久久久国产精品 | www.av在线| 成人亚洲精品久久久久软件 | 99精品久久久久久久 | 日韩一区二区福利 | 国产69精品久久久久777 | 日本一区精品 | www.日韩 | 凹凸日日摸日日碰夜夜 | 国产免费视频在线 | 91久久| 黑人巨大精品欧美一区二区一视频 | 亚洲国产一区二区三区在线观看 | 精品在线一区二区 | 久久伊人青青草 | 中文字幕免费 | 亚洲在线看| 国产亚洲欧美日韩精品一区二区三区 |