Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java 17 更新(4):这波更新,居然利好 mac 用户

Java 17 更新(4):这波更新,居然利好 mac 用户

作者头像
bennyhuo
发布于 2021-10-19 06:33:53
发布于 2021-10-19 06:33:53
2.5K00
代码可运行
举报
文章被收录于专栏:BennyhuoBennyhuo
运行总次数:0
代码可运行

mac 这几年的变化还是挺大的,Java 也必须做一些适应性的变化,不然都没法外接高分显示器了。

关于 mac 的更新一共两条,我们来一一介绍给大家。

JEP 382: New macOS Rendering Pipeline

不知道大家在 macOS 上用 IntelliJ IDEA 或者 Android Studio 会不会觉得卡,就是在本地打字打出了远程控制的感觉的那种卡。

img

解决办法也很简单,把窗口调小一点儿就行。

我有个 2015 款的 MacBook Pro,之前我用它连 4K 外接显示器写代码,发现很快电脑就发烫发热,IDE 也会卡得不成样子。一开始我以为是我的电脑快不行了,后来我发现很多用最新款 MacBook 的人也在抱怨 IntelliJ IDEA 的垃圾性能。

给 JetBrains 报 Bug,结果发现人家大哥把锅甩给了 JDK。

JDK 也不客气,直接用 IntelliJ IDEA 做测试:

简单来说就是 Mac 上以前 Java 2D 的 API 是基于 OpenGL 的,从 Java 17 开始则提供了基于最新的 Metal Framework 的实现。目前默认还是基于 OpenGL,这样对于线上的程序几乎没有负面影响,如果大家需要启用 Metal 的支持,则需要在虚拟机参数当中添加:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-Dsun.java2d.metal=true

Metal 在后面也应该会成为默认选择。

所以这条更新,建议使用 Mac 的小伙伴们密切关注,也建议开发 Mac 桌面程序的小伙伴尽快适配。

(跟我有什么关系,Windows 11 YYDS! )

对了,我在 Mac M1 上下载了 Java 17 的 arm64 版本(下一条将会提到),然后用 AppCode(JetBrains 全家桶当中用来写 iOS 程序的 IDE) 替换了这个 JDK,并在 JVM 参数当中配置了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-Dsun.java2d.metal=true

--add-opens=java.desktop/java.awt.event=ALL-UNNAMED
--add-opens=java.desktop/sun.font=ALL-UNNAMED
--add-opens=java.desktop/java.awt=ALL-UNNAMED
--add-opens=java.desktop/sun.awt=ALL-UNNAMED
--add-opens=java.base/java.lang=ALL-UNNAMED
--add-opens=java.base/java.util=ALL-UNNAMED
--add-opens=java.desktop/javax.swing=ALL-UNNAMED
--add-opens=java.desktop/sun.swing=ALL-UNNAMED
--add-opens=java.desktop/javax.swing.plaf.basic=ALL-UNNAMED
--add-opens=java.desktop/java.awt.peer=ALL-UNNAMED
--add-opens=java.desktop/javax.swing.text.html=ALL-UNNAMED

外接 4K 显示器以后,代码编写和代码提示的速度有了明显的提升,大家可以试试看(后面的一堆 --add-opens 是为了任意访问没有在 module 当中声明公开的 API,这个策略 Java 17 也有调整,我们后面会讲到)。

JEP 391: macOS/AArch64 Port

噗。。。还记得我司刚给小伙伴们发了一台高贵的 Apple Silicon 的 Air 的时候,有大佬还专门写教程告诉我们去哪儿找 arm64 的 JDK(https://www.azul.com/downloads/?version=java-11-lts&os=macos&architecture=arm-64-bit&package=jdk):

这回 Java 官方终于也支持了,直接到 Oracle 的网站(https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html)上就能下载(要知道 Java 16 的时候还只有 x86 的版本):

哎,等等,下面的 DMG Installer 是不是丢了个 Arm 啊。。这得扣钱啊小编。

小结

这两条更新对于 mac 用户来讲还是很有用的,可能会对开发效率的提升帮助比较大。


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Kotlin 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java 17 更新(6):制裁!我自己私有的 API 你们怎么随便一个人都想用?
今天我们来聊聊 JEP 403: Strongly Encapsulate JDK Internals。这一条对于使用 JDK 内部 API 的应用场景来讲会比较受影响。
bennyhuo
2021/10/19
1.8K0
Java 17 更新(6):制裁!我自己私有的 API 你们怎么随便一个人都想用?
在 Linux 上使用 jps 命令检查 Java 进程
在 Linux 中,有一些用于查看系统上运行进程的命令。进程是指由内核管理的正在进行的事件。每启动一个应用程序时,就会产生一个进程,但也有许多在计算机后台运行的进程,如保持系统时间准确的进程、监听新文件系统的进程、索引化文件的进程等。有一些可以用来监测这些进程的实用程序,比如包含在 procps-ng 包 中的程序,但它们往往都是对各种进程通用的。它们会查看计算机上的所有进程,你可以根据需要过滤结果列表。
用户9105998
2021/11/22
3K0
在 Linux 上使用 jps 命令检查 Java 进程
在 Linux 中,有一些用于查看系统上运行进程的命令。进程是指由内核管理的正在进行的事件。每启动一个应用程序时,就会产生一个进程,但也有许多在计算机后台运行的进程,如保持系统时间准确的进程、监听新文件系统的进程、索引化文件的进程等。有一些可以用来监测这些进程的实用程序,比如包含在 procps-ng 包 中的程序,但它们往往都是对各种进程通用的。它们会查看计算机上的所有进程,你可以根据需要过滤结果列表。在 Linux 中,可以通过 ps 命令查看进程。这是查看当前系统上运行进程最简单的方法。
用户8989785
2021/10/13
3K0
BurpSuite2020 打开提示burpsuit to run burp suite using java 17+
根据报错提示,在命令行运行时后面加上这句代码: --add-opens=java.desktop/javax.swing=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED
SingYi
2022/07/13
1.2K0
BurpSuite2020 打开提示burpsuit to run burp suite using java 17+
性能加速包:SpringBoot 2.7&JDK 17,你敢尝一尝吗
在今年的敏捷团队建设中,我通过Suite执行器实现了一键自动化单元测试。Juint除了Suite执行器还有哪些执行器呢?由此我的Runner探索之旅开始了!
京东技术
2024/01/27
2K0
性能加速包:SpringBoot 2.7&JDK 17,你敢尝一尝吗
JDK 17 营销初体验 —— 亚毫秒停顿 ZGC 落地实践
Tech 导读 距离 JDK 8 发布已经过去了 9 年,那么这 9 年的时间,JDK 做了哪些升级?是否有新的重大特性值得尝试?能否解决一些现在令人苦恼的问题?带着这份疑问进行了 JDK 版本的调研与升级踩坑记录,希望本文能够帮到大家。
京东技术
2023/09/11
4650
JDK 17 营销初体验 —— 亚毫秒停顿 ZGC 落地实践
Burpsuite Professional 2023.6.2 最新版安装学习
乌鸦安全的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。
乌鸦安全
2023/08/17
1.3K0
Burpsuite Professional 2023.6.2 最新版安装学习
单元测试添加运行参数的maven插件
这里我们可以手动在idea运行启动配置,Run/Debug Configurations的窗口中
阿超
2023/12/16
6110
JDK17与Hbase client的兼容性问题
最近有1个项目升级到JDK17,里面用到了hbase-client(版本:以1.2.0-cdh5.7.1为基础,公司的大数据同学内部做了一些二次开发 ),启动时发现一直连不上集群,直接报错了,上hbase 官网看了下:
菩提树下的杨过
2023/07/10
5810
JDK17与Hbase client的兼容性问题
JDK11升级JDK17最全实践干货来了
在今年的敏捷团队建设中,我通过Suite执行器实现了一键自动化单元测试。Juint除了Suite执行器还有哪些执行器呢?由此我的Runner探索之旅开始了!
京东技术
2023/12/13
1.9K0
JDK11升级JDK17最全实践干货来了
如何解决 Unable to make field private final java.lang.String java.io.File.path accessible: module java问题
猫头虎 在使用 Java 9 及以上版本时,模块化(Module System)带来的反射限制常会导致如下异常:
猫头虎
2025/06/09
1520
Java 17 升级指南
因为有太多人公众号偷转我的掘金文章,我还是发到公众号这里吧。 Java 8 是旧时代的 Java 6,还不快升级,😄。最近在做 Java8 到 Java17 的迁移工作,前期做了一些准备,过程中的一些信息记录如下(持续更新。。。https://juejin.cn/post/7117531586232320031 ) 分为几个部分: 编译相关 参数迁移相关 运行相关 编译相关 JEP 320 在 Java11 中引入了一个提案 JEP 320: Remove the Java EE and CORBA Mod
挖坑的张师傅
2022/12/05
1.3K0
Java 17 升级指南
从 Java 8 升级到 Java 17 踩坑全过程,建议收藏!
来源:juejin.cn/post/7117531586232320031 最近在做 Java8 到 Java17 的迁移工作,前期做了一些准备,但是在升级过程还是有些问题,太emo了,一些信息记录如下,分为几个部分: 编译相关 参数迁移相关 运行相关 前人栽树后人乘凉,有需要升级的可以参考一下,避免踩坑。。。 *编译相关* JEP 320 在 Java11 中引入了一个提案 JEP 320: Remove the Java EE and CORBA Modules (openjdk.org/jeps/32
程序猿DD
2023/04/04
2.7K0
从 Java 8 升级到 Java 17 踩坑全过程,建议收藏!
Java8 到 Java17 升级指南(Bug大全)
Java 8 是旧时代的 Java 6,还不快升级 。最近在做 Java8 到 Java17 的迁移工作,前期做了一些准备,过程中的一些信息记录如下(持续更新。。。)
猫头虎
2024/04/08
2450
Java8 到 Java17 升级指南(Bug大全)
单元测试中,如何为java设置系统变量(System Variables)【建议使用配置文件或系统属性】
开发中一般我们使用配置文件或系统属性(System Properties)配置参数,而不用系统变量(System Variables),因为配置文件或系统属性(System Properties)比较灵活,系统变量(System Variables)是操作系统级别的环境变量,它不是Java特有的,而是操作系统的一部分。
崔认知
2024/09/18
4510
单元测试中,如何为java设置系统变量(System Variables)【建议使用配置文件或系统属性】
为什么以及如何升级至 Java 16 或 17
在 2021 年 4 月 27 日的 InfoQ 直播中,我探讨了为什么应该考虑升级到 Java 16 或 Java 17(一旦发布),并就如何完成升级提供了一些实用的建议。
深度学习与Python
2021/10/13
1.2K0
Stream-Query兼容JDK17
用户10136162
2023/11/07
3100
JDK8升级JDK17过程中遇到的那些坑
JDK8虽然非常好,但是JDK版本已经发布到JDK20了,且JDK8后的版本升级了很多新的特性,如模块化、ZGC以虚拟线程、结构性并发等,也是非常有吸引力的,所以决定将基于JDK8的项目升级到最近的LTS版本JDK17。
程序猿川子
2023/05/24
2.1K0
使用 JDK 自带工具进行 JVM 诊断调优实战
最近参加面试多次被面试官问到JVM调 优方面的问题,即时自己面试前也重点复习了这一块的面试题,但是发现还是回答地不太好,浪费了好多次面试机会,真是让自己很抓狂。归根结底是自己以前一直只注重业务,而忽略了JVM调优这一块,对JVM这一块的实践太少了。这几天自己也重点观看了马士兵老师的JVM调优视频课, 看完之后自己也在本机和腾讯云服务器上进行了一番实践,感觉还是很有收获的。
用户3587585
2023/12/18
8830
使用 JDK 自带工具进行  JVM 诊断调优实战
java9迁移注意事项
1、代码不模块化,先迁移到jdk9上,好利用jdk9的api 2、代码同时也模块化迁移
code4it
2018/09/17
1.4K0
推荐阅读
相关推荐
Java 17 更新(6):制裁!我自己私有的 API 你们怎么随便一个人都想用?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验