日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用Kotlin替代Java重構(gòu)AOSP應(yīng)用

谷歌開發(fā)者 ? 來源:Android開發(fā)者 ? 作者:Android ? 2021-09-16 09:26 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

兩年前,Android 開源項(xiàng)目 (AOSP) 應(yīng)用團(tuán)隊(duì)開始使用 Kotlin 替代 Java 重構(gòu) AOSP 應(yīng)用。之所以重構(gòu)主要有兩個原因: 一是確保 AOSP 應(yīng)用能夠遵循 Android 最佳實(shí)踐,另外則是提供優(yōu)先使用 Kotlin 進(jìn)行應(yīng)用開發(fā)的良好范例。Kotlin 之所以具有強(qiáng)大的吸引力,原因之一是其簡潔的語法,很多情況下用 Kotlin 編寫的代碼塊的代碼數(shù)量相比于功能相同的 Java 代碼塊要更少一些。此外,Kotlin 這種具有豐富表現(xiàn)力的編程語言還具有其他各種優(yōu)點(diǎn),例如:

空安全: 這一概念可以說是根植于 Kotlin 之中,從而幫助避免破壞性的空指針異常;

并發(fā): 正如 Google I/O 2019 中關(guān)于 Android 的描述,結(jié)構(gòu)化并發(fā) (structured concurrency) 能夠允許使用協(xié)程簡化后臺的任務(wù)管理;

兼容 Java: 尤其是在這次的重構(gòu)項(xiàng)目中,Kotlin 與 Java 語言的兼容性能夠讓我們一個文件一個文件地進(jìn)行 Kotlin 轉(zhuǎn)換。

Android 開源項(xiàng)目 (AOSP) 應(yīng)用

https://android.googlesource.com/platform/packages/apps/

Kotlin

https://kotlinlang.org/

Google I/O 2019

https://developer.android.google.cn/kotlin/first

AOSP 團(tuán)隊(duì)在去年夏天發(fā)表了一篇文章,詳細(xì)介紹了 AOSP 桌面時鐘應(yīng)用的轉(zhuǎn)換過程。而今年,我們將 AOSP 日歷應(yīng)用從 Java 轉(zhuǎn)換成了 Kotlin。在這次轉(zhuǎn)換之前,應(yīng)用的代碼行數(shù)超過 18,000 行,在轉(zhuǎn)換后代碼庫減少了約 300 行。在這次的轉(zhuǎn)換中,我們沿襲了同 AOSP 桌面時鐘轉(zhuǎn)換過程中類似的技術(shù),充分利用了 Kotlin 與 Java 語言的互操作性,對代碼文件一一進(jìn)行了轉(zhuǎn)換,并在過程中使用獨(dú)立的構(gòu)建目標(biāo)將 Java 代碼文件替換為對應(yīng)的 Kotlin 代碼文件。因?yàn)閳F(tuán)隊(duì)中有兩個人在進(jìn)行此項(xiàng)工作,所以我們在 Android.bp 文件中為每個人創(chuàng)建了一個 exclude_srcs 屬性,這樣兩個人就可以在減少代碼合并沖突的前提下,都能夠同時進(jìn)行重構(gòu)并推送代碼。此外,這樣還能允許我們進(jìn)行增量測試,快速定位錯誤出現(xiàn)在哪些文件。

AOSP 桌面時鐘應(yīng)用的轉(zhuǎn)換過程

https://medium.com/androiddevelopers/re-writing-the-aosp-deskclock-app-in-kotlin-76c836370cb

在轉(zhuǎn)換任意給定的文件時,我們一開始先使用 Android Studio Kotlin 插件中提供的從 Java 到 Kotlin 的自動轉(zhuǎn)換工具。雖然該插件成功幫助我們轉(zhuǎn)換了大部份的代碼,但是還是會遇到一些問題,需要開發(fā)者手動解決。需要手動更改的部分,我們將會在本文接下來的章節(jié)中列出。

在將每個文件轉(zhuǎn)換為 Kotlin 之后,我們手動測試了日歷應(yīng)用的 UI 界面,運(yùn)行了單元測試,并運(yùn)行了 Compatibility Test Suite (CTS) 的子集來進(jìn)行功能驗(yàn)證,以確保不需要再進(jìn)行任何的回歸測試。

Android Studio

https://developer.android.google.cn/studio

從 Java 到 Kotlin 的自動轉(zhuǎn)換工具

https://developer.android.google.cn/kotlin/add-kotlin#convert

Compatibility Test Suite (CTS)

https://source.android.google.cn/compatibility/cts

自動轉(zhuǎn)換之后的步驟

上面提到,在使用自動轉(zhuǎn)換工具之后,有一些反復(fù)出現(xiàn)的問題需要手動定位解決。在 AOSP 桌面時鐘文章中,詳細(xì)介紹了其中遇到的一些問題以及解決方法。如下列出了一些在進(jìn)行 AOSP 日歷轉(zhuǎn)換過程中遇到的問題。

用 open 關(guān)鍵詞標(biāo)記父類

我們遇到的問題之一是 Kotlin 父類和子類之間的相互調(diào)用。在 Kotlin 中,要將一個類標(biāo)記為可繼承,必須得在類的聲明中添加 open 關(guān)鍵字,對于父類中被子類覆蓋的方法也要這樣做。但是在 Java 中的繼承是不需要使用到 open 關(guān)鍵字的。由于 Kotlin 和 Java 能夠相互調(diào)用,這個問題直到大部分代碼文件轉(zhuǎn)換到了 Kotlin 才出現(xiàn)。

例如,在下面的代碼片段中,聲明了一個繼承于 SimpleWeeksAdapter 的類:

class MonthByWeekAdapter(context: Context?, params: HashMap《String?, Int?》) : SimpleWeeksAdapter(context as Context, params) {//方法體}

由于代碼文件的轉(zhuǎn)換過程是一次一個文件進(jìn)行的,即使是完全將 SimpleWeeksAdapter.kt 文件轉(zhuǎn)換成 Kotlin,也不會在其類的聲明中出現(xiàn) open 關(guān)鍵詞,這樣就會導(dǎo)致一個錯誤。所以之后需要手動進(jìn)行 open 關(guān)鍵詞的添加,以便讓 SimpleWeeksAdapter 類可以被繼承。這個特殊的類聲明如下所示:

open class SimpleWeeksAdapter(context: Context, params: HashMap《String?, Int?》?) {//方法體}

override 修飾符

同樣地,子類中覆蓋父類的方法也必須使用 override 修飾符來進(jìn)行標(biāo)記。在 Java 中,這是通過 @Override 注解來實(shí)現(xiàn)的。然而,雖然在 Java 中有相應(yīng)的注解實(shí)現(xiàn)版本,但是自動轉(zhuǎn)換過程中并沒有為 Kotlin 方法聲明中添加 override 修飾符。解決的辦法是在所有適當(dāng)?shù)牡胤绞謩犹砑?override 修飾符。

覆寫父類中的屬性

在重構(gòu)過程中,我們還遇到了一個屬性覆寫的異常問題,當(dāng)一個子類聲明了一個變量,而在父類中存在一個非私有的同名變量時,我們需要添加一個 override 修飾符。然而,即使子類的變量同父類變量的類型不同,也仍然要添加 override 修飾符。在某些情況下,添加 override 仍不能解決問題,尤其是當(dāng)子類的類型完全不同的時候。事實(shí)上,如果類型不匹配,在子類的變量前添加 override 修飾符,并在父類的變量前添加 open 關(guān)鍵字,會導(dǎo)致一個錯誤:

type of *property name* doesn’t match the type of the overridden var-property

這個報(bào)錯很讓人疑惑,因?yàn)樵?Java 中,以下代碼可以正常編譯:

public class Parent { int num = 0;}

class Child extends Parent { String num = “num”;}

而在 Kotlin 中相應(yīng)的代碼就會報(bào)上面提到的錯誤:

class Parent { var num: Int = 0}

class Child : Parent() { var num: String = “num”}

這個問題很有意思,目前我們通過在子類中對變量重命名來規(guī)避了這個沖突。上面的 Java 代碼會被 Android Studio 目前提供的代碼轉(zhuǎn)換器轉(zhuǎn)換為有問題的 Kotlin 代碼,這甚至被報(bào)告為是一個 bug 了。

被報(bào)告為是一個 bug

https://youtrack.jetbrains.com/issue/KTIJ-8621

import 語句

在我們轉(zhuǎn)換的所有文件中,自動轉(zhuǎn)換工具都傾向于將 Java 代碼中的所有 import 語句截?cái)酁?Kotlin 文件中的第一行。最開始這導(dǎo)致了一些很讓人抓狂的錯誤,編譯器會在整個代碼中報(bào) “unknown references” 的錯誤。在意識到這個問題后,我們開始手動地將 Java 中的 import 語句粘貼到 Kotlin 代碼文件中,并單獨(dú)對其進(jìn)行轉(zhuǎn)換。

暴露成員變量

默認(rèn)情況下,Kotlin 會自動地為類中的實(shí)例變量生成 getter 和 setter 方法。然而,有些時候我們希望一個變量僅僅只是一個簡單的 Java 成員變量,這可以通過使用 @JvmField 注解來實(shí)現(xiàn)。

@JvmField 注解的作用是 “指示 Kotlin 編譯器不要為這個屬性生成 getter 和 setter 方法,并將其作為一個成員變量允許其被公開訪問”。這個注解在 CalendarData 類中特別有用,它包含了兩個 static final 變量。通過對使用 val 聲明的只讀變量使用 @JvmField 注解,我們確保了這些變量可以作為成員變量被其他類訪問,從而實(shí)現(xiàn)了 Java 和 Kotlin 之間的兼容性。

@JvmField 注解

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.jvm/-jvm-field/

CalendarData 類

https://android.googlesource.com/platform/packages/apps/Calendar/+/42e4b43133c4f866e0729438fb38bebc6d03b0a4/src/com/android/calendar/CalendarData.kt

val

https://kotlinlang.org/docs/basic-syntax.html#variables

對象中的靜態(tài)方法

在 Kotlin 對象中定義的函數(shù)必須使用 @JvmStatic 進(jìn)行標(biāo)記,以允許在 Java 代碼中通過方法名,而非實(shí)例化來對它們進(jìn)行調(diào)用。也就是說,這個注解使其具有了類似 Java 的方法行為,即能夠通過類名調(diào)用方法。根據(jù) Kotlin 的文檔,“編譯器會為對象的外部類生成一個靜態(tài)方法,而對于對象本身會生成一個實(shí)例方法。”我們在 Utils 文件中遇到了這個問題,當(dāng)完成轉(zhuǎn)換后,Java 類就變成了 Kotlin 對象。隨后,所有在對象中定義的方法都必須使用 @JvmStatic 標(biāo)記,這樣就允許在其他文件中使用 Utils.method() 這樣的語法來進(jìn)行調(diào)用。值得一提的是,在類名和方法名之間使用 .INSTANCE (即 Utils.INSTANCE.method()) 也是一種選擇,但是這不太符合常見的 Java 語法,需要改變所有對 Java 靜態(tài)方法的調(diào)用。

Kotlin 的文檔

https://kotlinlang.org/docs/java-to-kotlin-interop.html#static-methods

Utils 文件

https://android.googlesource.com/platform/packages/apps/Calendar/+/42e4b43133c4f866e0729438fb38bebc6d03b0a4/src/com/android/calendar/Utils.kt

性能評估分析

所有的基準(zhǔn)測試都是在一臺 96 核、176 GiB 內(nèi)存的機(jī)器上進(jìn)行的。本項(xiàng)目中分析用到的主要指標(biāo)有所減少的代碼行數(shù)、目標(biāo) APK 的文件大小、構(gòu)建時間和首屏從啟動到顯示的時間。在對上述每個因素進(jìn)行分析的同時,我們還收集了每個參數(shù)的數(shù)據(jù)并以表格的方式進(jìn)行了展示。

減少的代碼行數(shù)

9a8bd36e-1657-11ec-8fb8-12bb97331649.png

從 Java 完全轉(zhuǎn)換到 Kotlin 后,代碼行數(shù)從 18,004 減少到了 17,729。這比原來的 Java 代碼量減少了大約 1.5%。雖然減少的代碼量并不可觀,但對于一些大型應(yīng)用來說,這種轉(zhuǎn)換對于減少代碼行數(shù)的效果可能更為顯著,可參閱 AOSP 桌面時鐘文中所舉的例子。

AOSP 桌面時鐘https://medium.com/androiddevelopers/re-writing-the-aosp-deskclock-app-in-kotlin-76c836370cb

目標(biāo) APK 大小

9a975cfc-1657-11ec-8fb8-12bb97331649.png

使用 Kotlin 編寫的應(yīng)用 APK 大小是 2.7 MB,而使用 Java 編寫的應(yīng)用 APK 大小是 2.6 MB??梢哉f這個差異基本可以忽略不計(jì)了,由于包含了一些額外的 Kotlin 庫,所以 APK 體積上的增加,實(shí)際上是可以預(yù)期的。這種大小的增加可以通過使用 Proguard 或 R8 來進(jìn)行優(yōu)化。

Proguardhttps://developer.android.google.cn/studio/build/shrink-code

R8https://r8.googlesource.com/r8

編譯時間

9aa1be04-1657-11ec-8fb8-12bb97331649.png

Kotlin 和 Java 應(yīng)用的構(gòu)建時間是通過取 10 次從零進(jìn)行完整構(gòu)建的時間的平均值來計(jì)算的 (不包含異常值),Kotlin 應(yīng)用的平均構(gòu)建時間為 13 分 27 秒,而 Java 應(yīng)用的平均構(gòu)建時間為 12 分 6 秒。據(jù)一些資料 (如 “Java 和 Kotlin 的區(qū)別” 以及 “Kotlin 和 Java 在編譯時間上的對比”) 顯示,Kotlin 的編譯時間事實(shí)上比 Java 要更耗時,特別是對于從零開始的構(gòu)建。一些分析斷言,Java 的編譯速度會快 10-15%,又有一些分析稱這一數(shù)據(jù)為 15-20%。拿我們的例子進(jìn)行從零開始完整構(gòu)建所花費(fèi)的時間來說,Java 的編譯速度比 Kotlin 快 11.2%,盡管這個微小的差異并不在上述范圍內(nèi),但這有可能是因?yàn)?AOSP 日歷是一個相對較小的應(yīng)用,僅有 43 個類。盡管從零開始的完整構(gòu)建比較慢,但是 Kotlin 仍然在其他方面占有優(yōu)勢,這些優(yōu)勢更應(yīng)該被考慮到。例如,Kotlin 相對于 Java,更簡潔的語法通??梢员WC較少的代碼量,這使得 Kotlin 代碼庫更易維護(hù)。此外,由于 Kotlin 是一種更為安全有效的編程語言,我們可以認(rèn)為完整構(gòu)建時間較慢的問題可以忽略不計(jì)。

Java 和 Kotlin 的區(qū)別

https://www.educba.com/java-vs-kotlin/

Kotlin 和 Java 在編譯時間上的對比https://medium.com/keepsafe-engineering/kotlin-vs-java-compilation-speed-e6c174b39b5d

首屏顯示的時間

9aad76a4-1657-11ec-8fb8-12bb97331649.png

我們使用了這種方法來測試應(yīng)用從啟動到完全顯示首屏所需要的時間,經(jīng)過 10 次試驗(yàn)后我們發(fā)現(xiàn),使用 Kotlin 應(yīng)用的平均時間約為 197.7 毫秒,而 Java 的則為 194.9 毫秒。這些測試都是在 Pixel 3a XL 設(shè)備上進(jìn)行的。從這個測試結(jié)果可以得出結(jié)論,與 Kotlin 應(yīng)用相比,Java 應(yīng)用可能具有微小的優(yōu)勢;然而,由于平均時間非常接近,這個差異幾乎可以忽略不計(jì)。因此,可以說 AOSP 日歷應(yīng)用轉(zhuǎn)換到 Kotlin,并沒有對應(yīng)用的初始啟動時間產(chǎn)生負(fù)面影響。

方法https://developer.android.google.cn/topic/performance/vitals/launch-time#time-initial

結(jié)論

將 AOSP 日歷應(yīng)用轉(zhuǎn)換為 Kotlin 大約花了 1.5 個月 (6 周) 的時間,由 2 名實(shí)習(xí)生負(fù)責(zé)該項(xiàng)目的實(shí)施。一旦我們對代碼庫更加熟悉并更加善于解決反復(fù)出現(xiàn)的編譯時、運(yùn)行時和語法問題時,效率肯定會變得更高??偟膩碚f,這個特殊的項(xiàng)目成功地展示了 Kotlin 如何影響現(xiàn)有的 Android 應(yīng)用,并在對 AOSP 應(yīng)用進(jìn)行轉(zhuǎn)換的路途中邁出了堅(jiān)實(shí)的一步。

歡迎您通過下方二維碼向我們提交反饋,或分享您喜歡的內(nèi)容、發(fā)現(xiàn)的問題。您的反饋對我們非常重要,感謝您的支持!

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    4035

    瀏覽量

    134551
  • JAVA
    +關(guān)注

    關(guān)注

    20

    文章

    3012

    瀏覽量

    116873
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4977

    瀏覽量

    74417
  • AOSP
    +關(guān)注

    關(guān)注

    0

    文章

    16

    瀏覽量

    6541

原文標(biāo)題:使用 Kotlin 重寫 AOSP 日歷應(yīng)用

文章出處:【微信號:Google_Developers,微信公眾號:谷歌開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    黑馬-Java+AI新版V16零基礎(chǔ)就業(yè)班百度云網(wǎng)盤下載+Java+AI全棧開發(fā)工程師

    測性,便是完成了從“傳統(tǒng) CRUD 開發(fā)者”到“智能應(yīng)用架構(gòu)師”的升級。這一轉(zhuǎn)變,不僅是技術(shù)棧的豐富,更是問題解決能力維度的升維。在 AI 重構(gòu)軟件開發(fā)的浪潮中,Java + AI 的融合深度,將成為區(qū)分核心工程師與普通開發(fā)者的分水嶺。
    發(fā)表于 05-01 11:29

    [完結(jié)15章]Java轉(zhuǎn) AI高薪領(lǐng)域必備-從0到1打通生產(chǎn)級AI Agent開發(fā)

    開發(fā)者無可替代的底座優(yōu)勢。 二、 擁抱新范式:從同步阻塞到流式與反應(yīng)式架構(gòu) 傳統(tǒng)的Java Web開發(fā)多基于HTTP的同步請求-響應(yīng)模型,但在與AI大模型交互時,這種模型會成為性能瓶頸。大模型
    發(fā)表于 04-30 13:46

    Java轉(zhuǎn) AI高薪領(lǐng)域必備 從0到1打通生產(chǎn)級AI Agent開發(fā) 教程資料

    告別CRUD內(nèi)卷的經(jīng)濟(jì)學(xué):Java程序員轉(zhuǎn)型AI Agent的商業(yè)重構(gòu) 在當(dāng)前的IT職場生態(tài)中,一個令人不寒而栗的現(xiàn)象正在上演:傳統(tǒng)Java CRUD(增刪改查)開發(fā)者的薪資溢價正在被系統(tǒng)性抹平
    發(fā)表于 04-29 17:08

    TL-JAVA+AI大模型智能應(yīng)用開發(fā)+Java+AI全棧開發(fā)工程師

    獲課:pan.baidu.com/s/16MoRr6EApmBczMhHgKxYaw?pwd=w4wg 數(shù)字化未來升級:Java+AI 全棧驅(qū)動行業(yè)智能轉(zhuǎn)型 在科技迅速發(fā)展的今天,數(shù)字化轉(zhuǎn)型已成為
    的頭像 發(fā)表于 04-28 16:43 ?78次閱讀

    Java并發(fā)編程的“基石”——多線程概念初識

    AI 算力調(diào)度底層:Java 并發(fā)基石與未來技術(shù)融合 當(dāng)我們在屏幕前流暢地與大語言模型對話,或是看著自動駕駛系統(tǒng)瞬間處理海量視覺數(shù)據(jù)時,往往只會驚嘆于 AI 算法的精妙。然而,在這層絢麗的應(yīng)用外衣
    發(fā)表于 04-16 18:50

    小型自重構(gòu)機(jī)器人能不能幫忙做一個?

    當(dāng)然可以!我直接**給你一套能做、能跑、能自己變形的小型自重構(gòu)機(jī)器人完整方案**,適合 ESP32S3 + 舵機(jī) + 簡單結(jié)構(gòu),不用復(fù)雜加工,能跑、能拼接、能變形。 我給你做**最容易實(shí)現(xiàn)、成本
    發(fā)表于 02-21 19:24

    【OFDR】實(shí)時感知、動態(tài)重構(gòu)與歷史狀態(tài)回溯!昊衡科技-三維場重構(gòu)軟件

    三維場重構(gòu)軟件三維場重構(gòu)軟件通過TCP協(xié)議獲取傳感數(shù)據(jù),并實(shí)時重構(gòu)三維溫度/應(yīng)變場。軟件支持導(dǎo)入三維模型(.wrl格式)與二維圖片(.jpeg格式),實(shí)現(xiàn)“數(shù)據(jù)-空間位置”的精準(zhǔn)映射。二維直線
    的頭像 發(fā)表于 01-29 17:40 ?1521次閱讀
    【OFDR】實(shí)時感知、動態(tài)<b class='flag-5'>重構(gòu)</b>與歷史狀態(tài)回溯!昊衡科技-三維場<b class='flag-5'>重構(gòu)</b>軟件

    AMD利用可重構(gòu)FPGA設(shè)備Moku實(shí)現(xiàn)自定義激光探測解決方案

    摘要本文介紹了AdvancedMicroDevices,AMD公司如何基于可重構(gòu)FPGA設(shè)備自定義激光探測解決方案,替代傳統(tǒng)的儀器配置,通過靈活且可定制的FPGA設(shè)備Moku提供更高效和靈活的激光
    的頭像 發(fā)表于 11-20 17:28 ?1933次閱讀
    AMD利用可<b class='flag-5'>重構(gòu)</b>FPGA設(shè)備Moku實(shí)現(xiàn)自定義激光探測解決方案

    Arm Neoverse CPU上大代碼量Java應(yīng)用的性能測試

    Java 是互聯(lián)網(wǎng)領(lǐng)域廣泛使用的編程語言。Java 應(yīng)用的一些特性使其性能表現(xiàn)與提前編譯的原生應(yīng)用(例如 C 程序)大相徑庭。由于 Java 字節(jié)碼無法直接在 CPU 上執(zhí)行,因此通常運(yùn)行時在
    的頭像 發(fā)表于 11-05 11:25 ?965次閱讀
    Arm Neoverse CPU上大代碼量<b class='flag-5'>Java</b>應(yīng)用的性能測試

    AES和SM4算法的可重構(gòu)分析

    一、AES和SM4算法特點(diǎn)分析 基于前面幾篇分享,我們對AES和SM4的算法流程有了較為清晰的認(rèn)識,接下來對AES和SM4算法的共同點(diǎn)進(jìn)行分析,得出二者的可重構(gòu)設(shè)計(jì)思路。 首先,這里把AES
    發(fā)表于 10-23 07:26

    Java效率提升指南:5個Java工具選型建議及Perforce JRebel和XRebel介紹

    企業(yè)級Java環(huán)境越來越復(fù)雜,真正的破局點(diǎn),可能不在“人”,而在于“工具”。5個實(shí)用建議,幫你理清Java工具的選型思路。
    的頭像 發(fā)表于 09-11 13:59 ?1985次閱讀
    <b class='flag-5'>Java</b>效率提升指南:5個<b class='flag-5'>Java</b>工具選型建議及Perforce JRebel和XRebel介紹

    EtherCAT運(yùn)動控制卡應(yīng)用開發(fā)教程之Java

    運(yùn)動控制卡的Java開發(fā)及DLL調(diào)用
    的頭像 發(fā)表于 06-13 14:29 ?1035次閱讀
    EtherCAT運(yùn)動控制卡應(yīng)用開發(fā)教程之<b class='flag-5'>Java</b>

    清微智能官宣:國產(chǎn)可重構(gòu)芯片全球出貨量突破2000萬顆

    芯片累計(jì)出貨量已突破2000萬顆,成為全球銷量領(lǐng)先的可重構(gòu)芯片廠商。 2000萬顆出貨量 堅(jiān)持高階國產(chǎn)替代,從清華實(shí)驗(yàn)室到2000萬顆的產(chǎn)業(yè)突圍 時下,當(dāng)AI技術(shù)以狂飆之勢重構(gòu)智能世界,行業(yè)正經(jīng)歷著從“技術(shù)涌現(xiàn)”到“價值變現(xiàn)”的
    的頭像 發(fā)表于 06-12 17:15 ?2065次閱讀
    清微智能官宣:國產(chǎn)可<b class='flag-5'>重構(gòu)</b>芯片全球出貨量突破2000萬顆

    Kuikly鴻蒙版正式開源 —— 揭秘卓越性能適配之旅

    解決UI混排問題。 技術(shù)展望 鴻蒙系統(tǒng)快速演進(jìn)中,我們將繼續(xù)保持關(guān)注,始終保持對鴻蒙的良好適配 當(dāng)前Kotlin Native的GC算法仍有著不小的改進(jìn)空間,后續(xù)還會追趕對齊Java的GC性能 當(dāng)前
    發(fā)表于 06-04 16:46

    一種低翹曲扇出重構(gòu)方案

    翹曲(Warpage)是結(jié)構(gòu)固有的缺陷之一。晶圓級扇出封裝(FOWLP)工藝過程中,由于硅芯片需通過環(huán)氧樹脂(EMC)進(jìn)行模塑重構(gòu)成為新的晶圓,使其新的晶圓變成非均質(zhì)材料,不同材料間的熱膨脹和收縮程度不平衡則非常容易使重構(gòu)晶圓發(fā)生翹曲。
    的頭像 發(fā)表于 05-14 11:02 ?1669次閱讀
    一種低翹曲扇出<b class='flag-5'>重構(gòu)</b>方案
    德钦县| 油尖旺区| 齐齐哈尔市| 青河县| 象山县| 台东县| 陕西省| 许昌县| 山东| 清丰县| 麻栗坡县| 鲁山县| 福泉市| 巴里| 岐山县| 明水县| 安仁县| 申扎县| 锦州市| 成武县| 紫阳县| 临夏市| 西和县| 文山县| 靖宇县| 沁水县| 军事| 班戈县| 罗定市| 大悟县| 民丰县| 蓬安县| 邹城市| 法库县| 同心县| 上犹县| 祥云县| 保德县| 庆元县| 常德市| 从江县|