[자바의 정석] 1. 자바 개요

jyleever·2023년 1월 15일
0

자바의 정석

목록 보기
1/12

1-1. 자바

썬 마이크로시스템즈에서 개발하여 1996년 1월에 공식적으로 발표한 객체지향 프로그래밍 언어

1-2~3. 자바 언어의 특징

1. 운영체제에 독립적이다.
운영체제나 하드웨어에 관계없이 실행 가능
"한 번 작성하면, 어디서나 실행된다."
자바 응용 프로그램은 운영체제나 하드웨어가 아닌 JVM하고만 통신하고, JVM이 자바 응용 프로그램으로부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달

2. 객체지향언어다.
상속, 캡슐화, 다형성이 잘 적용된 순수한 객체지향언어

3. 비교적 배우기 쉽다.
자바의 연산자와 기본 구문은 C++에서, 객체지향관련 구문은 스몰톡(small talk)이라는 객체지향언어에서 가져왔다.
장점은 취하면서 복잡하고 불필요한 부분은 제거하여 단순화함으로써 쉽게 배울 수 있음

4. 자동 메모리 관리(Garbage Collection)
자바로 작성된 프로그램이 실행되면, 가비지컬렉터가 자동적으로 메모리를 관리해주기 때문에 프로그래머는 메모리를 따로 관리하지 않아도 된다.

5. 네트워크와 분산처리를 지원한다.
다양한 네트워크 프로그래밍 라이브러리(Java API)를 통해 비교적 짧은 시간에 네트워크 관련 프로그램을 쉽게 개발할 수 있도록 지원한다.

6. 멀티쓰레드를 지원한다.
시스템과 관계없이 구현 가능하며, 관련된 라이브러리(Java API)가 제공되므로 구현이 쉽다. 또한 여러 쓰레드에 대한 스케줄링을 자바 인터프리터가 담당하게 된다.

7. 동적 로딩을 지원한다.
실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용할 수 있다.
일부 클래스가 변경되어도 전체 애플리케이션을 다시 컴파일하지 않아도 되며, 애플리케이션의 변경사항이 발생해도 비교적 적은 작업만으로도 처리할 수 있는 유연한 애플리케이션을 작성할 수 있다.

1-4. JVM(Java Virtual Machine)

자바를 실행하기 위한 가상 기계(가상 컴퓨터/소프트웨어)

  • 자바로 작성된 모든 애플리케이션은 모두 이 가상 컴퓨터 JVM에서만 실행되기 때문에, 자바 애플리케이션이 실행되기 위해서는 반드시 JVM이 필요
  • Java 애플리케이션과 OS사이에서 JVM이 작동
    일반 애플리케이션의 코드는 OS만 거치고 하드웨어로 전달되는데 비해, JAVA애플리케이션은 JVM을 한 번 더 거치기 때문에, 그리고 하드웨어에 맞게 완전히 컴파일된 상태가 아니고 실행 시에 해석(interpret)되기 떄문에 속도가 느리다는 단점
  • 요즘은 바이트코드(컴파일된 자바 코드, JVM이 이해할 수 있는 기계어)를 하드웨어의 기계어로 바로 변환해주는 JIT컴파일러와 향상된 최적화 기술이 적용되어서 속도의 격차를 많이 줄였다
  • JVM은 OS에 종속적이기 때문에 해당 OS에서 실행 가능한 JVM이 필요

2. 자바 개발 환경

  • JDK (Java Development Kit)
    자바 개발 도구
    JRE + 개발에 필요한 실행파일(javac.exe 등)

  • JRE (Java Runtime Environment)
    자바 실행 환경, 자바로 작성된 응용프로그램이 실행되기 위한 최소 환경
    JVM + 클래스 라이브러리 (Java API)

  • JDK를 설치하면, JVM과 자바클래스 라이브러리(JAVA API)외에 자바를 개발하는 데 필요한 프로그램들이 설치된다.
    그 후 설치된 디렉토리의 bin디렉토리를 path에 추가
    bin 디렉토리에는 자바로 프로그램을 개발하는 데 필요한 실행파일이 들어있음
    path : OS가 파일 위치를 파악하는 데 사용하는 경로, 해당 디렉토리에 포함된 파일을 파일 경로 없이 파일 이름만으로도 사용할 수 있게 됨

  • JDK의 bin디렉토리에 있는 주요 실행 파일

    • javac.exe : 자바 컴파일러
      자바 소스코드를 바이트코드로 컴파일
    • java.exe : 자바 인터프리터
      컴파일러가 생성한 바이트코드를 해석하고 실행
    • javap.exe : 역어셈블러
      컴파일된 클래스파일을 원래의 소스로 변환
    • javadoc.exe : 자동문서생성기
      소스파일에 있는 주석을 이용해 java api문서와 같은 형식의 문서를 자동으로 생성
    • jar.exe : 압축 프로그램
      클래스파일과 프로그램의 실행에 관련된 파일을 하나의 jar 파일로 압축하거나 압축해제한다.

3. 자바로 프로그램 작성하기

자바 컴파일러(javac.exe)를 사용해서 소스파일(Hello.java)로부터 클래스파일(Hello.class)를 생성 -> 자바 인터프리터(java.exe)로 해당 클래스파일 실행

public static void main(String[] args)

  • main메서드의 선언부, 프로그램을 실행할 때 java.exe에 의해 호출될 수 있도록 미리 약속된 부분
  • 하나의 java 애플리케이션에는 main메서드를 포함한 클래스가 반드시 하나는 있어야 한다. main 메서드는 Java 애플리케이션의 시작점이므로 main메서드 없이는 Java 애플리케이션은 실행될 수 없다.

소스파일과 달리 클래스 파일은 클래스마다 하나씩 만들어짐. 따라서 한 소스 파일을 컴파일 했을 때, 해당 소스파일에 포함된 모든 클래스가 클래스파일로 생성된다.

3-3. 자바 프로그램의 실행 과정

  1. 프로그램의 실행에 필요한 클래스(*.class파일)를 로드한다.
  2. 클래스파일을 검사한다. (파일 형식, 악성 코드 체크)
  3. 지정된 클래스에서 main(String[] args)를 호출한다.

0개의 댓글