[자바의 정석] Chapter01. 자바를 시작하기 전에

Hyeonjun·2022년 9월 29일
0

자바의 정석

목록 보기
1/7
post-thumbnail

1. 자바(Java Programming Language)

1.1 자바란?

  • 썬 마이크로시스템즈에서 개발해 1996년 1월에 공식적으로 발표한 객체지향 프로그래밍 언어
  • 자바의 가장 중요한 특징은 운영체제에 독립적이라는 것.
  • 객체지향개념과 C++의 장점을 채택하고 잘 사용되지 않는 부분은 제외했음.
  • 풍부한 클래스 라이브러리(Java API)를 통해 프로그래밍에 필요한 요소들을 기본적으로 제공
    • 클래스 라이브러리만으로도 강력한 기능의 자바 프로그램을 만들 수 있다.

1.2 자바의 역사

  • 1991년 Oak 언어에서 시작됨.
  • 인터넷이 등장하면서 운영체제에 독립적인 Oak를 바탕으로 인터넷에 적합하도록 개발함.
  • 자바로 개발한 웹 브라우저 '핫 자바'를 발표하고 1996년 1월 자바의 정식 버전을 처음으로 발표함.
  • 현재는 서버쪽 프로그래밍을 위한 서블릿(Servlet)과 JSP(Java Server Pages)가 더 많이 사용되고 있다.

1.3 자바 언어의 특징

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

  • 자바가상머신(JVM)을 통해 자바 응용프로그램을 실행하게 됨.
  • 자바로 작성된 프로그램은 운영체제에 독립적이지만, JVM은 운영체제에 종속적이기 때문에 각 영체제마다 다른 JVM을 설치해야함.
  • 자바로 작성된 프로그램은 운영체제와 하드웨어에 관계없이 실행 가능하다.

2. 객체지향언어이다.

  • 객체지향개념의 특징인 상속, 캡슐화, 다형성이 적용된 순수한 객체지향 언어이다.

3. 비교적 배우기 쉽다.

  • 자바의 기원
    • C++: 연산자와 기본구문
    • 스몰톡: 객체지향 관련 구문
  • 이들에서 복잡하고 불필요한 부분을 제거해 단순화화했다.

4. 자동 메모리 관리 (Garbage Collection)

  • 자바로 작성된 프로그램이 실행되면 가비지 컬렉터가 자동적으로 메모리를 관리해주기 때문에 개발자가 메모리를 따로 관리하지 않아도 됨.

5. 네트워크 분산처리를 지원한다.

  • 다양한 네트워크 프로그래밍 라이브러리를 통해 비교적 짧은 시간에 개발할 수 있다.

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

  • 일반적으로는 사용되는 운영체제에 따라 멀티쓰레드의 구현방법이나 처리방식이 다르다.
  • 자바에서는 시스템과 관계없이 구현 가능하며, 관련된 라이브러리를 통해 쉽게 구현할 수 있다.
  • 여러 쓰레드에 대한 스케줄링을 자바 인터프리터가 담당하게 된다.

7. 동적 로딩(Dynamic Loading)을 지원한다.

  • 실행 시 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용할 수 있다.
  • 일부 클래스가 변경되어도 전체 애플리케이션을 다시 컴파일 하지 않아도 된다.
    • 변경에 대해 비교적 적은 작업만으로 처리할 수 있다.

바이트코드를 하드웨어 기계어로 바로 변환해주는 JIT 컴파일러와 Hotspot과 같은 기술의 도입으로 속도 문제가 상당히 개선되었다.

1.4 JVM (Java Virtual Machine)

  • 자바를 실행하기 위한 가상 기계(컴퓨터)
    • 실제 하드웨어 컴퓨터가 아닌 소프트웨어로 구성된 컴퓨터
  • 자바로 작성된 애플리케이션은 모두 JVM에서만 실행되기 때문에 자바 애플리케이션 실행을 위해 JVM이 반드시 필요하다.
  • 하드웨어에 맞게 완전히 컴파일된 상태가 아니고 실행 시에 해석(interpret)되기 때문에 속도가 느리다는 단점을 가지고 있다.
    • 그러나 최근 바이트코드(컴파일된 자바코드)를 하드웨어의 기계어로 바로 변환해주는 JIT 컴파일러와 향상된 최적화 기술들이 적요오디어 속도의 격차를 많이 줄였다.

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

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

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

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

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

  1. 프로그램의 실행에 필요한 클래스(*.class)파일을 로드한다.
  2. 클래스파일을 검사한다. (파일 형식, 악성코드 체크)
  3. 지정된 클래스(Hello)에서 main(String[] args)를 호출한다.
  • main 메서드의 첫 줄부터 코드가 실행되기 시작해 마지막 코드까지 모두 실행되면 프로그램이 종료되고, 프로그램에서 사용했던 자원들을 모두 반환한다.
profile
더 나은 성취

0개의 댓글