IntelliJ IDEA
IntelliJ IDEA – the Leading Java and Kotlin IDE, by JetBrains
2020년 Java를 그려보다
올해 Java는 놀라운 이정표를 세우고 원숙한 25살이 되었습니다. JetBrains는 25주년을 기념하여 특별한 Java의 날 행사를 온라인에서 진행했고, 여기에서 수많은 전문가가 연사로 참여해 자신의 경험을 공유하고 Java 언어를 효과적으로 활용하는 방법에 대한 팁과 정보를 제공했습니다.
JetBrains는 이 행사에서 영감을 받아 데이터를 심층 분석하여 Java의 일반적 상태에 관해 완벽하게 파헤치고 여러분이 궁금해마지 않는 몇가지 질문에 답해보기로 했습니다. 저희가 발견한 사실 중에는 별로 놀랍지 않은 내용도 있지만 매우 뜻밖의 통찰력을 보여주는 것도 있습니다.
Java 15가 출시됨에 따라 이 자료를 취합해 Java의 현황을 여러분에게 보여 드리려고 합니다. 이 게시물은 여러 소스의 데이터를 기반으로 작성되었으며 JetBrains의 Developer Advocate인 Trisha Gee의 전문가 논평이 포함되어 있습니다.
지역별 Java 개발자 분포
첫 번째 질문은 “대부분의 Java 개발자가 어디에 거주하고 Java 개발자의 인구는 얼마나 되는가?”라는 것이었습니다. 이 질문에 답하기 위해, JetBrains는 구할 수 있는 가장 정확한 정보를 취합한 다음 추론을 거쳐 꽤 지적인 추측이라고 생각되는 결론을 찾아냈습니다.
Market Research and Analytics 팀의 개발자 추정 모델에서 얻은 최상의 추정치에 따르면 오늘날 전 세계에서 Java를 기본 언어로 사용하는 전문 Java 개발자는 약 520만 명에 이릅니다. 다른 프로그래밍 언어를 주로 사용하지만 Java도 조금 사용하는 전문 개발자를 포함하면 그 수는 최대 약 680만에 가까울 것입니다.
Java 개발자가 모여 있는 지역을 살펴보면, 아시아에 가장 많은 Java 개발자가 거주하고 있으며, 그 숫자는 약 250만 명입니다. 북미와 유럽의 숫자는 아시아 규모에 전혀 미치지 못합니다. “어째서 그렇지?”라고 의아해 하시는 분도 계실 겁니다. 사실, 저희도 처음에 똑같은 의문을 가졌기에 이 숫자가 산출된 이유가 정확히 무엇인지 확인하기 위해 해당 지역을 조금 더 깊이 파고 들어가보았습니다.
자세한 지역별 현황
심층 분석에서는 Java 개발자 수가 가장 많은 개별 국가를 살펴본 다음, 이들 국가가 전문 개발에서 다른 언어보다 Java를 특히 선호하는 이유를 조사했습니다.
아래 그래프는 Java를 기본 언어로 사용하는 각 국가의 개발자 비율을 보여줍니다(이 데이터 수집에 사용한 설문 조사에 응한 응답자는 기본 언어로 최대 3개 선택 가능). 중국과 대한민국이 각각 51%와 50%로 가장 높은 수치임을 확인할 수 있었습니다. 이 데이터는 2020년 개발자 에코시스템의 현황에 관한 설문 조사에서 가져왔습니다.
전문가 분석
Java가 상위 6개국에서 가장 인기 있는 이유는 Java 무료 사용, 정부 지원, 오픈 소스라는 점을 들 수 있습니다. 이는 특히 중국, 스페인, 브라질의 경우에 그러합니다. 중국과 인도에서는 Java가 Android 모바일 개발의 기반을 이루며, 인도의 경우 Java로 모바일 앱을 구축하기 위해 해외 직원을 고용하는 관행이 매우 널리 퍼져 있어 높은 수치를 기록한 것으로 보입니다. 독일 또한 다양한 산업에서 확장성 뛰어난 애플리케이션을 구축하는 데 Java를 사용하여 소프트웨어 엔지니어에게 가장 인기 있는 언어가 되었기 때문에 비율이 매우 높습니다. 대부분의 기업 서비스에서 급여, 재고 관리, 보고 등 일상적 비즈니스 운영을 돕는 애플리케이션을 구동하기 위해 Java를 사용합니다. 또 독일의 대형 금융권에서는 트레이딩 봇, 소매 뱅킹 시스템 및 기타 금융 산업이 경쟁력을 유지하기 위해 필요한 애플리케이션 등의 자체 개발 기술에서 Java를 비중 있게 사용합니다.
미국이 Java 사용자의 비율이 높을 것으로 예상되기도 했지만 그렇지 않은 이유도 납득이 갑니다. 선택할 수있는 큰 기술 스택이 있으며 종종 많은 기술 회사가 해당 스택의 최전선에 있기 때문에, 개발자는 Java의 성능이나 안정성의 필요 보다는, 빠르게 구축하고 테스트할 수 있는 다른 언어를 사용하는 것을 선호할 수 있습니다.
산업 통찰력
2020년 개발자 에코시스템의 현황에 관한 설문 조사에 따르면 전문 개발자의 1/3 이상이 Java를 기본 언어로 사용하고 있으며 Java는 전문 개발자 사이에서 JavaScript 다음으로 사용하는 두 번째 기본 언어로 남아 있습니다.
전문가 분석
JavaScript와 Java는 서로 짝을 이루기 때문에 두 언어가 선두 자리를 차지하는 것은 놀랍지 않습니다. Java로 작업하는 개발자는 종종 JavaScript로 프런트엔드와 간단한 스크립트를 작성하기 때문입니다. Python은 아마 머신러닝이 확산된 덕에 3위를 차지했을 것입니다. 전반적으로 웹이 개발자 에코시스템에서 큰 비중을 차지할 것으로 보이므로 JavaScript, HTML 및 CSS, PHP는 항상 확고한 위치를 유지할 것입니다. 또한 SQL은 데이터베이스가 어느 정도 필요하지 않은 애플리케이션이 별로 없기 때문에 항상 주변 자리를 지킬 것입니다. C++는 수많은 임베디드 애플리케이션에 사용된다는 점에서 강력한 언어이므로 곧 순위에서 사라질 일은 없을 것입니다. C#은 설 자리를 잃어가는 것으로 보이며 Java와 기능 면에서 매우 유사하므로 Java의 점유율이 높아질수록 C#의 점유율은 낮아질 것입니다. Java가 전문 개발 분야에서 그토록 점유율이 높은 이유는 독일의 사례에서 언급한 내용과 비슷합니다. 대부분의 엔터프라이즈 비즈니스 서비스는 Java를 사용하여 작동합니다. IT 업계뿐만이 아닙니다. 유통, 제조, 금융 등 거의 모든 기업이 인프라의 일부로 IT 서비스를 보유하고 있으며 급여 또는 재고 관리 등의 서비스는 일반적으로 백엔드에서 Java로 구축됩니다. 이에 따라 Java는 이러한 기업에서 일하는 전문 개발자가 많이 사용하게 됩니다.
Java로 개발되는 소프트웨어의 유형
Java로 개발된 소프트웨어 유형을 간략히 살펴보면 사용 통계에 대한 정보를 얻을 수 있습니다. 2020년 개발자 에코시스템의 현황의 결과에 따르면 웹 서비스는 Java가 가장 인기 있는 영역(52%)입니다.
전문가 분석
비즈니스 인텔리전스/데이터 과학/머신러닝 분야가 Python의 영역이 될 것으로 예상했다면, 이 분야에서 Java가 매우 널리 사용된다는 사실이 놀라울 것입니다. 다른 분야는 크게 놀랍지 않습니다. 웹 서비스의 백엔드는 Java인 경우가 많고 비즈니스 애플리케이션도 백엔드 및 데이터베이스와 작동해야 하므로 Java로 작성하는 것이 합리적입니다.
Java가 사용되는 주요 산업
수많은 전문 개발자가 Java를 사용하는 이유는 이제 알았으니 Java가 사용되는 산업에 대해 자세히 살펴보겠습니다.
2020년 개발자 에코시스템의 현황에 따르면 Java 프로그래머는 주로 IT 서비스(42%)와 금융 및 핀테크(44%)에서 일하지만, 이는 Java가 다른 산업에서 사용되지 않는다는 의미는 아닙니다.
전문가 분석
금융 및 핀테크 부문은 대부분 금융 거래소, 소매 금융 시스템, 계산 엔진 제작, 자체 개발한 맞춤형 도구 및 서비스 개발에 관한 것으로, 기업이 시장 경쟁력을 갖출 수 있도록 돕습니다. 금융과 핀테크는 Java로 거의 구축되기 때문에 높은 수치에 놀랄 일은 없습니다. IT 기업이 아닌 회사를 위한 급여 시스템과 재고 관리 서비스도 대부분 Java를 기반으로 구축되기 때문에 IT 서비스의 경우도 마찬가지입니다. 하지만 다른 산업은 흥미롭습니다. 모바일 개발은 아마 Android 때문에 높을 것이기에 Java가 이 비중으로 사용되고 있을 것입니다. 빅데이터 및 데이터 분석의 경우는 Python이 주도하고 있다는 점에서 매우 특이하지만 백엔드에서 Java 및 JVM 언어가 어느 정도 사용되고 있을 수 있습니다. 소프트웨어 개발 도구의 경우는 당연한 결과입니다. JetBrains IDE도 현재 Java로 구축되었습니다. 그러나 다른 산업은 약간 수수께끼입니다. 사실 해당 산업에서 Java가 어떻게 사용되는지 들어보면 상당히 흥미로울 것입니다.
Java 도구
Java 버전
Java 8은 여전히 가장 인기 있는 버전입니다. Java를 기본 언어로 사용하는 전문 개발자 중 75%가 이 버전을 사용합니다. 아래 그래프는 개발자가 2020년 개발자 에코시스템에 관한 설문조사에서 선택한 Java 버전(복수 선택)의 분포를 보여줍니다.
전문가 분석
Java 8이 이렇게 인기 있는 이유에는 몇가지 요인이 있습니다. 첫째, 일반 Java 개발자가 해당 언어에서 필요한 모든 기능을 갖추고 있고 람다와 스트림이 있으며 전반적으로 사용하기 간편한 버전입니다. 또한 사람들은 Java 9로 전환하기를 크게 꺼렸습니다. Java 9에 몇가지 큰 아키텍처 변경이 적용되어, 이로 인해 Java 8로 구축된 애플리케이션에 문제가 생길까 두려웠기 때문입니다. 게다가 Oracle은 격년으로 릴리스를 발표하고, Java 9, Java 10, Java 12, Java 13은 6개월 동안만 지원되는 등 모든 릴리스가 오래 지원되는 것이 아니라서 그 사용자의 수가 매우 적습니다. Java 13은 이 설문 조사가 나왔을 때 최신 버전이었기 때문에 그만큼 수치가 높은 것뿐이며 이는 몇달 내에 떨어질 것으로 예상됩니다.
2018년에 출시된 Java 11은 장기적으로 지원되는 최신 버전입니다. 그러나 아직 많은 기업이 Java 9(아키텍처 변경 포함) 이후 버전으로 이동하면 모든 것이 망가질까봐 우려하여 이 버전으로 이전하지 않았습니다. 또한 Java 11은 새로운 라이선스와 구독 정책을 도입했기 때문에 잘못된 버전을 잘못된 방식으로 사용하면 Oracle이 벌금을 물릴 거라는 우려도 더해졌습니다. 대다수 개발자가 Java 11로 업데이트하지 않는 마지막 큰 요인은 새롭고 흥미로운 새 기능이 많지 않아 언어의 기능이 업그레이드 위험을 걸 만큼은 아니기 때문입니다. Java 17은 장기적으로 지원되는 다음 버전이 될 것이며 많은 새로운 기능이 함께 제공되지만 Java 8에서 Java 17로 바로 업데이트하면 자체에 문제가 발생합니다.
제 예상으로는 그 다음 장기 버전인 Java 17이 최근 LTS(장기 지원 릴리스)인 Java 11보다 더 인기가 있을 것 같습니다. 그리고 Java 17에 대한 준비로, 큰 문제를 피하려면 먼저 코드베이스를 Java 11로 업데이트한 다음 Java 17로 업데이트하는 것이 좋다는 사실을 강조하고 싶습니다.
인기 있는 애플리케이션 서버
지난 3년 동안 Apache Tomcat은 JBoss EAP 및 WildFly의 사용이 절반으로 줄어도 여전히 가장 인기 있는 애플리케이션 서버였습니다. 제공된 데이터는 2018 및 2020에 개발자 에코시스템 설문 조사에 참여한 사람 중 기본 언어로 Java를 사용하는 모든 개발자의 데이터입니다.
전문가 분석
Jetty가 2위를 차지했지만 수치는 놀라울 정도로 낮은 것 같습니다. Spring Boot 및 기타 마이크로서비스 프레임워크를 사용하는 일부 개발자는 내부에서 사용 중인 것이 무엇인지 인식하지 못한 채 Tomcat 또는 Jetty를 사용하고 있을 수 있습니다.
상위 5개 웹 프레임워크
2018년, Spring MVC와 동일한 인기를 차지했던 Spring Boot 가 2020년에는 인기가 더 올라갔습니다. 제공된 데이터는 Java를 기본 언어로 사용하는 모든 전문 개발자로부터 취합한 것입니다.
전문가 분석
이는 기본적으로 그저 Spring이 시장을 독점하고 있다는 사실을 확인해줍니다. 여전히 Struts 1을 사용하는 사람들이 있지만 기존 애플리케이션에서만 사용하는 것이 거의 확실합니다.
상위 5개 JVM 프로파일러
2020년 개발자 에코시스템의 현황에 관한 설문 조사에 따르면 사용자의 24%가 VisualVM을 사용하는 반면 절반은 사용하지 않는 것으로 나타났습니다. 제공된 데이터는 Java를 기본 언어로 사용하는 모든 전문 개발자로부터 취합한 것입니다.
상위 5개 IDE/에디터
2018년과 2020년 개발자 에코시스템에 관한 설문 조사에 따르면 IntelliJ IDEA는 2018년 55%에서 2020년 72%로 점유율이 증가한 반면, 나머지 4개 도구는 감소했습니다.
전문가 분석
그럼에도 불구하고 이 정보가 JetBrains의 개발자 에코시스템의 현황에 관한 설문 조사에서 가져온 것이고 JetBrains의 주요 제품 중 하나가 IntelliJ IDEA라는 점을 감안할 때 설문 조사 결과에 가중치를 부여하더라도 정보가 약간 왜곡될 수 있다는 사실을 부인하지 않겠습니다. 그러나 다른 설문 조사에서도 IntelliJ IDEA가 일반적으로 가장 많이 사용되는 IDE 중 하나이며 일반적으로 사용자의 약 55~60%를 차지한다는 사실을 볼 때 이 결과가 완전히 불합리한 것은 아닙니다. VS Code는 성장하고 있지만 경쟁사 관점에서가 아니라 IDE가 사용자가 제공하는 이점에 대한 이해가 확실히 부족하다는 점에서 우려됩니다. VS Code는 IDE에서 찾을 수 있는 일부 기능과 추가 기능을 제공할 수 있는 확장 프로그램이 있는 코드 에디터입니다. 즉, 개발을 위해 VS Code로 전환하는 개발자는 완벽한 기능의 IDE에서 얻을 수 있는 이점을 모르고 있다는 의미일 수 있습니다. 웹 개발자는 일반적으로 동적인 언어로 작업을 하고, 웹 개발자가 필요한 것을 제공하는 브라우저 플러그인과 같은 다른 도구를 사용하기 때문에 웹 공간에서는 에디터를 사용하는 것이 이해가 갑니다. 그러나 Java, 특히 전문 Java에서는 애플리케이션 서버와 통합된 훌륭한 도구를 마음껏 활용하고 분석 및 리팩토링 등 모든 기능을 사용할 수 있습니다.
전문가의 업데이트
이 블로그 게시물에서 데이터 분석의 요약 및 편집 버전을 사용하면서 의도치 않게 혼란을 드린 것을 확인했습니다. 개발자 및 IDE에 대해 밝힌 제 견해의 의도를 명확히 하고 싶습니다. 개인적으로 지난 6년간 IDE(특히 IntelliJ IDEA)의 기능에 관해 개발자를 교육해왔기에, 개발자가 완벽한 기능을 갖춘 IDE인 IntelliJ IDEA의 이점을 이해하지 못하는 것은 제 업무의 실패입니다. 사용자 또는 잠재 사용자가 제품을 이해하지 못한다고 비난하는 일은 결코 있어서는 안 된다고 생각합니다.
Java 개발자용 IDE에 대한 제 개인적 관점은 20년 이상 크고 작은 프로덕션 Java 프로젝트에서 Java 개발자로 일하면서 얻은 것입니다. 저는 IntelliJ IDEA와 같은 IDE가 제공하는 큰 도움 없이 복잡한 엔터프라이즈 애플리케이션을 만든다는 것은 상상할 수 없습니다. 많은 개발자가 VS Code를 사용하는 것을 보았고 코드 에디터가 원활히 처리할 수 있는 사용 사례도 충분히 알고 있습니다. 툴킷에는 항상 둘 이상의 도구를 넣을 수 있는 여유가 있으므로, 도구가 어떤 기능에 특화되어 있는지 이해하면 올바른 작업에 적합한 도구를 선택할 수 있습니다.
가장 많이 논의된 Java 도구 및 기타 언어
Java는 IT 커뮤니티에서 곧잘 논의되며 그러한 커뮤니티 중 하나가 Stack Overflow입니다. 저희는 이곳의 Q&A 섹션에서 데이터를 가져와 “java”와 함께 가장 많이 올라오는 태그를 확인했습니다. 세로축은 Java 관련 언급 내용을 나타내고 가로축은 총 태그 발생 횟수를 나타냅니다.
전문가 분석
이 차트는 자신이 올바른 기술을 사용하고 있는지 확인하거나 자신에게 적합한 도구를 확인하려는 사용자에게 유용할 수 있습니다. 여러 언어가 보이는 것이 다소 흥미롭지만 이유는 아마 사람들이 Java와 다른 언어를 비교하기 위해 검색하기 때문일 것입니다. 정규 표현식은 사람들이 어려움을 겪는 특정 분야이지만 목록에 포함되어 있어도 놀랍지는 않습니다.
Java 커뮤니티에서 논의되는 핫토픽
Java 논의
“java” subreddit 의 게시물을 분석하고 Reddit에서 Java 사용자가 가장 많이 논의한 주제를 찾아보았습니다.
전문가 분석
제가 바로 보고 싶어했던 주제가 바로 이러한 종류입니다. 예를 들어, Java로 코딩하는 사람들은 이 언어가 여전히 수요가 있는지, 나중에 수요가 조금씩 증가하는지에 항상 관심이 있을 것입니다. 게다가 Java는 이제 막 25주년을 맞았기에 사람들은 이 언어가 오래된 구식이 아니라 여전히 유효한지 확인하고 싶어합니다. 특히 대학을 막 졸업하고 배운 언어가 취업 기회를 제공할지 아직 알 수 없는 상태라면 더욱 그러할 것입니다. 컨테이너에 Java를 배포하는 것은 매우 관심을 끄는 주제이며 저를 포함하여 모두가 알고 싶어하지만 정보를 거의 찾을 수 없습니다. 성능 최적화라는 주제는 실제 대부분의 경우 개발자가 애플리케이션을 최적화할 필요는 없기 때문에 약간 불필요하다고 생각되지만 중요한 경력 기술이라고 생각하는 개발자가 많기에 납득이 됩니다. 백엔드와 프런트엔드를 함께 작동시키는 작업도 매우 복잡할 수 있기 때문에 이에 대해 많은 질문이 올라오고 있을 것입니다.
이 게시물은 Valeriia Karpenko가 작성한 A Picture of Java in 2020를 번역한 글입니다.