甲骨文近年都採取一年兩更的作法,來避免一次有太大幅度的更新,Java 22是今年第一個版本,依據進度,今年9月還會釋出新版Java 23

2024/2/21~3/28 精選開發技術相關新聞

兩大開發語言有重要更新,Java釋出了22版,大幅提高開發體驗和運作效能。Go語言則大幅改善了追蹤套件的效能。多款CI/CD工具有新功能或更新,包括了 JetBrains、 CircleCI。Booking.com則揭露如何用DORA指標追蹤團隊開發效率,將軟體交付效率,提高了一倍的過程。

#政府程式碼釋出 #公共程式碼
推動政府程式碼公開,數位部擬4月推出臺灣公共程式平臺

政府今年將帶頭大力推動公共程式(Public Code),釋出政府程式碼。數位部預估4月左右,在GitHub上推出臺灣公共程式平臺(code.gov.tw)測試版,初步將先釋出數位部開發的官網、碳盤查工具的程式碼,未來還會與和地方政府、公務機關合作,將共用性服務的程式碼釋出,開放其他政府機關或外界使用。目前尚在籌備階段,因此計畫先推出測試版,年底再釋出完整功能。

因為政府資訊系統大多委外,有資服業者在溝通座談會中反映,擔憂程式碼公開後,可能遭其他業者學習參考,程式碼內的缺陷也會被檢視討論。目前數位部仍與資服業者就公共程式尋找共識。

#2038問題 #老舊Unix時序問題
小心2038問題重現Y2K災情,老舊應用擁抱現代化的另一理由

今年國外不少開發社群開始重視一個老舊Unix的時間函數問題,也就是2038問題。多數Unix系統使用32位元signed整數來儲存從1970年1月1日開始的秒數,這個資料格式的最大值是2,147,483,647,也就是UTC時間2038年1月19日凌晨3點14分7秒,超過這個時間就會導致資料溢位而出錯,就像當年的Y2K事件一樣。許多老舊嵌入式設備、大型主機系統、32位元作業系統環境,32位元環境的老舊資料庫和檔案系統、網路設備等都可能出現問題。雖然離現在還有很長一段時間,但開發社群開始討論,可以趁著擁抱雲原生,推動IT現代化同時,一起解決這個老問題。

#軟體開發安全 #白宮
白宮出面呼籲開發者,放棄C和C++改用記憶體安全程式語言

白宮最近發布了一份軟體安全報告《Back to the Building Blocks: A Path Toward Secure and Measurable Software》,以呼籲科技界主動減少網路攻擊面,尤其在軟體漏洞方面,白宮認為應該主動採取措施以減少漏洞帶來的風險,許多網路安全問題都是由單行程式碼引起,白宮報告中指出,解決這些安全問題的有效方法是檢查所使用的程式語言本身。藉由分析和選擇程式語言的特性,尤其是關於記憶體安全的功能,可以減少甚至是消除不正確的記憶體使用方式,像是存取未分配的記憶體、緩衝區溢出等,所導致的錯誤和漏洞。因此,白宮表示,希望開發人員放棄C和C++改用記憶體安全程式語言,以增加軟體安全性。++

#DevOps實戰 #DORA
旅遊平臺Booking.com如何用DORA指標讓軟體交付效率快了一倍

日前旅遊平臺Booking.com公開了去年提高軟體交付效率的關鍵秘訣,為了改善開發生產力,他們從2023年初開始用DORA指標追蹤團隊開發效率,尤其聚焦部署頻率(DF)和變更準備時間(LTFC)。

他們先推動許多小規模的重構和推動測試自動化,進行程式碼更新或修復問題時,也同時改善周邊的程式碼,來提高程式碼品質。到了六月開始解決合併請求塞車問題,一方面改採少量批次合併請求的策略,來減少每次審查時間,也要求工程師優先審查程式碼,來減少相互等待的時間。七月轉向處理拖慢部署時間的痛點,導入自動化部署,將合併請求直接合併到主版本,直接部署到正式環境,而不用手動驗證。搭配良好的測試自動化機制、同儕程式碼審查和小變更策略,一次不做大變更而是盡量採取多次小變更策略,一但程式碼品質指標檢測沒有達標,也會自動回覆到舊版。

針對前端的單體式應用交付效率問題,則導入微前端開發模式來改善效率,但因為新開發流程需要外部專案審查,開發準備時間反而比預期來得更長。經過審查流程優化,也盡量採取小型合併請求的方式,將批准時間縮短到8分鐘。最後,到了去年十月,終於將這類單體式應用的變更準備時間大幅減少到14小時。

從年初每月20次部署、每次30小時事前準備時間,到年底十一月時縮短到每月40次部署,每次平均不到15個小時。Booking.com的金融科技團隊就是靠DORA指標的監控,找出了一個又一個的開發團隊瓶頸,逐一解決,在不到一年,達到交付能力翻倍的成果。

#新版Java #開發體驗改善
Java 22來了 ,提升開發效率還強化運算效能

新發表的Java 22,從語言本身、API、效能和JDK中的工具都進行了強化。Java語言更具表達力,提升開發者編寫程式碼的體驗之外,也加入多項功能改善並行程式的運作效能,而重新設計的Vector API,也讓向量運算更加高效,滿足日漸增加的向量運算需求。

這個版本有多項開發體驗的更新,像是可用下底線字元來表示不使用的變數宣告和巢狀模式,來強化程式碼的可讀性。而建構子的前置陳述式JEP 447更新,讓開發者擁有更多表達建構子行為的自由。預覽版的字串樣板則提供了更簡潔的方式,供開發者編寫文字加上變數的字串表示,能在字串常值中直接插入表示式或是變數值,來提高可讀性,也讓編寫動態字串內容Java程式更簡單。甲骨文為了要簡化Java並行(Concurrency)程式開發,嘗試加入了結構化並行方法,目前正在孵化階段。

#Go語言 #追蹤效能優化
Go語言大幅改善追蹤套件的效能,CPU執行開銷降至1、2%也支援持續追蹤

Go開發團隊更新了執行環境的追蹤(Trace)套件,不僅大幅降低執行追蹤的CPU開銷,還透過定期分割追蹤檔控制追蹤檔案大小,進而增加了追蹤的可擴展性。此外,新的更新還支援持續追蹤功能,並提供追蹤讀取器API,使得追蹤資料更容易共享與存取。舊版Go,對許多應用程式執行追蹤功能時會產生10-20% CPU執行開銷,而侷限了用途。Go開發團隊透過最佳化回溯效率,將CPU開銷大幅降低至1、2%,讓開發者可以頻繁地使用追蹤來監控和診斷應用程式,且不會對效能產生太大的影響。Go追蹤現在也支援持續追蹤紀錄(Flight Recording),可讓程式一直保持在追蹤狀態,紀錄近期發生的事,

#CI/CD流程 #開發流程最佳化
JetBrains發布新CI/CD工具TeamCity Pipelines,新增多項智慧化機制能大幅簡化流程建置

JetBrains推出新的CI/CD工具TeamCity Pipelines,提供了建置CI/CD流程需要的所有工具,盡可能減少切換程式的狀況。也採取了直覺式介面和智慧配置輔助功能,可以大幅簡化測試工作。智慧配置輔助功能可引導用戶完成流程配置,並且提出改進建議,像是可以自動偵測特定的建置工具,另外,若採用智慧測試平行化選項,可使執行速度提高達75%。TeamCity Pipelines能夠動態最佳化工作流程,也會在每次測試工作完成後提供報告,並自動辨識測試專案所採用的語言與框架。能跨多次工作追蹤測試結果,讓開發者簡單地比較測試變化。

#部署自動化 #金絲雀部署
CircleCI推出推出自動化調度部署功能,新增金絲雀部署支援

CI/CD平臺CircleCI強化發布調度能力推出CircleCI Release,在網頁介面就可簡單地配置發布調度程序。同時,CircleCI Release也支援Argo Rollouts,提供自動化漸進式交付程序,使開發人員可以更全面地控制應用程式發布,目前CircleCI Release已經支援金絲雀部署策略,並會在之後版本支援藍綠部署。CircleCI Release可讓開發團隊快速交付,並監控生產環境中的新部署,當部署出現問題時,還可自動快速回退到之前的版本。這項發布功能同時支援Kubernetes Deployments和Argo Rollouts,CircleCI可與Kubernetes叢集整合,讓開發者在CircleCI網頁版應用上,來檢視和控制發布流程。

#開發元件智慧化 #.NET應用
微軟釋出實驗性.NET UI智慧元件,提供3種整合AI的新UI元件

微軟正在實驗新的.NET UI智慧元件,要以更簡單的方法,在現有軟體添加人工智慧功能,開發者不需要了解AI或熟悉提示工程也能用。開發者可以直接將.NET UI智慧元件加入到使用者介面中,目前有三項功能,分別是智慧貼上、智慧文字輸入區域(TextArea)和智慧下拉選單(ComboBox)。智慧貼上元件,可以將使用者複製的一段長文,用NLP解析出不同元素,再個別帶入到表單上的不同欄位,例如從地址中自動解析出 街名、巷弄、樓層來自動填寫表單,方便用戶可從外部來源添加資料,又不需要重新輸入。而智慧文字輸入區域,則加入了文字段落自動完成,能依據上半句,自動補完下半句話。微軟提到,.NET UI智慧元件還只是一項實驗功能

#程式碼評估 #Copilot助手
微軟.NET程式碼評估工具整合了GitHub Copilot,能引導解決Azure搬遷的可能問題

最近微軟更新了.NET程式碼的Azure搬遷評估工具(Azure Migrate Application and Code Assessment),新整了GitHub Copilot,能夠比對不同Azure環境,提供更多開發自訂的靈活性等,來協助開發者找出和解決搬遷Azure可能遭遇的問題,更順利地在雲端平臺重新部署應用程式。開發者在Visual Studio安裝這項工具的擴充套件後,在報告儀表板中便會看到Copilot Chat的按鈕,點擊之後Copilot會閱讀專案報告,總結出重要問題,開發者便可就想解決的問題與Copilot深入討論。報告中的所有問題也會提供Ask Copilot按鈕,微軟提到,Ask Copilot功能會將開發者的描述,還有觸發問題的程式碼片段共享給Copilot Chat,根據具體程式碼和問題提供建議,來提供更準確的指引。開發者必須謹慎考慮提交的內容,避免提及不想提供給Copilot Chat的程式碼和敏感資訊。

#開發者QA平臺 #Gemini
開發者愛用的Stack Overflow將整合Google雲、讓Gemini開發人員存取知識庫

開發人員QA平臺Stack Overflow與Google Cloud宣布合作,讓Gemini模型可以存取Stack Overflow的開發知識庫,或提供開發建議。透過Stack Overflow新開發的OverflowAPI存取其知識庫,在開發人員呼叫Gemini時提供開發建議、程式碼及回答問題。在Google Cloud控制臺上也能直接存取Stack Overflow,包括詢問問題或獲得Stack Overflow社群其他成員的解答,在管理或開發Google雲端應用及基礎架構時,不用跳離執行介面。 Stack Overflow計畫還將用AI開發平臺Vertex工具來改善社群互動和內容出版流程。預計於4月中公開預覽,在今年上半年正式啟用。

#整合企業內部程式碼 #企業版Copilot
GitHub企業版Copilot來了,可整合企業內部程式碼與知識庫

最近GitHub推出了企業版Copilot(Copilot Enterprise),每位用戶每月的訂閱價格為39美元。這項服務可以針對組織特定需求的開發體驗,包括可以深入理解程式碼庫、存取組織的知識和最佳實踐,以及審查拉取請求。
例如可以提供清楚的程式碼摘要、相關建議以及回應程式碼行為,有效提升程式碼編寫和理解的效率。也能生成拉取請求摘要,使開發人員花更少的時間編寫,並且更專注於合併拉取請求工作本身,Copilot Enterprise也會分析拉取請求的差異,讓審查者可以更快速地理解程式碼變更。目前是Beta測試版本,已經整合了Bing搜尋功能,因此用戶也可以獲得最新的網際網路資訊。

#程式碼自動掃描 #自動修補警告議題
GitHub釋出程式碼掃描自動修復,自動修補9成警告

所有GitHub Advanced Security用戶開始可以使用程式碼掃描自動修復功能(Code Scanning Autofix)預覽版,借助GitHub Copilot和靜態掃描程式碼工具CodeQL的支援,可以掃描程式碼的問題後自動修復,在背景中利用CodeQL引擎,以及一系列啟發式演算法,並結合GitHub Copilot API來生成程式碼建議。目前支援JavaScript、TypeScript、Java和Python程式碼中90%的警告或問題。此外還提供程式碼建議,可以在幾乎不需要編輯程式碼的情況下,修復超過三分之二發現的漏洞。官方預告,接下來程式碼掃描自動修復功能也會涵蓋C#和Go的程式碼。

#偵測密碼和金鑰 #推送保護
GitHub預設啟用推送保護,自動檢查推出程式碼中的密碼和金鑰避免意外洩漏

最近GitHub對所有用戶預設開啟了推送保護(Push Protection)功能,協助開源開發者保護其密碼與金鑰等機密資訊。系統會自動檢查開發者推送到GitHub中的程式碼,一旦發現包含諸如密碼和API金鑰等敏感資訊,GitHub會阻擋推送操作並通知開發者,避免潛在的安全問題。用戶可以從提交中刪除該機密,或是選擇跳過阻擋直接提交。用戶也可以從安全設定中停用推送保護

更多新聞

  • 高效協作程式碼編輯器Zed開源並推出協作服務,開發者分享連結就能開始共同編寫程式碼
  • 微軟推適用於VS Code的Microsoft Entra External ID擴充套件
  • 5月釋出的Grafana 11將移除AngularJS支援,儀表板將不載入未更新套件
  • Wasmer推出Rust網頁伺服器WinterJS 1.0,相容於Cloudflare的JavaScript執行環境

@資料來源:iThome整理,2024年3月
@圖片來源:Booking.com、微軟、甲骨文

責任編輯:王宏仁

熱門新聞

Advertisement