자바 모듈 시스템 모던 자바인 액션을 읽고 정리한 내용과 읽으면서 궁금한 내용들을 작성하였습니다. 자바가 진화해야 한다는 여론으로 모듈시스템을 지원 시작 추론하기 위한 소프트웨어 자바 9에서 가장 많이 거론되는 새로운 기능이 모듈 시스템 그렇다면, 모듈화란 무엇인가, 모듈 시스템은 어떤 문제를 해결할 수 있는가 관심사 분리(SoC) 관심사분리는 컴퓨터 프로그램을 고유의 기능으로 나누는 동작을 권장하는 원칙 → 회계 어플리케이션이 있다면 파싱, 분석, 레포트 기능을 모듈이란 각각의 부분으로 분리 가능 장점 개별 기능을 따로 작업할 수 있으므로 팀이 쉽게 협업 가능 개별 부분을 재사용하기 쉬움 전체 시스템을 쉽게 유지보수 가능 정보 은닉 세부 구현을 숨기도록 장려하는 원칙 → 세부 구현을 숨김으로 프로그램의..
표준 함수형 인터페이스를 사용하라 자바가 람다를 지원하면서 API를 작성하는 모범 사례도 변화 템플릿 메서드 패턴 → 함수 객체를 받는 정적 팩터리나 생성자를 제공 protected 메서드인 remvoeEldestEntry를 재정의 하면 캐시로 사용 가능 맵에 새로운 키를 추가하는 put 메서드는 이 메서드를 호출하여 true가 반환되면 가장 오래된 원소를 제거 재정의 removeEldestEntry를 아래와 같이 재정의하면 맵에 새로운 키가 더해질 때마다 가장 오래된 원소를 하나씩 제거 즉 가장 최근 원소 100개를 유지 protected boolean removeEldestEntry (Map.Entry eldest) { return size() > 100; } removeEldestEntry는 siz..
람다가 익명 클래스보다 나은 가장 큰 점은 간결함! 메서드 참조 자바에는 함수 객체를 심지어 람다보다도 더 간결하게 만드는 방법 merge() 해당 메서드는 키, 값, 함수를 인수로 받음 주어진 키가 맵 안에 아직 없다면 {키, 쌍} 저장 반대로 키가 이미 있다면 함수를 현재 값과 주어진 값에 적용한 다음, 그 결과로 현재 값을 덮어씀 즉, {키, 함수의 결과} 쌍을 저장 map.merge(key, 1, (count, incr) -> count + incr); merge()에 메서드 참조 적용하기 map.merge(key, 1, Integer::sum); 람다와 메서드 참조 람다로 할 수 없는 일이라면 메서드 참조로도 할 수 없지만 메서드 참조를 사용하는 편이 보통은 더 짧고 간결 람다로 구현했을 때 너..
함수 객체 예전 자바에서는 함수 타입을 표현할 때 추상 메서드를 하나만 담은 인터페이스를 사용 이런 인터페이스의 인스턴스를 함수 객체라고 하여, 특정 함수나 동작을 나타내는데 사용 함수 객체를 만드는 주요 수단은 익명 클래스 Collections.sort(words, new Comparator() { public int compare(String s1, String s2) { return Integer.compare(s1.length(), s2.length()); } } 익명 클래스의 한계 위 코드에서 Comparator 인터페이스가 정렬을 담당하는 추상 전략을 뜻하며문자열을 정렬하는 구체적인 전략을 익명 클래스로 구현 익명 클래스 방식은 코드가 너무 길다 따라서 자바는 함수형 프로그래밍에 적합하지 않았..
컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커 1장 1.1 컨테이너 인프라 환경이란 컨테이너 인프라 환경은 컨테이너를 중심으로 구성된 인프라 환경 컨테이너란? 하나의 운영 체제 커널에서 다른 프로세스에 영향을 받지 않고 독립적으로 실행되는 프로세스 상태를 의미 이렇게 구현된 컨테이너는 가상화 상태에서 동작하는 프로세스보다 가볍고 빠르게 동작함 컨테이너 인프라 환경의 장점을 이해하려면 서비스의 설계 부분을 살펴보자! 1.1.1 모놀리식 아키텍처 모놀리식 아키텍처는 하나의 큰 목적이 있는 서비스 또는 애플리케이션에 여러 기능이 통합되어 있는 구조를 의미 장점 소프트웨어가 하나의 결합된 코드로 구성되기 때문에 초기 단계에서 설계하기 용이하며 개발이 좀 더 단순하고 코드 관리가 간편 단점 서비스를 운영하는 ..
JDK 자바로 프로그래밍하기 위해서는 먼저 JDK가 설치되어야 한다. JDK에는 JVM과 Java API뿐만 아니라 자바를 개발하는데 필요한 프로그램들이 설치된다. JDK의 bin디렉토리에 있는 주요 실행파일들은 javac.exe - 자바 컴파일러, 자바소스코드를 바이트 코드로 컴파일한다. java.exe - 자바 인터프리터, 컴파일러가 생성한 바이트코드를 해석하고 실행한다. javap.exe - 역어셈블러, 컴파일된 클래스파일을 원래의 소스로 변환한다. 등이 있다. 자바로 프로그램 작성하기 자바코드를 실행하려면 먼저 자바컴파일러(javac.exe)를 사용해서 소스파일(.java)로부터 클래스 파일(.class)을 생성하여한다. 그 다음에 자바 인터프리터(java.exe)로 실행한다. 프로그램 작성 시 ..