WWDC20์์ Apple์ Intel์์ Mac ํ๋์จ์ด์ฉ ARM ์นฉ์ผ๋ก ์ ํํ๋ค๊ณ ๋ฐํํ์ต๋๋ค. Java ์ปค๋ฎค๋ํฐ์ ๊ฒฝ์ฐ ์ด๋ฌํ ์ ์ฅ์น์์ Java๋ฅผ ์ง์ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. Adopt์์๋ ๊ฐ๋ฅํ ๊ฒฝ์ฐ ์ ํ๋์จ์ด์ ๋ํ ๊ธฐ๋ณธ Java ๋น๋๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค.
์ด ๋ฌธ์ ๋ Java๋ฅผ Mac์์ ARM์ผ๋ก ์ด์ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ ๋ณด๋ฅผ ์์งํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
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๋ฅผ ๊ตฌ์ถ ํ ์ ์์ต๋๋ค
์์ํ๊ฒ ์ต๋๋ค.
ํ ์คํธ๋ ์คํ๋์ง๋ง ๋ชจ๋ ์ ํ๊ตฐ์ ํต๊ณผํ๋๋ก ํ๋ ์์ ์ด ์ํ๋ฉ๋๋ค. ์ด๊ฒ์ 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 ๋ณด๊ณ https://github.com/AdoptOpenJDK/openjdk-build/pull/2573
@devLotto ์ด์ ์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์๋์ง ํ์ธํ ์ ์์ต๋๊น? ๊ฐ์ฌ ํด์
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ฏธ๋ฆฌ๋ณด๊ธฐ.. https://github.com/microsoft/openjdk-aarch64/releases/tag/16-ea%2B10-macos