當涉及到代碼時,有很多熱門話題,並且與時俱進總是潮流所向。如果你想知道如何分離糟粕和精華,那麼我們已經準備就緒,只欠各位閱讀下文的東風。
在接下來的內容中,我們將查看2016年的熱點,以及今年會更熱的熱點。當然說的是Java方面的。好的,那就啟航吧。
# Java 9,你真好,你讓我神魂顛倒
# 先從Java 6中的一個bug說起,這個bug在Java 9中將變成一個功能:sun.misc.Unsafe。此庫是用於執行低階、不安全操作的方法的集合。例如,使用allocate Instance方法可讓你跳過物件初始化階段或繞過建構子中的安全檢查。
雖然Oracle考慮過乾脆刪除Unsafe庫,但社區改變了他們的主意,並最終使Unsafe庫成為了Java 9的一個功能。
這不是唯一一次社群談論Java 9或Java未來版本的可能變化。今年早些時候,Brian Goetz,Oracle的Java語言架構師發布了JEP 286的調查結果。
該提案建議在未來的Java版本中引入Local Variable Type Inference,以簡化Java應用程式的編寫。實質? 74%的開發人員希望不要那麼冗長,並且能夠聲明變數而不必指定相關聯的類型。
過了200多天,直到Java 9將被發布(因為我們掰著手指在數它的發布日期),我們有足夠的時間來挖掘不同的JEPs,並找到新的和改進的功能。這就是我們遇到的JEP 266:更多並發更新,包括CompletableFuture和令人興奮的java.util.concurrent.Flow類別的更新。
毫無疑問,過去一年中,Java 9已經成為了頭條新聞,並且隨著我們進入2017年,它將繼續獲得越來越多的關注。現在我們要做的是等待,希望它不會再次延遲發布。
關於Java EE?
2016年對於Java Enterprise Edition,也被稱為Java EE來說是有意義的一年。它一直是全球Java社群的混亂的來源,因為它建立在Java SE之上。從官方來說,它就「只是」一個規範,透過Oracle(如Glassfish參考實現)和其他廠商如Red Hat和IBM的實際可用的實現。
Java EE存在著許多問題,主要是這一個「Oracle是否已經放棄了企業軟體?」。 Java EE的致命打擊來自Gartner的「應用程式平台市場指南」報告。在報告中,Gartner指出,Java EE是為了「已經過時且不再滿足現代應用程式需求的模型」而建構的。唉~
# Java EE社群表示Gartner說得不太對,並由此引發了圍繞這個版本的討論。 Java EE 8預計在2017年上半年發布,我們覺得現在就讚譽它還為時過早。我們必須等待,看看結果如何以及Java EE是否會崩潰。
關於更多Java
Java不僅僅是Java 9,它還有很多趨勢是你必須保持在潮流之上的。一個好的開始瀏覽2016年的100個頂級Java庫,檢查在過去一年是否有任何你可能錯過了的東西。
此外,如果函式庫並非你所好,那麼還有一些有趣的來自於Google的Java庫(不是Guava)值得一閱。
遵循教育路線,有一些關鍵的元素你只能隨著經驗的增長而學到,所以準備好學習吧。
如果你正在尋找挑戰,那麼有很多專案值得你花時間。你可以試著去解決這些優雅的問題,字串操作,或甚至Java音樂播放器,邊玩邊學習。當然,如果你遇到任何問題或有任何疑問的話,偉大的Stackoverflow隨時為你提供服務。這裡有七個我們發現的最佳問題。
有趣的小軼事:你能猜到GitHub的頂級Java專案如何使用日誌嗎?我們分析了1,313個GitHub儲存庫中的779,236個Java日誌記錄語句,以找出答案:ERROR,WARN還是FATAL?
將Java放在容器中
# 容器在新一年中變得非常有用,並且它們在管理servlet的生命週期,將URL映射到特定servlet並確保URL請求者俱有正確的訪問權限時也非常方便。
很多人都對Java容器感興趣。在我們對Alpine Linux和Docker的結合激起了興趣的幾個月後,單OverOps就可以支援聊天,然後我們看到越來越多的用戶使用他們的容器嘗試它。
這就是為什麼我們決定嘗試Alpine Linux的原因,Alpine Linux是獨立的,脫離了Linux,基於musl libc(讀作’muscle’)和busybox。除了輕量級這個特點,它也遵循安全為主的原則,並且使用grsec / Pax,對於Linux核心而言增強了安全性。
Docker仍然是業界最熱門的工具之一。該公司承擔了運輸代碼的挑戰性任務,並且使它更快更容易地使用容器。但是,如果你想在Docker上使用Java,那麼你可能需要重新考慮一下,因為它可能會導致你打破(Java)戒律。
關於DevOps?
我們知道你在想什麼-下面我們將來說一說這個流行語。我們在2016年遇到的最常見的主題之一是DevOps,它有著各種各樣的含義和工作方法。它的要旨是專注於知道在一個即時應用程式中發生了什麼,並能夠控制它。
我們怎麼做到這一點?透過監控我們的生產環境。效能問題,錯誤和異常總是在產生,我們必須知道究竟發生了什麼。但是,我們怎麼知道什麼時候以及為什麼產生了某些問題?這就是Observability的概念所在,幫助我們深入了解系統並知道發生了什麼。
它是DevOps工作流程的一部分,並且在控制理論中,它是透過其外部輸出的知識來推斷系統內部狀態如何的一種度量手段。這裡出現了另一個「流行語」:Instrumentation。正是Instrumentation允許我們在應用程式對我們和我們的用戶發瘋之前獲得洞察。
在我們建立這些基石之後,現在是時候提供可以幫助我們監控應用程式效能的工具了。一旦應用程式啟動並運行,我們需要知道是否以及何時拋出錯誤或異常。這就是為什麼市場上有許多錯誤追蹤工具,因此,所有你需要做的都是選擇正確的。
錯誤不是唯一需要我們關注的問題,2016年剩下的最大挑戰是處理日誌檔。每個人都會使用日誌檔案來搜尋和理解應用程式中的錯誤、崩潰和異常。有些人使用直接方法和篩選純文字日誌文件,而其他人則依靠日誌管理工具來幫助他們在log-haystack中找到錯誤。
日誌檔在2016年依然是個坑
如果你正在尋找一種新的方式來調試生產錯誤和異常,那麼OverOps(2016年期間進行了修改)可以為你提供了整個調用堆疊的完整原始碼和變數狀態。導致失敗的每個參數和每個變數會傳遞到事務或工作流程。
還有很多
我們還不能忽略微服務的趨勢。有人會說,這就是另一個令人難以忍受的流行語,而另一些人則高歌吟頌其分解龐然大物或採取逆向方法和注重消極方面的優勢。
無論你用什麼方法看,這些日子好像每個人都搞微服務。現在你只需要小心在使用微服務時不要在生產中涉及它。
無伺服器運算架構在過去幾年中也一直受到關注。無伺服器運算的概念涉及部署程式碼,而不是伺服器。雲端提供者不是購買、管理和擴展伺服器,而是處理對VM的請求。
所以你仍然需要伺服器,但這個新模式承擔了這個責任。或者換句話說,在處理到伺服器或安裝的任何軟體上的部署都沒有麻煩。基本上,所有你需要的是一個管理的雲端服務和一台電腦。
以及最後一個,即使人工智慧和機器學習已經存在一段時間了,但依然感覺每個人還是在談論它們。它們不再是科學家和研究人員的秘密,幾乎在任何新興技術中都可以看到實現的影子。
最近這一領域的喧囂塵上和演變進步使得非研究人員更容易了解相關內容。現在,你完全可以輕鬆存取相關的演算法和工具。你必須知道你在做什麼,而且透過機器學習能力來增強應用程式會容易得多。
進軍社群
你必須熱愛Java社群。因為它們不僅影響了語言的未來版本,而且還透過聚會、文章和一切有關Java的資訊豐富了我們所有人。 2016年有一些非常令人驚嘆的會議,如JavaOne,QCon,並且更多偉大的會談你現在還可以重新觀看。
在軟體開發中學習新事物的主要資源之一是觀看線上講座和影片。這是一個很棒的平台,因為裡面有Java專家與我們分享他們的經驗,而你無需離開舒適的沙發四處奔波。
或者,如果你不喜歡看視頻,那麼瀏覽Java decks也可以讓你保持更新到當前的新趨勢。
同儕支持與我們工作的每個面向都是相關的,而且我們可以從我們周圍的人身上學到很多東西。一個關鍵的特點是多產,因為總是有改進的空間。我們要做的就是準備好接受建議,並傾聽任何願意發言的人。
不要忘記開源
社群的另一個關鍵因素是支持和促進開源專案。事實上,我們已經正式推出了你一直在等待(也有可能並非如此)的命令列工具——Bullshifier。它用於在大得離譜的程式碼基礎上測試一些監控能力,透過成千上萬的呼叫深度,成千上萬的類,並結束了異常的事務。
最後的想法
在2016年我們邂逅了很多主題和流行語。有一些我們已經知道,有一些嶄新的東西則允許我們以完全不同的方式去看Java。現在我們期待著2017年的Java 9,期待2017年Java會有一些更新和更驚人的功能,會談,項目,甚至一兩個新的流行語。
2016年你最喜歡的Java功能、會談或話題是什麼?我們很樂意在下面的評論聆聽各位的聲音。
英文原文:If You Wrote Java in 2016, Here Are the Trends You Couldn't Have Missed
以上是Java 程式設計師不容錯過的開發趨勢的詳細內容。更多資訊請關注PHP中文網其他相關文章!

新興技術對Java的平台獨立性既有威脅也有增強。 1)雲計算和容器化技術如Docker增強了Java的平台獨立性,但需要優化以適應不同雲環境。 2)WebAssembly通過GraalVM編譯Java代碼,擴展了其平台獨立性,但需與其他語言競爭性能。

不同JVM實現都能提供平台獨立性,但表現略有不同。 1.OracleHotSpot和OpenJDKJVM在平台獨立性上表現相似,但OpenJDK可能需額外配置。 2.IBMJ9JVM在特定操作系統上表現優化。 3.GraalVM支持多語言,需額外配置。 4.AzulZingJVM需特定平台調整。

平台獨立性通過在多種操作系統上運行同一套代碼,降低開發成本和縮短開發時間。具體表現為:1.減少開發時間,只需維護一套代碼;2.降低維護成本,統一測試流程;3.快速迭代和團隊協作,簡化部署過程。

Java'splatformindependencefacilitatescodereusebyallowingbytecodetorunonanyplatformwithaJVM.1)Developerscanwritecodeonceforconsistentbehavioracrossplatforms.2)Maintenanceisreducedascodedoesn'tneedrewriting.3)Librariesandframeworkscanbesharedacrossproj

要解決Java應用程序中的平台特定問題,可以採取以下步驟:1.使用Java的System類查看系統屬性以了解運行環境。 2.利用File類或java.nio.file包處理文件路徑。 3.根據操作系統條件加載本地庫。 4.使用VisualVM或JProfiler優化跨平台性能。 5.通過Docker容器化確保測試環境與生產環境一致。 6.利用GitHubActions在多個平台上進行自動化測試。這些方法有助於有效地解決Java應用程序中的平台特定問題。

類加載器通過統一的類文件格式、動態加載、雙親委派模型和平台無關的字節碼,確保Java程序在不同平台上的一致性和兼容性,實現平台獨立性。

Java編譯器生成的代碼是平台無關的,但最終執行的代碼是平台特定的。 1.Java源代碼編譯成平台無關的字節碼。 2.JVM將字節碼轉換為特定平台的機器碼,確保跨平台運行但性能可能不同。

多線程在現代編程中重要,因為它能提高程序的響應性和資源利用率,並處理複雜的並發任務。 JVM通過線程映射、調度機制和同步鎖機制,在不同操作系統上確保多線程的一致性和高效性。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)