Java version 선택 이유

이은재·2024년 2월 14일

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버전의 개선점을 간단하게 작성하면

  1. 로컬 변수 유형 추론의 개선
  2. 새로운 기능과 개선된 API
  3. Garbage Collector 개선
  4. 암호화 관련 업데이트
  5. 언어 및 컴파일러 개선
  6. Deprecation과 Removal
  7. 성능 개선
  8. 다양한 다른 업데이트

위와 같이 간단히 기술하여도 17의 버전이 더욱 좋아보인다.

  • 하지만 이미 여러 기업에서 오랜 기간에 걸쳐 개발한 프로그램이 버전8, 11로 이루어져있기 때문에 버전을 17로 올릴 경우 많은 에러가 발생할 것으로 예상된다.

  • 17버전으로 올릴 경우 발생한 여러 종류의 에러를 다시 수정하고, 여러 모듈간의 관계들을 살펴보아야하며 만약 다른 기업의 프로그램의 11 버전의 프로그램과 호환하여야할 경우 여러 기업 간 버전의 통합 과정에 있어서도 아주 많은 기간동안 개발자들의 인력과 수많은 비용이 발생할 것 이라고 생각된다. 또한 신입과 비슷한 나보다 먼저 개발을 오랜 기간동안 한 여러 개발자들은 자바 17보다는 자바 8이나 자바 11에 익숙하여 버전을 바꿀 경우 개발 기간에도 영향을 미칠 것이라고 생각한다.

  • 이러한 경우를 종합해보면 현재는 가장 많은 기업과 개발자들이 사용하는 8, 11의 버전을 사용하되, 추후 획기적인 기능이 추가되거나 프로젝트 팀 내에서 17의 버전을 사용하거나 내가 입사를 원하는 기업 또는 입사하였는데 17의 버전을 사용하는 경우에는 8, 11의 버전이 아닌 17의 버전을 학습하고, 사용해야한다고 생각한다.

  • 즉, 8, 11, 17은 무조건적으로 이 버전의 기능이 좋고 많기 때문에 또는 가장 최신의 버전이기 때문에 이 버전을 사용해야한다기보다는 개발자들의 개발 상황에 맞게, 여러 프레임워크의 상황에 맞게, 기업의 프로젝트의 상황에 맞게 선택하는 것이 가장 좋은 방향이라고 생각한다.

  • 따라서 나의 경우 현재 보편적으로 가장 많이 사용하고 있는 자바 11의 버전으로 주로 학습하는 것이 효율적인 방법이라고 생각하며, 17의 경우는 상황을 지켜보다가 학습하는 것이 가장 바람직한 방법이라고 생각한다.

0개의 댓글