Java Version 선택의 이유
국비 교육 과정 중 자바 웹 개발 워크북이라는 교재를 사용하였다.
Java의 버전 별 특징이 있다는 것은 많은 Java 교재의 앞 부분에 나오기 때문에 단순히 그냥 이러한 기능이 있구나라고 생각하고 항상 넘어갔다.
또한 교재에서는 Java 버전 11을 예제로 사용하였기 때문에 별 다른 생각 없이 자바 11 버전을 사용하였다.
국비 교육 중 강사님이 왜 우리가 Java 11버전을 선택한 이유에 관해 생각해보라고 과제를 내주셨고 아래는 관련 정보들과 나의 생각을 작성할 것이다.
Java 버전 별 차이 & 특징
버전별로 여러가지 기능이 존재하겠지만 내 생각에 중요한 기능들과, 부분에 관해서만 집고 넘어가겠다.
- JDK 1.0a2 (1995년 5월)
1. 언어 정식 발표
2. Oak라는 명칭을 사용
- JDK 1.0 (1996년 1월)
1. 안정화 작업을 거치며 Java로 이름 변경
- JDK 1.1 (1997년 2월)
1. 이너클래스, JavaBeans, 유니코드 지원 등의 추가
(JavaBeans란 자바로 작성된 소프트웨어 컴포넌트 지칭)
(Beans 규약
1-1 모든 기본 생성자 반드시 존재
1-2 모든 속성 비공개
1-3 속성에 접근하고 꺼내올 수 있는 getter, setter 메서드 구성)
- J2SE 1.2 (1998년 12월)
1. Collection Framework 등 굵직한 기능 추가
- J2SE 1.4(2002년 2월)
1. assert, 정규표현식, IPv6, XML, API등 추가
- J2SE 5 (2004년 9월)
1. Generics 기능 추가
2. Annotation 기능 추가
3. Enummeration 기능 추가
- Java SE 7 (2011년 7월)
1. switch문에서 String 사용
- Java SE 8 (2014년 3월)
오라클 인수 후 첫 번째 버전이며 2개의 버전으로 나뉜다.
(Oracle JDK, OpenJDK)
1. Lambda Expression 기능 추가
2. Interface의 Default Methods 기능 추가
3. Null 처리 Optional 기능 추가
- Java SE 9(2017년 9월)
1. 개선사항이 많아졌다.
2. Interface Private Method 사용 가능
- Java SE 11 (2018년 9월)
1. 새로운 String 메서드 추가
2. 람다 파라미터로 var 사용
- Java SE 12 (2019년 3월)
1. Switch문 문법적 확장
- Java SE 16 (2021년 3월)
1. OpenJDK의 버전관리: Git
- Java SE 17 (2021년 9월)
1. RandomGenerator(의사난수 생성기) API 출시
[참고 자료]
1.https://hajoung56.tistory.com/35
2.https://xzio.tistory.com/2113
JAVA, SPRING 버전 선택 가이드
Java 8부터 소개된 Lambda, Stream, Java 11의 Var 타입 추론 등은 같은 Java여도 버전에 따라 가독성과 문법이 다르다.
현재의 경우 Java8, 11, 17을 대부분 사용한다.

Java와 Spring의 경우 릴리즈 주기가 다르다. Spring의 경우 버전별로 호환되는 Java의 버전이 존재하고 그 상황에 맞게 사용하여야한다.
[참고 자료] https://kghworks.tistory.com/137
개인적인 생각
먼저 JAVA 11의 버전의 경우보다 JAVA 17의 버전이 더 뛰어날 것이라고 생각한다.
11의 버전보다 후에 나왔기때문에 기능적인 부분에서 더욱 추가된 부분이 많아 개발자의 입장에서는 약간이라도 편리한 기능을 접할 수 있을것이라는 생각을 한다.
11버전에 비해 17버전의 개선점을 간단하게 작성하면
위와 같이 간단히 기술하여도 17의 버전이 더욱 좋아보인다.
하지만 이미 여러 기업에서 오랜 기간에 걸쳐 개발한 프로그램이 버전8, 11로 이루어져있기 때문에 버전을 17로 올릴 경우 많은 에러가 발생할 것으로 예상된다.
17버전으로 올릴 경우 발생한 여러 종류의 에러를 다시 수정하고, 여러 모듈간의 관계들을 살펴보아야하며 만약 다른 기업의 프로그램의 11 버전의 프로그램과 호환하여야할 경우 여러 기업 간 버전의 통합 과정에 있어서도 아주 많은 기간동안 개발자들의 인력과 수많은 비용이 발생할 것 이라고 생각된다. 또한 신입과 비슷한 나보다 먼저 개발을 오랜 기간동안 한 여러 개발자들은 자바 17보다는 자바 8이나 자바 11에 익숙하여 버전을 바꿀 경우 개발 기간에도 영향을 미칠 것이라고 생각한다.
이러한 경우를 종합해보면 현재는 가장 많은 기업과 개발자들이 사용하는 8, 11의 버전을 사용하되, 추후 획기적인 기능이 추가되거나 프로젝트 팀 내에서 17의 버전을 사용하거나 내가 입사를 원하는 기업 또는 입사하였는데 17의 버전을 사용하는 경우에는 8, 11의 버전이 아닌 17의 버전을 학습하고, 사용해야한다고 생각한다.
즉, 8, 11, 17은 무조건적으로 이 버전의 기능이 좋고 많기 때문에 또는 가장 최신의 버전이기 때문에 이 버전을 사용해야한다기보다는 개발자들의 개발 상황에 맞게, 여러 프레임워크의 상황에 맞게, 기업의 프로젝트의 상황에 맞게 선택하는 것이 가장 좋은 방향이라고 생각한다.
따라서 나의 경우 현재 보편적으로 가장 많이 사용하고 있는 자바 11의 버전으로 주로 학습하는 것이 효율적인 방법이라고 생각하며, 17의 경우는 상황을 지켜보다가 학습하는 것이 가장 바람직한 방법이라고 생각한다.