JVM의 JIT 컴파일러
·
개발
컴파일러와 인터프리터 컴파일러와 인터프리터는 둘 다 High-Level Language를 기계어로 변환하는 역할을 수행한다.그러나 컴파일러는 소스코드 전체를 실행 전에 기계어로 변환하지만, 인터프리터는 코드를 실행 도중에 변환한다는 차이점이 있다. 컴파일이 완료된 실행 파일은 인터프리터 방식보다 더 빠르게 실행할 수 있다.문법 오류 같은 예외는 컴파일 에러를 발생시킴으로써 초기에 발견할 수 있기도 하다.그러나, 코드가 수정될 때마다 소스코드 전체를 다시 컴파일해야 한다는 단점이 있다. 인터프리터 방식은 전체 코드를 다시 컴파일 할 필요가 없기 때문에, 코드 수정이 용이하다.또한, 시스템 간의 이식성이 뛰어나다.그러나, 매번 변환 과정을 거치기 때문에 실행 속도가 컴파일 방식에 비해 느리다. 자바 컴..
JVM과 자바의 메모리 관리
·
개발
이전 포스트에서 이어지는 내용입니다! 자바 칩 프라푸치노이번 포스트에서는 필자가 가장 좋아하는 언어인 Java를 알아보자! Java Java : 1995년 발표된 제임스 고슬링과 연구원들이 개발한 객체 지향 프로그래밍 언어 자바는 다음과 같은 영역에서 주로 사sleepzzz214.tistory.com JVM 동작 과정 JVM (Java Virtual Machine) : 자바 가상 머신 자바 컴파일러(javac)은 자바 소스코드(.java)를 클래스 파일(.class)로 변환한다.JVM은 이러한 클래스 파일(바이트 코드)을 운영체제에 상관 없이 실행한다.JVM만 설치하면 어떤 운영체제에서든 Java 파일을 실행할 수 있는 것이다. 클래스 파일은 실행되기 위해 JVM의 클래스 로더(Class Loade..
자바 칩 프라푸치노
·
개발
이번 포스트에서는 필자가 가장 좋아하는 언어인 Java를 알아보자! Java Java : 1995년 발표된 제임스 고슬링과 연구원들이 개발한 객체 지향 프로그래밍 언어 자바는 다음과 같은 영역에서 주로 사용된다.웹 개발 (특히 백엔드)안드로이드 애플리케이션게임 개발데이터베이스 시스템빅데이터에 대한 분산 처리 기술 그러나, 자바는 다음과 같은 영역에서는 잘 사용하지 않는다.시스템 프로그래밍높은 성능(빠른 실행 속도)을 요구하는 프로젝트iOS 애플리케이션 Java 코드 실행 JDK (Java Development Kit) : 자바 프로그래밍의 필수 도구로, 코드 작성 툴과 컴파일러 등으로 이루어져 있다.JRE (Java Runtime Environment) : 자바 파일을 실행할 수 있는 최소한의 파일들이 ..
[Challenge.with] 엔티티를 어떻게 정의할까?
·
개발
스프링에서는 클래스에 @Entity 어노테이션을 붙임으로써 엔티티를 만들 수 있다.JPA가 엔티티 클래스를 보고 데이터베이스에 쓰일 필드와 엔티티들 간의 연관 관계를 자동으로 정의해준다. @Entity@AllArgsConstructor(access = AccessLevel.PRIVATE)@NoArgsConstructor(access = AccessLevel.PROTECTED)@Getter@Builderpublic class Notification extends BasicEntity{ @Id @Column(nullable = false, unique = true) @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id;..
[ 김영한 스프링 강의 : 스프링 핵심 원리 - 기본편 ] 09. 빈 스코프
·
개발
이전 포스트에서 이어지는 내용입니다! [ 김영한 스프링 강의 : 스프링 핵심 원리 - 기본편 ] 08. 빈 생명주기 콜백이전 포스트에서 이어지는 내용입니다! [ 김영한 스프링 강의 : 스프링 핵심 원리 - 기본편 ] 07. 의존관계 자동 주입이전 포스트에서 이어지는 내용입니다! [ 김영한 스프링 강의 : 스프링 핵sleepzzz214.tistory.com 빈 스코프란? 빈 스코프 : 빈이 존재할 수 있는 범위 싱글톤 : 기본값으로, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다. 프로토타입 : 스프링 컨테이너가 빈의 생성과 의존 관계 주입까지만 해주고, 더는 관리하지 않는 매우 짧은 범위의 스코프이다.웹 관련 request : 웹 요청이 들어오고 나갈때 까지 유지되는 스..
[ 김영한 스프링 강의 : 스프링 핵심 원리 - 기본편 ] 08. 빈 생명주기 콜백
·
개발
이전 포스트에서 이어지는 내용입니다!  [ 김영한 스프링 강의 : 스프링 핵심 원리 - 기본편 ] 07. 의존관계 자동 주입이전 포스트에서 이어지는 내용입니다!  [ 김영한 스프링 강의 : 스프링 핵심 원리 - 기본편 ] 06. 컴포넌트 스캔이전 포스트에서 이어지는 내용입니다!   [ 김영한 스프링 강의 : 스프링 핵심 원sleepzzz214.tistory.com   스프링 빈 라이프사이클 대부분의 애플리케이션은 데이터베이스 커넥션 풀, 네트워크 소켓 등의 외부 서비스를 애플리케이션 실행 시작 시점에 미리 연결해두며, 애플리케이션 종료 시점에 연결을 모두 종료한다.이를 위해서는 객체의 초기화 및 종료 작업이 필요하다.스프링은 객체의 생성 시점과 종료 시점에 호출할 메서드를 편리하게 지정할 수 있는 기능을..
Java에서 여러 자료구조 구현하기
·
개발
Java Collection Framework (JCF) 이번 글에서는 Java로 코딩테스트를 볼 때에 자주 쓰이는 여러 자료구조를 구현할 때, 어떤 인터페이스와 어떤 구현 클래스를 사용해야 할지를 정리하려고 한다.여러 자료구조 역할을 수행하는 인터페이스와 그 인터페이스를 구현하는 여러 구현체들에 대해 완전히 파악해보자!  Java Collection Framework (JCF) : 여러 개의 데이터를 효율적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스 집합JCF 덕분에, 자바에서는 리스트, 큐, 스택과 같은 자료구조를 쉽게 구현할 수 있다. 각각의 자료구조 역할을 수행하는 인터페이스와 해당 인터페이스를 구현하는 여러 구현 클래스들에 대해 알아보자! List List : 순차적으로 데이터를 저장하..
[ 김영한 스프링 강의 : 스프링 핵심 원리 - 기본편 ] 07. 의존관계 자동 주입
·
개발
이전 포스트에서 이어지는 내용입니다! [ 김영한 스프링 강의 : 스프링 핵심 원리 - 기본편 ] 06. 컴포넌트 스캔이전 포스트에서 이어지는 내용입니다! [ 김영한 스프링 강의 : 스프링 핵심 원리 - 기본편 ] 05. 싱글톤 컨테이너이전 포스트에서 이어지는 내용입니다! [ 김영한 스프링 강의 : 스프링 핵심sleepzzz214.tistory.com 다양한 의존 관계 주입 방법 의존 관계 주입 방법에는 다음과 같은 4가지 방법이 있다.생성자 주입수정자 주입 (setter)필드 주입일반 메서드 주입 이러한 의존 관계 자동 주입은 스프링 빈 내에서만 동작한다.즉, 스프링 빈이 아닌 클래스에서 @Autowired 어노테이션을 적용해봤자, 아무 기능도 동작하지 않는다. 생성자 주입 생성자 주입 ..