Java 컴파일 과정 자바의 컴파일 과정은 크게 다섯 단계로 나눌 수 있습니다. 개발자가 작성한 소스코드(.java)부터 시작하여, 실행 가능한 애플리케이션으로 변환될 때까지의 과정을 함께 살펴보겠습니다. 1. 자바 소스코드 작성 모든 것은 개발자가 자바 소스코드(.java 파일)를 작성하는 것으로 시작됩니다. 이 코드는 애플리케이션의 로직을 정의하며, 자바의 문법에 따라 구성됩니다. 2. 자바 컴파일러(Java Compiler)에 의한 컴파일 작성된 소스코드는 자바 컴파일러(javac)에 의해 컴파일됩니다. 컴파일 과정에서 소스코드는 자바 바이트코드(.class 파일)로 변환됩니다. 이 바이트코드는 JVM이 이해할 수 있는 중간 형태로, 아직 기계가 직접 실행할 수는 없습니다. 바이트 코드의 각 명령어..
분류 전체보기
1JVM이란 무엇이고 왜 필요할까? JVM이란? JVM(Java Virtual Machine)은 자바 코드를 컴파일하여 생성된 바이트코드를 실행하는 가상의 실행 환경입니다. 이는 자바 프로그램이 다양한 운영 체제에서 변경 없이 실행될 수 있도록 하여, 개발자가 플랫폼에 구애받지 않고 코드를 작성할 수 있게 해줍니다. JVM은 자동 메모리 관리, 보안 기능, 성능 최적화 등을 제공하여, 개발의 효율성을 높이고 애플리케이션의 안정성과 보안을 강화합니다. JVM의 장점과 특징 플랫폼 독립성 JVM은 다양한 운영 체제에서 동일한 바이트코드를 실행할 수 있게 해줍니다. 개발자는 운영 체제의 차이를 걱정하지 않고 애플리케이션을 개발할 수 있으며, 이는 소프트웨어의 이식성을 크게 향상시킵니다. 보안 JVM은 코드 실..
트랜잭션 안에서 엔티티의 변경이 일어나면, 변경 내용을 자동으로 데이터베스에 반영하는 JPA의 특징입니다. Dirty란 "상태의 변화가 생긴 정도"로 이해할 수 있으며, 즉 Dirty Checking이란 상태 변경 검사를 의미합니다. 더티 체킹의 기준 더티 체킹에서 "변화가 있다"의 기준은 최초 조회 상태입니다. JPA에서는 엔티티를 조회하면 해당 엔티티의 조회 상태 그대로 스냅샷(Snapshot)을 만들어 놓습니다. 그리고 트랜잭션이 끝나는 시점에는 이 스냅샷과 비교해서 다른점이 있다면 Update Query를 데이터베이스로 전달합니다. 당연히 이러한 상태 변경 검사의 대상은 영속성 컨텍스트가 관리하는 엔티티에만 적용됩니다. 즉, Detach된 엔티티(준영속), DB에 반영되기 전 처음 생성된 엔티티(..
이 글은 시니어 멘토님의 피드백을 바탕으로 정리해보며 가상질문을 추가해 정리한 글입니다. 틀린 부분이나, 추가로 나올법한 질문이 있다면 댓글로 남겨주시면 정말 고맙겠습니다. 2-1. 다중 컨테이너 관리 도커 컴포즈는 여러 컨테이너를 하나의 서비스로 정의하고 관리할 수 있습니다. 블루그린 배포 시, 여러 컨테이너를 동시에 업데이트하거나 롤백할 때 편리합니다. 2-2. 환경 설정 도커 컴포즈는 yaml 파일을 사용하여 컨테이너의 환경 설정을 정의합니다. 이를 통해 블루그린 배포 시, 다른 환경 변수, 포트, 볼륨 등을 쉽게 변경할 수 있습니다. 2-3. 스케일링 도커 컴포즈를 사용하면 서비스의 인스턴스 수를 쉽게 조절할 수 있습니다. 블루그린 배포 시, 새로운 버전의 컨테이너를 추가하고 기존 컨테이너를 제거..
이 글은 시니어 멘토님의 피드백을 바탕으로 정리해보며 가상질문을 추가해 정리한 글입니다. 틀린 부분이나, 추가로 나올법한 질문이 있다면 댓글로 남겨주시면 정말 고맙겠습니다. 1. Docker를 왜 사용하나요? 도커는 컨테이너 기술 기반으로 한 오픈소스 가상화 플랫폼입니다. 도커를 사용하는 가장 큰 이유로 환경 독립성이 있습니다. 1-1. 환경 독립성 컨테이너는 애플리케이션을 혼경에 구애받지 않고 실행하는 기술입니다. 서버 운영 시, 서로 다른 환경에서도 동일한 컨테이너 이미지를 실행할 수 있습니다. 예를 들어, 도커를 사용하면 운영체제나 라이브러리의 차이로 인한 문제를 최소화 할 수 있습니다. 1-1-a. 서로 다른 환경에서도 동일한 컨테이너 이미지를 실행할 수 있다고 했는데, 도커 이미지에는 맥에 대한..
1. 문제확인펀딩 생성 성공시 크롬의 개발자도구 콘솔에서 표기되는 createdAt과 DB(RDS mysql)상에서 찍히는 createdAt이 모두 현재시간과 다르게 표기되는 문제를 발견하였다. 위의 사진과 같이 크롬의 개발자도구 콘솔에는 createdAt이 현재시간과 다르게 표기되고있다.이때, DB에서도 콘솔에 찍힌 createdAt과 같은 값이 찍힌것을 확인하였다.콘솔에도, DB에도 한국시간(KST)로 제대로 찍혔어야했는데 다른 시간대로 오기입된것이다. 2. 원인추론 :createdAt은 JPA의 Audit 기능을 사용하여 DB에 값이 저장됐을 때 자동으로 생성된 값이다.따라서, RDS mysql 을 사용중이었기때문에 RDS의 time zone 설정에 문제가 있는지부터 확인하였다. 해결시도 1 : A..