2013년 11월 27일 수요일

[자바8교육,JAVA8,자바8]JDK1.8 특징,기능,달라지는점(Jigsaw,Lambda람다식)

 [자바8교육,JAVA8,자바8]JDK1.8 특징,기능,달라지는점(Jigsaw,Lambda람다식)
 
2013년 여름이후로 출시가 연기된 자바8(JAVA8)은 오라클의 첫번째 자바 버전이라고 할 수 있다.
자바8에는 모듈화(jigsaw Project), 람다식(Lambda)지원등의 내용이 포함된다고 한다.
 
 1. Jigsaw Project

    - Java 응용프로그램과 Java 플랫폼을 위한 모듈 시스템
    - 효율성 있는 Java 프로젝트 환경을 만들기 위해서
    - 동일한 라이브러리를 중복으로 사용하거나, 두 개의 라이브러리 에서 공통으로 사용하는 다른 라이브러리가 있는데 서로 다른 버전을 필요로 하는 등의 이유로 JAR Hell
        (Windows의 DLL Hell에서 파생됨)이 발생하게 되는데 이는 Jigsaw 프로젝트에서 제공하는 모듈 지정과 해당 모듈 별 버전 관리 기능 등으로 해결될 수 있다.
    - Java Platform 크기와 성능 최적화
   
 
 2. Lambda Project

    - 닷넷 처럼 람다식 지원
    - Java 언어에서 멀티 코어 용 응용프로그램을 작성할 때 보다 쉽고 간결하게 작성할 수 있는 람다(λ) 식 표현과 함께 벌크 패러럴 작업과 관련된 Java Collections API를 포함한다.
   
   
    [예1]
   
    [람다식 사용전]

    public void start(Stage primaryStage) {
        primaryStage.setTitle("Hello World!");
        Button btn = new Button();
        btn.setText("Say 'Hello World'");
        btn.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent event) {
                System.out.println("Hello World!");
            }
        });
        ......
        ......
    }
   
    [사용후]

    public void start(Stage primaryStage) {
        primaryStage.setTitle("Hello World!");
        Button btn = new Button();
        btn.setText("Say 'Hello World'");
        btn.setOnAction(
          event -> System.out.println("Hello World!")
        );
       
        ......
        ......
    }
   
   
   
   
    [예2]
   
    public class Calculator {
 
    interface IntegerMath {
        int operation(int a, int b);  
    }
 
    public int operateBinary(int a, int b, IntegerMath op) {
        return op.operation(a, b);
    }

    public static void main(String... args) {
   
        Calculator myApp = new Calculator();
        IntegerMath addition = (a, b) -> a + b;
        IntegerMath subtraction = (a, b) -> a - b;
        System.out.println("40 + 2 = " +
            myApp.operateBinary(40, 2, addition));
        System.out.println("20 - 10 = " +
            myApp.operateBinary(20, 10, subtraction));   
    }
   }

댓글 없음:

댓글 쓰기