공부노트/자바

    JVM 구조 및 메모리 구조

    JVM 구조 및 메모리 구조

    JVM 이란 JVM(Java Virtual Machine)이란 Java 어플리케이션을 실행하는 프로그램입니다. JRE(Java Run Environment) 의 한 부분으로 JVM은 main 메서드를 java code 에서 실행시키는 주체입니다. 그리고 .java파일에서 컴파일된 결과인 .class 파일들을 load, link, initialize 합니다. Class Loader 클래스로더는 JVM 의 하위시스템으로 class 파일들을 메모리로 로드하는 역할입니다. Java 프로그램을 실행시킬 때 클래스로더를 통해 class 파일을 메모리로 로드합니다. Java 에서는 3가지 클래스로더들이 있습니다. Bootstrap ClassLoader Extension ClassLoader System ClassLo..

    OOP 설계 실습

    OOP 설계 실습

    첫째, 비지니스 요구사항 정리 정책적으로 확실한 것과 변경가능성이 높은 지점들도 파악한다. # 비지니스 요구사항 ## 회원 - 회원을 가입하고 조회할 수 있다 - 회원은 일반과 VIP 두 가지 등급이 있다 - 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다.(미확정) ## 주문과 할인 정책 - 회원은 상품을 주문할 수 있다 - 회원 등급에 따라 할인 정책을 적용할 수 있다 - 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용한다. (나중에 변경될 수 있다) - 할인 정책은 변경 가능성이 높음. 회사의 기본할인 정책을 아직 정하지 못했고, 오픈 직전까지 고민을 미루고 싶다. 최악의 경우 할인을 적용하지 않을 수 있다. (미확정) 둘째, 개발 설계 요구사항을..

    OOP(Object Oriented Programming)와 SOLID 원칙

    객체 지향 프로그래밍 프로그램을 단순한 명령어의 나열로 보는 것이 아니라, 각 독립된 단위인 객체들의 구성으로 보고 설계를 하는 것이다. 독립된 객체들은 각 역할을 맡고 있고, 유기적으로 객체 간 메시지로 소통하여 데이터를 처리한다. 객체 지향 프로그래밍의 이점은 유연하고 변경에 용이하다. 왜냐하면 독립적인 단위로 나눠져 있다보니 조립하듯 쉽게 교체 및 변경이 쉽다. 사람이 사물을 인지하고 사용하는 방식과 유사하게 설계를 할 수 있어서, 설계를 이해하기 쉽다. 객체 지향 특징 추상화,캡슐화,상속,다형성이 있지만 다형성이 중요하다. 다형성 역할과 구현으로 구분하여, 하나의 역할에 여러 구현체들을 사용할 수 있다는 것이다. 기존 설계를 유지하면서 세부적인 기능들을 변경하기 쉽다. 실세계 예시를 들면, 운전자..

    Java는 Call By Reference가 없다. Object 참조만 있을 뿐.

    Java는 Call By Reference가 없다. Object 참조만 있을 뿐.

    SNS에서 지나가다 본 피드였는데, 면접 때 Java 에서 Call By Reference를 설명해보라고해서 JAVA 에서는 Call by value만 있다고 했다가 면접을 떨어졌다든 출처불명의 이야기를 들을 수 있었다. 옆사람에게 Java 에서는 Call By Value만 있는지 Java Code로 설명해보려다 Object 참조와 헷갈려서 제대로 설명을 못했다. 그러다 주말에 언뜻 생각나서 정리해보려고 메모리 구조를 그려보며 C언어 방식과 비교하니 다시 이해가 되었다. Call By Refercne란 함수 호출 시, 매개변수에는 '메모리 주소'가 복사되어 할당된다. 이렇게 하면, 메모리 주소를 통해 메모리 저장소에 접근하여 값을 변경할 수 있다. Call By Value란 함수 호출 시, 매개변수에는 ..