오늘은 부트캠프 22일차이다. 드디어 2번째 미니프로젝트 마지막 날이면서 발표하는 날이다. 정말 3일동안 짧은 기간 동안 자바를 이용한 은행 관리 시스템을 만드느라 우리 팀원(김석진, 김익현, 김동현) 너무 고생을 했다. 내가 혹시 많이 부족해서 걱정했었는데 내가 맡은 역할인 계정 생성, 수정, 삭제 기능을 만들었고 모르는 부분은 운이 좋게 구글링을 하면 다 찾을 수 있어서 다행이었다. 이번 프로젝트도 팀원들과 소통이 너무 좋았고, 이것뿐만 아니라 다들 실력이 좋으셔서 되게 편하게 끝나지 않았나 싶다.
오늘 배운 것
1. JDK
-썬 마이크로시스템즈에서 개발한 JAVA 환경에서 돌아가는 프로그램을 개발하는 데 필요한 툴들을 모아놓은 소프트웨어 패키지이다.
2. JRE
-자바 코드를 받아서 필요한 라이브러리와 결합한 다음 이 코드를 실행할 JVM을 시작하는 온디스크 시스템이다.
3. JVM
-자바 바이트코드를 실행할 수 있는 주체이다.
4. 클래스 로딩
-클래스 로더가 .class 파일을 찾고 JVM에 메모리에 올려놓는 것을 의미합니다.
5. static intialize
-정적 메서드와 정적 블록은 객체가 없어도 실행되기에 해당 {} 내에 인스턴스 메서드를 사용할 수 없다. 따라서 정적 메서드와 정적 블록에서 인스턴스 멤버를 사용하기 위해서 객체를 먼저 생성한 뒤 참조 변수로 접근해야 한다.
6. Runtime Data Area
-JVM이 프로그램을 수행하기 위해 운영체제로부터 할당 받는 메모리 영역이다.
7. Method Area(Static Area)
-프로그램 실행 중 클래스가 사용되면 JVM은 해당 클래스 파일을 읽어서 분석하여 클래스의 인스턴스 변수, 메서드 코드 등을 Method Area에 저장한다. 이 때 클래스 변수도 이 영역에 함께 생성된다.
8. Heap
-사용자가 관리하는 인스턴스가 생성되는 공간으로 객체를 동적으로 생성하면 인스턴스가 Heap 영역의 메모리에 할당되어 사용되어진다.
-Heap영역은 Garbage Collection의 대상 되는 영역이다.
9. Garbage Collection
-프로그램을 개발 하다 보면 유효하지 않은 메모리가 발생하는데 JVM의 가비지 콜렉터가 불필요한 메모리를 알아서 정리해준다.
10. Stack
-JVM Stacks : Thead 제어를 위해 사용되는 메모리 영역이다.
-Native Method Stacks : 자바 이외의 이기종 언어에서 제공되는 Method의 정보가 저장 되는 공간
11. 실헹 엔진
-인터프리터(Interpreter) : 바이트 코드를 읽고, 운영체제가 실행할 수 있도록 기계어로 변경하는 역할
-JIT(Just In Time) 컴파일러 : 자주 실행되는 바이트 코드 영역을 런타임 중에 기계어로 컴파일하여 사용하는 것이다.