[Java] Java7 문법

BBANG-JUN·2021년 9월 2일
1

Java

목록 보기
6/6
post-thumbnail

내가 얼마나 언어에 관심이 없었는지 알 수 있었다...
해당 문법이 언제 나왔는지 혹은 내가 몰랐었던 사용법을 익히는 것에 요점을 두면
얻어 갈 수 있는 것이 있을 것입니다 😂

Java 7

  • try-with-resources
  • 멀티캐치(multicatch)
  • switch-case 문자열 지원
  • 다이아몬드 지시자 ( <> )
  • 숫자 밑줄 표시
  • Null-safe Method invocation
  • Bracket Notation for Collection
  • Fork/Join
  • ECC 암호화 기능 제공

try-with-resources

// 이전
try {
	Statement stmt = con.createStatement()
    } catch (SQLException e) {
        JDBCTutorialUtilities.printSQLException(e);
    } finally{
    	stmt.close(); // 자원해제 필수
    }
}

// Java 7
try (Statement stmt = con.createStatement()) { // 자동 자원해제 및 종료가 됨.
	...
    } catch (SQLException e) {
        JDBCTutorialUtilities.printSQLException(e);
    }
}

해당 코드들은 try( ) <- 포함시키지 않아도 자동으로 종료된다함.
InputStream in = new InputStream();
OutputStream out = new OutputStream();

멀티캐치(multicatch)

// 이전
try {
	...
    } catch (SQLException e) {
        any(e)
    } catch (IOException e) {
    	any(e)
    } catch (Exception e) {
    	buy(e)
    }
}

// Java 7
try {
	...
    } catch (SQLException e | IOException e) { // 가능!
        any(e)
    } catch (Exception e) {
    	buy(e)
    }
}

switch-case 문자열 지원

// JAVA 7
switch(str){
    	case "city":
        	...
        case "country"
        	...
    }

"이게 안되었던 시절이 있었다니..."

다이아몬드 지시자 ( <> )

// 이전
Map<String, List<Trade>> = new TreeMap<String, List<Trade>>();

// JAVA 7
Map<String, List<Trade>> = new TreeMap<>();

숫자 밑줄 표시

// JAVA 7
int thousand = 1_000;     // 1000
int million = 1_000_000;  // 1000000

//2진수도 표현 가능
int binLiteral = 0b1010; // 2진수 리터럴  // 10
int octLiteral = 012;    // 8진수 리터럴  // 10
int hexLiteral = 0xa;    // 16진수 리터럴 // 10

Null-safe Method invocation

// 이전
public String getPostcode(Person person){
	if(person != null)
    		Address adress = person.getAddress();
    	if(adress != null)
        	return adress.getPostCode();
        return null;
}

// JAVA 7
public String getPostcode(Person person){
	return person?.getAddress()?.getPostCode();
}

Bracket Notation for Collection

// 이전
Collection<String> c = new ArrayList();
c.add("1");
c.add("2");
c.add("3");

// JAVA 7
Collection<String> c = new ArrayList{"1","2","3"};

Fork/Join

자바에서 분할-정복(divide-and-conquer) 방식으로 작업을 분해하고 실행하려면 직접 관련 코드를 만들어주어야 했다. 그런데, 필자 같은 경우는 멀티코어가 정착되면서 뭔가 작업을 분할해서 다중 쓰레드를 이용해서 병렬로 정복하고 싶은 싶은 욕구가 생긴다. 필자 외에도 많은 개발자들이 멀티코어를 활용하고 싶은 욕구가 있을텐데, 자바7에 분할-정복 방식을 위한 ForkJoinPool 클래스가 추가되었다. 이 클래스는 큰 작업을 작은 작업으로 나누고 각각의 분할된 작업을 병렬로 처리해주는 기능을 제공하기 때문에 멀티코어 환경에서 처리 시간을 단축할 수 있도록 하고 있다.

중요한 건 프레임워크이기 때문에 내가 밑바닥부터 만들 필요가 없다는 점이다. 그냥 제공하는 API에 맞게 코드를 만들어주면 땡이다.

ECC 암호화 기능 제공

이것도 진작 넣었더라면 더 좋았을 것을. 암호화 처리를 위해 ECC를 제공하지 않아 외부 라이브러리를 사용하는 곳이 많았는데, 이제 그럴 필요가 없어졌다. 드디어 자바가 ECC를 지원하기 시작했다.

참고

profile
🔥 머릿속으로 생각하지만 말고, 행동으로 보여줘

0개의 댓글