diff --git a/README.md b/README.md
index ed675d0..04675ed 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,7 @@
# Which Version of JDK Should I Use?
+> English | [한국어](/ko)
+
To build and run Java applications, a Java Compiler, Java Runtime Libraries, and a Virtual Machine are required that implement the Java Platform, Standard Edition ("Java SE") specification.
@@ -13,33 +15,40 @@ This site gives independent, yet opinionated recommendations.
## TL;DR
-✅ Recommendation: Use [Adoptium Eclipse Temurin 17](#adoptium-eclipse-temurin) and ensure that your local version matches the CI and production version.
+✅ Recommendation: Use [Adoptium Eclipse Temurin 21](#adoptium-eclipse-temurin) and ensure that your local version matches the CI and production version.
## Releases
Under the current [JDK release model](https://openjdk.java.net/projects/jdk/), a new feature release with a new major version number is planned every six months, in March and September. Additionally, there are quarterly bug fix updates.
-Every three years, the September release will be a Long-Term-Support (LTS) release, which gets updates for at least three years.
-
-JDK Version | Type | Release Date | Highlights | Recommendation
------------ | ------- | ------------ | ---------------------| ---
-**8** | **LTS** | **03/2014** | Lambdas | Last LTS version under previous release model. Free updates by Oracle [ended](https://www.oracle.com/java/technologies/java-se-support-roadmap.html), but still maintained by others. Upgrade to a 11 or 17 within the next months!
-9 | Feature | 09/2017 | Modules | New release model was introduced. EOL. Upgrade to 11 or 17 now!
-10 | Feature | 03/2018 | var | EOL. Upgrade to 11 or 17 now!
-**11** | **LTS** | **09/2018** | New HTTP Client | Widely used LTS version. Plan upgrade to version 17 within the next months.
-12 | Feature | 03/2019 | | EOL. Upgrade to 17 now!
-13 | Feature | 09/2019 | | EOL. Upgrade to 17 now!
-14 | Feature | 03/2020 | Switch expressions | EOL. Upgrade to 17 now!
-15 | Feature | 09/2020 | Text blocks | EOL. Upgrade to 17 now!
-16 | Feature | 03/2021 | Records | EOL. Upgrade to 17 now!
-**17** | **LTS** | **09/2021** | Sealed Classes | Current LTS version.
-
-You have to decide, if you want to stick with the latest LTS version, or if you go with the latest feature release and upgrade every six months.
-Both ways are OK.
-If uncertain, stick with the latest LTS version.
-
-The OpenJDK project itself is managed on [openjdk.java.net](https://openjdk.java.net), where you can find specifications, source code, and mailing lists.
-But there are no builds that you can download.
+Every two years, the September release will be a Long-Term-Support (LTS) release, which gets updates for at least three years.
+
+
+| JDK Version | Type | Release Date | Highlights | Recommendation |
+|-----------------------------------------------------|---------|--------------|--------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| [**8**](https://openjdk.java.net/projects/jdk8/) | **LTS** | **03/2014** | Lambdas | Last LTS version under previous release model. Free updates by Oracle [ended](https://www.oracle.com/java/technologies/java-se-support-roadmap.html), but still maintained by others. Upgrade to 21 now! |
+| [9](https://openjdk.java.net/projects/jdk9/) | Feature | 09/2017 | Modules | New release model was introduced. EOL. Upgrade to 21 now! |
+| [10](https://openjdk.java.net/projects/jdk/10/) | Feature | 03/2018 | var | EOL. Upgrade to 21 now! |
+| [**11**](https://openjdk.java.net/projects/jdk/11/) | **LTS** | **09/2018** | New HTTP Client | Upgrade to 21 now! |
+| [12](https://openjdk.java.net/projects/jdk/12/) | Feature | 03/2019 | | EOL. Upgrade to 21 now! |
+| [13](https://openjdk.java.net/projects/jdk/13/) | Feature | 09/2019 | | EOL. Upgrade to 21 now! |
+| [14](https://openjdk.java.net/projects/jdk/14/) | Feature | 03/2020 | Switch expressions | EOL. Upgrade to 21 now! |
+| [15](https://openjdk.java.net/projects/jdk/15/) | Feature | 09/2020 | Text blocks | EOL. Upgrade to 21 now! |
+| [16](https://openjdk.java.net/projects/jdk/16/) | Feature | 03/2021 | Records | EOL. Upgrade to 21 now! |
+| [**17**](https://openjdk.java.net/projects/jdk/17/) | **LTS** | **09/2021** | Sealed Classes | It's time to upgrade to 21. |
+| [18](https://openjdk.java.net/projects/jdk/18/) | Feature | 03/2022 | [UTF-8 by Default](https://openjdk.java.net/jeps/400) | EOL. Upgrade to 21 now! |
+| [19](https://openjdk.java.net/projects/jdk/19/) | Feature | 09/2022 | | EOL. Upgrade to 21 now! |
+| [20](https://openjdk.java.net/projects/jdk/20/) | Feature | 03/2023 | | EOL. Upgrade to 21 now! |
+| [**21**](https://openjdk.java.net/projects/jdk/21/) | **LTS** | **09/2023** | [Pattern Matching](https://wscp.dev/posts/tech/java-pattern-matching/), Virtual Threads | This is currently the best choice. |
+| [22](https://openjdk.java.net/projects/jdk/22/) | Feature | 03/2024 | | Stick with 21. |
+| [23](https://openjdk.java.net/projects/jdk/23/) | Feature | 09/2024 | [Markdown Documentation Comments](https://openjdk.org/jeps/467) | Stick with 21. |
+| [24](https://openjdk.java.net/projects/jdk/24/) | Feature | 03/2025 | [Ahead-of-Time Class Loading](https://openjdk.org/jeps/483) | Stick with 21. |
+| [**25**](https://openjdk.java.net/projects/jdk/25/) | **LTS** | **09/2025** | **Flexible Constructor Bodies** | **Current LTS version.** Wait a few weeks until builds are available for your distribution and until the first bugs are fixed. So, sticking with 21 is not the worst idea. |
+
+You have to decide if you want to stick with the latest LTS version, or if you go with the latest feature release and upgrade every six months.
+Both options are okay, but if you're uncertain, stick with the latest LTS version.
+
+The OpenJDK project itself is managed on [openjdk.java.net](https://openjdk.java.net) where you can find specifications, source code, and mailing lists, but there are no builds that you can download.
You need to choose a distribution.
## Distributions
@@ -68,7 +77,10 @@ Docker Images (n/a)
Oracle provides OpenJDK builds for Linux, macOS and windows in a compressed archive format.
-These builds will only be updated for a 6 month period. Updates and security patches will not be available after this short period. This also applies for LTS versions! E.g. the latest OpenJDK 11 build was [11.0.2+9](https://jdk.java.net/archive/) while the current OpenJDK version is [11.0.12+7](https://wiki.openjdk.java.net/display/JDKUpdates/JDK11u).
+These builds will only be updated for a 6-month period.
+Updates and security patches will not be available after this short period.
+This also applies for LTS versions!
+e.g., the latest OpenJDK 11 build was [11.0.2+9](https://jdk.java.net/archive/) while the current OpenJDK version is [11.0.12+7](https://wiki.openjdk.java.net/display/JDKUpdates/JDK11u).
⛔️ Recommendation: Do not use _OpenJDK builds by Oracle_, particularly if you plan to stick with LTS versions.
@@ -84,12 +96,12 @@ Oracle provides updates regular updates and security patches for these builds.
The main issue with these builds is Oracle's licensing policy:
-Until version 10 builds were published under the [Oracle Binary Code License Agreement](https://www.oracle.com/de/downloads/licenses/binary-code-license.html), which effectivly allowed the builds to be used for commercial projects.
+Until version 10, builds were published under the [Oracle Binary Code License Agreement](https://www.oracle.com/de/downloads/licenses/binary-code-license.html), which effectively allowed the builds to be used for commercial projects.
With version 11 to version 16 builds were published under the [Oracle Technology Network License Agreement for Oracle Java SE](https://www.oracle.com/downloads/licenses/javase-license1.html), **which require a fee-based license for usage in production**.
This is why many new distributions of the OpenJDK have emerged.
-Version 17 is published under the [Oracle No-Fee Terms and Conditions (NFTC)](https://www.oracle.com/downloads/licenses/no-fee-license.html), which allows the usage of the builds for running _internal business operations_. Unfortunally, it is not defined, what this means. Is a public website running _internal business operations_?
+Version 17 is published under the [Oracle No-Fee Terms and Conditions (NFTC)](https://www.oracle.com/downloads/licenses/no-fee-license.html), which allows the usage of the builds for running _internal business operations_. Unfortunately, the phrase "internal business operations," is not defined and is a very vague phrase (is a public-facing website running internal business operations?).
Also, based on this volatile licensing history, it is not predictable, how future version will be licensed.
@@ -99,7 +111,7 @@ Also, based on this volatile licensing history, it is not predictable, how futur
### Adoptium Eclipse Temurin
[Website](https://adoptium.net) |
-[Releases](https://adoptium.net/archive.html) |
+[Releases](https://adoptium.net/temurin/releases/) |
[Docker Images](https://hub.docker.com/_/eclipse-temurin/)
Eclipse Adoptium is a top-level project under the Eclipse Foundation, which provides resources and a professional governance model for open source software.
@@ -133,11 +145,12 @@ The website and older releases are kept online to access archived releases.
[Releases](https://www.azul.com/downloads/?package=jdk#download-openjdk) |
[Docker Images](https://hub.docker.com/r/azul/zulu-openjdk)
-Azul Systems, Inc., has specialized in professional Java technologies and commercial support for JDK.
-Azul has a high industry reputation and is engaged in various working groups to evolve the Java platform.
+Azul Zulu Builds of OpenJDK are no-cost, production-ready open-source, TCK-tested, and certified OpenJDK distributions.
+They are available for a wide range of hardware platforms and operating systems and are compatible with special requirements,
+such as stripped-down JREs and builds, including OpenJFX and Coordinated Restore at Checkpoint (CRaC).
-Azul provides open source OpenJDK builds called _Azul Zulu_ for many operating systems and architectures.
-Additionally, Azul provides builds for special requirements, such as stripped down JREs and builds including OpenJFX.
+They are supported as part of Azul Platform Core, which provides stabilized security updates for rapid, assured deployment
+into production and solution-oriented engineering assistance.
A downside of these builds is the dependency to a single company, that may suddenly change its license or update policies.
@@ -147,18 +160,16 @@ A downside of these builds is the dependency to a single company, that may sudde
### Azul Zing
[Website](https://www.azul.com) |
-[Releases](https://www.azul.com/products/prime/stream-download/) |
-Docker Images (n/a)
+[Releases](https://www.azul.com/products/prime-roadmap/) |
+[Docker Images](https://hub.docker.com/u/azul)
-Azul Zing is a commercial JDK, currently marketed as _Azul Platform Prime_.
-It requires a commercial contract with Azul Systems for production use.
+Azul Zing Builds of OpenJDK (Zing) are commercial optimized builds of OpenJDK, currently marketed as Azul Platform Prime. Zing is free for evaluation but requires a commercial contract with Azul Systems for production use.
-Zing is OpenJDK-based, and adds the patented "C4 Pauseless Garbage Collector", the "Falcon JIT Compiler" (that optimizes for throughput at the cost of higher CPU usage and longer start-up and warm-up times), and some features to speed up compiler warm-up time (to mitigate the Falcon JIT Compiler's slower warm-up times by profiling and storing optimizations of training runs in files).
+Zing takes OpenJDK as its base and replaces several key components with optimized versions. The major additions are the C4 Pauseless Garbage Collector (the only generational, production tested pauseless garbage collection available for all major Java versions, including Java 8 and 11), the Falcon JIT Compiler (optimizes code for faster throughput, lower response latencies, and greater carrying capacity), the ReadyNow Warmup Optimizer (learns from previous runs of your application to bring applications to full speed as quickly as possible), and Azul Optimizer Hub (a separate component that offloads JIT compilation from your client machines and lets JVMs learn from each other to reach maximum speed as quickly as possible).
-Azul Zing has some use cases in financial trading applications, where GC pauses are a problem.
-Apart from that, the regular OpenJDK contains the free low pause time GCs [Shenandoah](https://wiki.openjdk.java.net/display/shenandoah/Main) and [ZGC](https://wiki.openjdk.java.net/display/zgc) that may be an alternative.
+Zing is a good choice for latency-sensitive applications that need to guarantee low median latency and minimum latency outliers, applications that aggressively scale up and down and need to be ready to handle traffic as soon as possible, and large fleets of JVMs running an application where the cost of infrastructure is an issue.
-⚠️ Recommendation: Consider _Azul Zing / Azul Platform Prime_ when GC pause times are a problem. Do not use it in production without a license.
+⚠️ Recommendation: Consider _Azul Zing / Azul Platform Prime_ when GC pause times, slow warmup, and large on-prem infrastructure or Cloud costs are a problem. Do not use it in production without a license.
### BellSoft Liberica JDK
@@ -191,16 +202,16 @@ It is an alternative to the default HotSpot Java Virtual Machine, but it has nev
IBM now provides builds called _Semeru Runtime_ based on the Eclipse OpenJ9 Java Virtual Machine and some OpenJDK class libraries.
OpenJ9 has a [low memory footprint and starts fast with shared classes](https://www.eclipse.org/openj9/performance/), but lower throughput compared to Hotspot Virtual Machine.
-⛔️ Recommendation: Use _IBM Semeru Runtime_ only, if you know that you need the OpenJ9 Virtual Machine.
+⚠️ Recommendation: Use _IBM Semeru Runtime_ only if you know that you need the OpenJ9 Virtual Machine.
### Amazon Corretto
-[Website](https://aws.amazon.com/de/corretto/) |
-[Releases](https://aws.amazon.com/de/corretto/) |
+[Website](https://aws.amazon.com/corretto/) |
+[Releases](https://aws.amazon.com/corretto/) |
[Docker Images](https://hub.docker.com/_/amazoncorretto)
-Since Oracle changed the support and license policy for its OpenJDK builds, major cloud providers decided to establish their own managed OpenJDK builds and providing long-term updates. Apparantly, this is to avoid risks, especially lawsuits against Oracle.
+Since Oracle changed the support and license policy for its OpenJDK builds, major cloud providers decided to establish their own managed OpenJDK builds and providing long-term updates. Apparently, this is to avoid risks, especially lawsuits against Oracle.
In 2018, AWS published _Corretto_, yet another OpenJDK build.
@@ -223,7 +234,7 @@ Microsoft may include back ports of bug fixes from newer OpenJDK versions and cl
Microsoft provides releases for major development platforms.
-⚠️ Recommendation: Use _Microsoft Build of OpenJDK_, only if you run Java applications directly on Azure.
+⚠️ Recommendation: Use _Microsoft Build of OpenJDK_, only if you run Java applications directly on Azure. There are more established options available.
### Alibaba Dragonwell
@@ -244,7 +255,7 @@ Alibaba provides an OpenJDK build which includes back ports and some _extra feat
SapMachine is yet another OpenJDK Build, maintained by SAP.
-⚠️ Recommendation: Use _SapMachine_ only if you are running Java applications on SAP servers.
+⚠️ Recommendation: Use _SapMachine_ only if you are running Java applications on SAP servers. There are more established options available.
### Red Hat OpenJDK
@@ -255,7 +266,21 @@ SapMachine is yet another OpenJDK Build, maintained by SAP.
Red Hat provides OpenJDK builds for LTS versions.
-⚠️ Recommendation: Use _Red Hat OpenJDK_ only if you are running Java applications directly on Red Hat Enterprise Linux.
+⚠️ Recommendation: Use _Red Hat OpenJDK_ only if you are running Java applications directly on Red Hat Enterprise Linux. There are more established options available.
+
+
+### ojdkbuild
+
+[Website](https://github.com/ojdkbuild/ojdkbuild) |
+[Releases](https://github.com/ojdkbuild/ojdkbuild/releases ) |
+Docker Images (n/a)
+
+The project is discontinued.
+The ojdkbuild project had the goal of providing Windows x86_64 binaries of OpenJDK that are as close in behaviour to Linux OpenJDK packages as possible, e.g. by using system libraries instead of packaged versions of zlib or OpenSSL.
+It used the packages included in CentOS.
+A use case for these builds was to develop Java software on Windows machines and deploy them to Linux servers in production.
+
+⛔️ Recommendation: Do not use _ojdkbuild_, as the project is discontinued.
### GraalVM
@@ -268,7 +293,7 @@ GraalVM is a fully compliant JDK, but much different from all the others builds.
GraalVM was developed by Oracle.
It is based on the OpenJDK but includes a new high-performance compiler and a new polyglot virtual machine (can execute code written in different programming languages).
-It is also possible to create platform-specific native executable that are highly optimized and start extremly fast.
+It is also possible to create platform-specific native executable that are highly optimized and start extremely fast.
🤷 Please [share](https://github.com/whichjdk/whichjdk.com/issues/6) your experiences with GraalVM in production, so that we can elaborate a validated recommendation.
@@ -278,11 +303,11 @@ It is also possible to create platform-specific native executable that are highl
The official support for _macOS/AArch64_ was implemented with [JEP 391](https://openjdk.java.net/jeps/391) in the OpenJDK 17 release.
-macOS _x64_ builds run stable with Rosetta 2, but there is a significant performance hit due to the emulation.
+macOS _x64_ builds run stable with Rosetta 2, but there is a significant performance drop due to emulation.
People that develop on an _Apple Silicon_ Mac (like me) should install a native macOS _AArch64_ (aka _ARM 64_) build of the JDK.
Most distributions have _macOS/AArch64_ builds for Java 17+, only.
-[BellSoft Liberica](https://bell-sw.com/announcements/2021/03/12/Liberica-on-Apple-Silicon/) and [Azul Zulu](https://www.azul.com/newsroom/azul-announces-support-of-java-builds-of-openjdk-for-apple-silicon/) also provide free _macOS/AArch64_ builds for Java 8 and Java 11.
+[BellSoft Liberica](https://bell-sw.com/announcements/2021/03/12/Liberica-on-Apple-Silicon/), Amazon Corretto, and [Azul Zulu](https://www.azul.com/newsroom/azul-announces-support-of-java-builds-of-openjdk-for-apple-silicon/) also provide free _macOS/AArch64_ builds for Java 8 and Java 11.
## FAQs
@@ -299,7 +324,7 @@ sdk list java
and install a specific version:
```
-sdk install java 17.0.1-tem
+sdk install java 21.0.3-tem
```
Validate by checking the version:
@@ -327,7 +352,7 @@ Some distributions provide a JDK (Java Development Kit) and a JRE (Java Runtime
A JDK includes everything to _compile, package and run_ Java applications, while a JRE only includes the binaries and libraries to _run_ Java applications.
The JRE is a stripped down version of the JDK, and is smaller in terms of megabytes.
-If size matters for you, consider creating your own stripped down runtime using [jlink](https://blog.adoptium.net/2021/10/jlink-to-produce-own-runtime/).
+If size matters for you, consider creating your own stripped-down runtime using [jlink](https://blog.adoptium.net/2021/10/jlink-to-produce-own-runtime/).
For local development, you need a JDK.
In production you only need a runtime environment, but it is quite common to use the JDK, too.
diff --git a/ko/README.md b/ko/README.md
new file mode 100644
index 0000000..b3814ec
--- /dev/null
+++ b/ko/README.md
@@ -0,0 +1,381 @@
+# 어떤 JDK 버전을 사용해야할까요?
+
+> [English](/) | 한국어
+
+
+
+Java 애플리케이션을 빌드하고 실행하려면 Java 플랫폼과 표준 스펙(Java SE)을 구현하는 Java 컴파일러, 런타임 라이브러리 및 Java 가상 머신(JVM)이 필요합니다.
+
+[OpenJDK](https://openjdk.java.net)는 Java SE 스펙의 오픈 소스 [참조 구현](https://ko.wikipedia.org/wiki/%EC%B0%B8%EC%A1%B0_%EA%B5%AC%ED%98%84)이지만 그저 소스코드일 뿐입니다.
+여러 OS와 같은 플랫폼을 지원하는 바이너리 형태의 배포판들은 각기다른 벤더(vendor)로부터 제공됩니다.
+이러한 배포판들은 라이선스, 상업적 지원, 지원 플랫폼, 업데이트 주기 등이 다릅니다.
+
+이 사이트는 독립적이면서도 주관적인 추천을 제공합니다.
+
+
+## 한줄 요약
+
+✅ 추천: [Adoptium Eclipse Temurin 21](#adoptium-eclipse-temurin)을 사용하세요. 그리고 설치된 버전이 CI 및 Production 버전이 맞는지 확인하세요.
+
+## Releases
+
+현재의 [JDK 릴리즈 모델](https://openjdk.java.net/projects/jdk/)에서는 6개월마다(3월과 9월) 새로운 메이저 버전 번호가 포함된 새로운 Feature 릴리즈가 계획되어있습니다. 추가로, 분기별로 버그 수정 업데이트가 있습니다.
+
+매 2년마다 9월에 하는 릴리즈들은 LTS(Long-Term-Support) 릴리즈가 됩니다. LTS 릴리즈들은 릴리즈 이후 최소 3년간 업데이트를 받습니다.
+
+
+| JDK 버전 | 릴리즈 타입 | 릴리즈 날짜 | 주요 변경 | 추천 |
+|--|--|--|--|--|
+| [**8**](https://openjdk.java.net/projects/jdk8/) | **LTS** | **2014년 3월** | Lambdas | 이전 릴리즈 모델의 마지막 LTS 버전. 오라클의 무료 업데이트는 [종료](https://www.oracle.com/java/technologies/java-se-support-roadmap.html)되었지만, 다른 벤더에 의해 계속 유지보수를 하고 있음. 향후 몇 달 내로 11이나 17 버전으로 업그레이드 추천! |
+| [9](https://openjdk.java.net/projects/jdk9/) | Feature | 2017년 9월 | Modules | [새 릴리즈 주기가 소개됨](https://mail.openjdk.org/pipermail/discuss/2017-September/004281.html). 지원 종료(EOL). 17 혹은 21 버전으로 업그레이드 추천! |
+| [10](https://openjdk.java.net/projects/jdk/10/) | Feature | 2018년 3월 | var | 지원 종료(EOL). 17 혹은 21 버전으로 업그레이드 추천! |
+| [**11**](https://openjdk.java.net/projects/jdk/11/) | **LTS** | **2018년 9월** | New HTTP Client | 지원 종료(EOL). 21 버전으로 업그레이드 추천! |
+| [12](https://openjdk.java.net/projects/jdk/12/) | Feature | 2019년 3월 | | 지원 종료(EOL). 21 버전으로 업그레이드 추천! |
+| [13](https://openjdk.java.net/projects/jdk/13/) | Feature | 2019년 9월 | | 지원 종료(EOL). 21 버전으로 업그레이드 추천! |
+| [14](https://openjdk.java.net/projects/jdk/14/) | Feature | 2020년 3월 | Switch expressions | 지원 종료(EOL). 21 버전으로 업그레이드 추천! |
+| [15](https://openjdk.java.net/projects/jdk/15/) | Feature | 2020년 9월 | Text blocks | 지원 종료(EOL). 21 버전으로 업그레이드 추천! |
+| [16](https://openjdk.java.net/projects/jdk/16/) | Feature | 2021년 3월 | Records | 지원 종료(EOL). 21 버전으로 업그레이드 추천! |
+| [**17**](https://openjdk.java.net/projects/jdk/17/) | **LTS** | **2021년 9월** | Sealed Classes | **지원되는 LTS 버전** 21 버전으로 업그레이드를 고려해보는 것 추천! |
+| [18](https://openjdk.java.net/projects/jdk/18/) | Feature | 2022년 3월 | [UTF-8 by Default](https://openjdk.java.net/jeps/400) | 지원 종료(EOL). 21 버전으로 업그레이드 추천! |
+| [19](https://openjdk.java.net/projects/jdk/19/) | Feature | 2022년 9월 | [미리보기](https://openjdk.org/jeps/12)와 [미완성](https://openjdk.org/jeps/11) 기능들만 추가 | 지원 종료(EOL). 21 버전으로 업그레이드 추천! |
+| [20](https://openjdk.java.net/projects/jdk/20/) | Feature | 2023년 3월 | [미리보기](https://openjdk.org/jeps/12)와 [미완성](https://openjdk.org/jeps/11) 기능들만 추가 | 지원 종료(EOL). 21 버전으로 업그레이드 추천! |
+| [**21**](https://openjdk.java.net/projects/jdk/21/) | **LTS** | 2023년 9월 | [Pattern Matching](https://wscp.dev/posts/tech/java-pattern-matching/), Virtual Threads | **현재의 LTS 버전** |
+
+**(1) 최신 LTS 버전을 계속 사용할지**, 아니면 **(2) 최신 릴리즈를 사용하고 6개월마다 업그레이드할지**. 두 가지 선택지가 있습니다.
+두 선택지 모두 괜찮지만, 불확실하다면 최신 LTS 버전을 사용하는 걸 추천합니다.
+
+OpenJDK 프로젝트 자체는 [openjdk.java.net](https://openjdk.java.net)에서 관리됩니다.
+[openjdk.java.net](https://openjdk.java.net)에서 스펙, 소스코드, 메일링 리스트 등을 확인할 수 있지만, 다운로드할 수 있는 빌드는 없습니다.
+그렇기 때문에 **배포판(Distribution)을 선택해야합니다.**
+
+## 배포판(Distributions)
+
+- [Oracle의 OpenJDK 빌드 (jdk.java.net)](#oracle의-openjdk-빌드-jdkjavanet)
+- [Oracle Java SE Development Kit (JDK)](#oracle-java-se-development-kit-jdk)
+- [Adoptium Eclipse Temurin](#adoptium-eclipse-temurin)
+- [AdoptOpenJDK](#adoptopenjdk)
+- [Azul Zulu](#azul-zulu)
+- [Azul Zing](#azul-zing)
+- [BellSoft Liberica JDK](#bellsoft-liberica-jdk)
+- [IBM Semeru 런타임](#ibm-semeru-런타임)
+- [Amazon Corretto](#amazon-corretto)
+- [Microsoft Build of OpenJDK](#microsoft-build-of-openjdk)
+- [Alibaba Dragonwell](#alibaba-dragonwell)
+- [SapMachine](#sapmachine)
+- [Red Hat OpenJDK](#red-hat-openjdk)
+- [GraalVM](#graalvm)
+
+
+### Oracle의 OpenJDK 빌드 (jdk.java.net)
+
+[웹사이트](https://jdk.java.net) |
+[릴리즈](https://jdk.java.net) |
+Docker 이미지 (n/a)
+
+오라클은 압축된 아카이브 형식으로 Linux, macOS 및 Windows용 OpenJDK 빌드를 제공합니다.
+
+이 빌드는 6개월 동안만 업데이트됩니다.
+6개월이 지나면 업데이트 및 보안 패치가 제공되지 않습니다.
+**이는 LTS 버전에도 적용됩니다!**
+예를 들어, 오라클의 OpenJDK 11 빌드 버전은 [11.0.2+9](https://jdk.java.net/archive/)이지만, 현재 OpenJDK의 버전은 [11.0.20.1+1](https://wiki.openjdk.java.net/display/JDKUpdates/JDK11u) 입니다.
+
+⛔️ 비추: 특히 LTS 버전을 사용하실 계획이시라면 더더욱 _Oracle의 OpenJDK 빌드_ 는 사용하지 마세요.
+
+
+### Oracle Java SE Development Kit (JDK)
+
+[웹사이트](https://www.oracle.com/java/) |
+[릴리즈](https://www.oracle.com/java/technologies/downloads/archive/) |
+Docker 이미지 (n/a)
+
+오라클은 OpenJDK와 완전히 동일한 소스인 오라클 Java SE Development Kit(JDK)을 기반으로 하는 상용 버전의 OpenJDK를 제공합니다.
+오라클은 이 빌드들에 대해 정기적인 업데이트와 보안 패치를 제공합니다.
+
+이 빌드들의 주요 문제는 오라클의 라이선스 정책입니다.
+
+JDK 10 버전까지는 [오라클 바이너리 코드 라이선스 계약](https://www.oracle.com/de/downloads/licenses/binary-code-license.html)에 따라 빌드가 게시되었기 때문에 상용 프로젝트에 빌드를 사용할 수 있었습니다.
+
+JDK 11 버전부터 16버전까지의 빌드들은 [오라클 Java SE용 오라클 기술 네트워크 라이선스 계약](https://www.oracle.com/downloads/licenses/javase-license1.html)에 따라 게시되었으며, **프로덕션 환경에서 사용하려면 유료 라이선스가 필요합니다.**
+이 때문에 많은 새로운 OpenJDK 배포판이 등장했습니다.
+
+JDK 17 버전은 _내부 비즈니스 운영_ 을 위해 사용할 수 있도록 허용하는 [오라클 무료 이용 약관(NFTC)](https://www.oracle.com/downloads/licenses/no-fee-license.html)에 따라 게시됩니다. 하지만 안타깝게도, _"내부 비즈니스 운영"_ 이라는 문구는 정의되어 있지 않으며 매우 모호한 문구입니다.(예를 들어, 외부에 공개된 웹 사이트가 내부 비즈니스 운영을 위한 것인지?)
+
+또한, 지금까지의 이러한 불안정한 라이선스 이력을 기반으로 향후 버전 라이선스들이 어떻게 될지 예측할 수 없습니다.
+
+⛔️ 비추: 변호사와 상담해보기 전엔 _Oracle Java SE Development Kit (JDK)_ 는 사용하지 마세요.
+
+
+### Adoptium Eclipse Temurin
+
+[웹사이트](https://adoptium.net) |
+[릴리즈](https://adoptium.net/archive.html) |
+[Docker 이미지](https://hub.docker.com/_/eclipse-temurin/)
+
+Eclipse Adoptium은 오픈 소스 소프트웨어에 대한 리소스와 전문 거버넌스 모델을 제공하는 Eclipse 재단 산하의 최상위 프로젝트입니다.
+Adoptium 워킹 그룹은 Red Hat, IBM, Microsoft, Azul, iJUG 등 Java 기술에 전략적 관심을 갖고 있는 주요 기업 및 조직으로 구성되어 있습니다. 이전의 AdoptOpenJDK 프로젝트는 Eclipse Adoptium으로 이전되었습니다.
+
+프로젝트와 빌드를 구분하기 위해 Adoptium OpenJDK 빌드들은 _Eclipse Temurin_ 이라고 부릅니다.
+
+Eclipse Temurin 빌드는 높은 퀄리티 및 벤더 중립적(vendor-neutral)이고, 허용된 라이선스에 다라 [TCK](https://en.wikipedia.org/wiki/Technology_Compatibility_Kit) 테스트를 거쳤습니다.
+
+Adoptium은 해당 업스트림 소스가 활발하게 유지 관리되는 한 LTS 릴리즈용 바이너리를 계속 빌드할 것이라고 밝혔습니다.
+
+✅ 추천: _Adoptium Eclipse Temurin_ OpenJDK 빌드는 강력 추천합니다.
+
+
+### AdoptOpenJDK
+
+[웹사이트](https://adoptopenjdk.net) |
+[릴리즈](https://adoptopenjdk.net/archive.html?variant=openjdk11&jvmVariant=hotspot) |
+[Docker 이미지](https://hub.docker.com/_/adoptopenjdk)
+
+AdoptOpenJDK 프로젝트는 Eclipse Adoptium의 전신으로, 기본 HotSpot VM과 OpenJ9 VM 모두에 고품질 OpenJDK 빌드를 제공했습니다.
+
+웹사이트와 이전 릴리즈는 보관된 릴리즈에 액세스할 수 있도록 온라인으로 유지됩니다.
+
+⛔️ 비추: _AdoptOpenJDK_ 는 더이상 사용하지 마세요. 대신 _Adoptium Eclipse Temurin_ 를 사용하세요.
+
+
+### Azul Zulu
+
+[웹사이트](https://www.azul.com) |
+[릴리즈](https://www.azul.com/downloads/?package=jdk#download-openjdk) |
+[Docker 이미지](https://hub.docker.com/r/azul/zulu-openjdk)
+
+Azul Systems 주식회사는 전문 Java 기술 및 JDK에 대한 상업적 지원을 전문으로 하는 회사입니다.
+Azul은 업계에서 높은 명성을 얻고 있으며 Java 플랫폼의 발전을 위해 다양한 워킹 그룹에 참여하고 있습니다.
+
+Azul은 다양한 운영 체제 및 아키텍처를 위한 _Azul Zulu_ 라는 오픈 소스 OpenJDK 빌드를 제공합니다.
+또한 Azul은 JRE를 제거한 빌드, OpenJFX를 포함한 빌드 등 특수한 요구 사항을 위한 빌드도 제공합니다.
+
+Azul Zulu의 단점은 라이선스 또는 업데이트 정책을 갑자기 변경할 수 있는 단일 회사에 종속된다는 것입니다.
+
+✅ 추천: _OpenJDK의 Azul Zulu 빌드_ 는 좋은 선택입니다.
+
+
+### Azul Zing
+
+[웹사이트](https://www.azul.com) |
+[릴리즈](https://www.azul.com/products/prime/stream-download/) |
+[Docker 이미지](https://hub.docker.com/u/azul)
+
+Azul Zing은 OpenJDK의 상업적으로 최적화된 빌드입니다. 현재 _Azul Platform Prime_ 으로 판매되고 있습니다.
+무료로 평가(Evaluation) 가능하지만, 프로덕션용으로 사용하려면 Azul Systems 주식회사와 상용 계약이 필요합니다.
+
+Zing은 OpenJDK를 기반으로 몇 가지 주요 구성 요소를 최적화된 버전으로 대체합니다.
+
+- `C4 무중단 Garbage Collector` - Java 8 및 11을 포함한 모든 주요 Java 버전에서 사용가능한 유일한 세대별, 프로덕션 테스트를 거친 가비지 컬렉터
+- `Falcon JIT(Just-In-Time) 컴파일러`- 더 빠른 처리량, 더 낮은 응답 레이턴시, 더 큰 전송 용량을 위한 최적화
+- `ReadyNow 웜업 옵티마이저` - 애플리케이션의 기존 실행들을 통해 학습하여 애플리케이션을 최대한 빠르게 최대 속도로 최적화
+- `Azul 옵티마이저 허브` - 클라이언트 머신에서 JIT 컴파일을 오프로드하고 JVM이 서로 학습하여 가능한 한 빨리 최대 속도에 도달할 수 있도록 하는 별도 컴포넌트
+
+Azul Zing은 지연시간에 민감한 애플리케이션에 좋은 선택입니다.
+평균 지연시간이 낮고, 최소 지연시간 이상값을 보장해야하거나 공격적으로 확장 및 축소가 가능하고 가능한 한 빨리 트래픽을 처리해야하는 경우, 인프라 비용이 문제가 되는 애플리케이션을 실행하는 대규모 JVM에 적합합니다.
+
+⚠️ 추천: GC 중단시간, Warmup이 느린 경우, 대규모 온프레미스 인프라 및 클라우드 비용이 문제가 된다면 _Azul Zing / Azul Platform Prime_ 을 고려해보세요. 라이선스 없이 프로덕션에서 사용하지 마세요.
+
+
+### BellSoft Liberica JDK
+
+[웹사이트](https://bell-sw.com) |
+[릴리즈](https://bell-sw.com/pages/downloads/?) |
+[Docker 이미지](https://hub.docker.com/u/bellsoft)
+
+Azul과 마찬가지로 BellSoft는 전문 Java 기술 및 JDK에 대한 상업적 지원을 전문으로 합니다.
+또한 업계에서 높은 평판을 얻고 있으며 Java 플랫폼의 발전을 위해 다양한 워킹 그룹에 참여하고 있습니다.
+
+BellSoft는 거의 모든 운영 체제 및 아키텍처를 위한 _Liberica JDK_ 라는 오픈 소스 OpenJDK 빌드를 제공합니다.
+
+널리 사용되는 Spring Boot 프레임워크는 [빌드팩](https://github.com/paketo-buildpacks/bellsoft-liberica)의 런타임으로 Liberica JDK를 선택했습니다.
+
+BellSoft Liberica JDK의 단점은 라이선스 또는 업데이트 정책을 갑자기 변경할 수 있는 단일 회사에 종속된다는 것입니다.
+
+✅ 추천: _BellSoft Liberica JDK_ 는 좋은 선택입니다.
+
+
+### IBM Semeru 런타임
+
+[웹사이트](https://developer.ibm.com/languages/java/semeru-runtimes/) |
+[릴리즈](https://developer.ibm.com/languages/java/semeru-runtimes/downloads/) |
+Docker 이미지 (n/a)
+
+IBM은 J9라는 자체 버전의 JVM을 개발했으며, 이 JVM은 _Eclipse OpenJ9_ 로 오픈 소스화되었습니다.
+기본 HotSpot JVM의 대안이지만 큰 인기를 얻지는 못했습니다.
+
+IBM은 현재 이클립스 OpenJ9 JVM과 일부 OpenJDK 클래스 라이브러리를 기반으로 하는 _Semeru Runtime_ 이라는 빌드를 제공합니다.
+OpenJ9은 [메모리 사용량이 적고 공유 클래스로 빠르게 시작할 수 있지만](https://www.eclipse.org/openj9/performance/), 핫스팟 가상 머신에 비해 처리량이 낮습니다.
+
+⚠️ 추천: OpenJ9 가상 머신이 필요하다는 것을 알고 있는 경우에만 _IBM Semeru 런타임_ 을 사용하세요.
+
+
+### Amazon Corretto
+
+[웹사이트](https://aws.amazon.com/corretto/) |
+[릴리즈](https://aws.amazon.com/corretto/) |
+[Docker 이미지](https://hub.docker.com/_/amazoncorretto)
+
+오라클이 OpenJDK 빌드에 대한 지원 및 라이선스 정책을 변경한 이후, 주요 클라우드 제공업체는 자체적으로 관리형 OpenJDK 빌드를 구축하고 장기 업데이트를 제공하기로 결정했습니다. 이는 위험, 특히 오라클과의 소송을 피하기 위한 것으로 보입니다.
+
+2018년에 AWS는 또 다른 OpenJDK 빌드인 _Corretto_ 를 발표했습니다.
+
+AWS는 최신 OpenJDK 버전의 버그 수정 백포트를 포함하며, [주장](https://aws.amazon.com/corretto/faqs/)에 따르면 아직 OpenJDK 프로젝트에 통합되지 않은 패치를 추가할 것이라고 합니다. 아마존은 자사 서비스에 최적화된 대체 [암호화 공급자](https://github.com/corretto/amazon-corretto-crypto-provider)를 구현했습니다. Corretto에서 기본 암호화 구현으로 사용될 [예정](https://aws.amazon.com/blogs/opensource/introducing-amazon-corretto-crypto-provider-accp/)입니다.
+
+아마존은 주요 개발 플랫폼용 릴리즈와 자체 아마존 리눅스 2에 최적화된 버전을 제공합니다.
+
+✅ 추천: 특히 AWS의 Amazon Linux 2에서 Java 애플리케이션을 직접 실행하는 경우, _Corretto_ 빌드가 좋은 선택입니다.
+
+
+### Microsoft Build of OpenJDK
+
+[웹사이트](https://www.microsoft.com/openjdk) |
+[릴리즈](https://docs.microsoft.com/en-us/java/openjdk/download) |
+[Docker 이미지](https://docs.microsoft.com/en-us/java/openjdk/containers)
+
+2021년에 Microsoft는 또 다른 OpenJDK 빌드인 _Microsoft Build of OpenJDK_ 를 발표했습니다.
+
+Microsoft는 이 빌드에 최신 OpenJDK 버전의 버그 수정 백포트를 포함할 수 있으며, 아직 OpenJDK 프로젝트에 통합되지 않은 패치를 추가할 수 있다고 주장합니다.
+
+Microsoft는 주요 개발 플랫폼에 대한 릴리즈를 제공합니다.
+
+⚠️ 추천: Azure에서 직접 Java 애플리케이션을 실행하는 경우에만 _Microsoft 빌드 of OpenJDK_ 를 사용하세요. 더 다양한 선택지가 있습니다.
+
+### Alibaba Dragonwell
+
+[웹사이트](http://dragonwell-jdk.io) |
+[릴리즈](http://dragonwell-jdk.io) |
+[Docker 이미지](https://github.com/alibaba/dragonwell11/wiki/Use-Dragonwell-11-docker-images)
+
+Alibaba는 백 포트와 일부 _추가 기능_ 이 포함된 OpenJDK 빌드를 제공합니다.
+
+⛔️ 비추: 정부에서 강제하지 않는 한 _Alibaba Dragonwell_ 는 사용하지 마세요.
+
+
+### SapMachine
+
+[웹사이트](https://sap.github.io/SapMachine/) |
+[릴리즈](https://github.com/SAP/SapMachine/releases) |
+[Docker 이미지](https://hub.docker.com/_/sapmachine)
+
+SapMachine은 SAP에서 유지 관리하는 또 다른 OpenJDK 빌드입니다.
+
+⚠️ 추천: SAP 서버에서 Java 애플리케이션을 실행하는 경우에만 _SapMachine_ 을 사용하세요. 더 다양한 선택지가 있습니다.
+
+
+### Red Hat OpenJDK
+
+[웹사이트](https://developers.redhat.com/products/openjdk/overview) |
+[릴리즈](https://developers.redhat.com/products/openjdk/download) |
+[Docker 이미지](https://catalog.redhat.com/software/containers/ubi8/openjdk-11/5dd6a4b45a13461646f677f4)
+
+Red Hat은 LTS 버전용 OpenJDK 빌드를 제공합니다.
+
+⚠️ 추천: Red Hat Enterprise Linux에서 Java 애플리케이션을 직접 실행하는 경우에만 _Red Hat OpenJDK_ 를 사용하십시오. 더 다양한 선택지가 있습니다.
+
+
+### ojdkbuild
+
+[웹사이트](https://github.com/ojdkbuild/ojdkbuild) |
+[릴리즈](https://github.com/ojdkbuild/ojdkbuild/releases ) |
+Docker 이미지 (n/a)
+
+이 프로젝트는 중단되었습니다.
+ojdkbuild 프로젝트의 목표는 zlib 또는 OpenSSL의 패키지 버전 대신 시스템 라이브러리를 사용하는 등 가능한 한 Linux OpenJDK 패키지에 가까운 동작을 하는 Windows x86_64 OpenJDK 바이너리를 제공하려는 것이었습니다.
+ojdkbuild는 CentOS에 포함된 패키지를 사용했습니다.
+Windows 시스템에서 Java 소프트웨어를 개발하여 프로덕션 환경의 Linux 서버에 배포하기 위해 사용했습니다.
+
+⛔️ 비추: 프로젝트가 중단되었으므로 _ojdkbuild_ 를 사용하지 마세요.
+
+
+### GraalVM
+
+[웹사이트](https://www.graalvm.org) |
+[릴리즈](https://github.com/graalvm/graalvm-ce-builds/releases) |
+[Docker 이미지](https://github.com/graalvm/container/pkgs/container/graalvm-ce)
+
+GraalVM은 완벽하게 호환되는 JDK이지만 다른 모든 빌드와는 많이 다릅니다.
+
+GraalVM은 오라클에서 개발했습니다.
+OpenJDK를 기반으로 하지만 새로운 고성능 컴파일러와 새로운 다국어(polyglot) 가상 머신(다양한 프로그래밍 언어로 작성된 코드를 실행할 수 있음)이 포함되어 있습니다.
+또한 고도로 최적화되고 극도로 빠르게 시작되는 플랫폼별 네이티브 실행 파일을 생성할 수도 있습니다.
+
+🤷 검증된 추천 의견을 정교화할 수 있도록 프로덕션 환경에서 GraalVM을 사용한 경험을 [공유](https://github.com/whichjdk/whichjdk.com/issues/6)해 주세요.
+
+
+## 특이 케이스
+
+### 애플 실리콘
+
+_macOS/AArch64_ 에 대한 공식 지원은 OpenJDK 17 릴리즈의 [JEP 391](https://openjdk.java.net/jeps/391)에서 구현되었습니다.
+
+macOS _x64_ 빌드는 Rosetta 2에서 안정적으로 실행되지만 에뮬레이션으로 인해 성능이 크게 저하될 수 있습니다.
+저처럼 _Apple Silicon_ Mac에서 개발하는 사람은 네이티브 macOS _AArch64_(일명 _ARM 64_) 빌드의 JDK를 설치해야 합니다.
+
+대부분의 배포판에는 Java 17+ 전용 _macOS/AArch64_ 빌드가 있습니다.
+[BellSoft Liberica](https://bell-sw.com/announcements/2021/03/12/Liberica-on-Apple-Silicon/) 및 [Azul Zulu](https://www.azul.com/newsroom/azul-announces-support-of-java-builds-of-openjdk-for-apple-silicon/)는 Java 8 및 Java 11용 _macOS/AArch64_ 빌드도 무료로 제공합니다.
+
+
+## 자주 묻는 질문
+
+### 로컬 환경에서 JDK를 설치하는 가장 좋은 방법은 무엇인가요?
+
+[SDKMAN](https://sdkman.io/install)을 사용하세요!
+
+사용가능한 JDK 목록을 보고싶다면:
+```bash
+sdk list java
+```
+
+특정 버전을 설치하고 싶다면:
+```
+sdk install 17.0.8.1-tem
+```
+
+버전을 확인하고 싶다면:
+```
+java --version
+```
+
+
+### 현재 어떤 버전의 Java가 설치되어 있는지 알고 싶어요
+
+```
+which java
+`which java` --version
+```
+
+리눅스 환경이라면:
+```
+sudo update-java-alternatives
+```
+
+### JDK와 JRE의 차이점은 무엇인가요?
+
+일부 배포판은 JDK(Java Development Kit)와 JRE(Java Runtime Environment) 빌드를 제공합니다.
+JDK에는 Java 애플리케이션을 _컴파일, 패키징 및 실행_ 하기 위한 모든 것이 포함되어 있는 반면, JRE에는 Java 애플리케이션을 _실행_ 하기 위한 바이너리와 라이브러리만 포함되어 있습니다.
+JRE는 JDK의 축소 버전으로, 메가바이트 단위로 더 작습니다.
+
+크기가 중요한 경우 [jlink](https://blog.adoptium.net/2021/10/jlink-to-produce-own-runtime/)를 사용하여 자체적으로 축소된 런타임을 생성하는 것을 고려하세요.
+
+로컬 환경 개발에는 JDK가 필요합니다.
+프로덕션 환경에서는 런타임 환경만 필요하지만 JDK를 사용하는 경우도 매우 일반적입니다.
+
+### Java EE가 무엇인가요?
+
+_Java EE (Java Platform, Enterprise Edition)_ 는 _Jakarta EE_ 로 이름을 변경했습니다.
+Jakarta EE는 서버 애플리케이션과 프론트엔드를 구축하기 위한 스펙입니다.
+범위면에서, Jakarta EE는 [Spring Boot](https://spring.io/projects/spring-boot), [Micronaut](https://micronaut.io), [Quarkus](https://quarkus.io)와 같은 최신 프레임워크와 비교할 수 있지만, Jakarta EE가 더 복잡하게 느껴집니다.
+
+⚠️ 추천: _자카르타 EE_ 를 기반으로 새 프로젝트를 시작하지 마세요. 대부분의 사람들이 _Spring Boot_ 를 사용하는데, 이는 좋은 선택입니다. Java EE에 대한 배경 지식이 풍부하다면 _Quarkus_ 를 고려해 보세요. Groovy와 Grails를 좋아한다면 _Micronaut_ 을 고려해 보세요.
+
+
+## 이 웹사이트에 대해서
+
+이 웹사이트는 [Jochen Christ](https://twitter.com/jochen_christ)가 관리하고 있습니다.
+이 사이트에 제시된 모든 추천이나 의견은 개인적인 것이며 오랜 전문적 경험을 바탕으로 한 것입니다.
+저자는 여기에 언급된 어떤 조직과도 관련이 없습니다.
+
+오타나 잘못된 내용을 발견하셨다면, [이슈를 생성](https://github.com/whichjdk/whichjdk.com/issues/new)해주시거나 [Pull Request를 생성](https://github.com/whichjdk/whichjdk.com/pulls)해주세요.
+
+Java 및 OpenJDK는 Oracle 및/또는 그 계열사의 상표 또는 등록 상표입니다.
+
+*한국어 번역 : @MinJunKweon*
diff --git a/logo.png b/logo.png
index 137c22b..55e334d 100644
Binary files a/logo.png and b/logo.png differ
diff --git a/logo_980.png b/logo_980.png
index 3ac17de..9415288 100644
Binary files a/logo_980.png and b/logo_980.png differ