精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Java永不落伍

OSC開源社區 ? 來源:OSC開源社區 ? 2023-04-20 11:03 ? 次閱讀

唱衰 Java 的聲音由來已久。

尤其是近幾年,云原生時代的到來,軟件的交付方式發生了根本性變化,Java 遭受了諸多質疑。

傳統領域的 Java 開發,交付的是 Java 應用本身,具體體現在以 “jar”“war” 的形式交付,而云原生最佳實踐,則是基于微服務形式,以容器為基本交付單位,并在 K8S 中編排。云原生應用要求更快速的啟動、強調資源按量消費,彈性擴展,以及可觀測性等。就這一層面而言,在云原生時代,Java 的缺陷確實是天然存在的。

“事實上,Java 技術在云原生時代也在不停地進化。” 面對唱衰 Java 的諸多論調,阿里云程序語言與編譯器團隊負責人、Java Champion 李三紅選擇理性看待。

” 比如更多支持容器部署的特性已經加入到 OpenJDK 版本。 一直被人詬病的 Java 啟動慢的問題,目前基于 OpenJDK 技術的幾個創新項目正在多個不同方向探索,包括 CRaC (Coordinated Restore at Checkpoint) 、Leyden,以及由阿里和 Google 作為主要貢獻者的 Fast Startup Incubator 等項目。在資源彈性使用方面,由 Alibaba Dragonwell 提供的 ElasticHeap 功能,主要目的是解決云計算環境下 Java 內存資源使用的彈性問題。 最后,OpenJDK 的 JFR 以及 JFR Streaming 技術為構建 Java 云原生可觀測工具提供了重要的技術支撐。“

Java 面臨的挑戰,不僅僅是云原生

李三紅認為,從 1995 年 Java 1.0 發布算起, Java 技術這二十多年的發展,大致存在一明一暗兩條線的驅動。“一條暗線,是指 Java 或者說支撐 Java 的底層 JVM 技術適配計算機架構的演進與發展。一條明線,是指 Java 作為一個開發者工具,本質是要面向業務領域解決業務問題的,所以自然而然地推動了 Java 在云原生,AI 等方向的演進,解決這些領域內碰到的問題與挑戰。”

后摩爾時代,算力增長放緩,更多利用多核,SIMD(單指令多數據流)等并行計算技術,以及異構來釋放更大的算力。相較于 C/C++ 這些傳統編譯型語言,Java 處在軟件棧的更高抽象級別,自帶 Java 標準庫,以及運行時環境,這也給 Java 創新帶來了更多的空間以及可能性。

李三紅指出, Java 在多核、異構加速領域做了多方面的探索,適應與優化。比如,OpenJDK 孵化的 Vector API 項目,依賴 CPU 的 SIMD 指令,獲得計算性能的成倍提升。即將發布的 OpenJDK 19 引入了 Virtual Threads (Preview),旨在幫助 Java 開發者高效處理并發 (尤其針對 IO 密集型場景) 。而在異構領域,早 2014 年 JVM 技術峰會,AMD 就分享了 Sumatra 項目,嘗試實現 JVM 與 Heterogeneous System Architecture 目標硬件交互。由 The University of Manchester 發起的 TornadoVM 項目,目標是幫助 Java 開發者不需要了解 GPU 編程語言或者相關的 GPU 體系結構知識就可以編寫面向異構的并行程序。

在 AI 方向上,Java 也在與時俱進。據李三紅介紹,在企業計算領域,Java 是被使用最多的語言之一,但對于機器學習領域的開發,Java 一直缺乏標準支持,這個方向其實在 JCP-EC 討論也比較多。

基于 Java SE 技術,在 JCP 流程內推動并最終在 2022 年定稿的 JSR 381 規范,其目標就是為不同領域的 Java 機器學習開發提供通用的可重用設計。JSR 381 定義了標準的 Java API,提供了基本機器學習、圖像分類和對象識別方面的處理能力。“依賴于不同的機器學習平臺,如 TensorFlow, MXNet 以及 DeepNett 等,JSR-381 提供了不同的實現。對于 Java 生態內的開發者來說,不必再去學習 Python, 可以依賴 JSR-381 VisRec API 去構建你的 AI 應用。”

現實中,Java 應用的版本升級是較為緩慢的。Java 11 (OpenJDK11)距離 2018 年發布已經過去四年多,目前國內大多數的用戶仍然停留在 Java 8。李三紅認為,動力不足是多方面的,對開發者來說最直接的原因可能是擔心升級后兼容性帶來的穩定性問題,會直接影響業務的連續性。

這種問題并不罕見。令人振奮的是,處于 Java 生態中的企業正在貢獻自己的力量。阿里內部在大規模地往 Java 11、 Java 17 遷移的時候,總結了不少的經驗,并且將這些經驗通過工具的方式沉淀下來。最后阿里開源了 EMT4J (Eclipse Migration Toolkit for Java) ,能夠幫助 Java 應用無縫升級最新版本 JDK, 主要支持從 Java 8 到 Java 11,以及 17 的升級。

李三紅還補充道,對于 Java 版本的升級問題,還可以從另一個角度 ——Software Sustainability—— 來進一步探討。

“由 Titus Winter 等編寫的《Software Engineering at Google - Lessons Learned from Programming Over Time》一書中,談到了組織的 Codebase Sustainability 概念,強調了兩個核心理念: 第一,無論應對的是技術需求,還是業務需求,軟件代碼應當可以做一切應該做的改變。 第二,這些改變帶來的影響是安全的。

“回到 Java 版本升級這個問題,我們在開發 Java 應用的時候,建議應用架構師們把 Java 版本升級納入到 Software Sustainability 這個維度下考量,對代碼開發規范進行相關的約束。例如,不要讓你的代碼依賴 JDK 內部不公開的 API,不要讓你的實現依賴特定的 JDK 版本行為,不要使用被 Deprecated 的 API 等等。架構的目標應當考慮 Code Sustainability,讓你的 Java 應用可以在任何時候根據實際需要平滑升級到不同 JDK 版本,不應當因為代碼缺乏 Sustainability 而導致的盡量少的版本升級。”

李三紅 對 Java 的未來充滿信心,源于他在 JVM 領域耕耘多年,不僅深入了解 Java 特性,并且有能力進行創新性研究。

在加入阿里之前,李三紅一直在 IBM Java 技術中心,參與 J9 虛擬機開發,期間領導了 JVM 多租戶項目。目前就職于阿里云,領導程序語言與編譯器團隊,主要的工作是結合阿里、螞蟻及云上各業務的需求,在編譯器、語言運行時等基礎領域進行研究創新。目前,在語言工具鏈這塊,已經形成 Alibaba Dragonwell (Java 生態), Alibaba Cloud Compiler (C++ 生態) 等多個產品來支撐其業務,語言工具鏈相關的開源技術也在為龍蜥社區的開發者提供支持。

2020 年,李三紅獲得了 Java 技術領導者社區 Java Champions 推薦,被授予 Java Champion 榮譽。Java Champion 由 Java 社區成員提名,并且必須得到現有 Java Champions 成員的一致同意。唯有為 Java / JVM 生態系統做出重要貢獻的專家才能獲此榮譽。

去年,阿里云第三次入選 JCP 最高執行委員會 (JCP-EC), 作為阿里云在 JCP-EC 的代表,李三紅一直在參與 JCP-EC 領導下的相關 Java 標準討論制定工作。

GOTC 2023 很榮幸邀請到李三紅擔任 “基礎設施與軟件架構” 分論壇的出品人。該分論壇入選的議題,是經過了李三紅和大會組委會深入討論,精心安排的。希望從多個維度,最大程度覆蓋了基礎軟件各領域的介紹分享。

既有最底層芯片技術RISC-V) 的話題,也包括了像 C++、Java 語言運行時的內容,還包含了應用最廣泛的中間件 Dubbo、RocketMQ、 Kafka 等內容的分享。

2023 年 5 月 28 日,GOTC 2023 “基礎設施與軟件架構” 分論壇將為開發者們提供基礎架構領域最豐富、最前沿、以及最具技術性的內容分享。期待各位的蒞臨。

c2e5c596-def5-11ed-bfe3-dac502259ad0.jpg

全球開源技術峰會(Global Open-source Technology Conference),簡稱 GOTC,是由開放原子開源基金會、 Linux 基金會亞太區、上海浦東軟件園和開源中國聯合發起的,面向全球開發者的一場盛大開源技術盛宴。 5 月 27 日至 28 日,GOTC 2023 將于上海舉辦為期 2 天的開源行業盛會。大會將以行業展覽、主題發言、特別論壇、分論壇的形式展現,與會者將一起探討元宇宙、3D 與游戲、eBPF、Web3.0、區塊鏈等熱門技術主題,以及開源社區、AIGC、汽車軟件、開源商業化、開源教育培訓、云原生等熱門話題,探討開源未來,助力開源發展。

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • JAVA
    +關注

    關注

    19

    文章

    2958

    瀏覽量

    104553
  • AI
    AI
    +關注

    關注

    87

    文章

    30154

    瀏覽量

    268423
  • 容器
    +關注

    關注

    0

    文章

    494

    瀏覽量

    22045

原文標題:Java永不落伍

文章出處:【微信號:OSC開源社區,微信公眾號:OSC開源社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    爾特集團與蔚來汽車戰略合作一周年

    日前,蔚來汽車副總裁Mr. Peter Hu和Mr. Carlos Wu,以及戰略合作總監Mr. Yang Liu等一行7人應邀到爾特集團的沈陽工業園參加了這場慶祝活動。爾特集團中國區
    的頭像 發表于 11-25 18:08 ?255次閱讀

    Java集合API的改進介紹

    解答這些問題。 我們將逐步學習 Java 集合類的優化過程,并按版本逐一對比分析。主要討論的焦點將包括 JDK 1.0、1.2、1.4、1.5、1.6、1.8、9、10、11 和 21 版本的 Java 集合功能 Java 集合
    的頭像 發表于 11-22 11:12 ?88次閱讀
    <b class='flag-5'>Java</b>集合API的改進介紹

    Java中時間戳的使用

    Java中時間戳的使用
    的頭像 發表于 11-06 16:04 ?137次閱讀
    <b class='flag-5'>Java</b>中時間戳的使用

    java反編譯能拿到源碼嗎

    Java反編譯是一種將編譯后的Java字節碼(.class文件)轉換回Java源代碼的過程。雖然反編譯可以幫助理解代碼的邏輯和結構,但它并不總是能完美地還原原始源代碼。反編譯工具通常會產生與原始代碼
    的頭像 發表于 09-02 11:03 ?732次閱讀

    華納云:java web和java有什么區別java web和java有什么區別

    Java Web和Java是兩個不同的概念,它們在功能、用途和實現方式上存在一些區別,下面將詳細介紹它們之間的區別。 1. 功能和用途: – Java是一種編程語言,它提供了一種用于開發各種應用程序
    的頭像 發表于 07-16 13:35 ?694次閱讀
    華納云:<b class='flag-5'>java</b> web和<b class='flag-5'>java</b>有什么區別<b class='flag-5'>java</b> web和<b class='flag-5'>java</b>有什么區別

    已經安裝了Java,且依然提示安裝Java是為什么?

    我已經在機器上安裝了最新版的 Java 10,打開 Cube 卻得到要求安裝 Java 1.7.0_45 的提示。何解?Eclipse CDT 依賴 Java,不可卸載重裝。
    發表于 04-26 06:23

    豐田汽車公司推出一款可吸收二氧化碳的碳捕捉發動機

    在電動汽車時代,豐田汽車公司遭受的指責幾乎是最多的,許多人認為這家日本汽車制造商堅持使用內燃機的做法不僅很落伍,還不符合生態要求。
    的頭像 發表于 03-06 10:31 ?496次閱讀

    Oracle 2024年Java發展藍圖分析

    Oracle 的 Java 開發者布道師 Nicolai Parlog 于近日發布一段視頻,介紹了 2024 年的 Java 工作規劃。
    的頭像 發表于 01-26 14:27 ?1283次閱讀

    關于2023年Java趨勢的內容

    Java 17+ 被重新歸類為 Java 17,仍處于 早期采用者 階段,因為有更多的框架將 Java 17 作為基線。Java 21 已被列入 創新者 階段。
    的頭像 發表于 12-13 11:17 ?433次閱讀
    關于2023年<b class='flag-5'>Java</b>趨勢的內容

    java環境配置成功后怎么運行

    Java環境配置成功后,我們可以使用幾種方式來運行Java程序。下面將詳細介紹這幾種方式以及其使用方法。 命令行運行方式 在成功配置Java環境后,我們可以通過命令行來運行Java程序
    的頭像 發表于 12-06 15:57 ?2053次閱讀

    java環境搭建及配置教程

    Java是一種廣泛使用的編程語言,用于開發各種應用程序。在開始學習和使用Java之前,您需要搭建和配置Java開發環境。本教程將提供詳細的Java環境搭建及配置指南。 下載
    的頭像 發表于 12-06 15:50 ?750次閱讀

    idea怎么創建Java項目

    創建Java項目是一個相對較為復雜的過程,需要考慮到各種細節和步驟。本文將詳細介紹如何創建一個Java項目。 一、準備工作 在創建Java項目之前,我們需要進行一些準備工作,主要包括以下幾個方面
    的頭像 發表于 12-06 14:09 ?883次閱讀

    eclipse怎么運行java項目

    在Eclipse中運行Java項目是非常簡單的。下面了解一下如何在Eclipse中運行Java項目。 首先,確保您已經在Eclipse中創建了Java項目。如果您尚未創建,請按照以下步驟進行操作
    的頭像 發表于 12-06 11:25 ?1952次閱讀

    Java怎么排查oom異常

    Java中的OOM(Out of Memory)異常是指當Java虛擬機的堆內存不足以容納新的對象時拋出的異常。OOM異常是一種常見的運行時異常,經常出現在長時間運行的Java應用程序或處理大數
    的頭像 發表于 12-05 13:47 ?1214次閱讀

    Java各種類的區別

    Java中的類可以分為以下幾種類型:基本類、包裝類、自定義類、抽象類、接口類和內部類。 基本類: 基本類是Java語言中最基本的類,主要用于描述基本數據類型(如整型、浮點型、字符型等)。Java提供
    的頭像 發表于 12-03 11:08 ?7644次閱讀