자바8
-
챕터[18] 함수형 관점으로 생각하기모던자바인액션 2020. 10. 22. 00:44
서론 함수형 프로그래밍을 이용하지 않으면 메소드의 호출로 인하여 다른 객체가 변경될 경우 부작용이 발생할 수 있다. 이러한 부작용은 결국 개발자 입장에서 유지보수를 하기 힘들게 만들며, 병렬로 처리하는 과정에서는 언제 어떻게 값이 변경되는지 추적할 수가 없어진다. 공유된 가변 데이터 어떠한 자료구조도 바꾸지 않으며(자신을 포함하는 클래스의 상태 및 다른 객체) return 문을 통해서 자신의 결과를 반환하는 메서드를 순수 메서드 혹은 부작용 없는 메서드라고 불린다. 부작용 없는 메서드의 부작용이란? 자료구조를 고치거나 필드에 값을 할당 예외 발생 파일에 쓰기 및 I/O 동작 선언형 프로그래밍 어떻게로 접근하는 방식을 선언형프로그래밍이라고 부르기도 한다. 선언형 프로그래밍에서는 우리가 원하는 것이 무엇이고..
-
챕터[16] 안정적 비동기 프로그래밍모던자바인액션 2020. 10. 21. 16:06
서론 비동기 작업을 만들고 결과 얻기 비블록 동작으로 생산성 높이기 비동기 API 설계 및 구현 Future 자바 8 이전의 코드에서는 Future를 통하여 비동기 작업을 진행하였지만 Future의 값을 얻을려고 접근을 하게 될 경우 블록이 되어 작업이 끝날때까지 무기한(쓰레드 대기시간) 기다리는 문제가 발생할 수 있다. ExecutorService executorService = Executors.newCachedThreadPool(); Future future = executorService.submit(new Callable() { @Override public Double call() throws Exception { // 오래걸리는 작업은 다른 스레드에서 실행되게 (실제로는 null이 아님) r..
-
챕터[3] 람다모던자바인액션 2020. 10. 21. 15:55
서론 람다가 무엇인지 람다는 어떤 조건에 사용할 수 있는지 등을 설명하는 챕터이다. 람다란? 람다란 (파라미터) -> {바디} 로 구현되어있으며, 메서드를 전달할 수 있는 익명 함수를 단순화한 것 어디에 람다를 사용하는지? 1. 함수형 인터페이스 함수형 인터페이스를 인수로 받는 메서드에만 람다 표현식을 사용할 수 있는지는 추후 20, 21 챕터에 설명예정 함수 디스크립터 : 함수형 인터페이스의 추상 메서드 시그니처는 람다 표현식의 시그니처를 가리킨다. 람다 표현식의 시그니처를 서술하는 메서드를 함수 디스크립터라고 부른다. 실행 어라운드 패턴 자원 처리에 사용하는 순환 패턴은 자원을 열고, 처리한 다음에, 자원을 닫는 순서로 이루어진다. 설정과 정리 과정 은 대부분 비슷하다. 즉 실제 자원을 처리하는 코드..
-
챕터[2] 동작 파라미터화모던자바인액션 2020. 10. 21. 15:55
제너릭이란 클래스에서 사용할 타입을 클래스 외부에서 선택하여 사용한다. 제네릭 타입은 참조형 타입만 가능하다 (기본형 사용 불가능) ->Wrapper Class 사용 동작 파라미터화란? 자주 바뀌는 요구사항에 효과적으로 대응할 수 있는 방법으로 아직은 어떻게 실행할 것인지 결정화지 않은 코드 블럭을 의미한다. 동작 파라미터화 변화는 요구사항에 대응하기 위하여 기존에는 메서드를 제작하여 구현하였다. 아래와 같이 2가지의 일을 하는 2개의 메서드를 구현하여 판단했다. -> 사과의 색이 빨간색인 사과만 거르는 필터링 메서드 -> 사과의 색이 초록색인 사과만 거르는 필터링 메서드 매 요구사항마다 메서드가 하나씩 생길 수 있는 반면 동작 파라미터화를 이용하여 참 또는 거짓만 반환하는 함수인 프리디케이트를 정의해보..