6월, 2018의 게시물 표시

Java9 - Language Changes

Improvement of try-with-resources statements try-with-resources는 java8부터 도입된 개념으로 사용 후 close 되어야 하는 resource에 대해 명시적인 close() 호출없이도 자동으로 resource가 반환될 수 있도록 해주는 안전장치라고 할 수 있다. java8 이전 void printFile(String filePath) throws IOException { BufferedReader br = new BufferedReader(new FileReader(new File(filePath))); String line; try { while ((line = br.readLine()) != null) { System.out.println(line); } } finally { if (br != null) { br.close(); } } java8 void printFile(String filePath) throws IOException { BufferedReader br1 = new BufferedReader(new FileReader(new File(filePath))); String line; try (BufferedReader br2 = br1) { while ((line = br2.readLine()) != null) { System.out.println(line); } } } java8에서는 위와 같이 명시적인 close() 메소드 호출 없이도 resource 반환이 이루어진다.(Exception 발생 여부와 관계없이) java9에서는 BufferedReader br2 = br1; 과 같이 resource를 재할당하는 구문조차 생략이 가능해졌다. void printFi...

Java9 - New JDK Tools

이미지
jshell java9에는 REPL(Read-Eval-Print Loop) tool에 해당하는 jshell 이 추가 되었다. REPL tool은 command line interface에서 code를 입력하면서 line-by-line 코딩을 하고 그 결과를 즉시 확인할 수 있는 tool 이다. 아래의 명령어로 실행할 수 있다. 실행 D:\work\java\jdk-9.0.4\bin>jshell | Welcome to JShell -- Version 9.0.4 | For an introduction type: /help intro jshell> jshell 실행시 자동으로 수행되는 코드가 있는데, 이것을 확인하려면 아래와 같이 입력한다. jshell> /list -start s1 : import java.io.*; s2 : import java.math.*; s3 : import java.net.*; s4 : import java.nio.file.*; s5 : import java.util.*; s6 : import java.util.concurrent.*; s7 : import java.util.function.*; s8 : import java.util.prefs.*; s9 : import java.util.regex.*; s10 : import java.util.stream.*; jshell> 위와 같이 import statement들이 기본적으로 수행됨으로써, 다양한 java coding을 통한 테스트를 수행할 수 있다. jshell을 통해서는 변수 선언, method 선언, class 선언 등의 다양한 coding을 수행할 수 있으며 아래와 같은 결과를 확인할 수 있다. jshell> String str1 = "baseball" str1 ==> "baseball" jshell> String str2 = ...