간단한 개발관련 내용

[JAVA] JAVA 버전별 추가된 내용 정리. 본문

Programming/Java

[JAVA] JAVA 버전별 추가된 내용 정리.

vincenzo.dev.82 2017. 3. 23. 22:35
반응형
  • JAVA1
    • Collection이 없어서 Vector, Stack, Hashtable, Properties 가 컬렉션의 명명법을 따르지 않음.
    • Vector, HashTable 클래스들은 동기화처리됨.

  • JAVA1.1
    • Reflection
    • Calendar 

  • JAVA1.2
    • Collection 프레임워크 등장
    • ArrayList, HashMap 클래스들은 동기화처리하지 않고 필요한 경우에만 java.util.Collections 클래스의 동기화 메소드를 이용.

  • JAVA1.3
    • Hotspot-Compiler 내장...(불필요한 컴파일을 회피하고 HotCode에 Optimization을 집중..)
    • Math 의 OS 의존성 때문에 (CPU명령어처리가 다르니까..) StrictMath 가 탄생했다.

  • JAVA1.4
    • CharSequence 가 추가되어 String, StringBuffer 등의 클래스가 구현하였다.

  • JAVA1.5
    • enhanced for-looop
    • Generics 가 추가됨.
    • Iterable 인터페이스 추가.(Collection 인터페이스가 상속받도록 결정)
    • enum(열거형)이 추가됨.
    • Autoboxing 이 추가됨. 기본형과 참조형 사이의 연산이 가능해짐. 
    • Covariant ReturnType(공변반환타입)이 추가되어 Override하는 함수의 반환타입을 SubClass 타입으로 쓸 수 있게 함.
    • 메소드의 매개변수에 동적으로 할당 할 수 있게 가변인자(variable arguments)가 추가되었음.
      • 가변인자는 매개변수 중 제일 마직막에 선언, 내부적으로 배열을 생성하므로 성능을 고민해야 함
    • java.util.concurrent.locks 와 java.util.concurrent.atomic 패키지 추가.
    • String의 contains(CharSequence s), replace(CharSequence old, CharSequence nw)가 추가되었다.
  • JAVA1.6
    • 상수를 선언과 동시에 초기화하지 않아도 되며, 사용하기 전에만 초기화하면 되도록 바뀌었다.

  • JAVA1.7
    • 정수형 리터럴 중간에 '_' under-score를 넣을 수 있게 되었다.
    • 2진 리터럴이 추가되었다. 
    • switch 문 조건식에 문자열이 추가되었다
    • '|' 기호를 이용한 multi-catch 블럭.
    • try-with-resources 가 추가되었음.
      • 보통 입출력관련 클래스들을 사용할 때 close()를 호출하지 않아도 try 블럭을 벗어나는 순간 자동적으로 호출이 된다.
      • AutoClosable 인터페이스를 구현한 클래스여야만 한다.
    • Generics 객체 생성 시 추정가능한 경우 타입을 생략할 수 있다.
      • List<String> list = new ArrayList<>();
    • @SafeVarargs Generics 가변인자에 사용.
    • fork & join 프레임워크가 추가됨.
    • '+'가 포함된 문자열이 parseInt()로 변환가능하게 된 것은 JDK1.7부터이다.

  • JAVA1.8
    • 람다와 스트림.
    • 인터페이스에 default-method와 static-method 가 추가되었다.
    • (지역클래스에서 접근하는 지역변수...)Inner-Class에서 외부클래스의 지역변수는 final을 붙여야 했으나, JAVA8부터 final을 생략할 수 있게 바뀌었다.(대신 컴파일러가 자동으로 붙여준다.)
    • java.time 패키지로 개선된 날짜/시간 제공.
    • java.util.Object 의 hash() 함수의 추가로 Override한 hashCode 구현 지원.
    • @FunctionalInterface 함수형인터페이스 선언.
    • @Native native 메소드에서 참조되는 상수 앞에 붙인다.
    • @Repeatable 어노테이션을 반복해서 적용할 수 있게 한다.

  • ETC
    • JVM이 모든 배열의 길이를 별도로 관리하며 arrayName.length ...
    • array vs arrayList
    • Comparable은 기본적으로 오름차순이기 때문에, Comparator를 구현하여 정렬기준을 바꿀 수 있다.
    • Generics 는 컴파일 시 형변환되어 *.class 파일에는 없는데 주된 이유는 이전 버전 호환을 위해서이다.


반응형