다들 아시다시피 Java는 메모리 관리를 자동으로 해주는 등 지금은 너무도 당연하게 여겨지는 여러 가지 것들을 초기 버전에서부터 제공해주고 있습니다. 그리고 Java가 처음 등장했던 1990년대에는 C나 C++처럼 개발자의 사소한 실수가 메모리 누수를 일으키는 등 애플리케이션 전체의 신뢰성에 훨씬 큰 영향을 주기 쉬운 언어들이 지금보다 훨씬 많이 사용되고 있었지요. 그런 시대에 설령 일시적인 실행 중단(Stop-the-world)은 있을지언정 메모리 문제로 아예 서비스가 죽을 확률은 확 낮춘 언어의 등장은 상당한 센세이션이었다고 합니다. 그래서 Java는 등장 초기부터 다른 언어보다 훨씬 안정적이라는 이미지를 깔고 시작하였고, 그것이 지금까지 이어진 것이 아닌가 생각합니다.
또한 현 시점에서 Java는 각종 서비스에서 오랫동안 널리 쓰이면서 쌓인 신뢰도와 축적된 경험이 있지요. 따라서 말씀하신 것처럼 성능 튜닝이나 트러블슈팅을 하기가 용이하기도 하고, 상용과 오픈소스를 막론하고 각종 도구와 솔루션도 많이 있습니다. 널리 쓰이는 제품의 생태계는 그 자체로 문제해결을 쉽게 만드는 효과가 있고, 장애 발생시 문제해결이 쉬워서 다운타임을 줄일 수 있다는 것은 안정성을 중시하는 입장에서는 큰 메리트일 것입니다.
그리고 다른 댓글에서 많이 언급되는 Kotlin의 경우는, 여기 GeekNews에 달린 다른 분의 댓글에 의하면 의외로 아직까지도 컴파일러 버그나 호환성과 관련된 이슈가 많다고 합니다. 같은 JVM을 쓰는데다 공개된 지가 이제 10년이 다 되어가는 언어도 이러니, 판단 기준에서 안정성을 가장 중시한다면 웬만해서는 오랜 세월을 통해 충분히 검증된 것을 택하려는 것이 충분히 합리적이지 않나 싶습니다.
참고로 현 시점에서는 굉장히 이상하게 느껴질지도 모르지만, Java가 처음 등장했을 때는 임백준님의 저서 『폴리글랏 프로그래밍』(2014)의 표현을 빌리자면 “참신하고 젊어서 섹시한 느낌마저 주었”다고 하는군요. 이와 관련하여, Java의 아버지인 제임스 고슬링이 1997년에 작성한 글의 번역문을 소개합니다.
다들 아시다시피 Java는 메모리 관리를 자동으로 해주는 등 지금은 너무도 당연하게 여겨지는 여러 가지 것들을 초기 버전에서부터 제공해주고 있습니다. 그리고 Java가 처음 등장했던 1990년대에는 C나 C++처럼 개발자의 사소한 실수가 메모리 누수를 일으키는 등 애플리케이션 전체의 신뢰성에 훨씬 큰 영향을 주기 쉬운 언어들이 지금보다 훨씬 많이 사용되고 있었지요. 그런 시대에 설령 일시적인 실행 중단(Stop-the-world)은 있을지언정 메모리 문제로 아예 서비스가 죽을 확률은 확 낮춘 언어의 등장은 상당한 센세이션이었다고 합니다. 그래서 Java는 등장 초기부터 다른 언어보다 훨씬 안정적이라는 이미지를 깔고 시작하였고, 그것이 지금까지 이어진 것이 아닌가 생각합니다.
또한 현 시점에서 Java는 각종 서비스에서 오랫동안 널리 쓰이면서 쌓인 신뢰도와 축적된 경험이 있지요. 따라서 말씀하신 것처럼 성능 튜닝이나 트러블슈팅을 하기가 용이하기도 하고, 상용과 오픈소스를 막론하고 각종 도구와 솔루션도 많이 있습니다. 널리 쓰이는 제품의 생태계는 그 자체로 문제해결을 쉽게 만드는 효과가 있고, 장애 발생시 문제해결이 쉬워서 다운타임을 줄일 수 있다는 것은 안정성을 중시하는 입장에서는 큰 메리트일 것입니다.
그리고 다른 댓글에서 많이 언급되는 Kotlin의 경우는, 여기 GeekNews에 달린 다른 분의 댓글에 의하면 의외로 아직까지도 컴파일러 버그나 호환성과 관련된 이슈가 많다고 합니다. 같은 JVM을 쓰는데다 공개된 지가 이제 10년이 다 되어가는 언어도 이러니, 판단 기준에서 안정성을 가장 중시한다면 웬만해서는 오랜 세월을 통해 충분히 검증된 것을 택하려는 것이 충분히 합리적이지 않나 싶습니다.
참고로 현 시점에서는 굉장히 이상하게 느껴질지도 모르지만, Java가 처음 등장했을 때는 임백준님의 저서 『폴리글랏 프로그래밍』(2014)의 표현을 빌리자면 “참신하고 젊어서 섹시한 느낌마저 주었”다고 하는군요. 이와 관련하여, Java의 아버지인 제임스 고슬링이 1997년에 작성한 글의 번역문을 소개합니다.