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

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

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

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


[[182064]]

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

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


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

[[182065]]


elvis這個二元運算操作符會返回第一個為true的操作數(shù),否則則返回第二個操作數(shù)。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引用中實現(xiàn)null安全,但必須使用“?”。如果該操作符左側(cè)的表達式非null,則Elvis會將其返回。否則,其返回該操作符右側(cè)的表達式。整個過程可以簡單翻譯為以下行:
val l = b?.length ?: -1
Java并不提供Elvis操作符,但其利用類似的方式實現(xiàn)Null Safety,因此大家需要在處理null輸入時做好準備。大家可以使用Optional<T>作為可選方案,其能夠容納一個可以或不可以包含非null值的對象。因此如果某個值切實存在,isPresent()將返回true而用get()將返回該值。
同樣,Scala采用類似的Optional[T]實現(xiàn)相同效果。其能夠容納符合特定類型的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>
因為類型推斷機制給我們帶來了很多優(yōu)勢,比如不用去記去寫很多繁瑣的字符,所以甲骨文意識到這點,并且開始向技術(shù)社區(qū)征求實現(xiàn)局部變量推斷的意向調(diào)查,這說明在未來,Java將有機會引入這個機制。
4.Java即將引入節(jié)約時間成本的REPL
Clojure、Groovy、Kotlin以及Scala都具有一個節(jié)約時間成本的命令行工具Read-Eval-Print-Loop(簡稱REPL)。該工具允許在無需打包為類或者方法的前提下直接運行語句、如果我們需要立即獲得反饋,那么這種方法顯然更加簡便易行。
好消息是,Java 9即將引入longtools軟件包,而REPL正是其中的組成部分,該工具將允許我們評估聲明、語句及表達式,也能夠在JShell持續(xù)讀取用戶輸入內(nèi)容、評估輸入內(nèi)容并顯示輸入值或者因輸入造成的狀態(tài)變更說明,進而快速完成代碼原型設計。
總結(jié)
各類JVM語言都擁有自己的獨到優(yōu)勢,這也是我們喜愛它們的原因。而在談到技術(shù)社區(qū)最大的愿望時,人們顯然希望能夠?qū)⒉糠諷cala特性引入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譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】

責任編輯:關(guān)崇 來源: 51CTO
相關(guān)推薦

2024-08-30 08:50:00

2022-02-17 09:24:11

TypeScript編程語言javaScrip

2024-01-16 07:46:14

FutureTask接口用法

2021-04-20 13:59:37

云計算

2020-06-30 10:45:28

Web開發(fā)工具

2022-02-21 18:16:38

Go語言枚舉

2024-01-12 07:38:38

AQS原理JUC

2021-02-03 14:31:53

人工智能人臉識別

2024-07-05 09:31:37

2024-09-13 08:49:45

2020-03-08 16:45:58

數(shù)據(jù)挖掘學習數(shù)據(jù)量

2024-02-22 07:37:37

對象JVM內(nèi)存

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

代理技術(shù)JDK動態(tài)代理

2023-12-27 08:15:47

Java虛擬線程

2013-06-28 14:30:26

棱鏡計劃棱鏡棱鏡監(jiān)控項目

2020-11-03 09:20:30

MySQLOracle數(shù)據(jù)庫

2024-08-05 09:05:44

點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 成人精品一区二区 | 国产精品一区二区福利视频 | 9191av| 亚洲精品国产一区 | 日日操操 | 91在线免费视频 | 男女啪啪高潮无遮挡免费动态 | 国产美女自拍视频 | 国产视频精品在线观看 | 欧美影院| 亚洲高清一区二区三区 | 中文字幕日韩在线 | 精品久久久久久久 | 欧美三区 | 国产精品久久久久久久久久免费看 | 欧美国产日韩一区 | 中文字幕免费 | 伊人中文字幕 | 欧美视频二区 | 91视频在线观看免费 | 国产精品一区二区福利视频 | 日韩精品一区二区三区视频播放 | 亚洲精品久久久久久国产精华液 | 久久久久久九九九九 | 操视频网站 | 亚洲一区二区三区在线播放 | 91精品国产综合久久久动漫日韩 | 日韩欧美国产一区二区 | 免费久草 | 激情六月丁香 | 婷婷久久精品一区二区 | 毛片a区| 国产精品久久久久永久免费观看 | 在线免费观看亚洲 | 欧美一级黑人aaaaaaa做受 | 色狠狠一区 | 久久久久久亚洲精品 | 久久av综合 | 国产午夜视频 | 国产在线a| 日韩欧美国产成人一区二区 |