전체 글

자바(Java)는 객체 지향적이며, 이식성이 뛰어나고, 안정성과 보안성이 높은 프로그래밍 언어입니다. 자바의 역사 자바의 역사는 1991년에 썬 엔지니어들에 의해 고안된 오크(Oak)라는 언어에서 시작되었습니다. 자바의 원래 목표는 가전제품에 탑재될 소프트웨어를 만드는 것이었습니다. 자바란 자바는 객체 지향 프로그래밍 언어로 대규모 소프트웨어 개발을 하고 있습니다. 자바는 주로 서버 프로그래밍, 안드로이드 앱 개발, 웹 프로그래밍, 게임 개발, 빅데이터 등 다양한 분야에서 사용됩니다. 자바로 소프트웨어를 개발할 때의 가장 이점 중 하나는 이식성입니다. 자바는 다양한 운영체제와 하드웨어에서 동작하며, 가상 머신(Virtual Machine)을 사용하여 이식성이 높은 언어입니다. 자바의 주요 목표는 "한 번..
✏️[모던 자바 인 액션, 전문가를 위한 자바 8, 9, 10 기법 가이드] 스터디 관련 책 내용을 정리한 글입니다. 📌 이 장의 내용 자바가 진화해야 한다는 여론으로 자바가 모듈 시스템을 지원하기 시작함 주요 구조 : 모듈 declarations, requires, exports 지시어 기존 자바 아카이브(JAR)에 적용되는 자동 모듈 모듈화와 JDK 라이브러리 모듈과 메이븐 빌드 기본적인 requires, exports 외의 모듈 지시어 간단 요약 자바 9에서 추가된 모듈 시스템은 프로젝트를 모듈로 분리하고 모듈 간 의존성을 명시하는 기능입니다. 이 기능을 통해 개발자는 모듈 간 의존성 충돌 문제를 해결하고 불필요한 라이브러리 의존성을 제거할 수 있습니다. 또한 모듈 시스템을 이용해 애플리케이션의 실..
✏️[모던 자바 인 액션, 전문가를 위한 자바 8, 9, 10 기법 가이드] 스터디 관련 책 내용을 정리한 글입니다. 📌 이 장의 내용 디폴트 메서드란 무엇인가? 진화하는 API가 호환성을 유지하는 방법 디폴트 메서드의 활용 패턴 해결 규칙 자바 8에서는 인터페이스 변경으로 인한 문제를 해결하기 위해 기본 구현을 포함하는 인터페이스를 정의할 수 있는 방법을 제공합니다. 정적 메서드와 디폴트 메서드 기능을 사용하여 인터페이스에 메서드 구현을 포함시킬 수 있습니다. 이를 통해 기존 인터페이스를 구현하는 클래스는 새로운 메서드의 디폴트 메서드를 자동으로 상속받아, 기존 코드를 변경하지 않고도 인터페이스를 수정할 수 있습니다. List 인터페이스의 sort와 Collection 인터페이스의 stream 메서드가..
✏️[모던 자바 인 액션, 전문가를 위한 자바 8, 9, 10 기법 가이드] 스터디 관련 책 내용을 정리한 글입니다. 📌 이 장의 내용 자바 8에서 새로운 날짜와 시간 라이브러리를 제공하는 이유 사람이나 기계가 이해할 수 있는 날짜와 시간 표현 방법 시간의 양 정의하기 날짜 조작, 포매팅, 파싱 시간대와 캘린더 다루기 기존 자바 API의 날짜와 시간 관련 기능은 불편하고 모호했으며, Date 클래스는 실제로 밀리초 단위의 특정 시점을 표현하는 클래스였습니다. 하지만 자바 8에서는 새로운 날짜와 시간 API가 도입되어, 이전에 있었던 문제들을 개선하고 자바 개발자들이 보다 쉽게 날짜와 시간을 다룰 수 있게 되었습니다. 다음은 자바 9의 릴리스 날짜인 2017년 9월 21일을 가리키는 Date 인스턴스를 만..
✏️[모던 자바 인 액션, 전문가를 위한 자바 8, 9, 10 기법 가이드] 스터디 관련 책 내용을 정리한 글입니다. 📌 이 장의 내용 null 참조의 문제점과 null을 멀리해야 하는 이유 null 대신 Optional : null로부터 안전한 도메인 모델 재구현하기 Optional 활용 : null 확인 코드 제거하기 Optional에 저장된 값을 확인하는 방법 값이 없을 수도 있는 상황을 고려하는 프로그래밍 11.1 값이 없는 상황을 어떻게 처리할까? 11.1.1 보수적인 자세로 NullPointerException 줄이기 대부분의 프로그래머들은 null 예외 문제를 해결하기 위해 필요한 곳에 다양한 null 확인 코드를 추가합니다. 더욱 보수적인 프로그래머들은 반드시 필요하지 않은 경우에도 nul..
✏️[모던 자바 인 액션, 전문가를 위한 자바 8, 9, 10 기법 가이드] 스터디 관련 책 내용을 정리한 글입니다. 📌 이 장의 내용 도메인 전용 언어(domain-specific languages, DSL)란 무엇이며 어떤 형식으로 구성되는가? DSL을 API에 추가할 때의 장단점 JVM에서 활용할 수 있는 자바 기반 DSL을 깔끔하게 만드는 대안 최신 자바 인터페이스와 클래스에 적용된 DSL에서 배움 효과적인 자바 기반 DSL을 구현하는 패턴과 기법 이들 패턴을 자바 라이브러리와 도구에서 얼마나 흔히 사용하는가? 10.1 도메인 전용 언어 DSL은 특정 비즈니스 도메인의 문제를 해결하기 위해 만든 언어로, 자바에서는 클래스와 메서드를 이용하여 도메인을 표현합니다. DSL은 해당 도메인을 인터페이스로..
✏️[모던 자바 인 액션, 전문가를 위한 자바 8, 9, 10 기법 가이드] 스터디 관련 책 내용을 정리한 글입니다. 📌 이 장의 내용 람다 표현식으로 코드 리팩터링하기 람다 표현식이 객체지향 설계 패턴에 미치는 영향 람다 표현식 테스팅 람다 표현식과 스트림 API 사용 코드 디버깅 이 장에서는 기존의 자바 코드를 활용하여 새로운 프로젝트를 시작하는 상황에서 람다 표현식과 스트림 API를 활용하여 가독성과 유연성을 높이는 방법에 대해 설명합니다. 이를 위해 전략, 템플릿 메서드, 옵저버, 의무 체인, 팩토리 등의 객체지향 디자인 패턴을 어떻게 간소화할 수 있는지 살펴보고, 람다 표현식과 스트림 API를 사용하는 코드를 테스트하고 디버깅하는 방법도 설명합니다. 9.1 가독성과 유연성을 개선하는 리팩터링 9..
✏️[모던 자바 인 액션, 전문가를 위한 자바 8, 9, 10 기법 가이드] 스터디 관련 책 내용을 정리한 글입니다. 이 장의 내용 8.1 컬렉션 팩토리 8.1.1 리스트 팩토리 8.1.2 집합 팩토리 8.1.3 맵 팩토리 8.2 리스트와 집합 처리 8.2.1 removeIf 메서드 8.2.2 replaceAll 메서드 8.3 맵 처리 8.3.1 forEach 메서드 8.3.2 정렬 메서드 8.3.3 getOrDefault 메서드 8.3.4 계산 패턴 8.3.5 삭제 패턴 8.3.6 교체 패턴 8.3.7 합침 8.4 개선된 ConcurrentHashMap 8.4.1 리듀스와 검색 8.4.2 계수 8.4.3 집합뷰
✏️[모던 자바 인 액션, 전문가를 위한 자바 8, 9, 10 기법 가이드] 스터디 관련 책 내용을 정리한 글입니다. 이 장의 내용 7.1 병렬 스트림 병렬 스트림이란, 각각의 스레드에서 처리할 수 있도록 스트림 요소를 여러 청크로 분할한 스트림입니다. 따라서, 병렬 스트림을 이용하면 모든 멀티코어 프로세서가 각각의 청크를 처리하도록 할당할 수 있습니다. 예를 들어, 숫자 n을 인수로 1부터 n까지의 모든 숫자의 합계를 반환하는 메서드를 다음처럼 구현할 수 있습니다. public long sequentialSum(long n) { return Stream.iterate(1L, i -> i + 1) // 무한 자연수 스트림을 생성합니다. .limit(n) // n개 이하로 제한 .reduce(0L, Lon..
✏️[모던 자바 인 액션, 전문가를 위한 자바 8, 9, 10 기법 가이드] 스터디 관련 책 내용을 정리한 글입니다. 이 장의 내용 6.1 컬렉터란 무엇인가? 6.1.1 고급 리듀싱 기능을 수행하는 컬렉터 6.1.2 미리 정의된 컬렉터 6.2 리듀싱과 요약 6.2.1 스트림값에서 최댓값과 최솟값 검색 6.2.2 요약 연산 6.2.3 문자열 연결 6.2.4 범용 리듀싱 요약 연산 6.3 그룹화 6.3.1 그룹화된 요소 조작 6.3.2 다수준 그룹화 6.3.3 서브그룹으로 데이터 수집 6.4 분할 6.4.1 분할의 장점 6.4.2 숫자를 소수와 비소수로 분할하기 6.5 Collector 인터페이스 6.5.1 Collector 인터페이스의 메서드 살펴보기 6.5.2 응용하기 6.6 커스텀 컬렉터를 구현해서 성..
규니95
Gyunny