728x90
Java 1.7과 Java 1.8 비교 정리
| 구분 | Java 1.7 | Java 1.8 |
| 람다 표현식 | 지원하지 않음 | 함수형 프로그래밍 스타일을 지원하는 람다 표현식 도입. |
| 스트림 API | 기존 for, while 루프 사용 | 데이터 처리에 선언적 방식을 지원하는 스트림 API 추가. |
| Optional 클래스 | null 확인은 수동으로 처리해야 함 | Optional 클래스를 도입하여 null 처리 간소화. |
| 인터페이스 | 인터페이스에는 메서드 정의만 가능. 구현체를 포함할 수 없음 | 디폴트 메서드와 정적 메서드 도입으로 인터페이스에 구현체를 포함 가능. |
| 날짜와 시간 처리 | java.util.Date, java.util.Calendar 사용. 불편하고 복잡함 | java.time 패키지 도입으로 편리하고 직관적인 날짜와 시간 처리 가능. |
| Switch문에서 문자열 지원 | 문자열을 switch에서 사용할 수 없음 | switch 문에서 문자열 사용 가능. |
| Try-with-Resources | 지원하지 않음 | 리소스 자동 관리를 지원하는 Try-with-Resources 추가. |
| 숫자 리터럴 | 숫자 리터럴에 밑줄 사용 불가 | 숫자 리터럴에 밑줄(_) 사용 가능으로 가독성 향상. |
| 메서드 레퍼런스 | 지원하지 않음 | 메서드 레퍼런스를 통해 기존 메서드 호출을 간결하게 표현 가능. |
| NIO.2 | 기존 java.io를 사용, 파일 작업이 비교적 복잡 | NIO.2 API를 통해 파일 및 디렉토리 작업 간소화. |
| 메모리 관리 | PermGen 영역 사용 | PermGen 제거, Metaspace로 대체하여 메모리 관리 개선. |
| 멀티 캐치 블록 | 하나의 catch 블록에서 하나의 예외만 처리 가능 | 하나의 catch 블록에서 여러 예외를 처리 가능. |
주요 기능 비교 예시 코드
1. 람다 표현식
- Java 1.7
람다 표현식 미지원, 익명 클래스로 구현.
List<String> list = Arrays.asList("a", "b", "c");
for (String s : list) {
System.out.println(s);
}
- Java 1.8
람다 표현식 사용으로 코드 간소화.
List<String> list = Arrays.asList("a", "b", "c");
list.forEach(s -> System.out.println(s));
2. 스트림 API
- Java 1.7
기존 반복문을 사용해 필터링 및 정렬 처리.
List<String> names = Arrays.asList("John", "Jane", "Jake");
List<String> filtered = new ArrayList<>();
for (String name : names) {
if (name.startsWith("J")) {
filtered.add(name);
}
}
Collections.sort(filtered);
for (String name : filtered) {
System.out.println(name);
}
- Java 1.8
스트림 API를 사용해 선언적으로 처리.
List<String> names = Arrays.asList("John", "Jane", "Jake");
names.stream()
.filter(name -> name.startsWith("J"))
.sorted()
.forEach(System.out::println);
3. Optional 클래스
- Java 1.7
null 처리 시 수동으로 확인 필요.
String value = getValue();
if (value != null) {
System.out.println(value);
}
- Java 1.8
Optional 클래스 사용.
Optional<String> value = Optional.ofNullable(getValue());
value.ifPresent(System.out::println);
4. 날짜와 시간 처리
- Java 1.7
Calendar 사용.
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getTime());
- Java 1.8
java.time API 사용.
LocalDate date = LocalDate.now();
System.out.println(date);
728x90
'개발 > 자바' 카테고리의 다른 글
| Java 8 Optional 개요 (0) | 2025.02.01 |
|---|---|
| Java의 private, private static, private static final 차이점 (0) | 2025.01.29 |
| 전자정부프레임워크 4.x(spring boot) 외부 톰캣에서 실행하기 (0) | 2025.01.15 |
| 자바 html 태그 제거 메소드 (0) | 2025.01.15 |
| 자바 버전별 지원 및 세부 내용 정리 (0) | 2025.01.15 |