甲骨文近年都采取一年两更的作法,来避免一次有太大幅度的更新,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、微软、甲骨文
责任编辑:王宏仁