Java 4

[JAVA] JAVA는 Call-By-Value? Call-By-Reference?

자바는 Call-By-Value일까, Call-By-Reference일까? 결론부터 말하자면 자바는 Call-By-Value이다. 우리가 흔히 객체를 생성하고 객체를 수정하면 객체 원본의 값도 같이 수정되기 때문에 Call-By-Reference라고 생각하기 쉽다. 예를 위해 클래스를 하나 생성해보겠다. public class CallByTest { private int value; public void setValue(int value) { this.value = value; } public int getValue() { return value; } public static void run(CallByTest a) { a.value = 100; } public static void main(String..

JAVA 2022.02.28

[JAVA] JAVA 컴파일 과정과 JVM

자바의 가장 큰 장점 중에 하나가 하드웨어, 운영체제에 상관없이 컴파일된 코드가 독립적이라는 것이다. 일반적인 프로그램은 Program, OS, H/W가 있지만, 자바는 Program, OS, H/W, JVM이 존재한다. 바로 이 JVM이 CPU, OS에 관여하지 않고 독립적인 실행이 가능하도록 만들어주는 것이다. 자바 컴파일 과정 컴파일 타임 환경 개발자가 소스 코드를 작성한다. (.java 작성) 자바 컴파일러가 자바 소스 코드를 컴파일한다. 이 때 컴파일된 코드는 아직 컴퓨터가 읽을 수 없고 자바 가상 머신이 이해할 수 있는 바이트 코드(.class) 파일이다. 자바 바이트 코드를 JVM의 클래스 로더에게 전달한다. JVM은 크게 클래스 로더, 런타임 데이터 영역, 실행 엔진으로 구분할 수 있다. ..

JAVA 2022.02.27

[JAVA] JAVA는 인터프리터? 컴파일?

JAVA는 인터프리터 언어일까, 컴파일 언어일까? 결론부터 말하자면 JAVA는 인터프리터이면서 컴파일 언어이다. 우선 인터프리터와 컴파일의 차이부터 알아야 한다. 인터프리터 언어 인터프리터는 코드를 한 줄씩 읽어 내려가며 실행하는 프로그램이다. 인터프리터는 자체적으로 실행 기능이 없기 때문에 목적 프로그램(.exe)을 만드는 곳만 컴파일 언어를 사용하고 대부분의 코드는 인터프리터 언어로 작성한다. 실행 시마다 소스 코드를 한 줄씩 읽는 방식이기 때문에 컴파일 언어보다 속도가 느리다. 하지만 인터프리터 언어는 수정이 간단하다는 장점을 가지고 있다. 컴파일 언어는 소스 코드를 번역하여 실행 파일을 만들기 때문에 수정 시 소스 코드를 다시 컴파일해야 한다. 그에 비해 인터프리터 언어는 소스 코드를 수정하여 실..

JAVA 2022.02.27

[JAVA] 자바는 무엇인가?(자바의 특징)

자바는 대표적인 객체지향 프로그래밍 언어 중 하나이다. 자바의 창시자는 캐나다의 소프트웨어 개발자인 제임스 아서 고슬링이며 자바의 아버지라고도 불린다. 자바의 특징 객체지향언어(OOP) 자동 메모리 관리 운영체제에 독립적 멀티쓰레드 지원 동적 로딩 지원 객체지향언어(OOP) 객체지향프로그래밍은 프로그램을 개발하는 기법으로 객체를 만들고 이들을 하나씩 조립, 연결하여 전체 프로그램을 완성하는 것이다. 객체지향 언어의 특징은 추상화, 캡슐화(정보은닉), 상속, 다형성 등이 있다. 자동 메모리 관리 C, C++ 같은 경우 메모리를 할당하였다면 개발자가 메모리를 직접 제거해주어야 한다. 하지만 JAVA는 JVM이 지속적으로 메모리를 감시하며 더이상 사용하지 않는 메모리를 해제시킨다. Garbage Collect..

JAVA 2022.02.27