티스토리 뷰

반응형


개발일지 3일차(2018-07-11)

전체 목록, 진행 상황 보기 : 링크 



 JVM 이란? 


JVM 이란 JAVA Virtual Machine, 자바 가상 머신의 약자이다. 

(가상 머신이란, 프로그램을 실행하기 위해 물리적 머신과 유사한 머신을 소프트웨어로 구현한 것이다.)

JVM 역할은 자바 어플리케이션을 클래스 로더를 통해 읽어 들여 자바 API와 함께 실행하는 것이다. 그리고 JVM은 JAVA와 OS 사이에서 중개자 역할을 수행하여 JAVA가 OS에 구애받지 않고 재사용을 가능하게 해준다. 

JVM의 또 하나의 특징은 가장 중요한 메모리관리,Garbage collection을 수행한다. JVM은 스택기반의 가상머신이다. ARM 아키텍쳐 같은 하드웨어는 레지스터 기반으로 동작하는데 비해 JVM은 스택기반으로 동작한다. 


자바 프로그램 실행 과정 

1. 프로그램이 실행되면 JVM은 OS로부터 이 프로그램이 필요로 하는 메모리를 할당받는다. 

JVM은 이 메모리를 용도에 따라 여러 영역으로 나누어 관리한다. 


2. 자바 컴파일러(javac)가 자바 소스코드(j.java)를 읽어들여 자바 바이트코드 (.class)로 변환시킨다. 


3. Class Loader를 통해 class파일들을 JVM으로  로딩한다. 


4. 로딩된 CLASS 파일들은 Execution engine을 통해 해석된다. 


5. 해석된 바이트코드는 Runtime Data Areas에 배치되어 실질적인 수행이 이루어지게 된다. 

이러한 실행과정 속에서 JVM 은 필요에 따라 쓰레드 동기화와 GC같은 관리작업을 수행한다. 



class 기본 문법 

  //package 선언부 

  package review.step1;

  //class 선언부 

  public class Account {

  //객체의 속성 : instance variable ( or Object Member Variable ) 속성 정보 저장 

  private String name;

  //객체의 기능 :  method

  //int money : 매개변수 parameter / local variable 

  public void deposit(int momey){

  //입금하는 기능을 표현 

 

  // private instance variable 에 대한 간접 접근을 위해 

  // gatter 와 setter를 만들 수 있다. 

  //getter method : 정보를 반환받고자 할 때 호출 

  public String getName(){

  return name;

  }

  // setter method : 정보를 다시 할당할 때 호출 '

  public void setName(String n){ // name은 local variable

  // this는 현재 instance(객체)를 가르키는 키워드 

  // this.name을 명시하여 instance 변수임을 알려준다. 

  this.name = name; // n 정보를 instance variable name 에 할당 

  }

  }

  

  

  

  - this keyword 

  : 현재 객체를 가르키는 자바 예약어 

  주로 지역변수와 인스턴스 변수명이 중복될 때 인스턴스 변수를 가르키기 위해 사용된다. 

  ex) public void setName(String name){

  this.name=name;

  }

 

  - import :다른 패키지의 자원을 사용할 때 명시 

  ex) import step1.model.SmartPhon;

  //위 표현은 step1.model 패키지의 SmartPhone 클래스를 현재 클래스에서 사용하겠다는 의미 

  

  - 생성자( constructor )

: 객체 생성시 호출되어 실행되는 클래스 구성 요소

특징 - 클래스명과 동일해야 한다. 

클래스 내에서 생성자를 명시하지 않으면 컴파일시에 기본 생성자가 자동삽입된다. 

생성자를 명시하는 주된 목적은 객체 생성시 필요한 정보를 전달받기 위해서다.


- 클래스 구성요소 

package 

import 

class

instance variable 

Constructor

method

Java 의 Data Type 

ex) primitive data type

기본형 데이터 타입에는 정수형, 실수형, 문자형, 논리형으로 구성된다. 

1byte 2byte 4byte 8byte

정수형 byte short int long

실수형     float double

문자형 char

논리형 boolean

ex) reference data type

참조형 데이터 타입 - 객체의 타입을 말한다. ( 클래스명 )

참조형 데이터 타입이란 객체를 참조하는 변수의 타입을 말한다.  

Person p = new Person();

위 코드의 p 변수 앞의 Person을 참조형 데이터 타입이라 한다. 

** 객체 초기화 단계**

RegDate date = new RegDate(2018,7,11);

1. 인스턴스 변수의 기본 초기화 

정수형은 0 

참조형은 null 

논리형은 false 

2. 인스턴스 변수의 명시적 초기화 

인스턴스 변수가 private int day=1; 과 같이 데이터를 초기화하면 메모리에 할당된다.

3. 생성자에 의한 초기화 

**java memory 영역**

stack 영역 : local variable이 저장되는 영역  

선입후출(FILO:First in Last out)

heap 영역 : 객체의 속성 정보가 저장되는 영역 

instance variable의 data 가 저장되는 영역 

해당 객체의 주소값을 생성하여 참조 한다. 



반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크