2021.05.09 - [Study/Java Study] - 자바 스터디 시작 (0)
자바란 무엇인가?
자바란 객체지향 프로그래밍 언어이다.
자바언어의 특징은
1. 운영체제에 독립적이다.
자바 응용프로그램은 운영체제나 하드웨어가 아닌 JVM하고만 통신하고, JVM은 자바 응용프로그램으로부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달한다. 자바는 운영체제에 독립적이지만 JVM은 운영체제에 종속적이다.
2. 객체지향 언어이다.
자바는 객체지향 프로그래밍언어 중의 하나로 객체지향개념의 특징인 상속, 캡슐화, 다형성이 잘 적용된 순수한 객체지향언어이다.
3. 자동 메모리 관리 (Garbage Collection)
자바로 작성된 프로그램이 실행되면, 가비지컬렉터가 자동적으로 메모리를 관리해주기 때문에 프로그래머는 메모리를 따로 관리 하지 않아도 된다.
4. 네트워크와 분산처리를 지원한다.
Java API를 통해 비교적 짧은 시간에 네트워크 관련 프로그램을 쉽게 개발 할 수 있도록 지원한다.
5. 멀티쓰레드를 지원한다.
일반적으로 멀티쓰레드의 지원은 사용되는 운영체제에 따라 구현방법과 처리방식이 다른데, 자바에서 개발되는 멀티쓰레드 프로그램은 시스템과 관계없이 구현가능하며, 관련된 라이브러리(Java API)가 제공되어 구현이 쉽다.
또, 자바 인터프리터가 여러 쓰레드에 대한 스케줄링을 담당한다.
6. 동적 로딩을 지원한다.
자바는 동적 로딩을 지원하기 때문에 실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용할 수 있다.
JVM이란 무엇인가?
JVM(Java Virtual Machine) 이란 Java Byte Code를 OS에 맞게 해석 해주는 역할을 한다.
아래의 그림을 보자. java source를 입력하면( *.java) java compiler가 java byte code( *.class) 로 변환을 시켜준다.
하지만 bytecode는 기계어가 아니기 때문에 JVM이 os가 이해할 수 있도록 해석해준다.
JVM 구성요소
컴파일 하는 방법
컴파일이란 *.java 파일을 *.class(byte code)로 만드는 것을 의미한다.
JDK(Java Development Kit)를 설치하면 JVM과 Java API외에 필요한 프로그램들이 설치되는데, bin 폴더 안에 javac라는 java complier가 포함되어 있다. 그래서 컴파일할 자바 파일 위치로 이동한 후 javac 명령어를 이용해 컴파일 할 수 있다. 만약 패키지 별로 컴파일 할 경우 상위 패키지로 이동 후 -d 옵션을 이용하여 한 번에 처리할 수 있다.
실행하는 방법
class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
위와 같이 소스파일(HelloWorld.java)을 작성했을때, 먼저 자바컴파일러(javac.exe)를 사용해서 소스파일(HelloWorld.java)로부터 클래스파일(HelloWorld.class)을 생성해야한다. 그 다음에 자바 인터프리터(java.exe)로 실행한다.
HelloWorld.java 작성 -> javac.exe 컴파일 -> HelloWorld.class 생성 -> java.exe 실행 -> "Hello, World!" 출력
바이트코드란?
CPU가 이해할 수 있는 언어가 바이너리 코드라면 바이트코드는 가상머신이 이해할 수 있는 0과 1로 구성된 이진코드를 의미한다.
예시)
다음과 같은 자바소스코드를 컴파일하면
이렇게 기계가 이해하기 쉬운 코드가 된다.
JIT컴파일러란 무엇이며 어떻게 동작하는가?
JIT 컴파일러는 JVM의 Execution Engine 파트에 속해있다. JIT컴파일러란 프로그램이 실행 중인 런타임에 실제 기계어로 변환해 주는 컴파일러를 의미한다.
JIT의 동작방식 JVM이 bytecode를 기계어로 변환할 때 JIT 컴파일러를 사용한다.
명령어를 하나 하나 실행하는 인터프리터방식 컴파일러 유형과는 달리 JIT 컴파일러는 프로그램이 시작되고 코드를 컴파일 한 후에 JIT 컴파일러를 실행한다는 것이다.
JIT 컴파일러는 실행시점에서 인터프리터 방식으로 기계어 코드를 생성하면서 그 코드를 캐싱하여, 같은 함수가 여러번 호출될 때 매번 기계어 코드를 생성하는 것을 방지한다.
JDK와 JRE의 차이
JDK(Java Development Kit)란 자바 개발 시 필요한 툴킷을 제공하는 도구모음이다. Java개발시 필수,
JRE(Java Runtime Environment)란 자바 프로그램을 실행시켜주는 환경을 구성해주는 도구다. Java개발은 필요없고, 실행 시킬때 필요,
참고,
백기선 - 자바라이브스터디
남궁성 - 자바의정석
github.com/Chohongjae/javaStudy/blob/main/live-study/week1.md
https://wookcode.tistory.com/9
'Study > Java Study' 카테고리의 다른 글
자바스터디 2주차 (2) (0) | 2021.05.23 |
---|---|
자바스터디 2주차 (1) (0) | 2021.05.19 |
자바스터디 1주차 (3) (0) | 2021.05.16 |
자바스터디 1주차 (2) (0) | 2021.05.16 |
자바스터디 0주차 시작 (1) | 2021.05.09 |
댓글