自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

三分鐘帶你遨游各種JVM語(yǔ)言

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

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


[[182064]]

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

三分鐘帶你遨游各種JVM語(yǔ)言


Kotlin、Clojure、Groovy以及Scala都不支持Checked Exceptions。
2.非空即真的Elvis操作符
在這里之所以選擇Elvis操作符作為討論對(duì)象,是因?yàn)槠涫且环N相當(dāng)便捷的默認(rèn)值處理方式,且有助于降低重構(gòu)情況下的錯(cuò)誤風(fēng)險(xiǎn)。在它的幫助下,我們無(wú)需復(fù)制表達(dá)式以進(jìn)行條件與主動(dòng)返回值測(cè)試,從而輕松實(shí)現(xiàn)Null Safety。

[[182065]]


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


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

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】

責(zé)任編輯:關(guān)崇 來(lái)源: 51CTO
相關(guān)推薦

2022-02-17 09:24:11

TypeScript編程語(yǔ)言javaScrip

2021-04-20 13:59:37

云計(jì)算

2024-01-16 07:46:14

FutureTask接口用法

2024-08-30 08:50:00

2020-06-30 10:45:28

Web開發(fā)工具

2022-02-21 18:16:38

Go語(yǔ)言枚舉

2021-02-03 14:31:53

人工智能人臉識(shí)別

2024-01-12 07:38:38

AQS原理JUC

2024-07-05 09:31:37

2020-03-08 16:45:58

數(shù)據(jù)挖掘學(xué)習(xí)數(shù)據(jù)量

2024-09-13 08:49:45

2024-02-22 07:37:37

對(duì)象JVM內(nèi)存

2024-06-06 08:50:43

2024-05-16 11:13:16

Helm工具release

2009-11-09 12:55:43

WCF事務(wù)

2024-12-18 10:24:59

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

2023-12-27 08:15:47

Java虛擬線程

2020-11-03 09:20:30

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

2013-06-28 14:30:26

棱鏡計(jì)劃棱鏡棱鏡監(jiān)控項(xiàng)目

2022-02-24 10:28:23

物聯(lián)網(wǎng)
點(diǎn)贊
收藏

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