Jdbi: JDBI3 버전 3.19.0은 JDK < 11μ—μ„œ μ‹€ν–‰λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

에 λ§Œλ“  2021λ…„ 04μ›” 12일  Β·  7μ½”λ©˜νŠΈ  Β·  좜처: jdbi/jdbi

릴리슀 정보에 따라 이 버전이 JDK 8 μ΄μƒμ—μ„œ μž‘λ™ν•  κ²ƒμœΌλ‘œ μ˜ˆμƒν–ˆμ§€λ§Œ λ‹€μŒ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

java.lang.UnsupportedClassVersionError: com/github/benmanes/caffeine/cache/Caffeine has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 53.0

클래슀 버전 55.0은 JDK 11μ΄λ―€λ‘œ JDK 8 μ΄μƒμ—μ„œλŠ” μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
이것은 λ‹€μŒ 병합 μš”μ²­μ—μ„œ λ°ν˜€μ‘ŒμŠ΅λ‹ˆλ‹€. https://github.com/talsma-ict/enumerables/pull/242

question

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μ£„μ†‘ν•©λ‹ˆλ‹€. μΉ΄νŽ˜μΈμ—λŠ” jdk8κ³Ό jdk16 λͺ¨λ‘μ—μ„œ μ‹€ν–‰λ˜λŠ” 버전이 μ—†μŠ΅λ‹ˆλ‹€.

참고둜 2.x의 ν˜Έν™˜μ„± λ¬Έμ œλŠ” sun.misc.Unsafe λ₯Ό λΉ„ν™œμ„±ν™”ν•˜λ €λŠ” μ‚¬λžŒλ“€μ—κ²Œλ§Œ ν•΄λ‹Ήλ©λ‹ˆλ‹€. μ΄λŠ” 기본적으둜 JDK16μ—μ„œ μ—¬μ „νžˆ ν—ˆμš©λ˜μ§€λ§Œ jlinkλ₯Ό 톡해 μ œν•œν•  수 μžˆμŠ΅λ‹ˆλ‹€. UnsafeλŠ” Caffeine 3.0(λŒ€μ²΄λ₯Ό 톡해)μ—μ„œ 더 이상 ν•„μš”ν•˜μ§€ μ•ŠμœΌλ©° λ§ˆμŠ€ν„°(3.0.2 μ˜ˆμ •)μ—μ„œ μ™„μ „νžˆ μ œκ±°λ˜μ—ˆμŠ΅λ‹ˆλ‹€. JDK16의 κ°•ν™”λœ μ•‘μ„ΈμŠ€ μ œν•œμ€ μš°λ¦¬μ—κ²Œ 영ν–₯을 λ―ΈμΉ˜μ§€ μ•Šμ•˜μ§€λ§Œ JDK8은 VarHandles와 ν•¨κ»˜ μ œκ³΅λ˜μ§€ μ•Šμ•˜μœΌλ―€λ‘œ Unsafeλ₯Ό μ‚¬μš©ν•˜μ—¬ λ©ˆμ·„μŠ΅λ‹ˆλ‹€(λ˜λŠ” ν•„λ“œμ— μ•‘μ„ΈμŠ€ν•  λ•Œ λ¦¬ν”Œλ ‰μ…˜ μ‚¬μš©μœΌλ‘œ 인해 μ„±λŠ₯ λ¬Έμ œκ°€ μžˆλŠ” AtomicReferenceFieldUpdater λ§ˆμ΄κ·Έλ ˆμ΄μ…˜). .

λͺ¨λ“  7 λŒ“κΈ€

@sjoerdtalsmaλ‹˜ , μ£„μ†‘ν•©λ‹ˆλ‹€. μΉ΄νŽ˜μΈμ—λŠ” jdk8κ³Ό jdk16 λͺ¨λ‘μ—μ„œ μ‹€ν–‰λ˜λŠ” 버전이 μ—†μŠ΅λ‹ˆλ‹€. 16은 이제 GAμ΄λ―€λ‘œ JdbiλŠ” ν˜Έν™˜λ˜λŠ” Caffeine λ²„μ „μœΌλ‘œ μ—…κ·Έλ ˆμ΄λ“œν–ˆμŠ΅λ‹ˆλ‹€. 릴리슀 λ…ΈνŠΈμ—λŠ” λ‹€μŒμ΄ μ–ΈκΈ‰λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

jdk16에 λŒ€ν•΄ 카페인 depλ₯Ό 3.0.1둜 μ—…κ·Έλ ˆμ΄λ“œν•©λ‹ˆλ‹€(μ°Έκ³ : jdk8 μ‚¬μš©μžλŠ” 2.x둜 λ‹€μ‹œ 관리해야 함).

κ·ΈλŸ¬λ‚˜ λ‚˜λŠ” 그것이 그닀지 λˆˆμ— 띄지 μ•ŠλŠ”λ‹€λŠ” 데 λ™μ˜ν•©λ‹ˆλ‹€.

λ‚˜λŠ” λ˜ν•œ 여기에 λ©”λͺ¨λ₯Ό μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€: http://jdbi.org/#_java_compatibility

이것을 μ‚¬μš©μžμ—κ²Œ 더 잘 μ•Œλ¦΄ 수 μžˆλŠ” 방법이 μžˆμŠ΅λ‹ˆκΉŒ? 카페인 버전을 2.x둜 되돌리면 λͺ¨λ“  것이 μ œλŒ€λ‘œ μž‘λ™ν•˜μ§€λ§Œ λ¬Έμ œκ°€ 더 있으면 μ•Œλ €μ£Όμ‹­μ‹œμ˜€.

λ‚˜λŠ” 이것을 훨씬 더 λˆˆμ— λ„κ²Œ ν•˜κΈ° μœ„ν•΄ 릴리슀 λ…ΈνŠΈλ₯Ό 일뢀 μ—…λ°μ΄νŠΈν–ˆμŠ΅λ‹ˆλ‹€. μ—¬κΈ°μ„œ 더 μž˜ν•  수 μžˆλŠ” 것이 있으면 μ•Œλ €μ£Όμ„Έμš”.

κ°μ‚¬ν•©λ‹ˆλ‹€. λ‹€λ₯Έ 뢄듀이 저보닀 쑰금 더 주의 깊게 μ½μœΌμ…¨μœΌλ©΄ μ’‹κ² μŠ΅λ‹ˆλ‹€.
λ‚˜μ—κ²Œ μ‹€μ œλ‘œ λ¬Έμ œλŠ” μ•„λ‹ˆμ§€λ§Œ λ‚΄ 라이브러리의 μ‚¬μš©μžκ°€ 쑰심해야 ν•˜λŠ” 것 뿐만 μ•„λ‹ˆλΌ 이것은 그듀에 λŒ€ν•œ 전이적 μ’…μ†μ„±μ˜ 전이적 μ’…μ†μ„±μž…λ‹ˆλ‹€ πŸ˜‰ .

λ‚˜λŠ” μΉ΄νŽ˜μΈμ„ λ‹€μš΄κ·Έλ ˆμ΄λ“œν•˜μ§€ μ•Šκ³  ν‘œμ€€ 버전을 κ³ μˆ˜ν•˜κ³  JDK8 λ°”μ΄νŠΈμ½”λ“œ μ•„ν‹°νŒ©νŠΈλ₯Ό 계속 μ œκ³΅ν•˜λ©΄μ„œ μ΅œμ‹  JDK둜 λΉŒλ“œν•˜κΈ°λ‘œ κ²°μ •ν–ˆμŠ΅λ‹ˆλ‹€. 그런 μ‹μœΌλ‘œ λ‚˜λŠ” 그듀이 슀슀둜 κ²°μ •ν•˜λ„λ‘ λ§‘κΉλ‹ˆλ‹€.

κ°•μ‘°ν•΄μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. 이제 이 문제λ₯Ό λ§ˆλ¬΄λ¦¬ν•˜κ² μŠ΅λ‹ˆλ‹€.

예, 이것이 μ΅œμ’… μ‚¬μš©μžμ—κ²Œ ν‘Έμ‹œλ˜λŠ” 것은 정말 μœ κ°μž…λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ ν›Œλ₯­ν•œ 개발 κ²½ν—˜μ„ μ›ν•œλ‹€λ©΄ 이제 Javaλ₯Ό μ—…κ·Έλ ˆμ΄λ“œν•΄μ•Ό ν•  λ•Œμž…λ‹ˆλ‹€. 8μ—μ„œ μ‹€ν–‰ν•˜λŠ” 것은 점점 더 μ–΄λ €μ›Œμ§ˆ κ²ƒμž…λ‹ˆλ‹€.)

λΌμ΄λΈŒλŸ¬λ¦¬μ— 퍼즐 module-info.java 메타데이터λ₯Ό μΆ”κ°€ν•˜λŠ” λ™μ•ˆ JDK 1.5 λ°”μ΄νŠΈμ½”λ“œ ν˜Έν™˜μ„±μ„ μœ μ§€ν•˜λ €κ³  ν•œλ‹€κ³  μƒμƒν•΄λ³΄μ„Έμš” πŸ˜‰
λ‚˜λŠ” μš”κ΅¬ 사항을 μ΅œμ†Œ 곡톡 λΆ„λͺ¨λ‘œ μ œν•œν•˜λ €κ³  λ…Έλ ₯ν•©λ‹ˆλ‹€.

μ£„μ†‘ν•©λ‹ˆλ‹€. μΉ΄νŽ˜μΈμ—λŠ” jdk8κ³Ό jdk16 λͺ¨λ‘μ—μ„œ μ‹€ν–‰λ˜λŠ” 버전이 μ—†μŠ΅λ‹ˆλ‹€.

참고둜 2.x의 ν˜Έν™˜μ„± λ¬Έμ œλŠ” sun.misc.Unsafe λ₯Ό λΉ„ν™œμ„±ν™”ν•˜λ €λŠ” μ‚¬λžŒλ“€μ—κ²Œλ§Œ ν•΄λ‹Ήλ©λ‹ˆλ‹€. μ΄λŠ” 기본적으둜 JDK16μ—μ„œ μ—¬μ „νžˆ ν—ˆμš©λ˜μ§€λ§Œ jlinkλ₯Ό 톡해 μ œν•œν•  수 μžˆμŠ΅λ‹ˆλ‹€. UnsafeλŠ” Caffeine 3.0(λŒ€μ²΄λ₯Ό 톡해)μ—μ„œ 더 이상 ν•„μš”ν•˜μ§€ μ•ŠμœΌλ©° λ§ˆμŠ€ν„°(3.0.2 μ˜ˆμ •)μ—μ„œ μ™„μ „νžˆ μ œκ±°λ˜μ—ˆμŠ΅λ‹ˆλ‹€. JDK16의 κ°•ν™”λœ μ•‘μ„ΈμŠ€ μ œν•œμ€ μš°λ¦¬μ—κ²Œ 영ν–₯을 λ―ΈμΉ˜μ§€ μ•Šμ•˜μ§€λ§Œ JDK8은 VarHandles와 ν•¨κ»˜ μ œκ³΅λ˜μ§€ μ•Šμ•˜μœΌλ―€λ‘œ Unsafeλ₯Ό μ‚¬μš©ν•˜μ—¬ λ©ˆμ·„μŠ΅λ‹ˆλ‹€(λ˜λŠ” ν•„λ“œμ— μ•‘μ„ΈμŠ€ν•  λ•Œ λ¦¬ν”Œλ ‰μ…˜ μ‚¬μš©μœΌλ‘œ 인해 μ„±λŠ₯ λ¬Έμ œκ°€ μžˆλŠ” AtomicReferenceFieldUpdater λ§ˆμ΄κ·Έλ ˆμ΄μ…˜). .

μ•ˆλ…•ν•˜μ„Έμš” @ben-manes, 여기에 μΆ”κ°€ μ»¨ν…μŠ€νŠΈμ— κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€. jdk16이 μ—¬μ „νžˆ Unsafeλ₯Ό μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•˜λŠ” 것은 μ‚¬μ‹€μ΄μ§€λ§Œ κΈ°λ³Έμ μœΌλ‘œλŠ” ν—ˆμš©λ˜μ§€ μ•ŠλŠ”λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. 적어도 우리의 κ²½μš°μ—λŠ” 기본이 이제 κ±°λΆ€μ΄λ―€λ‘œ --illegal-access=permit λ₯Ό 전달해야 ν–ˆμŠ΅λ‹ˆλ‹€. Jdbiκ°€ ν¬ν•¨λœ μƒˆλ‘œμš΄ jdk16 ν”„λ‘œμ νŠΈμ— λŒ€ν•œ "μ¦‰μ‹œ μ‚¬μš© κ°€λŠ₯ν•œ κ²½ν—˜"이 이와 같은 λͺ»μƒκΈ΄ μŠ€μœ„μΉ˜λ₯Ό ν•„μš”λ‘œ ν•˜λ―€λ‘œ 3.x둜 μ—…κ·Έλ ˆμ΄λ“œν•˜λŠ” 것을 μ›ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

더 이상 Unsafeλ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šλ„λ‘ μ—…λ°μ΄νŠΈν•΄μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. 이 κΈ°λŠ₯이 μ—†μ–΄μ Έμ„œ κΈ°μ©λ‹ˆλ‹€. :)

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰