Flutter是谷歌公司推出的跨終端的開發(fā)框架,支持Android、iOS和WEB終端。1.0版在2018年12月5日發(fā)布,目前的最新版本是1.5,它采用的開發(fā)語言是Dart,Dart也是谷歌開發(fā)的計(jì)算機(jī)編程語言,語法類似C,是編譯型語言:

成都創(chuàng)新互聯(lián)公司是專業(yè)的鹽城網(wǎng)站建設(shè)公司,鹽城接單;提供網(wǎng)站建設(shè)、網(wǎng)站制作,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行鹽城網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
hello world例子,打印字符串“Hello World!”:
1、沒有橋接層
React Native、Weex等技術(shù)都是跨終端的框架,然而性能跟原生App存在很大差距。這是由于它們的工作原理決定的:
React Native、Weex等技術(shù)多了一個(gè)橋接層,所以界面渲染會(huì)慢一些,由于UI渲染非常頻繁,想要不卡頓,基本上比較難,性能和用戶體驗(yàn)跟原生代碼有差距。而這恰恰是Flutter的優(yōu)勢(shì)所在:
Dart可以被編譯成不同平臺(tái)的本地代碼,讓Flutter不通過橋接層直接跟平臺(tái)通信,自然性能會(huì)快一些。
2、編譯執(zhí)行
JavaScript是解釋執(zhí)行的,Dart是編譯執(zhí)行的,性能誰好一目了然。
3、Flutter Engine虛擬機(jī)
Flutter是依靠Flutter Engine虛擬機(jī)在iOS和Android上運(yùn)行的,F(xiàn)lutter Engine使用C/C++編寫,開發(fā)人員通過Flutter框架直接和API在內(nèi)部進(jìn)行交互,所以具有輸入低延遲和UI渲染高幀速率的特點(diǎn)。除了這特點(diǎn)之外,F(xiàn)lutter還提供了自己的小部件,F(xiàn)lutter小部件是使用從React獲取靈感的現(xiàn)代框架構(gòu)建的。 中心思想是您使用小部件構(gòu)建UI。
窗口小部件根據(jù)其當(dāng)前配置和狀態(tài)描述了它們的視圖。 當(dāng)窗口小部件的狀態(tài)發(fā)生更改時(shí),窗口小部件會(huì)重建其描述,框架將根據(jù)前面的描述進(jìn)行區(qū)分,以確定底層呈現(xiàn)樹從一個(gè)狀態(tài)轉(zhuǎn)換到下一個(gè)狀態(tài)所需的最小更改。可以直接在OS平臺(tái)提供的畫布上進(jìn)行描繪,也就是一些核心類庫直接放到虛擬機(jī)里面,調(diào)用起來更快。
從它的系統(tǒng)結(jié)構(gòu)可以看出,類似安卓的ART(Android Run Time)虛擬機(jī),同樣采用AOT(Ahead of TIme)技術(shù),會(huì)在APP安裝時(shí)就編譯成機(jī)器語言,不再解釋執(zhí)行,從而優(yōu)化了APP運(yùn)行的性能。
4、自帶渲染引擎
Flutter使用谷歌自己的Skia渲染引擎,而Android系統(tǒng)自帶Skia引擎,iOS平臺(tái)上Flutter也會(huì)把Skia引擎打包到APP中,從而實(shí)現(xiàn)了高效渲染。而React Native通過橋接層訪問原生UI,操作頻繁就容易出性能問題。
綜合所述,F(xiàn)lutter 是性能最接近原生代碼 的一種開發(fā)框架,未來也會(huì)是構(gòu)建谷歌Fuchsia應(yīng)用的主要方式,前途不可限量,唯一的問題就是需要學(xué)習(xí)一門新的語言:Dart,而有Java或者C#語言基礎(chǔ)的程序員會(huì)比較容易學(xué)習(xí)。
1. Spring
Spring框架是一款功能強(qiáng)大的輕量級(jí)Web應(yīng)用開發(fā)框架。面對(duì)需要高性能的復(fù)雜Web應(yīng)用需求,Spring能夠提供出色的開發(fā)服務(wù),因此它在各個(gè)框架中能夠脫穎而出。Spring框架的核心宗旨是使得Java開發(fā)人員可以輕松地創(chuàng)建出企業(yè)級(jí)的應(yīng)用程序。
Spring提供了包括:Spring MVC、Spring Core、Spring Security、Spring Transaction、Spring Boost、以及Spring ORM在內(nèi)的許多模塊,以方便企業(yè)應(yīng)用根據(jù)實(shí)際情況靈活選用。如果您想深入了解其具體的使用場(chǎng)景和用法的話,可以參見《Spring框架注釋指南(A Guide to Spring Framework Annotations)》。
優(yōu)點(diǎn)
它提供了一個(gè)輕量級(jí)的容器,用戶無需使用Web服務(wù)器、或應(yīng)用服務(wù)器軟件,即可啟動(dòng)之。
由于支持JDBC,因此可提高實(shí)際應(yīng)用的生產(chǎn)率,并減少錯(cuò)誤率。
Spring能夠同時(shí)支持XML,以及基于注釋的配置。
它提供了代碼的向后兼容性,和可測(cè)試性。
2. JSF(Java Server Faces)
由Oracle開發(fā)的Java Server Faces(JSF),可用于創(chuàng)建企業(yè)級(jí)的應(yīng)用程序、各種原生應(yīng)用、以及Web應(yīng)用的開發(fā)。它往往也被用于為基于Java的應(yīng)用開發(fā)用戶界面。
作為一款穩(wěn)定的、且基于組件的MVC框架,JSF具有一種清晰的體系結(jié)構(gòu),用戶可以用它來明確地區(qū)分出目標(biāo)應(yīng)用的邏輯和表示。
JSF只需通過拖放UI組件,即可幫助開發(fā)人員創(chuàng)建用戶界面。開發(fā)者無需掌握諸如:HTML、CSS、JavaSript之類的高級(jí)客戶端技術(shù)知識(shí),便可用它來簡(jiǎn)化應(yīng)用程序的表示層,并進(jìn)行開發(fā)。
優(yōu)點(diǎn)
JSF是Java EE的組成部分。
它提供了出色的工具和豐富的庫。
由于允許用戶使用Web界面,來擴(kuò)展現(xiàn)有的后端Java代碼,因此用戶不必通過引入新的框架,來更改基本的應(yīng)用程序。
3. Google Web Toolkit
Google Web Toolkit(GWT)是一個(gè)完全免費(fèi)的,流行且開源的Web框架。它可以幫助開發(fā)人員針對(duì)Java Ajax應(yīng)用進(jìn)行開發(fā)和調(diào)試。
借助GWT,您可以編寫出各種復(fù)雜的、基于瀏覽器的應(yīng)用程序,而無需具備JavaScript等前端技術(shù)方面的專業(yè)知識(shí)。
當(dāng)然,GWT也有一些獨(dú)特的功能,其中包括:跨瀏覽器的可移植性、歷史記錄的管理、國(guó)際化、以及書簽。許多Google產(chǎn)品,包括:AdSense、Google Wallet、以及Blogger都是使用GWT編寫的。
優(yōu)點(diǎn)
開源且完全免費(fèi)。
對(duì)開發(fā)人員十分友好。
支持常見的Web開發(fā)任務(wù)重用。
Google API可以在GWT應(yīng)用程序中被使用。
提供國(guó)際化、跨瀏覽器的可移植性、UI抽象、書簽、以及歷史記錄管理。
4. Vaadin
Vaadin是一種用于簡(jiǎn)化Java開發(fā)的Web應(yīng)用框架。它能夠方便開發(fā)人員構(gòu)建出自定義的Web開發(fā)服務(wù)。
該框架的主要優(yōu)勢(shì)在于客戶端與服務(wù)器端之間可以流暢地通信。Vaadin可以從Java虛擬機(jī)處直接訪問DOM。作為一個(gè)輕量級(jí)的框架,Vaadin Flow可被用于處理服務(wù)器端和客戶端之間的路由通信。Vaadin允許開發(fā)者將Vaadin組件集成到他們正在使用的任何一款I(lǐng)DE中。由于Vaadin是跨平臺(tái)類型的框架,因此用戶無需將代碼遷移到其他的平臺(tái)上。
在使用Vaadin的過程中,開發(fā)人員不需要具有豐富的HTML、CSS、以及JavaScript經(jīng)驗(yàn)。Vaadin會(huì)自動(dòng)將Java轉(zhuǎn)換為標(biāo)記。
優(yōu)點(diǎn)
通過支持拖放、以及其他出色的功能,它簡(jiǎn)化了Java應(yīng)用單頁UI的創(chuàng)建。
具有WebSocket支持的自動(dòng)化“服務(wù)器端-客戶端”通信方式。
使用MVC(Model-View-Controller)或MVP(Model-View-Presenter),來進(jìn)行數(shù)據(jù)綁定。
帶有嵌套路由和參數(shù)支持的路由器。
支持包括Kotlin和Scala在內(nèi)的JVM語言。
內(nèi)置了對(duì)于Spring的支持。
5. Hibernate
Hibernate是一個(gè)對(duì)象關(guān)系映射(Object-Relational Mapping,ORM)型數(shù)據(jù)庫,可被用于開發(fā)出穩(wěn)定的Java框架。對(duì)象關(guān)系映射往往被用于橫跨兩個(gè)不兼容的系統(tǒng),以連接數(shù)據(jù)。Hibernate在關(guān)系數(shù)據(jù)庫管理系統(tǒng)(relational database management systems,RDBMS)和Java應(yīng)用程序之間,提供了良好的通信。它非常適合工作在復(fù)雜的生態(tài)系統(tǒng)中,并對(duì)數(shù)據(jù)流實(shí)現(xiàn)無縫化。
在使用諸如Java之類的面向?qū)ο蟮恼Z言時(shí),開發(fā)人員往往會(huì)遇到被稱為“對(duì)象關(guān)系阻抗不匹配”或“范例不匹配”的問題。Hibernate為開發(fā)人員提供了一個(gè)可以克服此類問題的框架。
Hibernate的查詢與SQL類似,稱為HQL(Hibernate查詢語言)。Hibernate可以直接將Java類映射到相應(yīng)的數(shù)據(jù)庫表上,反之亦然。Hibernate在其主文件--hibernate.cfg.xml中,提供了使用數(shù)據(jù)庫配置映射的各種Java類信息。
優(yōu)點(diǎn)
一種強(qiáng)大的跨數(shù)據(jù)庫解決方案。
可擴(kuò)展。
數(shù)據(jù)可以輕松地實(shí)現(xiàn)轉(zhuǎn)換。
可配置。
總結(jié)
希望上面介紹到的各種最受歡迎的、使用最廣泛的Web應(yīng)用開發(fā)Java框架,能夠幫助您從易用性、配套文檔、以及技術(shù)支持等需求維度,選出適合自己實(shí)際項(xiàng)目的框架。當(dāng)然如果您是一名新手,那么我建議從《Java信息圖(Java Infographic)》一文,快速熟悉并上手Java。
不久前,谷歌正式推出 Jetpack Compose 1.0 版本。近日,JetBrains 在此基礎(chǔ)上發(fā)布了 Compose Multiplatform Alpha 版本,旨在將 Compose 擴(kuò)展到桌面和 Web 端。
Compose Multiplatform 由 Compose for Desktop 和 Compose for Web 組成,通過 Kotlin Multiplatform 支持許多不同的平臺(tái)。其中,Compose Desktop 采用 Google 的 Skia 圖形庫,來實(shí)現(xiàn)在 Windows、macOS 和 Linux 上的 UI 繪制,借此在所有支持的操作系統(tǒng)中提供統(tǒng)一的體驗(yàn),類似于 Flutter 的做法。
根據(jù) Kotlin 團(tuán)隊(duì)的說法,相比起 Electron 框架,Compose Multiplatform 在內(nèi)存消耗、安裝大小和 UI 渲染性能等方面將有更明顯的優(yōu)勢(shì)。隨著 Alpha 版本的發(fā)布,Compose Multiplatform 還收獲了新的 Android Studio 插件,包括對(duì)在 IDE 中顯示組件預(yù)覽的支持以及許多附加功能。
我們希望通過本文幫助大家進(jìn)一步了解 Compose 的跨平臺(tái)能力,以及 JetBrains 將 Compose 從 Android 擴(kuò)展到這些其他平臺(tái)背后的主要驅(qū)動(dòng)力是什么。
基于 Jetpack Compose 1.0
由谷歌打造的 Jetpack Compose 是一款用于在 Android 應(yīng)用程序之內(nèi)構(gòu)建用戶界面的官方框架,上周剛剛發(fā)布 1.0 版本。與此同時(shí),Android Studio 代號(hào)“極狐”的首個(gè)穩(wěn)定版 2020.3.1 也正式亮相。
盡管才剛迎來 1.0,但谷歌表示“目前 Play Store 中已經(jīng)有超過 2000 款應(yīng)用程序在使用 Compose——更重要的是,就連 Play Store 這款應(yīng)用本身也在使用 Compose。”谷歌方面還表示,“我們一直在與一些頂級(jí)應(yīng)用的開發(fā)人員進(jìn)行合作,他們的反饋和支持幫助我們使 1.0 版本更加強(qiáng)大。”
Jetpack Compose for Android 迎來 1.0 版本
Compose 基于 Kotlin 開發(fā),而 Kotlin 與 Android Studio(即官方指定的 Android IDE)均來自開發(fā)工具廠商 JetBrains。雖然 Jetpack Compose 專為 Android 打造(與谷歌的 Flutter 框架不同), 但 JetBrains 公司堅(jiān)信 Compose 完全能夠獲得跨平臺(tái)能力 。
Compose for Desktop: 這只是開始
Compose Multiplatform 可以說是該框架面向 MacOS、Linux、Windows 以及 Web 開設(shè)的一個(gè)端口,目前剛剛發(fā)布 1.0 Alpha 版本。雖然尚處于早期開發(fā)階段,但 JetBrains 表示,其已經(jīng)“為開發(fā)人員帶來能夠基本安全使用的穩(wěn)定 API”。
TheRegister 就此事詢問了 JetBrains 公司 Compose 項(xiàng)目負(fù)責(zé)人 Nikolay Igotti,希望了解為什么該公司在擁有了已經(jīng)廣泛應(yīng)用于 IntelliJ IDEA IDE 及多種豐富變體的桌面應(yīng)用程序跨平臺(tái) Java 框架之外,還要費(fèi)力開發(fā) Compose for Desktop。Igotti 的回答是,“舊有 Java 框架基本上就是修改版的 Swing。Swing 屬于默認(rèn) JDK UI 框架,Swing 和 AWT(Abstract Windows Toolkit,抽象窗口工具包)。Compose 則完全是另一碼事,當(dāng)然我們也在設(shè)計(jì)中考慮到了互操作性需求……Swing 這套框架太陳舊了,最早出現(xiàn)在上世紀(jì)九十年代末。多年來人們對(duì)于 UI 的設(shè)計(jì)思路已經(jīng)天翻地覆,Swing 顯然滿足不了要求了。”
JetBrains IDE 中的 Compose for Desktop 項(xiàng)目
Compose 與 Swing 有一個(gè)比較大的共同點(diǎn):與其他使用本機(jī)控件的跨平臺(tái)框架,比如例如 Java 的 SWT(Standard Widget Toolkit)以及微軟的 Xamarin 有所不同,它們選擇自主繪制控件。Compose 使用的 Skia 開源圖形庫,也在谷歌 Chrome、Flutter 及其他眾多框架當(dāng)中得到廣泛應(yīng)用。那這是否意味著 Compose 應(yīng)用程序?qū)]有自己的原生外觀?對(duì)此,Igotti 的回應(yīng)是,“這取決于開發(fā)人員的選擇,取決于他們?nèi)绾螢閼?yīng)用程序設(shè)置主題。在這方面,Compose 的情況與 Flutter 等其他框架沒什么區(qū)別。”
那 Compose for Desktop 應(yīng)用程序是否依賴于 JVM(Java Virtual Machine)運(yùn)行?Igotti 表示,“我們也知道,JVM 應(yīng)用程序的發(fā)布情況可能比較棘手。因此我們提供自己的 Gradle 插件,其使用 jpackage 與 Jlink 以 JVM 應(yīng)用程序?yàn)榛A(chǔ)制作原生應(yīng)用程序。Mac 的.dmg、Windows 的 MSI、Linux 的 deb 包等均可實(shí)現(xiàn),大家用不著擔(dān)心 JVM。”
也就是說,開發(fā)成果將會(huì)是一款被精心包裹起來的 JVM 應(yīng)用程序。JetBrains 還有一款用于解決這個(gè)問題的 Kotlin/Native 編譯器,“預(yù)計(jì)將在未來發(fā)布,或者專門用于桌面開發(fā)。”
對(duì)應(yīng)用程序的另一種思考方式
那 Web 應(yīng)用程序方面呢?Igotti 回應(yīng)稱,“我們使用 Kotlin/JS 編譯器。”Compose 的 Web 版本不如桌面版先進(jìn),說明文檔中也警告稱“API 尚未最終確定,預(yù)計(jì)會(huì)發(fā)生重大變化。”此外,雖然 Web 版本確實(shí)使用 Compose 模型,但 API 卻完全不同,而且會(huì)使用 HTML 與 CSS。所以,Web 版與 Compose for Desktop 之間能夠共享的代碼應(yīng)該比較少。
據(jù) Igotti 介紹,“Compose 代表著一種不同的應(yīng)用程序思考方式。狀態(tài)即 UI 的真實(shí)來源,而 UI 本身是無狀態(tài)的,其表達(dá)永遠(yuǎn)由狀態(tài)計(jì)算得出。在這方面,Compose for Web 采用一組相同的原語,完全相同的狀態(tài)管理思路。但是對(duì)于具體的小部件集合與排列方式,Web 版與桌面版之間確實(shí)無法互通。”
說到這里,為什么要把 Compose for Android 擴(kuò)展到多種其他平臺(tái)之上?“Compose 的目標(biāo)受眾主要分為三類。首先是使用 Kotlin 與 Compose 的 Android 開發(fā)人員,他們希望把自己的開發(fā)成果交付至其他平臺(tái);其二是純 Kotlin 開發(fā)人員,他們希望以‘一次編寫、隨處運(yùn)行’的方式開發(fā)新的應(yīng)用程序;第三則是那些不太熟悉 Kotlin 或者 Compose,但又希望開發(fā)出精美 UI 的用戶,我們希望能為他們提供實(shí)現(xiàn)目標(biāo)的工具。”
Igotti 并沒有給出具體的發(fā)布日期,但表示自己希望 Beta 版能在今年秋天發(fā)布,“我們也希望能在今年之內(nèi)推出 1.0 版本。”項(xiàng)目本身是完全開源的,“二十一世紀(jì)了,框架在大多數(shù)人們心目中就不應(yīng)該收費(fèi)。我們只是想開發(fā)一款長(zhǎng)期缺失的軟件”,補(bǔ)足 JetBrains 當(dāng)前商業(yè)模式中的工具鏈。
那么,JetBrains 會(huì)在自己的其他工具中使用 Compose 嗎?事實(shí)上,他們的 JetBrains Toolbox(用于管理已安裝的 IDE)已經(jīng)在使用 Compose,但 Igotti 表示短時(shí)間內(nèi) Compose 還無法取代 IntelliJ IDEA 等現(xiàn)有框架。“編輯器是其中最復(fù)雜也最重要的組件,經(jīng)歷了 20 年的發(fā)展演進(jìn),我們幾乎不可能在中途進(jìn)行重寫了。無論是 JetBrains 還是我個(gè)人,都不打算強(qiáng)迫每個(gè)人都轉(zhuǎn)而使用 Compose。我們的目標(biāo)是為原有框架選項(xiàng)滿足不了的用戶提供新的解決方案。”
寫在最后
那么,為什么除了 Flutter 之外,我們還需要另一個(gè)跨平臺(tái)框架?雖然谷歌的 Flutter 最開始主要面向移動(dòng)設(shè)備,但現(xiàn)在也開始向桌面及 iOS 進(jìn)軍,甚至比 Compose 還搶先了一步。不過,根據(jù) StackOverflow 的最新調(diào)查, Flutter 使用的語言為 Dart;盡管 Dart 語言的人氣正在增長(zhǎng)(正是受到 Flutter 的推動(dòng)),但仍然無法與 Kotlin 相提并論。
Compose 代表著一種獨(dú)特的 UI 構(gòu)建方法,也許最期待 Compose 跨平臺(tái)功能的受眾,正是那些曾在 Android 上使用過它、又特別喜歡這種 UI 構(gòu)建體驗(yàn)的開發(fā)者。
想要進(jìn)一步了解 Compose,國(guó)內(nèi) Android 開發(fā)者可訪問以下鏈接查看中文手冊(cè):
延伸閱讀:
編程語言是程序員(開發(fā)人員)用來與計(jì)算機(jī)進(jìn)行通信的計(jì)算機(jī)語言。它是用任何特定語言(C、C++、Java、Python)編寫的一組指令,用于執(zhí)行特定任務(wù)。編程語言主要用于開發(fā)桌面應(yīng)用程序、網(wǎng)站和移動(dòng)應(yīng)用程序。以下是 2022 年最流行的頂級(jí)語言。
Python
Python 是由 Guido van Rossum 于 1980 年代后期在荷蘭構(gòu)建的。Python 最初是作為 Java 在行業(yè)中的競(jìng)爭(zhēng)對(duì)手而構(gòu)建的,后來逐漸流行起來。目前,Python 在研究人員和開發(fā)人員社區(qū)中都非常受歡迎。Python 在 IEEE Spectrum 的語言排名中名列前茅,得分為滿分 100。此外,Python 也很受尊重,支持率高達(dá) 44.1%。
Python 幾乎適用于任何事物。Django 和 Flask 可用于 Web 開發(fā),而 Jupyter 和 Spyder 等科學(xué)工具則用于分析和研究目的。如果您喜歡自動(dòng)化,Selenium 可以幫助您!該語言的靈活性使 Python 幾乎可以在任何地方使用。到目前為止,這些是 Python 中比較流行的產(chǎn)品。Python 的巨大支持基礎(chǔ)(僅次于 JavaScript)產(chǎn)生了大量使用該語言的包、框架,甚至是成熟的開源軟件。
總的來說,Python 可能對(duì)數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)有最大的支持。雖然還有其他語言(如 R 和 MATLAB)提供競(jìng)爭(zhēng),但 Python 是數(shù)據(jù)科學(xué)領(lǐng)域的嚴(yán)格統(tǒng)治者。機(jī)器學(xué)習(xí)中使用的大多數(shù)框架和庫都僅用 Python 編寫,如果想要學(xué)習(xí)機(jī)器學(xué)習(xí)(或一般的數(shù)據(jù)科學(xué)),它可能是最好的語言。
JavaScript
JavaScript 在這一點(diǎn)上幾乎是行業(yè)領(lǐng)導(dǎo)者。JavaScript 最初于 1994 年作為 Netscape Navigator(當(dāng)時(shí)最好的瀏覽器之一)的腳本語言而構(gòu)建,它迅速崛起。直到 2008 年,Google 才在為 Google Chrome 構(gòu)建 V8 引擎時(shí)設(shè)計(jì)了現(xiàn)代 JavaScript。最初由 Netscape 構(gòu)建為 Java 的競(jìng)爭(zhēng)對(duì)手,JavaScript 現(xiàn)在在開發(fā)領(lǐng)域擁有自己的空間。JavaScript 因其流行而被廣泛認(rèn)為是“互聯(lián)網(wǎng)語言”。JavaScript 在開發(fā)者社區(qū)中的支持率最高——高達(dá) 67.7%。一般來說,JavaScript 適用于任何類型的開發(fā)活動(dòng),如移動(dòng)應(yīng)用程序開發(fā)、Web 開發(fā)、桌面應(yīng)用程序開發(fā)等。
JavaScript 有各種各樣的庫和框架,可以在開發(fā)過程中使用。有用于前端開發(fā)的 Angular、Vue 和 React,而 Node.js 是一種用于后端開發(fā)的非常靈活的語言。Jest 和 Mocha 是兩個(gè)靈活的工具,可幫助設(shè)置單元測(cè)試以檢查功能是否按預(yù)期工作。當(dāng)然,如果您對(duì)其中任何一個(gè)都不太滿意,您可以在前端使用普通的 HTML、CSS 和 JavaScript——就這么簡(jiǎn)單!由于來自世界各地開發(fā)人員的巨大支持,JavaScript 擁有任何語言都可以夸耀的最多數(shù)量的支持包。盡管如此,人們繼續(xù)構(gòu)建越來越多的包,以增加使用該語言的便利性。
Java
Java 由 James Gosling、Mike Sheridan 和 Patrick Naughton 于 1991 年構(gòu)建為“Oak”語言,是第一種在全球產(chǎn)生重大影響的語言。雖然新的編程語言使用與 C/C++ 相同的格式,但它融入了某些新思想,使其對(duì)更多人更具吸引力。Java 運(yùn)行的原則是“一次編寫,隨處運(yùn)行”——這意味著具有不同硬件和操作系統(tǒng)配置的系統(tǒng)可以輕松運(yùn)行 Java 程序。
Java 也有各種各樣的庫和框架,它們?cè)诘讓邮褂?Java。Java 用于通過 Spring 和 Hibernate 進(jìn)行應(yīng)用程序開發(fā)。JUnit 幫助我們?yōu)?Java 項(xiàng)目設(shè)置單元測(cè)試。最重要的是,Java 被用于開發(fā)原生 Android 應(yīng)用程序(Android SDK 本身由 Java 開發(fā)工具包或 JDK 提供支持)。Java 可能是大多數(shù)人在大學(xué)或?qū)W校的計(jì)算機(jī)編程入門課程中被介紹的語言。Java 是用于向大眾教授面向?qū)ο缶幊痰恼Z言。
Java 在分析和研究領(lǐng)域也備受推崇。Java 唯一的問題是目前該語言的支持包和項(xiàng)目很少。很少有社區(qū)參與——這是大多數(shù)主流語言都有的。盡管如此,Java 是一種非常容易掌握和學(xué)習(xí)的語言——這在一定程度上解釋了該語言的吸引力。但是,要掌握某種形式的語言確實(shí)需要一些時(shí)間。
C++
也許人們?cè)诒疚闹锌梢云诖淖盍钊苏痼@的答案之一是 C++。盡管是大多數(shù)人用來學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)和算法概念的語言,但該語言本身在實(shí)際世界中卻很少使用。C++ 最初由 Bjarne Stroustrup 于 1982 年創(chuàng)建,作為 C 編程語言的擴(kuò)展,在接下來的幾年中繼續(xù)聲名鵲起。
C++ 可用于分析、研究以及 游戲 內(nèi)開發(fā)。流行的 游戲 開發(fā)引擎——虛幻引擎——使用 C++ 作為腳本語言,用于構(gòu)建 游戲 時(shí)可以定義的所有功能。C++ 在軟件開發(fā)中也有廣泛的用途。介于面向?qū)ο蠓椒ê兔嫦蚍椒ǚ椒ㄖg,C++ 可以靈活地使用它生成的軟件的性質(zhì)。在 TIOBE 指數(shù)中排名第 4 意味著 C++ 至今仍具有吸引力。C++也廣泛用于系統(tǒng)軟件開發(fā),比其他語言更容易理解。在操作系統(tǒng)等敏感領(lǐng)域使用 C++ 的主要原因是 C++ 程序的編譯時(shí)間非常短。
C++ 可能擁有所有語言中最大的學(xué)習(xí)社區(qū)。大多數(shù)學(xué)生會(huì)開始他們的算法課程,用 C++ 構(gòu)建樹、鏈表、堆棧、隊(duì)列和許多其他數(shù)據(jù)結(jié)構(gòu)。當(dāng)然,只要注意細(xì)節(jié),它就很容易上手和學(xué)習(xí),也很容易掌握。
Typescript
TypeScript 是 JavaScript 的超集,具有與 JavaScript 幾乎相同的應(yīng)用程序。TypeScript 可用于 Web 開發(fā)、移動(dòng)應(yīng)用程序開發(fā)、桌面應(yīng)用程序開發(fā)等。在 StackOverflow 的最受歡迎語言列表中,TypeScript 是第二受歡迎的語言,受到 67.1% 的開發(fā)人員的喜愛(僅次于 Rust)。
TypeScript 主要是一種用于開發(fā)的語言,因此它對(duì)科學(xué)界沒有太大吸引力。但是,由于 TypeScript 的新功能,可以預(yù)期它可能會(huì)激發(fā)更大程度的研究興趣。該語言的技能上限比 JavaScript 低得多——并且 JavaScript 的許多“難以理解”的行為已在 TypeScript 中得到簡(jiǎn)化。換句話說,您將頭撞到墻上的機(jī)會(huì)略小。
Golang
新語言正在迅速崛起,新的競(jìng)爭(zhēng)者即將挑戰(zhàn) JavaScript 和 Python 擁有的寶座。由谷歌(兩者的名字中都有“Go”!)主要是為了推進(jìn)函數(shù)式編程的事業(yè),Golang 在短時(shí)間內(nèi)建立了大量的追隨者。Golang 已經(jīng)成為 StackOverflow 第五大最適合學(xué)習(xí)的語言,受到 62.3% 的開發(fā)人員的喜愛。
Golang 用于多個(gè)領(lǐng)域,用于開發(fā)強(qiáng)大的軟件以及用于 Web 和移動(dòng)應(yīng)用程序的后端。目前,Golang 甚至支持一些基本的 Web 開發(fā)。雖然它仍處于取代 JavaScript 作為網(wǎng)絡(luò)語言的階段,但它正在迅速成為支持下一階段網(wǎng)絡(luò)的語言。
Golang 比此列表中的其他語言更難學(xué)習(xí)。此外,Golang 是一種開源語言,每次重大更新都會(huì)頻繁更改,因此保持更新是必要的。
Dart
Dart 是工業(yè)領(lǐng)域發(fā)展最快的語言之一。谷歌在語言領(lǐng)域的貢獻(xiàn)顯著增加,以與微軟的 TypeScript 日益流行的競(jìng)爭(zhēng)相抗衡。Dart 因其簡(jiǎn)單性而受到世界各地程序員的高度喜愛。
Dart 用于多平臺(tái)應(yīng)用程序開發(fā)。與 JavaScript 一樣,Dart 用于構(gòu)建任何人都可以使用電子設(shè)備運(yùn)行的軟件。目前 Dart 最著名的用途是 Flutter 框架,F(xiàn)lutter 是一種用于移動(dòng)應(yīng)用程序開發(fā)的語言。最近的谷歌趨勢(shì)表明,F(xiàn)lutter 盡管是一個(gè)較新的框架,但比 React Native 更受歡迎,后者是業(yè)界已經(jīng)建立的移動(dòng)應(yīng)用程序開發(fā)框架。
Dart 比 JavaScript 更容易學(xué)習(xí),并且能夠很好地簡(jiǎn)化甚至難以理解的案例。隨著市場(chǎng)上的 TypeScript 和 Dart 的出現(xiàn),程序員在選擇一種他們真正想要學(xué)習(xí)的語言時(shí)會(huì)面臨多種選擇。
基本差不多。
薪資的多少主要與個(gè)人實(shí)力相關(guān),自己創(chuàng)造價(jià)值的能力高,薪資自然就高。就比如按照北京平均水平,flutter和Java工資3年以內(nèi)在10-20k,3到5年在15-30k,后續(xù)上不封頂。
在編寫幾個(gè) Flutter 項(xiàng)目后,發(fā)現(xiàn) Flutter 的強(qiáng)大之處在于業(yè)務(wù)中所有用到的控件以及場(chǎng)景都有對(duì)應(yīng)的處理方案;而 Dart 語言也與 Java 、 Kotlin 類似,所以對(duì) Android 開發(fā)者來說門檻非常低;特意記錄一下常用的控件及其使用:
StatelessWidget 不需要額外的創(chuàng)建 State
StatefulWidget 創(chuàng)建 State 類,并可以在其中保存一些狀態(tài)
only 可以單獨(dú)設(shè)置每個(gè)方向的內(nèi)邊距
類似于 LinearLayout 中的 orientation 設(shè)置為 vertical , mainAxisAlignment 表示豎向的一個(gè)對(duì)齊方式, crossAxisAlignment 表示橫向的對(duì)齊方式
與 Column 相反,主軸是橫向,對(duì)齊方式類似, crossAxisAlignment 表示豎向的對(duì)齊方式
類似 SizedBox ,一個(gè)容器,但是主要功能是有一個(gè) decoration —— 裝飾器,作用是繪制背景,或者使用 item 中的陰影
棧,先入后出,類似于 Android 上的 FrameLayout
通常配合 Stack 使用,固定顯示在某一個(gè)位置
配合多 child 使用,會(huì)填充剩余的空間
Image 功能強(qiáng)大,使用不同的方法可以加載不同來源的圖片
看到這些方法,突然覺得 Flutter 太香了,而且 Image 可以配置 clip 等裁剪出不同形狀的圖片,無論是圓形還是五角星都不在話下,然而 Android 要實(shí)現(xiàn)不規(guī)則的形狀,可是要下不少功夫的。
名字和 Android 的一模一樣,但是用法卻比 Android 的簡(jiǎn)單很多:
主要就是 itemCount 與 itemBuilder ,其余就是配置樣式, itemBuilder 需要返回一個(gè) widget ,當(dāng)然了,每個(gè) ListView 都有其對(duì)應(yīng)的 item ,在里面的方法中編寫 widget 即可
與 ListView 類似,但是需要有一個(gè) delegate 類,作用是設(shè)置有多少列,每一列之間的間距是多少
GridView 沒有 build , children 表示所有的子 view
最常用的控件之一,有非常多的樣式, Flutter 中通常是使用裝飾器來處理控件的,如背景使用 BoxDecoration , TextFiled 使用 InputDecoration ; 使用如下
分享題目:包含java與flutter的詞條
網(wǎng)站路徑:http://chinadenli.net/article13/dsesdgs.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、網(wǎng)站設(shè)計(jì)公司、動(dòng)態(tài)網(wǎng)站、標(biāo)簽優(yōu)化、網(wǎng)站收錄、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)