TIOBE Index라는 프로그래밍 언어 점유율 순위를 알려주는 통계자료가 존재한다.
물론 해당 사이트의 통계 자료가 100% 일치한다고 볼 수는 없지만, 현재 어떤 프로그래밍 언어가 많이 활용되는지 확인할 수 있다.
위 그림은 2022년 7/31일 기준 프로그래밍 언어 점유율 순위이다. Python이 1위이고 그 뒤로 C언어와 JAVA가 많이 사용됨을 볼 수 있다.
위 사진은 프로그래밍 언어별 평균 순위를 의미하는 표이다.
Python은 꾸준히 등수가 오르며 2022년에 1위를 차지하였고, JAVA는 2002년 이래로 쭉 1위를 지켜오다 2022년 3위로 약간 순위가 떨어졌음을 볼 수 있다.
C언어는 대학 과제나 처음 프로그래밍 언어를 접하는 사람이 많이 배운다는 점을 고려해봤을 때, 현업에서 가장 많이 활용되는 2가지 프로그래밍 언어는 Python과 JAVA라고 볼 수 있을 것이다
이 중 JAVA는 Serverless Architecutre, 데이터 과학에 적합하고 IoT 인프라에 적합한 언어이다.
물론 Python도 JAVA를 따라잡기 위해 많은 기능을 제공하고 있다.
하지만, 회사의 측면에서 이미 대량으로 구축되어 있는 JAVA 서비스를 Python 서비스로 바꿀만한 메리트가 크진 않다. 사실상 Python으로 전체 서비스 코드를 바꾼다는 것은 (0부터 시작했을 때보단 쉽겠지만) 다시 코드를 모두 짜고 테스트까지 실행해가며 Beta로 서비스를 제공해야 한다는 것이다. 따라서, 구축되어 있는 현 서비스에 잘 대응하기 위해서는 JAVA를 알 필요가 있다.
특히 웹 개발에는 대부분 JAVA를 활용하는 추세이기 때문에, 웹 개발쪽으로 진로를 잡는 사람들은 무조건 공부해야 할 언어이다.
2022년 이전까지는 사실상 JAVA 버전이 계속해서 릴리즈 되기는 하였지만, 주로 JAVA 8 Version을 많이 활용했다.
실제로, 대부분 JAVA를 학습할 때는 기본적으로 "JAVA 8"이라는 것을 가정하고 학습하는 경우가 많고, 필자도 그러했다.
하지만 2021년 릴리즈된 자바 17이 최근 많은 개발자의 주목을 받고 있다. 아마 몇 년 내에 많이 활용되는 자바 버전이 되지 않을까 생각한다.
JAVA 17이 가지는 장점에 대해서도 심도 있게 찾아봐야 할 필요가 있을 것 같다.
최근 개발자의 VS Code 사용은 눈부실 정도로 많다.
위 사진은 Stackoverflow에서 조사한 개발 환경 점유율이다.
JAVA의 웹 개발에 많이 활용되는 IntelliJ, Python을 편히 활용할 수 있는 PyCharm과 JAVA 통합 개발 환경 중 하나인 Eclipse를 모두 합쳐도 Visual Studio Code보다 낮을 만큼 Visual Studio Code가 많이 활용됨을 볼 수 있다.
이런 트렌드를 따라가고자, VS Code에서도 JAVA를 활용할 수 있게 되었다.
JAVA가 웹 개발에서 가장 뛰어난 이유는, Spring의 존재라고 할 수 있을 것이다.
Spring은 웹 개발 시 많은 이점을 가지고 있기 때문에 이를 활용하여 많은 이점을 누릴 수 있다.
"실제로 활용하고 싶은 서비스"를 만들고 싶어하는 개발자에게는 JAVA를 배워야 하는 가장 큰 이유가 될 수도 있을 것 같다.
LTS란 Long Term Support의 약자로 일반적인 경우보다 장기간에 걸쳐 지원하도록 특별히 고안된 소프트웨어 버전 또는 에디션이다.
일반 버전은 "기능 추가"에 많은 관심을 두지만, LTS는 기능 업데이트를 최소화하며 "안정성"에 많은 관심을 둔다.
기업이나 기관 측면에서는 "기능 추가"의 메리트보다는 "안정성"의 메리트가 비교할 수 없을 만큼 크기 때문에 LTS 버전을 많이 활용된다.
자바도 결국 기업에서 많이 활용하는 프로그래밍 언어이기 때문에, LTS 외 자바 버전을 실제로 활용하는 비율은 많이 줄었다.
JAVA의 경우 JAVA 8, jAVA 11, JAVA 17 version이 LTS인데, 이 중 JAVA 8은 지금까지 가장 많이 활용되는 LTS이며 위에서 말했듯 JAVA 17은 최근 각광을 받고 있는 LTS이다.
코로나 이후 많은 기업이 원격 근무를 도입하였고, 이는 근무 환경의 혁신을 가지고 왔다.
기업 입장에서 긍정적인 입장일지 부정적인 입장일지는 모르겠으나 개발자들은 원격 근무를 매우 선호하며, 개발자를 끌어들이고자 하는 기업 입장에서는 원격 근무 도입은 복지를 위한 카드 중 하나라고 할 수 있다.
(물론 최근에는 원격 근무를 줄이는 추세이긴 하다)
"네이버·카카오 직원들 부럽네"…오늘부터 '전면 재택근무'
위 뉴스에도 나오지만, 대기업들도 원격 근무를 적극적으로 도입할 만큼 이제는 기본적인 직원 복지가 되고 있다고 볼 수도 있다.
자바를 활용해서 VPN, 원격 작업 앱 등 원격 근무를 위한 많은 툴들을 만들 수 있으며, 이런 점에서 JAVA의 활용도가 넓어지고 있다.
기업은 Cloud를 활용해서 기업용 애플리케이션을 배포해 운영하는데, JAVA는 SaaS 제품을 개발할 때 가장 먼저 고려할 수 있는 언어이다.
JAVA는 웹의 원활한 동작을 가능하게 하며 전반적인 사용자 경험을 향상한다.
수학적 계산을 수행하는 인기 있는 프로그램 중 하나는 MatLab(매트랩)이다.
매트랩 같은 경우 대학교 수강에서도 배웠고 미국에서는 필수 교과 과정으로 채택될 만큼 유명세를 가지고 있는 프로그램이다.
이런 장점 덕분에 수치 계산과 기타 과학 애플리케이션 개발에도 많이 활용되며, NASA에서도 앱 개발에 JAVA를 선호한다고 한다.
AI를 활용하고자 할 때 가장 중요한 점은 "데이터"이다. 이런 대용량 데이터를 다루는데 JAVA는 큰 장점을 가지고 있다.
Apache Kafka는 자바와 Scala로 구현된 실시간 데이터 처리 시스템이며, 실제로 데이터 엔지니어 업무에서는 카프카나 하둡을 활용할 수 있는지 많은 관심을 가지기도 한다.
또한, 데이터 분석과 실행을 위해 활용하는 ElasticSearch에서도 자바가 활용된다.
물론 JAVA가 장점을 지닌 것은 맞지만, JAVA로만 구현할 수 있는 독특한 장점은 크지 않다. 실제로 Spring을 활용하지 않더라고 Fast API나 Django 등을 활용해 웹 개발을 수행할 수도 있으며, 빅 데이터도 Python을 통해 관리할 수 있다. 그렇다면, 왜 많은 기업은 굳이 "JAVA"를 활용할까?
물론 현재에는 JAVA 이외에도 좋은 생산성을 가지고 있는 언어들은 많다.
생산성이라는 것은 컴퓨터 프로그래밍 및 프로그래머가 소프트웨어에 대한 새로운 코드를 얼마나 빠르고, 효율적으로 작성할 수 있는지와 관련되었다고 생각하면 된다. 새로운 코드가 나왔을 때 코드의 이해를 빨리 할 수 있고 Refactoring이 쉬우며 유지보수가 쉽다면 생산성이 높은 언어라고 할 수 있을 것이다
개인적인 생각으로는 최근에는 JAVA가 생산성이 가장 좋은 언어라고 말할 수는 없다 느끼지만, 중요한 점은 "그 당시 개발된 프로그래밍 언어" 중 탑 티어의 생산성을 가지고 있었으며, 이는 빠른 프로젝트 개발을 이끌었으며, 이는 결국 금전적 이득으로 이루어졌기 때문에 많이 활용되게 되었다
개발 언어에 따라 개발 비용은 매우 많이 달라진다.
JAVA 언어는 개발할 때 비용 자체가 크게 소요되지 않는다.
JAVA 자체도 무료이며, Server로 활용하는 Linux 자체도 무료 개발이 가능하다.
또한 MySQL의 활용 등을 통하여 DB를 무료로 활용하며 Eclipse도 무료로 서비스를 제공하고 있다.
물론 편의성이나 큰 규모의 서비스를 제공하기 위해서는 비용을 들여야겠지만, 개인적인 프로젝트나 소규모 프로젝트를 진행할 때는 마음만 먹으면 돈을 안 쓰고도 개발을 할 수 있다는 장점을 가진다.
JAVA의 역사는 매우 오래되었으며, 그만큼 JAVA로 수행한 수많은 프로젝트와 이를 활용해 만든 Open Source가 존재할 것이다.
이는 결국 다양하고 수많은 출처의 레퍼런스를 만드는데 큰 기여를 하였으며, 이런 경험을 많이 접할 수 있다는 점에서 프로젝트 실패 확률을 줄이며 프로젝트 진행 방향을 잡는데 큰 도움이 될 것이라고 생각한다.
위에서 말한 JAVA의 장점 때문에 회사에서 자바 개발자를 선호하기도 하지만, 대체 인력자를 구하기 쉽다는 점도 회사가 JAVA를 선호하게 되는 이유이기도 하다.
먼저 국내 개발자 중 JAVA 개발자가 많아 신규 개발인력을 채용하기 쉬우며, 생산성도 뛰어나기 때문에 대체 개발자가 1인분을 할 때까지 적은 시간이 걸린다는 장점이 있다. 항상 변수에 대비해야 하는 회사 측면에서는 큰 장점이 될 수 있다고 생각한다.
최근 많은 디바이스들이 등장하고 있다. 컴퓨터뿐만이 아닌 핸드폰, 태블릿 등 많은 디바이스들이 존재한다.
만약 이 모든 디바이스들에 활용할 수 있도록 서비스를 만들려면 어떻게 해야 할까?
가장 확실한 방법은 컴퓨터용, 핸드폰용, 태블릿용 등 각 디바이스 별 적합한 서비스를 만드는 것이지만, 이는 시간과 인력, 비용적으로 많은 부담이 될 것이다.
이런 문제를 해결하기 위해 먼저 웹으로 프로젝트를 개발하며, 각각의 디바이스에서 웹 프로젝트에 접근할 수 있도록 범용성은 늘려주는 것이 훨씬 좋은 방법일 것이다.
위에서 말했듯 Spring은 JAVA가 웹에서 독보적인 프로그래밍 언어가 되는데 큰 기여를 하였으며, 자연스럽게 JAVA 점유율도 높아졌으며, 회사 측면에서도 JAVA를 많이 활용하게 되는 것이다.
JAVA는 Python, C언어와 함께 가장 많이 활용되는 프로그래밍 언어 중 하나이다. 특히 JAVA는 Serverless Architecutre, 데이터 과학에 적합하고 IoT 인프라에 적합한 언어이다. 이런 장점 때문에 기업용 애플리케이션, 과학 분야 솔루션 및 빅 데이터 솔루션에 JAVA가 자주 활용되는 추세이다.
최근 VS Code에서도 자바를 활용할 수 있게 되었으며, 개발자들은 JAVA 17에 큰 관심을 가지고 있다. Spring은 JAVA의 활용도를 크게 높여준 유명한 자바 프레임워크이며, JAVA를 통해 원격 출근을 위한 솔루션을 제공하기도 한다.
생산성, 비용, 많은 레퍼런스, 회사의 선호도와 웹 개발의 이점은 많은 회사가 JAVA를 사용할 수 있게 해주는 장점들이 되었으며, 아직은 JAVA의 활용도가 크게 감소할 것 같지는 않다.