NullPointerException(NPE) Java 에서 Optional 이 등장한 이유는 바로 NullPointerException 때문이다. NPE로 인해 발생하는 문제들은 다음과 같이 정리된다. 에러의 근원이다 : NPE는 자바에서 가장 흔히 발생하는 에러이다. 코드를 어지럽힌다 : 때로는 중첩된 null 확인 코드를 추가해야 하므로 null 때문에 코드 가독성이 떨어진다. 아무 의미가 없다 : null은 아무 의미도 표현하지 않는다. 특히 정적 형식 언어에서 값이 없음을 표현하는 방법으로는 적절하지 않다. 자바 철학에 위배된다 : 자바는 개발자로부터 모든 포인터를 숨겼다. 하지만 예외가 있는데 그것이 바로 null 포인터다. 형식 시스템에 구멍을 만든다 : null은 무형식이며 정보를 포함하고..
스트림이란 무엇인가? 은 스트림을 '데이터 처리 연산을 지원하도록 소스에서 추출된 연속된 요소(sequence of elements)'로 정의한다. 1) 연속된 요소: 컬렉션처럼 특정 요소 형식으로 이루어진 연속된 값 집합의 인터페이스를 제공하고, 이 연속된 요소에 대한 계산식을 제공함 2) 소스: 컬렉션, 배열, I/O 자원 등 데이터 제공 소스로부터 데이터를 소비한다. 3) 데이터 처리 연산: 함수형 프로그래밍 언어에서 일반적으로 지원하는 연산과 데이터베이스와 비슷한 연산을 지원한다. 보다 더 쉬운 설명으로는 '스트림은 데이터 컬렉션 반복을 멋지게 처리하는 기능이다'라고 정의한다. 스트림의 장점 1) 선언형: 간결하고 가독성이 좋아짐 2) 조립할 수 있음: 유연성이 좋아짐 3) 병렬화: 성능이 좋아짐..
이 글은 서적과 백기선님의 강의를 토대로 작성된 내용입니다.동작 파라미터화 (behavior parameterization)란?에서는 동작 파라미터화를 "아직 어떻게 실행할 것인지 결정하지 않은 코드 블록" 이라고 정의한다. 용어 자체도 직관성이 떨어지고 정의 자체도 자세한 설명을 듣기 전엔 너무 모호해서 이해하는데 한참이 걸렸다. 내가 이해한 동작 파라미터화는 특정 코드 블록이 어떻게 실행될지에 대한 디테일(동작)은 파라미터에 담아서 넘긴 후(파라미터화) 나중에 가서 자세하게 구현하는 행위이다. 그렇다면 왜 디테일을 나중으로 미루자고 하는 것일까? 바로 개발을 하면서 요구사항이 계속 변하기 때문이다. 동작 파라미터화의 의도는 자바 기초 개념인 상속이나 인터페이스의 사용 목적과 결이 비슷하다. 공통 부분..
WORA란 무엇인가? Write once, run anywhere(WORA), 또는 Write once, run everywhere (WORE)은 말 그대로 한 번 작성한 코드를 OS에 종속적이지 않고 어디서든 실행시킬 수 있다는 Java의 특징이다. Sun Microsystems (현 Oracle 소속)에서 Java 언어의 장점을 어필하기 위해 슬로건으로 내세웠다. 즉 Java 프로그램은 어디서든 개발이 가능하고, 어느 디바이스에서도 표준 바이트코드로 컴파일이 되고 JVM이 탑재되어있는 기기라면 어디서든 실행가능하다는 것이 WORA의 본 의미였다. 예를 들면 개발자가 PC에서 개발한 코드를 JVM이 있는 핸드폰, 라우터, 메인프레임 서버 등 여러 곳에서 실행시키는 것이다. (이런 아이디어는 1960년대..
다루는 내용 1. JVM이란 무엇인가 2. JVM의 구성요소 JVM이란 무엇인가 Java Virtual Machine (JVM)은 Java 또는 다른 언어들로 작성된 프로그램을 실행할 수 있도록 하는 가상머신이다. Java는 WORA(Write Once Run Anywhere: 한번 작성된 코드를 수정없이 어디서든 실행할 수 있다) 하도록 설계된 언어인데, 환경과 관계없이 실행될 수 있도록 하드웨어 위에 JVM이라는 가상머신이 있는 것이다. (Java는 정말 WORA할까?) JVM은 Java를 비롯한 여러 프로그래밍 언어(Kotlin, Groovy, 등)로 작성된 바이트코드를 해석하고 실행한다. (바이트코드란 무엇인가) JVM 구성요소 1) 클래스로더 2) 런타임데이터 영역 3) 실행엔진 클래스로더 클래..
이번 글에서 정리하는 내용: 1. Boxing, unboxing, auto-boxing, auto-unboxing 2. Wrapper은 왜 생긴 걸까? 3. OOP를 추구하는 자바 언어 에선 Wrapper 클래스가 있는데 그럼 왜 primitive 자료형이 있는걸까? 2학년 시절 객체라는 개념이 잡히지 않았을 때 대충 같은거겠지 하면서 Wrapper, Primitive 구분하지 않고 막 썼다. 그러다가 여러차례 자바로 프로젝트를 하면서 객체란 대충 이런 구조로 작동하는구나 경험적으로 알아가던 중 평소엔 별 생각없이 넘어가던 부분이 매우 낯설게 보였다. Integer instInt = 1; 이게 도대체 왜 되는거지? Integer은 Object인데 왜 new를 하지 않고도 사용할 수 있는걸까? 궁금증을 풀..
- Total
- Today
- Yesterday
- 2020 KAKAO
- decorator
- behavior parameterization
- okhttp3
- 신규 아이디 추천
- 프로그래밍 모델
- IOC
- 디자인패턴
- jvm
- nginx 내부
- WORE
- 코테
- 카카오
- 스프링 컨테이너
- trie 소스코드
- Kakao Blind
- Java #JIT #JVM
- Java #GC #가비지콜렉터 #Garbage Collector
- 2019 Kakao Blind
- WORA
- 카카오코테
- Java
- 2021
- KAKAO 2021
- 카카오 코테
- 카카오 인턴
- 모던 자바 인 액션
- PatternSyntaxException
- digital tree
- 스프링
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |