TIL(15)
-
JVM
◎ JVM(Java Virtural Machine) -> 자바로 작성한 코드를 해석하여 실행하는 프로그램 -> 개발자가 자바로 코드를 작성하면 그것을 컴파일러가 바로 기계어로 변환하여 전달하는 것이 아니라 컴파일러에서 바이트 코드로 변환 후 JVM으로 가서 JVM에서 각 운영체제에 맞는 기계어로 변환하여 프로그램을 실행하게 한다 -> 이런 이유로 자바는 운영체제에 독립적인 언어라고 했었다. -> 개발자가 자바 코드를 작성하면 컴파일러가 컴파일을 하여 .class 확장자의 바이트 코드를 만든다. JVM은 운영체제로부터 코드 실행에 필요한 메모리를 할당받는다(Runtim data area). 이후 클래스 로더가 바이트 코드 파일을 JVM에 받아 런타임 데이터 영역에 적재하고, 이를 로드라한다. 로드가 끝나면..
2023.01.10 -
스레드
◎ 프로세스 -> 사용자가 어떤 애플리케이션을 실행하면 운영체제가 해당 애플리케이션에게 메모리를 할당하면, 이 애플리케이션이 실행된다. 이렇게 실행 중인 애플리케이션을 프로세스라 한다. -> 프로세스 내 실행되는 소스코드의 흐름을 스레드라고 한다. -> 프로세스는 단 하나의 스레드를 가질 수 있고, 여러 개의 스레드를 가질 수 있다. -> 단 하나의 스레드를 가지고 있다면 해당 프로세스는 싱글 스레드 프로세스라고 한다. -> 여러 개의 스레드를 가지고 있다면 해당 프로세스는 멀티 스레드 프로세스라고 한다. -> 메신저 애플리케이션은 멀티 스레드로 동작하는 대표적인예로 메시지를 보내는 것과 동시에 파일을 업로드 혹은 다운로드할 수 있다. ◎ 스레드 -> 프로세스는 컴퓨터 자원, 데이터, 스레드로 구성된다...
2023.01.10 -
파일 입출력(I/O)
◎ 스트림 -> 자바에서 모든 입출력은 스트림을 통해 이루어진다. -> 입출력 장치는 다양하기 때문에 입출력 부분을 모두 다르게 구현을 하면 프로그램의 호환성이 떨어질 수 있다. 이런 문제를 해결하기 위해 자바에서 입출력 장치와 무관하고 일과성있게 프로그램을 구현할 수 있도록 일종의 가상 통로인 스트림을 제공한다. ◎ 입력 스트림과 출력 스트림 -> 입력 스트림 : 어떤 대상으로부터 자료를 읽어올 때 사용하는 스트림. -> 출력 스트림 : 어떤 파일에서 자료를 읽을 때 사용하는 스트림 -> 스트림은 단방향으로 자료가 이동하기 때문에 입력과 출력을 동시에 할 수 없다. ◎ InpuStream, OutputStream -> InputStream : 바이트 단위로 읽는 스트림 중 최상위 스트림 -> Outpu..
2023.01.09 -
애너테이션, 람다, 스트림
◎ 애너테이션 -> 소스코드가 컴파일되거나 실행될 때 컴파일러 및 다른 프로그램에게 필요한 정보를 전달하는 문법요소다. -> 주석은 개발자에게 정보를 전달하는 기능을 한다면, 애너테이션은 다른 프로그램에게 정보를 전달하는 기능을 한다. -> 대표적으로 인터페이스의 추상메서드를 구현 클래스에서 메서드를 재정의할 때 사용되는 @Override 애너테이션이 있다. 이 애너테이션은 컴파일러에게 해당 메서드가 상위 클래스의 메서드를 재정의하거나 추상 메서드를 구현했음을 알리는 기능을 한다. -> 애너테이션에는 표준 에너테이션과 사용자 에너테이션이 있다. -> 표준 애너테이션 : JDK에 내장되어 있는 일반적인 애너테이션 -> 메타 애너테이션 : 다른 애너테이션을 정의할 때 사용되는 애너테이션 ◎ 표준 애너테이션 ..
2023.01.06 -
컬렉션 프레임워크
◎ 컬렉션 -> 다양한 데이터들의 집합 ◎ 컬렉션 프레임워크 -> 컬렉션을 편리하게 다루도록 메서드들을 미리 정의해 놓은 것 -> 컬렉션 프레임워크의 주요 인터페이스는 List, Set, Map이다. -> List : 데이터의 순서가 유지되고, 중복 저장이 가능한 컬렉션을 구현할 때 사용 -> Set : 데이터의 순서가 유지되지 않고, 중복 저장이 불가능한 컬렉션을 구현할 때 사용 -> Map : 키(key)와 값(value)의 쌍으로 저장되며 데이터의 순서가 유지되지 않고, 키는 값을 식별해야 하므로 중복을 허용하지 않고, 값은 중복 저장이 가능하다. -> List와 Set은 Collection인터페이스로 묶인다. List와 Set의 공통점이 추출되어 추상화된 것이 Collection인터페이스다. ◎ ..
2023.01.05 -
열거형, 예외처리
◎ 열거형 -> 여러 상수들을 편리하게 선언할 수 있는 자바의 문법 요소 -> 주로 몇 가지로 한정된 변하지 않는 데이터를 다룰때 사용한다. -> JDK 1.5이전 버전에서는 enum문법을 지원하지 않아 여러 상수를 정의하기 위해 public static final로 전약변수로 상수를 설정하여 사용했다. public static final int SPRING = 1; public static final int SUMMER = 2; public static final int FALL = 3; public static final int WINTER = 4; -> 하지만 위의 방식처럼 상수를 정의할 때 정수를 할당하면 상수명이 중복되는 문제가 발생했다. public static final int SPRING ..
2023.01.04