본문 바로가기

분류 전체보기29

[모던 자바 인 액션] 결론 그리고 자바의 미래 자바8 변화의 이유 1. 멀티코어 프로세스의 활용2. 선언형으로 데이터를 처리하는 방식 자바 8의 변화 요약 1. 동작 파라미터화: 함수를 일급값으로 사용. 동작을 파라미터화. 2. 스트림: 선언형으로 데이터 처리3. CompletableFuture: 비동기 처리. 병렬 처리4. Optional: null 처리5. Flow API: 리액티브 스트림 처리6. 디폴트 메서드: 인터페이스에서 메서드 기본 구현 제공7. 자바 모듈 시스템(자바 9): 안정적 설정(모듈 요구사항 명시), 캡슐화, 보안성 등8. 지역 변수형 추론(자바 10): var 키워드 사용. 타입을 추론 미래 1. 선언 사이트 변종자바에서는 현재 제네릭의 서브형식을 와일드카드로 지정하는 사용 사이트 변종이라는 개념을 사용한다. 하지만 c#.. 2025. 5. 29.
[모던 자바 인 액션] OOP와 FP의 조화: 자바와 스칼라 비교 자바와 스칼라를 비교하는 이유 스칼라는 객체지향과 함수형 프로그래밍을 혼합한 언어로, JVM에서 수행되며, 자바의 모든 라이브러리를 사용할 수 있는 언어다. 스칼라는 자바에 비해서 더 다양하고 심화된 기능을 제공하기 때문에, 스칼라와 자바를 비교함으로써 자바의 한계를 느낄 수 있다. 스칼라의 컬렉션 val authorsToAge = Map("Raoul" -> 23, "Mario" -> 40, "Alan" -> 53)자바의 경우 맵 생성시에 복잡한 문법을 통해서 맵을 생성하지만 스칼라의 경우 -> 을 통해서 간편하게 생성할 수 있다. 또한 자바의 경우 생성시 변수의 형식을 지정해주어야 하지만, 스칼라에서는 따로 지정하지 않아서 자동으로 변수형을 추론한다. 또한 val, var이라는 두가지 키워드를 제공하는.. 2025. 5. 29.
[모던 자바 인 액션] 함수형 프로그래밍 기법 고차원 함수 고차원 함수란 하나 이상의 함수를 인수로 받아서 함수를 결과로 반환하는 함수를 의미한다. 우리가 앞에서 배웠던 Comparator.comparing도 "Comparator c = comparing(Apple::getWeight);" 처럼 비교의 기준이 되는 함수를 입력받아서 새로운 함수를 반환하는 고차원 함수 중 하나이다. 커링 커링이란 x, y라는 두개의 인수를 받는 함수를 한개의 인수를 갖는 g라는 함수로 대체하는 것을 말한다. (ex. f(x, y) = (g(x))(y)). 자바에서는 따로 커링이라는 기능을 제공하지는 않지만, 커링이라는 개념을 구현할 수는 있다. static double converter(double x, double f, double b) { return x * f.. 2025. 5. 28.
[모던 자바 인 액션] 함수형 관점으로 생각하기 함수형 프로그래밍이란 무엇인가 함수형 프로그래밍이란 "함수를 이용하는 프로그래밍"이다. 여기서 함수는 부작용이 없어야 한다. 함수 그리고 if-then-else 등의 수학적 표현만 사용하는 것을 순수 함수형 프로그래밍이라고 하고, 시스템의 다른 부분에 영향을 미치지 않는다면 내부적으로는 함수형이 아닌 기능도 사용하는 방식을 함수형 프로그래밍이라고 한다. 여기서 말하는 부작용이란 자료구조를 고치거나 값을 할당하는 것, 예외 발생, 파일에 쓰기 같은 IO 동작을 수행하는 것 등을 의미한다. 즉, 부작용 없음이란 자신을 포함하는 클래스의 상태, 다른 객체의 상태를 변경하지 않고 return문을 통해서 자신의 결과를 반환하는 것을 의미한다. 함수형 프로그래밍은 부작용 없음을 통해서 시스템 구현과 유지보수의 .. 2025. 5. 28.