자바는 8을 써도 할 말이 없다.

Composite·2022년 12월 28일
10

오늘은 여러분에게 무작정 최신 버전 쓰라고 주장한 점에 대해 사과하도록 하겠다.
대상은... 자바개발자다. 다른 언어는... 사과할 대상이 아니니 이건 다음에 다루도록 하겠다.

자바 8은 End-of-life가 아니라서 내가 자바 11이나 17 쓰라고는 말을 못하겠다.
아직도 자바 8은 현역이다. Wikipedia에 명시된 Java version history에 의하면, 일단 자바 8 기준으로 오라클은 공식 지원이 끝나고 연장 지원만 받고 있지만, 레드햇이 OpenJDK 8을 관리하고 있다. 그렇다면 언제까지 자바 8을 쓰는게 좋을까? 지원 종료일을 알아보도록 하자.

  • 오라클: 2014년에 이미 지원이 종료되고, 2022년 3월까지 오라클은 자바 8에 대한 상용 지원을 하지 않이며, 2030년 12월까지 오라클이 연장 지원.
  • 레드햇: OpenJDK 상용 지원을 2026년 11월까지 연장 지원 후 종료
  • Azul의 경우 연장으로 2030년 12월까지 지원
  • IBM, 아마존, 이클립스 재단에서 제공하는 JDK는 2026년 5월까지 지원 후 종료

음... 11은 2026년, 17은 2027년 지원 종료임을 감안하면... 그냥 당분간은 8을 써도 할 말은 없다.
2026년 자바 8이 지원종료 되면, 그다음 버전은 21을 추천할 수밖에 없겠다.

왜 자꾸 자바 최신 쓰라고 지랄이야?

SI 가본 사람은 알 거다.
2020년 이후에 신규나 고도화 프로젝트를 자바 1.7은 고사하고 자바 1.5를 쓴다면 너는 하겠는가?
보안성도 결여되고, 그저 호환성과 익숙함을 이유만으로 쓰던 자바 버전으로 쓰는 짓이 아직도 팽배하다.
예전 프로젝트에, 비록 유지보수여서 망정이지, AWS 같은 클라우드의 HTTPS 연동이 안되는 문제가 터졌다. 개발자들은 뭣도 모르고 어떻게든 되게 하려고 노력했지만, 결국 해결하지 못했고, 기존 원청의 보안 정책에 의해 구축했던 것처럼 원청에서 HTTP 프록시 서버를 구축하여 우회 연동하는 쪽으로 결론지었다.
하지만 원청이 이렇게 문제를 인지 안해주거나, 만약 이렇게라도 대응 안해준다면, 과연 우린 옛날 버전에 의한 문제를 지금 대응할 수 있을까?

당연히 불가능하지?
SI란 이런 시장이다. 자바 1.8만 써도 축복이라고 할 수밖에 없는 환경이 팽배하다는 거지.
하지만, 나는 진짜 나무만 보고 숲을 못봐서 이지경까지 오게 될 줄은 몰랐다.
자바는 생각보다... 보수적이라고 하면 너무나 착한 표현일 정도로 너무나도 정체된 시장이라는 것을.

이왜진? 자바 8이 최신?

여전히 왠만한 JDK 공급처들은 JDK 8을 여전히 제공하고 있다.
물론 버전 상으로는 LTS 기준으로 봐도 최신 버전은 아니다. 하지만 아까 말했잖아...
8 지원 종료일이 11 지원 종료일과 비슷하고, 그다음 다음해에 바로 17이 지원종료 된다고.
물론 산업 생태계에 따라 어찌 될 지는 8이 종료된 뒤 두고볼 일이지만.

이건 한국에 국한된 문제가 아니다. 전 세계, 그래. 3억이 자바를 쓴다는 광고, 자바 설치 시 아직도 보고 있다.
지금 이게 원인이다. 자바는 이미 검증되고 여러 장비에 개나소나 단 덕분에, 윈도우에 비하면 아예 걷잡을 수 없는 지경까지 이르렀다. 물론 오라클은 행복한 비명을 지르고 있겠지.
너희들 윈도우만 업그레이드해도 기존 프로그램 안돌아갈까봐 조마조마하지? 하지만 윈도우 업그레이드는 자바 업그레이드에 비하면 아주 혜자야...

이는 웹 생태계도 마찬가지인데, HTTP 2.0 이 나오면 뭐하리, 3.0 이 나오면 뭐하리?
지금도 웹 사이트들의 압도적으로 많이 차지하고 있는 HTTP 프로토콜은 1.1이다.
1.1 로도 여전히 문제 하나도 없고, 서비스하는데 당연히 지장 하나도 없다.
그저 구글이나, 네카라쿠배 같이 어떻게든 IT 기술로 앞서가려고 애를 쓴다면 모를까,
IT는 보조 도구로 활용하는 대부분의 회사들이 굳이?

그래. 아직까진 자바 8은 최신은 아니지만, 현역 버전이다.

그래서 결론이 뭐냐?

내가 하고싶은 말도 그렇고, 이건 자바에 국한된 내용도 아니라는 점에 집중해 달라.
만약 신규 프로젝트나, 고도화 프로젝트를 한다면,

최신 버전은 바라지도 않는다.
최소한 현역 버전이라도 썼으면 좋겠다.

하지만 자바 8은 여전히 지원 중인 버전이기 때문에 자바 8을 써도 지장 하나도 없다.
하지만 자바 8의 지원이 종료가 됐는데도 아직도 자바 8을 쓸 건가? 이건 우리의 과제일 지 모른다.

C언어 중 여전히 20년 넘은 C98 스펙은 업계에서 여전히 많이 사용하고 있고,
파이썬의 경우 완전히 종료된 2.7이 업계에서 여전히 많이 사용되고 있다.

하지만 익숙하다, 호환성 좋다는 이유로 계속 사용해야 할까?
내가 아까 말한, HTTPS 연동 문제가 발생하는 등, 시대에 따라 생각치 못한 문제에 직면했을 때도,
신규 프로젝트를 익숙한 버전으로 계속 사용할 것인가?

난 그래도 당당히 아니라고 할 것이다.

만약 버전을 고르라고 한다면, 최소한, 현재 운영 중인 최소 버전이라도 쓰라고 하겠다.
node.js의 경우, 현재 지원 중인 최소 버전이 바로 14다.
하지만 이마저도 내년 4월 지원종료된다.
하지만 16 버전도 많이 안착된 상태다.
그렇다면 나는 먼저 18이 안정화 버전이란 점을 어필한 다음, 호환성 이슈가 있다면 16을 권하고, 만약 기존 호환성 문제가 있다면 최소 14 버전, 그 이하는 안된다고 하겠다.
18 버전이 최신이지만, 업계에서는 "안정된" 버전을 원하지 "최신" 기술은 의미가 없다는 거.
업계 개발자 중 시니어라면 당연히 느낄 것이다.

그래. 자바 8, 포에버다. 자바가 완전히 지원 종료가 되어도, 2100년에도 한국은 자바 8을 현역으로 돌리면서 신규 프로젝트를 진행하겠지...
우리에겐 대한민국 표준 프레임워크, 전자정부표준프레임워크가 있으니까.

끗.

profile
지옥에서 온 개발자

0개의 댓글