JAVA

[Java] Java 8 / Java 11 차이 자바

로춘남 2021. 11. 1. 14:41
728x90

 


연습을 할땐 자바 11을 주로 사용하는데, 프로젝트 부분에 있어서는 안정성을 좀 추구하다보니 자바 8을 사용하는일이 있다. 2개를 쓰다가 문득 이 2개의 차이점이 무엇일까? 라는 궁금증이 생겼다.

Java 8  Java 11
애플릿 뷰어 도구 사용 가능 애플릿 뷰어 도구 사용 불가
AWTUtilities 클래스 사용하지 않는것이 좋음 AWTUtilities 클래스 사용 불가
String 문자열 관련 메소드가 적다 isBlank(), line(), repeat(n), stripLeading(), stripTrailing(), strip() 같은 새로운 String 문자열 방법이 도입됨
람다 파라미터에는 특수 변수가 사용되지 않음 람다식에 사용할 var 변수를 사용 할 수 있음
Java Deployment Technologies 사용 가능 Java Deployment Technologies 사용 불가
JMC 및 JavaFX는 Oracle JDK에서 사용 가능 JMC와 JavaFX는 자바 11의 Oracle JDK에서 제거
파일에 적합한 방법이 없음. writeString(), readString(), isSameFile()과 같은 다양한 메소드가 있어 파일에 대해 여러 작업을 수행 할 수 있음.
패턴을 인식 할 수 없음 패턴 인식은 asMatchPredicate(() 메스드이 도움으로 가능

※ 애플릿(Applet)이란?

: 패널(Panel)을 상속하는 클래스로 웹브라우저에 담겨서 실행되는 작은 응용프로그램을 말함.

 

ㆍ AppletViewer : 자바 애플릿을 실행하기 위함이지만, 2015년-2016년 사이에 지원을 종료하였고, 이제와서 굳이 사용할일이 없기때문에 자바11부터는 지원하지 않음.

ㆍ AWTUtilities: GUI를 지원하기 위한 라이브러리. 오류가 많아서 자바8부터 사용 안하는것을 권장.

ㆍ String 관련 메소드

  - isBlank() : 문자열이 비거나 공백일 경우 true 반환

  - lines() : 문자열을 줄 단위로 쪼개어 스트림 반환

  - repeat(n) : 문자열에 대해 n번 반복하여 붙여 반환

    ex)

    String str = "ABC";

    String repeated = str.repeat(3); // "ABCABCABC"

  - stripLeading() : 문자열 앞 공백 제거

  - stripTrailing() : 문자열 뒤 공백 제거

  - strip() : 양쪽 공백 제거

 

ㆍ 람다에서 var 변수 사용 가능.

람다는 타입을 스킵 할 수 있는데 이걸 사용하는 이유는 @Nullable 등의 어노테이션을 사용하기 위해 타입을 명시해야 할때. var를 사용하려면 괄호를 써야하며, 모든 파라미터에 사용해야 하고, 다른 타입과 혼용하거나 일부 스킵은 불가능함.

  ex)  (var n1, var n2) -> n1 + n2

(var s1, s2) -> s1 + s2 // 불가. s2에도 var 필요

(var s1, String x) -> s1 + x // 불가. String과 혼용 불가

var s1 -> s1 // 불가. 괄호 필요.

 

Function<String, String> toLowerCase = (var input) -> input.toLowerCase();

 

ㆍ file 처리

  - writeString() : 파일에 문자열을 쓰고 경로로 반환

  - readString() : 파일 내용을 String으로 반환

  - isSameFile() : 서로 같은 파일을 바라보는지 확인. 같은 파일일 경우 true. 아니면 false

 

ㆍ 패턴 인식 : Java 8에서는 asPredicate()를 통해 주어진 문자열에서 패턴을 찾을 수 있는지 테스트 하기 위해 '조건자'를 반환. Java 11에서는 asMatchPredicate()를 통해 패턴이 주어진 문자열과 일치하는지 테스트하기 위해 '술어' 반환함.

 

※ 가비지 콜렉터(Garbege Collector)

 - JVM으로 하여금 메모리 할동을 관리하지만, 사용된 메모리를 재사용하지 않도록함. 메모리를 다 사용하면 Out Of Memory가 발생하고 JVM은 셧다운이 됨.

 - 어플리케이션 테스트에 사용됨. GC는 어플리케이션과 함께 작동하며, 오버헤드가 있어 어플리케이션 성능에 영향을 준다. No-OP GC를 적용하여 GC를 배제함으로써 순수 어플리케이션의 성능, 메모리 부하 등을 테스트할 수 있도록 한다. GC 적용 시의 성능과 비교하여 GC의 영향도를 측정할 수 있다.

- 짧은 시간 수행하고 종료되는 어플리케이션에 사용됨. 간단히 작동하고 마치는, 메모리 부하가 크게 염려되지 않는 어플리케이션에 적절하게 사용될 수 있음.


출처 : https://innovation-communication.tistory.com/m/42

728x90

'JAVA' 카테고리의 다른 글

[JPA] JPA 기본 시작  (0) 2021.12.21
[JPA] JPA란 무엇인가?  (0) 2021.12.21
[Java] enum의 개념과 사용법  (0) 2021.10.19
[Spring] IoC, DI, 컨테이너  (0) 2021.10.19
[Java] Array 배열 Controller VO로 받기 파싱  (0) 2021.10.18