JAVA-7u71-jre-windows-64bit, JAVA-7u71-jre-windows-32bit
1.프로그램명: Java7 특징 및 다운받기 설치하기
2.라이센스 : 프리웨어 - 개인
3.출처 : oracle.com
4.언어 : 영문
6.버젼 : JAVA 7
7.설치하기
첨부파일을 실행 후, 설치 버튼을 누르면 바로 설치 시작됩니다.
Java 7에는 개발자들이 좋아할만한 많은 특징들이 있다. switch구문에서 사용하는 String, 다중 exception처리multi-catch exception), try-with-resource 구문, 새로운 파일시스템 API, JVM의 확장, 동적 타입의 언어에 대한 지원, 유사한 작업을 위한 fork와 join 프레임워크 등 분명히 많은 곳에서 수용되어질 것이다.
Type Inference 다이아몬드(<>) 지시자
Java7 이전에는 제너릭 타입 파라미터를 선언과 생성시 중복해서 써줘야했는데요. 다이아몬드 연산자(<>) 지원으로 제너릭 사용이 간편해졌습니다.
아래 코드를 보면 생성자 영역의 타입 파라미터들은 <>로 대체 가능합니다. 컴파일러가 해당 타입을 유추해서 컴파일시 자동으로 캐스팅 코드를 추가 해줍니다.
## JDK 6 이하
Map<String, List<String>> employeeRecords = new HashMap<String, List<String>>();
List<Integer> primes = new ArrayList<Integer>();
## JDK 7
Map<String, List<String>> employeeRecords = new HashMap<>();
List<Integer> primes = new ArrayList<>();
String in Switch
Switch 구문은 기본형과 열거형만 사용이 가능했다. Java 7은 switch 문에서 사용할수 있는 다른 타입을 추가하였다. 바로 String 타입이다.
switch (month) {
case "Jan":
System.out.println("January");
break;
case "Feb":
System.out.println("February");
break;
case "Mar":
System.out.println("March");
break;
default:
System.out.println("Invalid");
}
Automatic Resource Management 자동 자원 관리
DB컨넥션이나 파일스트림 등을 open 했을 때 예기치 못한 오류 발생시 정상적인 종료를 위해 finally 블럭안에서 close 처리를 해주었는데요. 이로 인해 항상 불필요한 코드를 작성해줘야 했습니다. 요즘에야 DB컨넥션 반납을 프레임워크단에서 잘 처리해주지만 그렇지 않던 시절에 개발자 실수로 컨넥션 close 코드가 누락 되었을 경우엔 컨넥션 반환이 제때 이루어지지 않아 컨넥션풀이 바닥나는 사고도 많았죠.
## JDK6 이하
public static void main(String args[]) {
FileInputStream fin = null;
BufferedReader br = null;
try {
fin = new FileInputStream("info.xml");
br = new BufferedReader(new InputStreamReader(fin));
if (br.ready()) {
String line1 = br.readLine();
System.out.println(line1);
}
} catch (FileNotFoundException ex) {
System.out.println("Info.xml is not found");
} catch (IOException ex) {
System.out.println("Can't read the file");
} finally {
try {
if (fin != null)
fin.close();
if (br != null)
br.close();
} catch (IOException ie) {
System.out.println("Failed to close files");
}
}
}
## JDK7
public static void main(String args[]) {
try (FileInputStream fin = new FileInputStream("info.xml");
BufferedReader br = new BufferedReader(new InputStreamReader(
fin));) {
if (br.ready()) {
String line1 = br.readLine();
System.out.println(line1);
}
} catch (FileNotFoundException ex) {
System.out.println("Info.xml is not found");
} catch (IOException ex) {
System.out.println("Can't read the file");
}
}
Fork/Join Framework
fork/join 프레임워크는 멀티프로세서의 성능을 이용할 수 있는 ExecutorService 인터페이스의 구현체입니다. 반복적으로 작은 조각으로 작업을 나누어 수행 할 수 있게 설계 되었습니다. 목표는 어플리케이션의 성능을 향상 시키기 위해 가능한 모든 프로세세를 이용하는 것입니다. ExecutorServcie를 구현함으로써 fork/join 프레임워크는 Thread Pool안의 Worker Thread에게 작업들을 분배합니다. fork/join 프레임워크는 Produce-Consumer 알고리즘과는 매우 다른 work-stealing 알고리즘을 이용합니다. 할 작업이 없는 Worker Thread는 아직 바쁜 다른 Thread의 작업을 훔쳐 올 수 있습니다. fork/join 프레임워크의 핵심은 AbstractExecutorService 클래스를 구현한 ForkJoinPool 클래스입니다. ForkJoinPool은 핵심적인 work-stealing 알고리즘을 구현하고 ForkJoinTask 프로세스들을 실행 할 수 있습니다. RecursiveTask(결과를 반환할 수 있는) 또는 RecursiveAction 같은 ForkJoinTask 하위 클래스를 랩핑할 수 있습니다.
Underscore in Numeric literal 숫자와 관련된 문자에 밑줄 표시
숫자형(정수,실수)에 _(underscore) 문자열을 사용 할 수 있습니다.
int billion = 1_000_000_000; // 10^9
long creditCardNumber = 1234_4567_8901_2345L; //16 digit number
long ssn = 777_99_8888L;
double pi = 3.1415_9265;
float pif = 3.14_15_92_65f;
Catching Multiple Exception Type in Single Catch Block
단일 catch 블럭에서 여러개의 Exception 처리가 가능해졌습니다. (Multi-Catch 구문 지원) JDK7 이전에는 2개의 Exception을 처리하기 위해서는 2개의 catch 블럭이 필요했었죠.
## JDK6 이하
try {
//......
} catch(ClassNotFoundException ex) {
ex.printStackTrace();
} catch(SQLException ex) {
ex.printStackTrace();
}
## JDK7
try {
//......
} catch (ClassNotFoundException|SQLException ex) {
ex.printStackTrace();
}
Binary Literals with Prefix "0b"
숫자형에 '0B' 또는 '0b'를 앞에 붙임으로써 이진법 표현이 가능합니다. (8진법은 '0', 16진법은 '0X' 또는 '0x')
int mask = 0b01010000101;
int binary = 0B0101_0000_1010_0010_1101_0000_1010_0010; // _를 이용한 가독성 향상!
Java NIO 2.0
JDK7에서 java.nio.file 패키지를 선보였는데요. 기본파일시스템에 접근도 가능하고 다양한 파일I/O 기능도 제공합니다. 예를 들면 파일을 옮기거나 복사하거나 삭제하는 등의 유용한 메소드들을 제공하며, 파일속성이 hidden인지 체크도 가능합니다. 또한 기본파일시스템에 따라 심볼릭링크나 하드링크도 생성 가능합니다. 와일드카드를 사용한 파일검색도 가능하며 디렉토리의 변경사항을 감시하는 기능도 제공합니다. 어쨋든 외부 라이브러리로 해결했던 많은 일들이 JDK안으로 포함되었습니다.
G1 Garbage Collector
G1 Garbage Collection으로 알려진 새로운 Garbage Collector가 추가되었습니다.(G1은 Garbage First의 약자) G1 GC는 Garbage가 가장 많은 영역의 청소를 수행합니다. 이런 수행을 위해 자바 힙메모리 영역을 여러개의 분할된 영역으로 나눕니다. JDK7 이전에서는 new, old, permgen 영역으로 나뉘었는데요. G1 GC는 꽤 새로운 점은 없지만 메모리 집중적인 어플리케이션에 더 큰 throughput을 제공합니다.
More Precise Rethrowing of Exception
다음 예제를 보면 try 블럭안에서 ParseException, IOException의 Checked Exception이 발생 할 수 있습니다. 각각의 Exception을 처리하기 위해 Multi-Catch 또는 다중 Catch 문으로 예외처리를 할 수 있지만 예제에서는 최상위 클래스인 Exception으로 처리하였습니다. catch 구문에서 발생한 예외를 상위 메소드로 전달하기 위해 throw 할 경우 메소드 선언부에 해당 예외를 선언해주어야하는데요.
JDK7 이전 버젼에서는 다음 예처럼 catch 구문내에서 선언한 예외 유형만 던질 수 있었습니다. (Exception 클래스),
## JDK6 이하
public void obscure() throws Exception {
try {
new FileInputStream("abc.txt").read();
new SimpleDateFormat("ddMMyyyy").parse("12-03-2014");
} catch (Exception ex) {
System.out.println("Caught exception: " + ex.getMessage());
throw ex;
}
}
## JDK7
public void precise() throws ParseException, IOException {
try {
new FileInputStream("abc.txt").read();
new SimpleDateFormat("ddMMyyyy").parse("12-03-2014");
} catch (Exception ex) {
System.out.println("Caught exception: " + ex.getMessage());
throw ex;
}
}
참조 : jdk7 features http://javarevisited.blogspot.kr/2014/04/10-jdk-7-features-to-revisit-before-you.html
다운받기
- JDK 7u71 : 다운로드
- JDK 7u79 : 다운로드
- JDK 7u80 : 다운로드
- 다른 버젼 보기
'개발도구 > JAVA' 카테고리의 다른 글
Webstorm 웹스톰 2019 다운로드 설치하기 (0) | 2020.11.08 |
---|---|
Java SE 1.3 파일 다운받기 Java SE 1.3 Download (0) | 2020.11.07 |
Java8 새로운기능과 파일 다운받기 (0) | 2020.11.06 |