자바는 수많은 프로그래밍 언어 중 하나로 가장 범용적으로 사용되는 언어 중 하나이며 아래와 같은 특징을 가지고 있다.객체지향 언어플랫폼 독립적간단함분산 프로그래밍 지원멀티 스레드이와 같은 Java의 특징을 자세히 알아보자.객체지향이라는 단어의 의미는 실세계의 모든 것들
Java의 메모리 구조 그림 출처 : https://hongsii.github.io/2018/12/20/jvm-memory-structure/ Java는 위와 같은 메모리 구조를 가지며 각 영역은 각각의 역할을 가진다. Thread 영역은 메소드가 쓰레드를 할당받
우선 객체란 무엇일까?객체는 실생활에 있는 어떤 사물이나 행동을 소프트웨어에 논리적/물리적으로 실체화한 것이다.그렇다면 인스턴스란?이 객체를 사용하게 위해서 실제 메모리를 할당받고 물리적으로 실체화한 것이다.정확한 설명일지는 모르겠지만, 내가 생각하는 두 개념의 정의에
객체지향에서 상속이란 하나의 클래스가 다른 클래스의 자원을 상속받아 설계되는 것을 의미한다. 실세계의 의미와 비슷하게 상속받는 클래스를 자식 클래스, 상속해주는 클래스를 부모 클래스라고 한다. 상속은 부모클래스의 필드, 메소드, 생성자 등을 그대로 가져다 쓰기 때문에
인터페이스란 다양한 클래스의 공통 기능을 미리 정리해놓은 기능 설계도라고 볼 수 있다.따라서 객체를 사용하는 개발자 입장에서는 이 객체가 구현하는 인터페이스만 보더라도 이 객체의 사용방법을 이해할 수 있다. 그리고 다형성의 측면에서도 개발자가 이 인터페이스의 메소드를
예외(Exception)란 무엇일까? 사용자의 잘못된 조작이나 개발자의 잘못된 코딩으로 발생하는 프로그램 오류를 말한다. 예외가 발생하면 프로그램은 바로 종료된다. 하지만 예외 처리를 해줌으로써 프로그램이 종료되지 않고 다른 동작을 하게끔 할 수 있다.자바에서 예외는
자바에서 멀티 스레드를 활용하는 법을 알아보자!
자바에서 사용되는 다양한 컬렉션 클래스나 함수형 프로그래밍 관련 클래스들에서는 제네릭 타입으로 많은 파라미터들이 선언되어 있다. 따라서 자바를 제대로 이해하려면 제네릭에 대해서 확실히 알고 넘어가야 한다.그렇다면 제네릭을 사용하는 이유는 무엇일까? 첫 번째로 제네릭을
함수평 프로그래밍은 프로그래밍 패러다임의 하나로 자료를 특정 상태를 바꾸는 것이 아닌 함수를 구현하여 실행하고 결과를 얻는 방식으로 처리하는 프로그래밍 기법이다. 함수형 프로그래밍은 병렬 처리와 이벤트 지향 프로그래밍에 적합하기에 자바 8부터 지원하기 시작했다.함수형
배열은 기본적으로 크기와 타입이 고정적이기 때문에 동적인 작업을 위한 자료구조로는 부적합하다. 자바에서는 이러한 배열을 문제점을 해소하기 위해 기본적인 자료구조 형태의 컬렉션 프레임워크를 지원하고 있다.컬렉션 프레임워크는 특정 객체들을 저장, 검색, 삭제 등의 작업을
스트림이란 컬렉션의 저장 요소를 하나씩 참조하여 람다식으로 처리할 수 있도록 해주는 반복자이다. iterator와 비슷하다고 생각이 들 수도 있다. 하지만 iterator는 자체적으로 반복하지 않고 외부의 반복자가 필요하다. 반면에 스트림은 내부 반복자로 람다식으로 처
Spring에서 지원하는 주요 개념인 DI(Dependency Injection)는 의존성 주입의 약어로 인스턴스를 만들지 않더라도 스프링 컨텍스트에 등록된 빈의 인스턴스를 생성해주는 것으로 잘 알려져있다.실제 DI가 어떤 식으로 구현되어 있고 동작하는지 백기선님의 J