Temurin-build: ARM ๊ธฐ๋ฐ˜ Mac์šฉ ๊ธฐ๋ณธ ๋นŒ๋“œ ์ œ๊ณต

์— ๋งŒ๋“  2020๋…„ 06์›” 23์ผ  ยท  41์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: adoptium/temurin-build

WWDC20์—์„œ Apple์€ Intel์—์„œ Mac ํ•˜๋“œ์›จ์–ด์šฉ ARM ์นฉ์œผ๋กœ ์ „ํ™˜ํ•œ๋‹ค๊ณ  ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. Java ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ์ƒˆ ์žฅ์น˜์—์„œ Java๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. Adopt์—์„œ๋Š” ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ์ƒˆ ํ•˜๋“œ์›จ์–ด์— ๋Œ€ํ•œ ๊ธฐ๋ณธ Java ๋นŒ๋“œ๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ด ๋ฌธ์ œ๋Š” Java๋ฅผ Mac์—์„œ ARM์œผ๋กœ ์ด์‹ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

arm macos

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋ชจ๋“  41 ๋Œ“๊ธ€

WWDC 2020 ์„ธ์…˜ "Mac ์•ฑ์„ Apple Silicon์œผ๋กœ ํฌํŒ…": https://developer.apple.com/videos/play/wwdc2020/10214/

Apple์˜ Mac OS X ํฌํŠธ๊ฐ€ ์—…์ŠคํŠธ๋ฆผ์— ๋„์ฐฉํ•˜๊ณ  ๊ฐœ๋ฐœ์ž ํ‚คํŠธ๋ฅผ ๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ•œ ๊ฐ€์ง€ ์—ด๋ฆฐ ์ ์€ Apple์˜ ์ƒˆ๋กœ์šด Metal ๋ Œ๋”๋ง ํŒŒ์ดํ”„๋ผ์ธ์— ๋Œ€ํ•œ ์ง€์›์ž…๋‹ˆ๋‹ค. OpenGL์€ MacOS์—์„œ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ ARM ๊ธฐ๋ฐ˜ Mac์—์„œ๋Š” ๋” ์ด์ƒ ์ง€์›๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค(ํ™•์ธ ํ•„์š”). OpenGL์€ ์ด๋ฏธ ์–ผ๋งˆ ๋™์•ˆ ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— OpenJDK๋Š” Metal์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ๋ Œ๋”๋ง ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌํ˜„ํ•˜์—ฌ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. JEP 382 ๋ฐ Lanai ํ”„๋กœ์ ํŠธ ํŽ˜์ด์ง€ ์—์„œ ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์กฐ๊ธฐ ์•ก์„ธ์Šค ๋นŒ๋“œ๋Š” ์—ฌ๊ธฐ ์—์„œ ์ฐพ์„ ์ˆ˜

Java 8 ๋ฐ 11์ด ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌ๋ ์ง€๋Š” ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. OpenJDK๊ฐ€ ARM ๊ธฐ๋ฐ˜ Mac์—์„œ ์ž‘๋™ํ•˜๋„๋ก ์—…์ŠคํŠธ๋ฆผ์— ๋Œ€ํ•œ ์ปค๋ฐ‹์„ ์–ป๋”๋ผ๋„ Java 8 ๋ฐ 11 LTS ๋ฒ„์ „์ด ์ง€์›๋œ๋‹ค๋ฉด ์ด ๋ชจ๋“  ๊ฒƒ์„ ๋ฐฑํฌํŒ…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

https://openjdk.java.net/jeps/237 ๊ณผ ๊ฐ™์€ ์œ ์‚ฌํ•œ ํ”„๋กœ์ ํŠธ์—์„œ ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌ๋˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค @jerboaa ๊ฐ€ ๋‹ต์„ ์ค„ ์ˆ˜ ์žˆ์„๊นŒ์š”? ์ด ์˜†์— Microsoft ๋Š” Win/ARM์šฉ OpenJDK ์ž‘์—…์— ๋Œ€ํ•œ ๊ธฐ์‚ฌ๋ฅผ ๊ฒŒ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ ˆํฌ๋Š” ์—ฌ๊ธฐ ์—์„œ ์ฐพ์„ ์ˆ˜ @karianna ๋Š”

OpenGL๊ณผ ๊ด€๋ จํ•˜์—ฌ https://developer.apple.com/documentation/xcode/porting_your_macos_apps_to_apple_silicon ์ธ์šฉ:

OpenGL์€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์ง€๋งŒ Apple ์‹ค๋ฆฌ์ฝ˜์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Java 8 ๋ฐ 11์ด ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌ๋ ์ง€๋Š” ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. OpenJDK๊ฐ€ ARM ๊ธฐ๋ฐ˜ Mac์—์„œ ์ž‘๋™ํ•˜๋„๋ก ์—…์ŠคํŠธ๋ฆผ์— ๋Œ€ํ•œ ์ปค๋ฐ‹์„ ์–ป๋”๋ผ๋„ Java 8 ๋ฐ 11 LTS ๋ฒ„์ „์ด ์ง€์›๋œ๋‹ค๋ฉด ์ด ๋ชจ๋“  ๊ฒƒ์„ ๋ฐฑํฌํŒ…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

https://openjdk.java.net/jeps/237 ๊ณผ ๊ฐ™์€ ์œ ์‚ฌํ•œ ํ”„๋กœ์ ํŠธ์—์„œ ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌ๋˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค @jerboaa ๊ฐ€ ๋‹ต์„ ์ค„ ์ˆ˜ ์žˆ์„๊นŒ์š”?

ํ˜„ ๋‹จ๊ณ„์—์„œ ์ด์— ๋Œ€ํ•œ ์ถ”์ธก์„ ํ•˜์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. OpenJDK์™€ ๊ด€๋ จํ•˜์—ฌ ARM ๋ฐœํ‘œ์—์„œ ์ด Mac์ด ๋ฌด์—‡์„ ์ œ๊ณตํ•˜๋Š”์ง€ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์˜ ๋ฐฑํฌํŠธ์— ๋Œ€ํ•ด ๋งํ•˜๋Š” ๊ฒƒ์€ ๋„ˆ๋ฌด ์ด๋ฅด๋‹ค ;-)

JEP 237(๊ธฐ๋ณธ ๋ผ์ธ์— Linux Aarch64 ํฌํŠธ ํ†ตํ•ฉ)์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์›๋ž˜ Aarch64 ํฌํŠธ ํ”„๋กœ์ ํŠธ๋Š” OpenJDK ํ”„๋กœ์ ํŠธ๋กœ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ด ์ผ์–ด๋‚œ ๊ณณ์ž…๋‹ˆ๋‹ค. JEP 237์ด ๋ฐœ์ƒํ•˜๊ธฐ ํ›จ์”ฌ ์ด์ „์˜ ์ผ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋Š ์‹œ์ ์—์„œ ๋ฉ”์ธ ๋ผ์ธ์— ํฌํ•จํ•˜๋„๋ก ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ JEP 237์ž…๋‹ˆ๋‹ค. JDK 9๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ OpenJDK 9+๋Š” ๋ฉ”์ธ๋ผ์ธ์—์„œ ์ง€์›๋˜๋Š” ์•„ํ‚คํ…์ฒ˜(Linux์—์„œ)๋กœ Aarch64๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค. Aarch64์šฉ OpenJDK 8u ์ฝ”๋“œ๋Š” ์—ฌ์ „ํžˆ Aarch64 ํฌํŠธ ํ”„๋กœ์ ํŠธ์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ[1]์—์„œ ์œ ์ง€ ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, OpenJDK 8u์˜ Aarch64 ์ง€์›์€ ๋ฉ”์ธ๋ผ์ธ OpenJDK 8u์— ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด์ „์— ๋ฉ”์ธ๋ผ์ธ OpenJDK 8u์— ํ†ตํ•ฉ๋˜๋„๋ก ์ œ์•ˆ๋˜์—ˆ์œผ๋ฉฐ ํ†ตํ•ฉ์— ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ๊ทธ๊ฒƒ์ด ์–ธ์ œ ์ผ์–ด๋‚  ๊ฒƒ์ธ๊ฐ€์ž…๋‹ˆ๋‹ค.

[1] http://hg.openjdk.java.net/aarch64-port/jdk8u-shenandoah/

@jerboaa ํ•ด๋‹น ํ”ผ๋“œ๋ฐฑ์— ๋Œ€ํ•œ THX. ์ถ”์ธกํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๋‹จ์ง€ ํฐ ๊ทธ๋ฆผ์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•  ๋ฟ์ž…๋‹ˆ๋‹ค :)

JavaFX Dev ๋ฉ”์ผ๋ง ๋ชฉ๋ก์˜ ์Šค๋ ˆ๋“œ: https://mail.openjdk.java.net/pipermail/openjfx-dev/2020-July/026949.html

๋ฒ”์šฉ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ SWT ๋ฌธ์ œ: https://bugs.eclipse.org/bugs/show_bug.cgi?id=565690

"JEP 391: macOS/AArch64 ํฌํŠธ" - http://openjdk.java.net/jeps/391 - JEP 237(linux/aarch64) ๋ฐ JEP 388(Windows on Arm)์„ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค.

JDK ๋ฒ„๊ทธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฌธ์ œ: https://bugs.openjdk.java.net/browse/JDK-8253795

๋ˆ„๊ตฐ๊ฐ€๊ฐ€ 5๋…„ ์ „์— Microsoft๊ฐ€ ARM ๊ธฐ๋ฐ˜ Mac์„ ์œ„ํ•œ ์ตœ์ดˆ์˜ Java 16 ๋นŒ๋“œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค๊ณ  ๋งํ•ด ์ฃผ์—ˆ๋‹ค๋ฉด... :D

openjdk8/11/13 ๋นŒ๋“œ๋Š” azul์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - https://www.azul.com/downloads/zulu-community/?os=macos&architecture=arm-64-bit&package=jdk

"๋ฒ”์šฉ ๋ฐ”์ด๋„ˆ๋ฆฌ" ๋ฒ„์ „์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
๋‚˜๋Š” jpackage ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‚ด ์•ฑ์„ ๋ฒˆ๋“ค๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์ด์ƒ์ ์œผ๋กœ๋Š” x86 ๋ฐ arm mac์—์„œ ์‹คํ–‰๋˜๋Š” ๋ฒˆ๋“ค ํ•˜๋‚˜๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌป์Šต๋‹ˆ๋‹ค.
์•„๋‹ˆ๋ฉด ๋ฒ”์šฉ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒจํ‚ค์ง€๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

"๋ฒ”์šฉ ๋ฐ”์ด๋„ˆ๋ฆฌ" ๋ฒ„์ „์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
๋‚˜๋Š” jpackage ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‚ด ์•ฑ์„ ๋ฒˆ๋“ค๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์ด์ƒ์ ์œผ๋กœ๋Š” x86 ๋ฐ arm mac์—์„œ ์‹คํ–‰๋˜๋Š” ๋ฒˆ๋“ค ํ•˜๋‚˜๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌป์Šต๋‹ˆ๋‹ค.
์•„๋‹ˆ๋ฉด ๋ฒ”์šฉ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒจํ‚ค์ง€๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์•ˆ๋…•ํ•˜์‹ญ๋‹ˆ๊นŒ

๋ชจ๋“ˆ ์‹œ์Šคํ…œ์„ ๊ณ ๋ คํ•˜๋ฉด 11+์—์„œ๋„ ๊ฐ€๋Šฅํ•œ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

"๋ฒ”์šฉ ๋ฐ”์ด๋„ˆ๋ฆฌ" ๋ฒ„์ „์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
๋‚˜๋Š” jpackage ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‚ด ์•ฑ์„ ๋ฒˆ๋“ค๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์ด์ƒ์ ์œผ๋กœ๋Š” x86 ๋ฐ arm mac์—์„œ ์‹คํ–‰๋˜๋Š” ๋ฒˆ๋“ค ํ•˜๋‚˜๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌป์Šต๋‹ˆ๋‹ค.
์•„๋‹ˆ๋ฉด ๋ฒ”์šฉ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒจํ‚ค์ง€๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์•ˆ๋…•ํ•˜์‹ญ๋‹ˆ๊นŒ

๋ชจ๋“ˆ ์‹œ์Šคํ…œ์„ ๊ณ ๋ คํ•˜๋ฉด 11+์—์„œ๋„ ๊ฐ€๋Šฅํ•œ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์™œ ์•ˆ๋˜๋Š”๊ฑฐ์•ผ? lipo ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ arm๊ณผ x86 ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ฒ”์šฉ ๋ฒ„์ „์œผ๋กœ ๋ณ‘ํ•ฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.
๋‚˜๋Š” M1์ด ์—†์ง€๋งŒ ๋ฒ”์šฉ jvm์„ ๊ตฌ์ถ•ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ”์ด๋„ˆ๋ฆฌ(libjvm๊ณผ ๊ฐ™์€), lipo๊ฐ€ ์žˆ๋Š” ์ผ๋ถ€ ๋ชจ๋“ˆ์˜ ์••์ถ•์„ ํ’€๊ณ  ๋ชจ๋“ˆ์„ ๋‹ค์‹œ ํฌ์žฅํ•˜๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

์•ˆ๋…•ํ•˜์„ธ์š”, AdoptOpenJDK๊ฐ€ ์• ํ”Œ ์‹ค๋ฆฌ์ฝ˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ง€์›ํ•  ๋•Œ ๋กœ๋“œ๋งต์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๊ฐ์‚ฌ ํ•ด์š”

AdoptOpenJDK๊ฐ€ ์• ํ”Œ ์‹ค๋ฆฌ์ฝ˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ง€์›ํ•  ๋•Œ ๋กœ๋“œ๋งต์ด ์žˆ์Šต๋‹ˆ๊นŒ?

Apple Silicon์šฉ ARM ํฌํŠธ๋Š” OpenJDK์—์„œ ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค( http://openjdk.java.net/jeps/391 ์ฐธ์กฐ)

ARM-64 ๋นŒ๋“œ๋Š” ์ด๋ฏธ ์—ฌ๊ธฐ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(Java 8, 11, 13, 16).

https://www.azul.com/downloads/zulu-community/?os=macos&architecture=arm-64-bit&package=jdk

@davidgiga1993 @VladimirKempik jlink ๊ธฐ๋ฐ˜ ๋ฒ”์šฉ ๋ฐ”์ด๋„ˆ๋ฆฌ์— ๋Œ€ํ•œ ์ข‹์€ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. JVM์˜ ๋ชจ๋“  ๋‚ด๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ฒ”์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—ฌ์•ผ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

ํŠน์ • ์•„์น˜์— ๋Œ€ํ•œ jsa๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด CDS๋ฅผ ๊ฐœ์„ ํ•˜๋ ค๋ฉด JVM์„ ๊ฐœ์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํ˜„์žฌ(๋ฒ”์šฉ ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ๋งŒ๋“ค์–ด์ง„ ๊ฒฝ์šฐ) ํ•˜๋‚˜์˜ classes.jsa ํŒŒ์ผ์„ ๊ณต์œ ํ•˜๋ ค๊ณ  ํ•˜๋ฏ€๋กœ ๋ฌธ์ œ๊ฐ€ ์กฐ๊ธˆ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

์ผ๋ถ€ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋Š” ์ •ํ™•ํžˆ JVM ๋ฒ„์ „์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ ์‚ฌ์šฉ์ž๊ฐ€ ๋นŒ๋“œํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: Ballerina.IO - https://github.com/ballerina-platform/ballerina-lang/issues/27585).

์ƒˆ๋กœ์šด m1 mac mini๋กœ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์œผ๋ฉฐ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” .jar ํŒŒ์ผ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. Azul ARM-64 Build for 11์„ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€์นจ/์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

java -jar /Users/austin/Downloads/updatetool-gui-mac-1.0.0.jar 
Loading library prism_es2 from resource failed: java.lang.UnsatisfiedLinkError: /Users/austin/.openjfx/cache/13/libprism_es2.dylib: dlopen(/Users/austin/.openjfx/cache/13/libprism_es2.dylib, 1): no suitable image found.  Did find:
    /Users/austin/.openjfx/cache/13/libprism_es2.dylib: mach-o, but wrong architecture
    /Users/austin/.openjfx/cache/13/libprism_es2.dylib: mach-o, but wrong architecture
java.lang.UnsatisfiedLinkError: /Users/austin/.openjfx/cache/13/libprism_es2.dylib: dlopen(/Users/austin/.openjfx/cache/13/libprism_es2.dylib, 1): no suitable image found.  Did find:
    /Users/austin/.openjfx/cache/13/libprism_es2.dylib: mach-o, but wrong architecture
    /Users/austin/.openjfx/cache/13/libprism_es2.dylib: mach-o, but wrong architecture
    at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)
    at java.base/java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:2442)
    at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(ClassLoader.java:2498)
    at java.base/java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2694)
    at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2627)
    at java.base/java.lang.Runtime.load0(Runtime.java:768)
    at java.base/java.lang.System.load(System.java:1837)
    at com.sun.glass.utils.NativeLibLoader.installLibraryFromResource(NativeLibLoader.java:214)
    at com.sun.glass.utils.NativeLibLoader.loadLibraryFromResource(NativeLibLoader.java:194)
    at com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:135)
    at com.sun.glass.utils.NativeLibLoader.loadLibrary(NativeLibLoader.java:53)
    at com.sun.prism.es2.ES2Pipeline.lambda$static$0(ES2Pipeline.java:68)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at com.sun.prism.es2.ES2Pipeline.<clinit>(ES2Pipeline.java:50)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:315)
    at com.sun.prism.GraphicsPipeline.createPipeline(GraphicsPipeline.java:218)
    at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:91)
    at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124)
    at java.base/java.lang.Thread.run(Thread.java:834)
Loading library prism_sw from resource failed: java.lang.UnsatisfiedLinkError: /Users/austin/.openjfx/cache/13/libprism_sw.dylib: dlopen(/Users/austin/.openjfx/cache/13/libprism_sw.dylib, 1): no suitable image found.  Did find:
    /Users/austin/.openjfx/cache/13/libprism_sw.dylib: mach-o, but wrong architecture
    /Users/austin/.openjfx/cache/13/libprism_sw.dylib: mach-o, but wrong architecture
java.lang.UnsatisfiedLinkError: /Users/austin/.openjfx/cache/13/libprism_sw.dylib: dlopen(/Users/austin/.openjfx/cache/13/libprism_sw.dylib, 1): no suitable image found.  Did find:
    /Users/austin/.openjfx/cache/13/libprism_sw.dylib: mach-o, but wrong architecture
    /Users/austin/.openjfx/cache/13/libprism_sw.dylib: mach-o, but wrong architecture
    at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)
    at java.base/java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:2442)
    at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(ClassLoader.java:2498)
    at java.base/java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2694)
    at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2627)
    at java.base/java.lang.Runtime.load0(Runtime.java:768)
    at java.base/java.lang.System.load(System.java:1837)
    at com.sun.glass.utils.NativeLibLoader.installLibraryFromResource(NativeLibLoader.java:214)
    at com.sun.glass.utils.NativeLibLoader.loadLibraryFromResource(NativeLibLoader.java:194)
    at com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:135)
    at com.sun.glass.utils.NativeLibLoader.loadLibrary(NativeLibLoader.java:53)
    at com.sun.prism.sw.SWPipeline.lambda$static$0(SWPipeline.java:42)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at com.sun.prism.sw.SWPipeline.<clinit>(SWPipeline.java:41)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:315)
    at com.sun.prism.GraphicsPipeline.createPipeline(GraphicsPipeline.java:218)
    at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:91)
    at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124)
    at java.base/java.lang.Thread.run(Thread.java:834)
Graphics Device initialization failed for :  es2, sw
Error initializing QuantumRenderer: no suitable pipeline found
java.lang.RuntimeException: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
    at com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:280)
    at com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:244)
    at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:260)
    at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:267)
    at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:158)
    at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:658)
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:678)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
    at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
    at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:94)
    at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124)
    ... 1 more
Exception in thread "main" java.lang.RuntimeException: No toolkit found
    at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:272)
    at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:267)
    at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:158)
    at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:658)
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:678)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
    at java.base/java.lang.Thread.run(Thread.java:834)

์ž๋ฐ” ๋ฒ„์ „:

java -version
openjdk version "11.0.9.1" 2020-11-04 LTS
OpenJDK Runtime Environment Zulu11.43+1021-CA (build 11.0.9.1+1-LTS)
OpenJDK 64-Bit Server VM Zulu11.43+1021-CA (build 11.0.9.1+1-LTS, mixed mode)

mac_arm java์™€ ํ•จ๊ป˜ ์บ์‹œ๋œ openjfx mac_intel ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

mac_arm ์ž๋ฐ”์šฉ openjfx๋Š” ์•„์ง ์—†์Šต๋‹ˆ๋‹ค.

Apple Arm์— ๋Œ€ํ•œ OpenJFX ํฌํŠธ ์ผ์ •์ด ์žˆ์Šต๋‹ˆ๊นŒ?

OpenJFX์— ๋Œ€ํ•œ Apple Silicon ์ง€์›์— ๋Œ€ํ•œ ์šฐ์‚ฐ ๋ฌธ์ œ: https://bugs.openjdk.java.net/browse/JDK-8257222.

๋‹ค๋ฅธ ๋ฒค๋”์—์„œ ๋‚˜์˜จ์ง€ ๋ฒŒ์จ 2๋‹ฌ์ด ๋‹ค ๋˜์–ด๊ฐ€๋„ค์š”.
JEP-391 ๊ธฐ์ค€์œผ๋กœ ์ด๋ฒˆ ๋‹ฌ์—๋Š” ํ†ตํ•ฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

AdoptOpenJDK๋Š” Apple Silicon์— ๋Œ€ํ•œ ์‹œํ—˜ํŒ ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉฐ ๊ทธ๋ ‡๊ฒŒ ํ•  ๋•Œ๊นŒ์ง€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ๊ฒƒ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. @VladimirKempik์ด ๋งํ–ˆ๋“ฏ์ด http://openjdk.java.net/jeps/391(OpenJDK ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ž‘์—…์˜ ๊ธฐ์ดˆ)์ด 16(3์›” ์ค‘์ˆœ ์˜ˆ์ •)์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 17(9์›” ์ค‘์ˆœ ์˜ˆ์ •)์ด ๋” ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„ ๋ณด์ž…๋‹ˆ๋‹ค. ๋ฐฑํฌํŠธ๋Š” ์™„์ „ํžˆ ๋‹ค๋ฅธ ์ด์•ผ๊ธฐ์ž…๋‹ˆ๋‹ค. Azul์—๋Š” Apple Silicon์šฉ์œผ๋กœ ์ค€๋น„๋œ Zulu ๋นŒ๋“œ ๊ฐ€ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ๊ทธ๋“ค์ด ๊ฐœ๋ฐœํ•œ ์‚ฌ์šฉ์ž ์ •์˜ ํŒจ์น˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋„ค, ๋งž์Šต๋‹ˆ๋‹ค. Azul์—๋Š” Apple Silicon์šฉ์œผ๋กœ ์ค€๋น„๋œ Zulu ๋นŒ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์—์„œ ๋„์›€์ด ๋˜๋Š”์ง€ ์กฐ์‚ฌํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์•Œ๋ ค์ฃผ์„ธ์š”.

@ppetrosh ๋งค์šฐ ์นœ์ ˆํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ OpenJDK์— ๊ณต๊ฐœ ๋ธŒ๋žœ์น˜๊ฐ€ ๋‚˜ํƒ€๋‚˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ ํ•˜๋‚˜๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? JEP๊ฐ€ ์ œ์•ˆ๋œ ๊ฒƒ๋งŒ ๋ดค์Šต๋‹ˆ๋‹ค.

JEP-391์ด jdk17์— ํ†ตํ•ฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ๋ชจ๋‘๊ฐ€ macar ์šฉ 17ea๋ฅผ ๊ตฌ์ถ• ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

  • [x] openjdk-build๋กœ ์ปดํŒŒ์ผํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • [x] openjdk-build์—์„œ ๋นŒ๋“œ ํŒœ ์Šคํฌ๋ฆฝํŠธ ์กฐ์ •(์ง„ํ–‰ ์ค‘)
  • [x] ํŒŒ์ดํ”„๋ผ์ธ ์ž‘์—… ์ •์˜(PR ์ดˆ์•ˆ: https://github.com/AdoptOpenJDK/ci-jenkins-pipelines/pull/113)
  • [x] ๋นŒ๋“œ ๋จธ์‹  ๊ตฌ์„ฑ(https://github.com/AdoptOpenJDK/openjdk-infrastructure/issues/2092)
  • [x] ํ…Œ์ŠคํŠธ ๋จธ์‹  ๊ตฌ์„ฑ(https://github.com/AdoptOpenJDK/openjdk-infrastructure/issues/2093)
  • [ ] ํ…Œ์ŠคํŠธ๊ฐ€ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค(https://github.com/AdoptOpenJDK/openjdk-tests/issues/2421).

ํ…Œ์ŠคํŠธ๋Š” ์‹คํ–‰๋˜์ง€๋งŒ ๋ชจ๋“  ์ œํ’ˆ๊ตฐ์„ ํ†ต๊ณผํ•˜๋„๋ก ํ•˜๋Š” ์ž‘์—…์ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ https://ci.adoptopenjdk.net/job/build-scripts/job/jobs/job/jdk/job/jdk-mac-arm64-hotspot/ ๋กœ ๋‹ซ์œผ๋ฉด ์ด์ œ ์ •๊ธฐ์ ์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

@sxa ๊ฑฐ๊ธฐ์— ์žˆ๋Š” ์•„ํ‹ฐํŒฉํŠธ์— arm64 ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ? file java ๋Š” ๋นŒ๋“œ 35์— ๋Œ€ํ•ด Mach-O 64-bit executable x86_64 ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

ํ  ์ข€ ๊ฑฑ์ •๋˜๋„ค ๋‹ค์‹œ ํ•œ ๋ฒˆ ํ™•์ธํ•ด๋ณผ๊ฒŒ

@devLotto ์ด์ œ ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ฐ์‚ฌ ํ•ด์š”

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰