JAVAONE2017參會總結
【心得體會】
- 不知道是被Larry Ellison的個人魅力吸引,還是被Oracle強大的技術營銷所折服,個人覺得,能夠保持競爭優勢,並能不斷進步的IT公司,都有一個靈魂式的領導者,目前看來,這個領導者基本是公司的Founder。Jack Ma, Larry Page, Larry Ellison,Steve Jobs及所在的公司提供了很好的證明。反觀IBM,已經是百年老店,沒有了Founder和靈魂人物,目前已經逐漸跟不上時代,市值已經被Oracle遠遠超過。
- 非常佩服Oracle的整合能力,Oracle能夠將其所收購的公司與整個公司目標很好的整合,形成閉環和生態。Sun公司憑借其Java在工程師界非常有影響力,甚至很多人會抱怨Oracle是惡意收購,對Java的整合是非常難的。而從以下幾點看,它整合得不錯:Java近些年不斷的發展;Java所有產品線(GlassFish, NetBeans等)都還活著;Java是整個Oracle Story強大的一部分,整個JavaOne從另一個視角看,就是Oracle通過講Java的故事,很好的推廣了他的技術平台和雲平台;Java發展了,WebLogic會更好賣。當然,我沒有數據來證明這個理解是正確的。
- 用戶至上是王道,我覺得Oracle從IBM的一篇論文做出了IBM DB2無法超越的關係數據庫,更多的是因為Oracle做出來的數據庫更"懂客戶",體驗上麵遠超DB2。至於這技術是學來的,買來的,抄來的,其實並不那麼重要。Sun公司的慢節奏,技術至上,有很多的技術創造,但是不懂市場,不懂用戶,最後被Oracle收購。從更宏觀、更客觀的角度說,這樣的優勝劣汰,相互並購是有意義的,有利於創造出更能滿足用戶的產品。
- JavaOne大會就像我們的雲棲大會一樣,其實從公司的目的說其實是一種營銷活動,讓整個生態係統朝著自己的商業方向進步,個人覺得Oracle做得很成功,我自己覺得參加完大會我對Java更有興趣了,也想研究JavaEE,還想看看NetBeans現在是否更好用了。而這個成功,是源於對技術的理解能力,以及市場(生態)營銷能力。
- 之前一直好奇,Oracle為什麼會一直會持續投入GlassFish,NetBeans,這些並沒有形成直接的商業價值,這次想通了,GlassFish,NetBeans其實是教學目的,第一時間實現標準,讓業內可以第一時間進行學習,這也許也是這兩個產品商業不成功的原因,他對標準支持太好了,響應太快了,在性能、穩定性等方麵就無法兼顧了。
- 技術團隊還是要追隨業內的新技術的,並且盡可能的嚐試和實施新技術,因為新技術的客觀出發點是效率,短期內跟不上犧牲的是自己的效率,長期跟不上就會對自身的競爭力有影響。這方麵我們阿裏還是需要更進一步,我們對新技術的響應還是不夠快。
- "弱弱聯合"有的時候有挺有意思的,Intel錯失了移動市場,Oracle也沒有及時進入雲計算市場,兩家公司的合作可以激起相互的熱情,合作更真誠,他們一起講的故障就是IOT(物聯網),Intel推出IOT Development Kit,接入到Oracle Cloud Service中,一家負責端,一家負責雲,實現馬總說的雲端的精彩。
- 美國大齡程序員很多,國內幾乎看不見,作為程序員,有時還挺羨慕他們可以一直開開心心寫代碼,有沒有?
- 我大阿裏巴巴的技術可以拿出來講的數不勝數,但可能由於語言的原因,我們出去講的人還太少,建議我們技術發展部可以組織專門的語言和演講技巧的培訓,甚至有相關的認證,比如過了語言認證的同學可以申請TOPIC出去講。好處顯而易見,提升我們人才的能力,讓我們的技術與全世界接軌,更加有利於提升阿裏巴巴的影響力和形象,可能其效果相當於很多的營銷推廣費用的投入才能買得來。
- 也發現了在Oracle的很多企業用戶中,他們專注的不是技術,對自身技術儲備方麵投入也不大,但並不差錢,可以投入很多的錢來買商業軟件或產品。我覺得抓住這些用戶的核心就是產品易用性和穩定性,我覺得咱們的阿裏雲可以在這方麵多投入一些精力。
【會議主要內容】
一組關鍵詞:Java 8, Lambada, J8 Stream, DevOps, Docker, Micro Services, HTTP2.0, JavaEE, IOT。以上內容是會議的主要幾個熱點。
大會Slides:https://events.rainfocus.com/oow15/catalog/oracle.jsp?event=javaone&search.event=javaoneEvent
1. Java8介紹
Java8幾大在新特性瞞有吸引力的,與許曉彬(Velocity),雷卷(Spring One),李偉傑(Open World)幾位交流參會心得體會的時候,覺得有必要立即推進Java8。
一個大會還不足以讓我成為Java8的專家,這裏講下我對幾個重要特性的收獲和理解,歡迎指正
重要特性1: Lambda
一般來說一個函數的計算行為不變,通過變量不同,來讓程序服務於不同的分支流程;除此之外還有一個很重要的功能,就是不僅基於不同參數值來實現分支流程,還可以傳遞一個函數,讓計算行為也是可以變化的,這就是我所理解的Lambda。
然而Lambda其實在Java8以前就有,隻不過受限於Java語法的嚴格性,需要傳遞一個匿名類,使得編寫較為複雜,從而使得這一重要的思想很少在Java實踐從看到,大家寧可寫更長的代碼來實現,比如通過方法調用。
而Java8通過兩種方式來實現Lambda,一個是Function Interface,另一個是方法引用,大大簡化了Lambda的編寫,大家可以用起來,可能對於像我這樣的比較守舊的Java程序員來說,需要加強學習,扭轉編程思路,用好Lambda,提升編碼和工程效率。
另外,而Lambda與map, reduce等編程,J8 Stream等編程模型天然的結合,更讓我們沒有理由拒絕Lambda。
重要特性2: J8 Stream
J8 Stream其實是順應了流式計算的潮流,但其實也並非是新發明,它本質上就是在Iterator加上Filter,Map,Reduce,Sort,Findfirst,ifPresent等等功能,在這些功能再結合強大的Lambda。
它的意義有兩個,一個是提出了"新"的編程模型,讓大家可以用Map,Reduce等處理一個集合;另一個意義就在於規範。個人覺得Storm提出的編程模型讓人更多的關注物理結構,如果Storm采用J8 Stream的編程模型會更易於理解,因為它讓編程者真正關注數據處理。這裏純YY下,我們的JStorm能否支持J8 Stream的計算模型,最終放棄掉Spout/Bolt這些Storm的編程模型,這裏歡迎討論。
重要特性3: Default Methods
不知道是進步還是退步,對這個特性總感覺慌慌的,甚至顛覆了Java的"嚴謹性"。但對於阿裏這樣大的技術體係下,尤其是中間件產品或底層服務的升級,這個特性非常有用。
所謂Default Methods,就是在interface中提供方法的默認實現,這樣做可以有兩個好處:1)新增接口方法時原因實現類可以不用改造,這在基礎服務升級時非常有用,在新增特性時,不需要升級所有的上層依賴係統;2)類似於抽象類,把默認實現定義在父類中,子類無特別情況不需要重載
2. DevOps
這裏麵聽了Netflix的一個分享,講的沒太多的技術,更多的是講文化,裏麵感觸最深的是他們對DevOps的理解是:Freedom and Responsibility。個人非常支持DevOps,可以提升整體的工程和運維效率,提升程序員的自由感和幸福感,減輕程序員的壓力。
3. Microservices & Docker
這方麵我暫時持觀望態度,理解得也不深入,同行的@智宇同學聽得很多,理解更多深入,期待他的分享,有想了解JavaOne裏麵這方麵的內容,可以找智宇了解。
4. HTTP2.0
對於做性能優化的同學來說,HTTP2.0是一件非常值得開心的事情,因為基於HTTP2.0可以有更多的性能優化手段,讓性能有非常大的突破。
除了協議本身的性能友好外;通過Server Push機製,可以實現HTML文檔和靜態資源的並行輸出,最大化並行加載,這個特性其實很重要,而實現這個特性需要我們在JAVA WEB端在內容輸出時基於不同的場景做不同的差異化輸出,如何在簡單、可複用、性能收益間做出平衡,挑戰很大,目前還沒有人走過這條路。
AE想要基於HTTP2.0做深度的性能優化,相信收獲很多。相關研究和實施進展敬請持續關注AE性能領域:https://www.atatech.org/teams/14?cid=428
5. IOT
基本上沒有去聽這方麵的Session,這裏我要說明的是Intel與Oracle在合作物聯網,Intel實現了Development Kit,將數據傳輸到Oracle Cloud Service中。
其它我還聽了一些JVM性能優化的Session,幾乎沒太新的東西,如Memory Model,JVM G1 GC,GC Tuning等等方麵。
最後更新:2017-11-03 13:33:37