Java
[Java의 정석] chapter01 자바를 시작하기 전에 - 요약정리
고쩡이
2023. 9. 12. 11:08
1.3 자바언어의 특징
- 운영체제에 독립적이다.
- 자바 응용프로그램은 운영체제에 독립적이며, JVM은 프로그램에서 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달한다. (자바 응용 프로그램 -> JVM -> 운영체제)
- 객체지향언어이다.
- 객체지향개념의 특징인 상속, 캡슐화, 다형성이 잘 적용된 순수한 객체지향언어이다.
- 비교적 배우기 쉽다.
- 자바는 간결하면서도 명료한 객체지향적 설계의 특징을 갖는다. 이를 통해 사용자들이 보다 쉽게 이해하고 활용할 수 있도록 하였다.
- 자동 메모리 관리 (Garbage Collection)
- 자바 작성 프로그램이 실행되면 가비지 컬렉터가 자동적으로 메모리를 관리해준다. 이를 통해 프로그래머는 프로그래밍에 집중할 수 있다.
- 네트워크와 분산처리를 지원한다.
- 대규모 분산환경을 염두에 두었기 때문에 다양한 네트워크 프로그래밍 라이브러리(Java API)를 제공한다. 따라서 네트워크 관련 프로그램을 쉽게 개발할 수 있다.
- 멀티쓰레드를 지원한다.
- 자바에서 개발되는 멀티쓰레드 프로그램은 시스템/운영체제과는 관계없이 구현가능하며, 관련된 라이브러리(Java API)가 제공되므로 구현이 쉽다. 또한 여러 쓰레드에 대한 스케줄링(scheduling)을 자바 인터프리터가 담당한다.
- 동적로딩(Dynamic Loading)을 지원한다.
- 자바는 실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용할 수 있다. 또한 일부 클래스가 변경되어도 다시 컴파일하지 않아도 된다.
1.3 JVM(Java Virtual Machine)
JVM은 '자바를 실행하기 위한 가상 컴퓨터' 이며, 가상 기계는 소프트웨어로 구현된 하드웨어를 뜻한다.
JVM은 실행 시에 해석(interpret)되기 때문에 속도가 느리다는 단점이 있지만 오늘날은 속도의 격차가 줄었다.
JVM은 OS에 종속적이기 때문에 해당 OS에서 실행가능한 JVM이 필요하다.
3.1 자바로 프로그램 작성하기
- javac.exe : 자바 컴파일러. 자바소스코드를 바이트코드로 컴파일
- java.exe : 자바 인터프리터. 컴파일러가 생성한 바이트코드를 해석 & 실행
- javap.exe : 역어셈블러. 컴파일된 클래스파일을 원래의 소스로 변환
하나의 Java 애플리케이션에는 main 메서드를 포함한 클래스가 반드시 하나는 있어야 한다.
소스파일의 이름은 public class의 이름과 일치해야 한다. (만일 public class가 없다면, 이름은 상관없다.)
3.3 자바프로그램의 실행과정
JVM은 '자바를 실행하기 위한 가상 컴퓨터' 이며, 가상 기계는 소프트웨어로 구현된 하드웨어를 뜻한다.
- 프로그램의 실행에 필요한 클래스(*.class) 로드
- 클래스파일 검사 (파일형식, 악성코드 체크)
- 지정된 클래스에서 main(String[] args)를 호출
프로그램이 종료되면 사용했던 자원들은 모두 반환된다.