Ch 1. 자바를 시작하기 전에

kdkdhoho·2022년 10월 14일
0

자바의 정석

목록 보기
1/4

1. 자바(Java Programming Language)

1.1 자바란?

자바의 가장 중요한 특징은 운영체제에 독립적이라는 것이다.

즉, 운영체제에 따라 프로그램을 전혀 변경하지 않고도 실행이 가능하다.

1.2 자바의 역사

과거, 애플릿(Applet)을 통해 정적인 웹페이지에 사운드와 애니메이션 등의 멀티미디어적인 요소들을 제공할 수 있는 유일한 방법이었다.

하지만 보안상의 이유로 최신 웹브라우저에서 애플릿을 더 이상 지원하지 않게 되었고, 대신 JPS와 Servlet이 더 많이 사용된다.

1.3 자바언어의 특징

  1. 운영체제에 독립적이다.

    • 일종의 에뮬레이터인 JVM을 통해서 가능한 것인데, 자바 응용프로그램은 운영체제나 하드웨어가 아닌 JVM하고만 통신하고 JVM이 자바 응용프로그램으로부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달한다.

    • 자바로 작성된 프로그램은 운영체제에 독립적이지만 JVM은 운영체제에 종속적이다.

    • 'Write Once, Run Anywhere'이라고 표현하는 것이 이러한 특징이다.

  2. 객체지향언어이다.

  3. Garbage Collection

    • 자동으로 메모리를 관리해주기 때문에, 프로그래머는 따로 관리하지 않아도 된다.
  4. 네트워크와 분산처리를 지원한다.

  5. 멀티쓰레드를 지원한다.

    • 일반적으로 멀티쓰레드의 지원은 사용되는 운영체제에 따라 구현방법도 상이하며, 처리 방법도 다르다. 그러나 자바에서 개발되는 멀티쓰레드 프로그램은 시스템과는 관계없이 구현가능하며, JAVA API가 제공되므로 구현도 쉽다.

    • 여러 쓰레드에 대한 스케줄링은 자바 인터프리터가 담당한다.

  6. 동적 로딩을 지원한다.

    • 실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용할 수 있다.

    • 그 외에도 일부 클래스가 변경되어도 전체 애플리케이션을 다시 컴파일하지 않아도 되며, 애플리케이션의 변경사항이 발생해도 비교적 적은 작업만으로도 처리할 수 있는 유연한 애플리케이션을 작성할 수 있다.

1.4 JVM(Java Virtual Machine)

자바로 작성된 애플리케이션은 모두 이 JVM에서만 실행되기 때문에, 자바 애플리케이션이 실행되기 위해서는 반드시 JVM이 필요하다.

일반 애플리케이션 코드는 OS만 거치고 하드웨어로 전달되는데 비해, 자바 애플리케이션은 JVM을 한 번 더 거치고, 하드웨어에 맞게 완전히 컴파일된 상태가 아니고 실행 시에 interpret되기 때문에 속도가 느리다는 단점을 가지고 있다.

하지만 요즘엔 바이트코드를 하드웨어의 기계어로 바로 변환해주는 JIT 컴파일러와 향상된 최적화 기술이 적용되어서 속도가 많이 빨라졌다.

자바 애플리케이션은 OS에 종속적이지 않지만, JVM은 OS에 종속적이기 때문에 해당 OS에서 실행가능한 JVM이 필요하다.

2. 자바개발환경 구축하기

2.1 자바 개발도구(JDK) 설치하기

JDK를 설치하면, JVM과 JAVA API외에 자바를 개발하는데 필요한 프로그램들이 설치된다.

JDK 설치가 끝났으면 설치된 디렉토리의 bin 디렉토리를 path에 추가해주어야 한다.
이 디렉토리에는 자바로 프로그램을 개발하는데 필요한 실행파일들이 들어있기 때문이다.

path에 디렉토리를 등록하면, 해당 디렉토리에 포함된 파일을 파일 경로없이 파일 이름만으로도 사용할 수 있게 된다.

  • javac.exe: 자바 컴파일러. 자바 소스코드를 바이트코드로 컴파일한다.

  • java.exe: 자바 인터프리터. 컴파일러가 생성한 바이트코드를 해석하고 실행한다.

  • javap.exe: 역어셈블러. 컴파일된 클래스파일을 원래 소스로 변환한다.

  • javadoc.exe: 자동문서 생성기

  • jar.exe: 압축프로그램. 클래스파일과 프로그램의 실행에 관련된 파일을 하나의 jar파일로 압축하거나 압축해제한다.

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

3.1 Hello.java

서로 관련된 코드들을 그룹으로 나누어 별도의 클래스를 구성하게 된다. 그리고 이 클래스들이 모여 하나의 Java 애플리케이션을 이룬다.

모든 클래스가 main 메서드를 가지고 있어야 하는 것은 아니지만, 하나의 Java 애플리케이션에는 main메서드를 포함한 클래스가 반드시 하나는 있어야 한다. main 메서드는 Java 애플리케이션의 시작점이므로 main 메서드 없이는 Java 애플리케이션은 실행될 수 없기 때문이다.

소스파일의 이름은 public class의 이름과 일치해야 한다. 만일 소스파일 내에 public class가 없다면, 소스파일의 이름은 소스파일 내의 어떤 클래스의 이름으로 해도 상관없다.
반대로 두 개 이상의 클래스가 하나의 소스파일에서 public class가 되어서는 안된다.

3.3 자바프로그램의 실행과정

자바프로그램을 실행시켰을 때 내부 진행사항은 다음과 같다.

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

main 메서드의 첫 줄부터 코드가 실행되기 시작하여 마지막 코드까지 모두 실행되면 프로그램이 종료되고, 프로그램에서 사용했던 자원들은 모두 반환된다.

3.4 주석

주석은 프로그램의 작성자, 작성일시, 버전과 그에 따른 변경이력 등의 정보를 제공할 목적으로 사용된다.

profile
newBlog == https://kdkdhoho.github.io

0개의 댓글