日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

2017甲骨文JavaOne参会感想

發布時間:2025/3/19 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2017甲骨文JavaOne参会感想 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

國慶期間有幸作為代表和另外 6 位同學去舊金山參加 JavaOne 大會,本次大會我關注的幾個關鍵的 points: AJDK 在 Java 9 的 Keynote 主場公開亮相,Kingsum 為全場聽眾講解了 AJDK 如何與 Intel 等硬件商場深度合作,支撐了雙 11 全球最大的購物節。

國慶期間有幸作為代表和另外 6 位同學去舊金山參加 JavaOne 大會,本次大會我關注的幾個關鍵的 points:

  • AJDK 在 Java 9 的 Keynote 主場公開亮相,Kingsum 為全場聽眾講解了 AJDK 如何與 Intel 等硬件商場深度合作,支撐了雙 11 全球最大的購物節。

  • Java 9 的新特性,以模塊化為代表。

  • Serverless、Cloud Native 架構。

  • 微服務和 DevOps 的結合。

  • 下面記錄一些感覺相對有啟發的 info 帶著我個人的一些想法:

    Java Keynote

    Alibaba JDK

    這一場應該是本次大會對 Java 9 和 Java 生態而言最光鮮的亮相,三紅提前劇透了說會有驚喜,結果真的是個大驚喜,Kingsum 代表阿里巴巴把 AJDK 在這個 Keynote 上公開 show 了一把,包括實例數、性能改進、多租戶、WISP 協程、JITWarmUp 等特性簡直亮瞎了,比較自豪。

    Intel

    看贊助商列表的時候看到 Intel 是 TOP 1,剛在想作為一個硬件廠商和 Java 9 發布有什么關系時,Intel 的 VP 就解答了這個疑問,Intel 還是比較有危機感,除了芯片還在做非常多和軟件特別是語言底層緊密結合的事情,10 年來 Intel 使得 Java 的性能提升了 73 倍,比如 Intel 也在搞 AI 戰略,他們的思路是要做 AI 的 infrastructure,例如 AVX512 指令集,針對向量計算相比上一代有 8~16 倍的提升,還不僅于此,Intel 直接發布了 Vector API SDK 讓 Java 程序員可以用 Java API 去充分壓榨硬件的向量計算性能,在過去是需要用 JNI 去調用 low-level API 實現的事情,現在可以用 PureJava 了。

    Intel 在存儲上也有不少創新,非易失內存 3D-XPoint 和 Optane SSD 的發布(對于二者的區別 Session 結束后問了下,前者是基于 byte 裸訪問的,后者還是面向 Block 和文件系統),結合 pmem 庫的支持(還在 pilot flight 開發階段),對未來幾年的存儲軟件有很大的利好,褚霸團隊的 PolarDB 似乎也是用的 Optane。

    針對深度學習開源了 BigDL 框架,Scala/Python 也都支持,Intel 決心還是有的。

    其它

    Spotify 分享了下如何從 Python 遷移到 Java,背了個書。

    Kubernetes 已經成為容器調度實際的主流,發布了 Wercker 在線性能診斷工具,相比 Cloud Native 提出了 Container Native 的概念,有一系列的本地工具提高對開發者的友好度。

    Java 9 開始提供了 jlink 這個新工具,需要結合 module 一起用,能夠只打包用到的 JRE 模塊,大幅縮小容器鏡像的大小(對 Container 微服務比較有用)。

    Java 9 引入了 AOT,不過目前還非常 experimental 的階段,生產環境還為時尚早。

    JUG 社區氛圍

    國內在 Java 社區這一塊的氛圍感覺遠不如 Go/Node.JS/Python/Ruby 等語言的社區,一定程度上是因為 Java 程序員數量比較多,比較少抱團,另一方面 Java 程序員一般都在做企業級的應用,平時和社區交流的機會也少一些。不少講師都有一個 Java Champion 的頭銜,查了一下,這個冠軍程序員不光要求技能過關,而且要在社區上投入足夠多的精力和時間,得到社區認可的人才可以獲此殊榮。

    國外的 JUG 發展非常火熱,幾乎每個城市甚至一個城市會有 2 個以上的 JUG,聽了一場芝加哥 JUG 的負責人的 Session,大家都在談 JCP,關于建設社區的一些 points:

  • 尊重社區里的 members,不要泄露別人隱私 like email,不然會被懲罰

  • 傳播信息時要精確的信息(比如不要用『第一個工作日、這周的休息日』這樣的描述),每個成員來自不懂的地域,習俗不同,比如有些地方是周一休息

  • 冷啟動 JUG 比較好的方式:參加別的會議看是否有同城來的,social 拉攏一下

  • lightening talk,每個人 5 到 10 分鐘,讓每個人都有表達的機會

  • 整體感覺雖然是技術社區,但很 social beings,雖然工程師都比較 nerd

  • 內部認同感很強,有種巫師秘密集會的感覺

  • 后來我也跟坤谷聊了下這個問題,有機會的話后面希望能為我們自己的 JUG 做一些貢獻。

    關于 Java 未來發展

    這一場找了一些 Java 社區中的活躍者,基本上是一些 Java 生態創業公司的技術負責人的角色,例如 Azul JVM,也有 Oracle/IBM/Google 這樣巨頭的 TL 來參加。

    挑選幾個有價值的信息:

  • Oracle 向社區捐贈 JavaEE,同時最新的 JavaEE 8 也發布了,社區比較興奮,準備大干一場,例如 Eclipse MicroProfile 等社區,我們平時用 Spring 比較多,這塊其實關注度不太高,整體上 JavaEE 未來的發展會比過去更快

  • Google 目前在 JVM 生態上的投入,主要是維護 CMS GC(Oracle 一定會推 G1,CMS 的代碼太老太復雜,維護成本太高,但是 Google 有需要),以及一些 OpenJDK 的 patch

  • Java 在 AI 方面,Mahout 和 Spark 這些基礎設施都是運行在 JVM 之上,社區的人認為 Java 在 AI 方面相比 Python 更成熟穩定,所用的東西都是經過 5 年以上考驗的(這個么聽聽就好了:D)

  • 對于 G1 的使用,Oracle 的同學表示還是要看具體 case,從他們的經驗看,目前對于 large heap 的場景 G1 還是有優勢的,另外對于使用 G1 的公司,建議一定要保持用最新的 JDK,因為 G1 還在不斷修復優化(是不是聽起來不太靠譜,這也是 Google 還要維護 CMS 的原因之一吧)

  • Java 對 GPU 計算的支持,目前 Project Sumatra 在試圖解決這個問題,但是不太活躍,他們也請求大家能夠一起進來 contribute(多個 Session 的分享人都講到了希望大家一起來改善和貢獻,有非常強的社區味道,這點國內還比較弱)

  • 有人問到了 JNI 2 的問題,Project Panama 正在嘗試更好地解決 Pure Java 和 Native Code 之間互通的問題

  • 關于并發編程,社區不斷地提高線程模型的抽象程度,例如 ForkJoin、Actor 等,但對于協程依然沒有 official 的說法,JVM 的協程在開源界已經有部分支持了,但 runtime 還是比較少,不過回來以后看三紅講協程已經被 proposal 了(http://cr.openjdk.java.net/~rpressler/loom/Loom-Proposal.html)

  • Java 作為一門不那么年輕的語言,今天有什么優勢,大家還是比較有共識:生態,你想要的一切,在這個生態里幾乎都有,這一點是 Python、Go 很難追上的

  • JavaEE 8 開始在 GitHub 開源,社區做 contribute 效率更高了(https://github.com/javaee)

  • JVM 研發相關

    Azul 是一家比較有特色的 JVM 公司,一般我們講 JVM 都是什么 Oracle、IBM、Google、Alibaba 這些大廠在搞,但是 Azul 獨樹一幟做到了 latency 極低的 GC 時間。

    Azul CTO 講了下他們在做 JVM 過程中的一些思路,有一個印象比較深刻的點,和阿里云銷售的思路是比較像的。Azul 重新審視『快』的問題,快到底是吞吐高、延遲低、還是別的,他們給客戶特別是交易系統推銷的時候,不會講我這個東西技術上多牛逼,GC 延遲相比 Oracle JVM 低多少,而是一套業務解決方案,告訴客戶用了我的你可以比別的券商快幾個毫秒完成交易,這也是客戶最看重的。

    對于技術底層知識的用途,平時很多同學也會有疑問,好像了解底層的東西對于業務開發并沒有什么幫助,Azul 的 CTO 是這么看的:也許你不懂也能干活,但是懂的人 keep it in mind,在關鍵時刻能讓你有思路解決別人解決不了的問題。我覺得講的已經很到位了。

    還有一些細節,例如 volatile 在編譯器中的作用:不要 cache value。對于壓測預熱,我們壓測中有一些代碼是 if(EagleEye.getUserData("t")) 判斷是否壓測流量的,然后某些下游就不壓了,這個被稱為 fake msg,他認為這類預熱對于 JIT 優化沒有效果,不過我看也沒這么絕對,做系統很多時候是一種權衡和妥協。

    Docker相關

    分享人是 k8s team 的,臺灣人。

    介紹了一些 dockerfile 的 tips:

  • 寫到一行縮減 layer size

  • 指定 user 不要用 root

  • 公共鏡像的安全性目前無法很好保證(即便是 official 的),最好是自己 build 出來

  • https://stacksmith.bitnami.com/ 這個網站很實用,有點像 SpringBoot 那個 start 的網站,選你要用的組件,自動生成 Dockerfile 下載下來 build

  • 文件讀寫用 volume 掛載避免 layer 不斷增長最后磁盤爆掉,

  • 容器內存限制和 jvm heap size 不聯動(JVM 默認會用宿主機的內存大小),包括 CPU 也是,一般用 Runtime.getRuntime() 拿到的數據在 Docker 中已經不準了,可以用-XX:+UseCGroupMemoryLimitForHeap 這個 8u141 開始的試驗性特性

  • 從 Functional Programming 到 Reactive Programming

    函數式編程以前 Java 程序員比較陌生,從 Java 8 引入 lambda 開始慢慢 popular 了。這次幾個 Session 都提到了 Reactive 即響應式編程,簡單來說就是面向異步數據流的編程。

    這個思想在目前我們的工作中實際已經在部分使用了,只是還沒上升到理論級別,例如將線程池的并發計算改造為基于消息的分布式并發計算,Reactive 的范式我相信和分布式計算一樣會給研發協作方式帶來一些改變,過去是靠同步 RPC 解耦,時間維度還是耦合的,現在是靠異步數據間進一步在時間上也解耦。

    我個人是比較喜歡這種方式的,但對于面向終端用戶的 UI 請求而言,很多時候還是要退化到同步模型去做。

    最重要的是,它背后依賴的一個真實而殘酷的現實是,在分布式系統下,一切都只能為最終一致性而設計,如果你沒意識到這個問題,要么是別人在給你兜底,要么是還沒出故障。

    分享另外一場 Session 的兩張圖,說得非常到位:

    關于 Serverless

    Serverless 也是本次大會很多講師在布道的東西,我的感覺是 Serverless 目前比較實用的場景和過去 nginx 中的 lua 腳本很類似,特別在 CDN 等 Edge 節點上,比如 CDN 回源、圖片縮放、水印等,但是對于業務邏輯開發的場景還是不太適用,需要理性對待。

    講師總結的這個 drawbacks 我個人覺得還是比較中肯,在企業級開發中 Serverless 還有很長的路要走:

    總結

    以上是生活随笔為你收集整理的2017甲骨文JavaOne参会感想的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。