Dart vs JavaScript

1. Dart vs Java

客觀的來講,Dart 在語法層面確實比 Java 更有表現(xiàn)力;在 VM 層面,Dart VM 在內(nèi)存回收和吞吐量都進行了反復的優(yōu)化,但具體的性能對比,筆者沒有找到相關測試數(shù)據(jù),但在筆者看來,只要 Dart 語言能流行,VM 的性能就不用擔心,畢竟 Google 在 Go、JavaScript(v8)、Dalvik( Android 上的 Java VM )上已經(jīng)有了很多技術積淀。值得注意的是 Dart 在 Flutter 中已經(jīng)可以將 GC(內(nèi)存垃圾回收)做到 10ms 以內(nèi),所以 Dart 和 Java 相比,決勝因素并不會是在性能方面。

而在語法層面,Dart 要比 Java 更有表現(xiàn)力,最重要的是 Dart 對函數(shù)式編程支持要遠強于 Java(目前只停留在 Lambda 表達式),而 Dart 目前真正的不足是生態(tài),但筆者相信,隨著 Flutter 的逐漸火熱,會回過頭來反推 Dart 生態(tài)加速發(fā)展,對于 Dart 來說,現(xiàn)在需要的是時間。

2. Dart vs JavaScript

JavaScript 的“弱類型”一直被詬病,所以 TypeScript (JavaScript語言的超集,語法兼容JavaScript,但添加了“類型”)才有市場。就筆者使用過的腳本語言中(筆者曾使用過 Python、PHP),JavaScript 無疑是動態(tài)化支持最好的腳本語言,比如在 JavaScript 中,可以給任何對象在任何時候動態(tài)擴展屬性,對于精通 JavaScript 的高手來說,這無疑是一把利劍。但是,任何事物都有兩面性,JavaScript 強大的動態(tài)化特性也是把雙刃劍,你可經(jīng)常聽到另一個聲音,認為 JavaScript 的這種動態(tài)性糟糕透了,太過靈活反而導致代碼很難預期,無法限制不被期望的修改。畢竟有些人總是對自己或別人寫的代碼不放心,他們希望能夠讓代碼變得可控,并期望有一套靜態(tài)類型檢查系統(tǒng)來幫助自己減少錯誤。

正因如此,在 Flutter中,Dart 幾乎放棄了腳本語言動態(tài)化的特性,如不支持反射、也不支持動態(tài)創(chuàng)建函數(shù)等。并且 Dart 從 2.0 開始強制開啟了類型檢查(Strong Mode),原先的檢查模式(checked mode)和可選類型(optional type)將淡出,所以在類型安全這個層面來說,Dart 和 TypeScript、CoffeeScript 是差不多的,所以單從動態(tài)性來看,Dart 并不具備什么明顯優(yōu)勢,但綜合起來看,Dart 既能進行服務端腳本、App 開發(fā)、Web 開發(fā),這就有優(yōu)勢了!

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)自 https://book.flutterchina.club/chapter1/dart.html(去那看 ...
    磊簡單閱讀 1,270評論 0 0
  • 學習使用,研究完就刪原文地址Dart語言簡介在之前我們已經(jīng)介紹過Dart語言的相關特性,讀者可以翻看一下,如果你熟...
    zda123000閱讀 1,013評論 0 1
  • 在之前我們已經(jīng)介紹過Dart語言的相關特性,讀者可以翻看一下,如果讀者已經(jīng)熟悉Dart語法,可以跳過本節(jié),如果你還...
    沫之閱讀 434評論 0 2
  • 標簽(空格分隔): Dart Flutter Dart在靜態(tài)語法方面和Java非常相似,如類型定義、函數(shù)聲明、泛型...
    黃昭鴻閱讀 514評論 0 0
  • 在上一篇教程中說了Flutter使用Dart語言開發(fā)。本篇教程整體介紹一下Dart語言,注意,本篇不會介紹Dart...
    lazydu閱讀 5,181評論 3 13

友情鏈接更多精彩內(nèi)容