2022년 Java 에코시스템 현황 보고서

가장 널리 사용되는 프로그래밍 언어에 대한 심층 탐구

2024 STATE OF THE JAVA ECOSYSTEM
Man holding a cup of coffee
Get an in-depth look at one of the most popular programming languages.
View the Report View the Report

개요

현대의 소프트웨어 산업은 매우 방대하며, 선택할 수 있는 수많은 프로그래밍 언어가 존재합니다. 그 중 Java는 소프트웨어 개발자들에게 매우 인기가 있으며, 거의 모든 주요 산업과 경제 부문에서 널리 사용되고 있습니다. 플랫폼에 종속되지 않고 다른 컴퓨터 시스템들 간에 쉽게 이동할 수 있으며, 수천 개의 라이브러리를 제공할 뿐만 아니라 지원도 잘되기 때문입니다.

뉴렐릭은 2022년 3월, 성능 데이터를 제공하는 수백만 개의 애플리케이션에서 수집한 데이터를 바탕으로 첫 번째 Java 에코시스템 현황 보고서를 발표했습니다. Java 11 이후 최초의 장기 지원(LTS) 릴리스이자 최신 릴리스인 Java 17의 출시는 그러한 데이터를 새로운 시각으로 살펴볼 수 있는 기회를 제공합니다. 이 보고서는익명 처리한 후 개괄적으로 분류한 관련 데이터를 통해 Java 에코시스템에 대한 일반적인 개요를 제공합니다. 공격자 및 기타 악의적인 행위자에게 도움이 될 수 있는 세부적인 정보는 고의적으로 누락시켰습니다.

이 보고서의 목표는 오늘날의 Java 에코시스템 현황에 대한 맥락 정보와 인사이트를 제공하는 것입니다. 다음과 같은 카테고리를 살펴보았습니다.

새로운 표준이 된 Java 11

Java 11이 출시된 지 1년이 지난 시점인 지난 2020년 기준, 대부분의 애플리케이션은 여전히 Java 8을 사용(84.48%)하고 있었습니다. 그 이후 이 두 가지 LTS 릴리스 버전의 위치가 바뀌었습니다. 현재 48% 이상의 애플리케이션이 운영 환경에서 Java 11을 사용하고 있으며(2020년도의 11.11%에서 증가), Java 8이 46.45%로 그 뒤를 바짝 쫓고 있습니다.
출시한지 불과 몇 달되지 않은 Java 17은 아직 차트에는 오르지 못했지만, 이미 Java 6, Java 10 및 Java 16 릴리스의 사용률을 능가했습니다. 

Java 7에 대한 지원이 2022년에 종료될 예정이지만, 애플리케이션의 1.71%가 여전히 Java 7을 운영 환경에서 사용하고 있습니다. 한편, 애플리케이션의 0.27%는 더 이상 지원되지 않는 Java 6을 사용하고 있습니다. Java 6과 Java 7을 사용하는 대부분의 애플리케이션은 아직 업그레이드되지 않은 레거시 애플리케이션입니다.

각 Java LTS 버전의 사용률

가장 많이 사용되는 비 LTS 버전은 Java 14

Java 9부터 플랫폼의 릴리스 패턴이 변경되었습니다. 6개월마다 Java의 새 버전이 출시되지만, 그 버전은 다음 릴리스까지만 지원됩니다. 새 기능을 더 자주 사용할 수 있도록 만들기 위함입니다.

하지만, 중간에 출시된 비 LTS Java 버전에 대한 도입률은 운형 환경의 LTS 버전에 비해 매우 낮아서, 비 LTS Java 버전을 사용하는 애플리케이션은 2.7%에 불과합니다. Azul Systems 같은 일부 공급업체가 일부 비 LTS 버전에 패치를 제공하고 있을 뿐입니다. 업그레이드를 꺼리는 이유를 알 수 있는 부분입니다. 비 LTS Java 버전 중 Java 14가 가장 보편적으로 사용되고 있으며, Java 10과 Java 16이 가장 적게 사용되고 있습니다.

각 Java 비 LTS 버전에 대한 사용률

Oracle 인기 하락, Amazon 인기 상승

최근 몇 년 동안 사용 중인 자바 개발자 키트(JDK) 배포판의 소스가 바뀌었습니다. 지금까지 많은 개발자들이 Oracle에서 JDK를 구입했지만, OpenJDK 프로젝트의 Java 오픈 소싱을 통해 다양한 옵션이 생겨났습니다.

다음 표는 JDK 11 배포판에 보다 제한적인 라이선스를 제공한 후 Oracle의 점유율이 다른 공급업체로 이동했음을 보여줍니다. (이후 Java 17로 보다 오픈된 상태로 돌아갔습니다.) 2020년 Oracle은 Java 시장의 약 75%를 차지하며 가장 인기 있는 공급업체로 군림했습니다. 현재도 1위를 유지하고는 있지만, 점유율은 그 절반으로 줄었습니다. Amazon이 시장의 22%를 점유하며 급격한 상승세를 보이고 있습니다. (2020년 2.18%에서 증가)

공급업체별 JDK 배포 비율

또한 2021년 11월 이후, Oracle의 점유율 하락 이외에도 전반적인 수치에서 흥미로운 변화를 찾아볼 수 있습니다. Java 17 릴리스 이전에는, Eclipse Adoptium과 Amazon이 점유율 순위에서 거의 동일한 위치에 있었습니다.

우리 주변의 모든 것을 실행하는 컨테이너

애플리케이션의 컨테이너화는 주류로 자리를 잡았으며, 뉴렐릭의 Java 애플리케이션 데이터에서도 이러한 트렌드가 나타납니다. 뉴렐릭이 정보를 수집하는 Java 애플리케이션 중 70% 이상이 컨테이너를 사용하고 있습니다.

컨테이너에서의 계산 설정

컨테이너는 계산과 메모리 리소스를 할당하는 방식에 영향을 미칩니다. 예를 들어 뉴렐릭 데이터를 살펴보면, 컨테이너에서 4개 미만의 코어로 실행되는 애플리케이션의 비율이 훨씬 더 높아졌다는 것을 알 수 있습니다.

코어 수별 컨테이너 내/외부에서 실행되는 애플리케이션의 비율

컨테이너가 자주 배포되는 클라우드 환경에서는 더 적은 용량을 실행하는 것이 합리적입니다. 그러나 이러한 추세는 일부 애플리케이션에서 예기치 않은 문제를 일으킬 수 있습니다. 특히, 최근 자바 가상 머신(JVM)에서 기본 G1 가비지 수집기로 얻는 많은 이점들은 두 개 미만의 코어로 실행할 때 모두 사라집니다. 그러한 모든 싱글 코어 인스턴스는 직렬 수집기를 사용하고 있으며 그 대가를 성능으로 지불하고 있을 수도 있지만, 대부분의 경우 이를 인지하지 못합니다.

컨테이너에서의 메모리 설정

메모리 설정을 비교하면 유사한 트렌드가 나타납니다. 컨테이너에서는 더 작은 인스턴스를 실행하는 경향이 있습니다. 뉴렐릭 데이터는 -Xmx 또는 -XX:MaxRAMPercentage 플래그를 통해 JVM 메모리에 명시적으로 상한을 요청하는 컨테이너화된 애플리케이션의 약 80%만을 보여줍니다. 버전 9 이후 JVM에 컨테이너 인식 기능이 도입되었기 때문에, JVM이 각 컨테이너에서 실행되는 유일한 프로세스인 한, 이는 애플리케이션에 안전 문제를 야기하지는 않을 것입니다.

컨테이너 내/외부에서 실행되는 메모리 설정 힙 크기 비율

Garbage in, garbage out

JVM 성능에서 가비지 수집(GC)이 핵심적인 역할을 하기 때문에, 커뮤니티에서는 여전히 이에 대해 많은 논의가 이뤄지고 있습니다.

뉴렐릭 데이터는 Java 8 이후 가비지 수집기 사용에 대한 변화가 생겼음을 보여줍니다. Java 11 릴리스 이후의 G1 가비지 수집기(G1GC)가 제공하는 업데이트된 기본값과 향상된 성능을 고려할 때 이는 놀라운 일이 아닙니다.

Java 10 이하 및 Java 11 이상에서 사용되는 GC 알고리즘 비율

G1은 Java 8에서 업데이트를 한 사용자들이 가장 선호하는 기능입니다. Java 8(ZGC 및 Shenandoah) 이후에 나타난 다른 실험적인 수집기들은 운영 시스템에서 여전히 미미한 사용률을 보이고 있습니다. 최근까지 운영 환경을 위한 준비 상태에 도달하지 않았기 때문에 이는 당연한 일입니다.

조사방식

이 보고서에 사용된 데이터는 모두 2022년 1월 뉴렐릭에 보고하는 애플리케이션에서 추출되었으며, Java의 전 세계적인 사용 정보가 아닙니다. 뉴렐릭은 Java 에코시스템에 대한 일반적인 개요를 제공하기 위해 적절한 데이터를 익명 처리한 후 개괄적으로 분류했습니다. 공격자 및 기타 악의적인 행위자에게 도움이 될 수 있는 세부적인 정보는 고의적으로 누락시켰습니다.

뉴렐릭 소개

뉴렐릭은 옵저버빌리티 분야의 리더로, 엔지니어들에게 탁월한 소프트웨어를 계획, 구축, 배포 및 실행할 수 있는 데이터 중심 접근 방식을 제공합니다. 뉴렐릭의 옵저버빌리티 플랫폼은 엔지니어가 메트릭, 이벤트, 로그, 트레이스 등 모든 텔레메트리 정보를 활용할 수 있도록 지원하는 유일한 통합 데이터 플랫폼으로, 가장 강력한 풀스택 분석 툴을 함께 제공하여 엔지니어가 문제를 발견하는 것을 넘어 근본 원인까지 파악할 수 있도록 지원합니다. 업계에서 유일하게 직관적이고 예측 가능한 사용량 기반 요금제를 통해 제공되는 뉴렐릭은 계획 주기 개선, 변경 실패율 감소, 출시 주기 단축, 평균 해결 시간 단축을 통해, 엔지니어가 비용 대비 더 많은 가치를 실현할 수 있도록 지원합니다. 뉴렐릭은 AB InBev, Banco Internacional, Chegg, Gojek, Signify Health, TopGolf, World Fuel Services(WFS), Zalora 등 전 세계의 선도적인 기업들이 업타임과 안정성을 향상하고 운영 효율성을 높이며 혁신과 성장을 촉진하는 탁월한 고객 경험을 제공하는 데 도움을 주고 있습니다.

뉴렐릭 JAVA 통합
Duke
지금 Java 데이터 모니터링을 시작하십시오.
Java 퀵스타트 설치하기 Java 퀵스타트 설치하기