연습을 할땐 자바 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의 영향도를 측정할 수 있다.
- 짧은 시간 수행하고 종료되는 어플리케이션에 사용됨. 간단히 작동하고 마치는, 메모리 부하가 크게 염려되지 않는 어플리케이션에 적절하게 사용될 수 있음.
'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 |