안치현의 블로그

자바 기초 지식 본문

자바

자바 기초 지식

chihyun 2019. 5. 23. 10:12

자바 소스 파일의 확장자 .java

컴파일을 통해 만들어진 목적 파일의 확장자 .class

 

플랫폼에 맞게 소스코드를 작성하고 컴파일해야하는 언어의 특징을 플랫폼 종속성(platform dependence)라고 한다.

 

자바는 플랫폼에 상관없이 자바 가상 머신(JVM)만 있으면 동일하게 실행되며, 이를 WORA(Write One Run Anywhere)라고 한다.

 

자바 가상 머신은 플랫폼에 적합하게 서로 다르게 구현되므로 플랫폼 종속적이다.

 

자바 배포판은 자바 응용프로그램을 개발하고 실행하는데 필요한 총제적 환경을 말하며 JDK(Java Development Kit)라고도 부른다.

 

JDK

자바 컴파일러 등 자바 응용프로그램을 개발하는데 필요한 도구와

자바 응용프로그램이 실행될 때 필요한 자바 가상 머신과

표준 클래스 파일들을 포함하는 JRE(Java Run-time Environment)로 구성된다.

 

자바의 특징

  • 플랫폼 독립성

자바는 플랫폼에 종속되지 않는 독립적인 바이트 코드로 컴파일되며 자바 가상 머신만 있으면 하드웨어/운영체제를 막론하고 자바 프로그램의 실행이 가능하다.

 

 

  • 객체 지향

자바는 객체 지향 언어로서 캡슐화, 상속, 다형성을 등을 지원한다.

 

 

  • 클래스로 캡슐화

자바는 객체 지향 언어의 캡슐화(encapsulation) 원칙을 철저히 지켜, 변수나 메서드가 반드시 클래스 내에 구현하도록 한다. 자바는 클래스 안에 새로운 클래스, 즉 내부 클래스를 만들 수 있다.

 

 

  • 소스와 클래스 파일

자바 소스가 컴파일 된 클래스 파일(.class)에는 반드시 하나의 자바 클래스만이 들어있다.

하나의 자바 소스 파일에 작성된 클래스 중 오직 한 클래스만 public으로 선언할 수 있다.

소스 파일 내에 public으로 선언된 클래스의 이름과 소스 파일의 이름이 동일하게 작성되어야 한다.

 

 

  • 실행모듈

자바 응용프로그램은 한 개의 클래스 파일 또는 다수의 클래스 파일로 구성된다. 

다수의 클래스 파일을 jar 파일 형태로 압축하여 배포 및 실행이 가능하다.

자바의 실행은 main() 메서드에서 시작되며, 하나의 클래스 파일에 두 개 이상의 main() 메서드가 있을 수 없다.

그러나 각 클래스 파일이 main() 메서드를 가지는 것은 상관없다.

 

 

  • 패키지

서로 관련 있는 클래스는 패키지로 묶어 관리한다.

java.lang.System 클래스는 java\lang 폴더의 System.class 파일을 나타내며, java.lang을 패키지라고 한다.

 

 

  • 멀티스레드

하나의 자바 프로그램에서 다수의 스레드가 동시에 실행할 수 있는 환경을 지원한다.

자바는 운영체제의 도움 없이 멀티스레드 프로그래밍이 가능하기 때문에, 멀티스레드를 지원하지 않는 운영체제에서도 자바를 이용하면 멀티스레드 프로그램을 개발할 수 있다.

 

 

  • 가비지 컬렉션

자바에는 메모리를 할당받는 기능은 있지만, 메모리를 반환하는 기능은 없다.

프로그램 내에 사용되지 않는 메모리는 자바 가상 기계의 가비지 컬렉션 기능에 의해 자동으로 회수된다.

 

 

  • 실시간 응용 시스템에 부적합

자바 응용프로그램은 실행 도중 예측할 수 없는 시점에 가비지 컬렉션이 실행되므로 프로그램 실행이 일시적으로 중단된다. 이런 문제로 인해 일정 시간(deadline) 내에 반드시 실행 결과를 내야만 하는 실시간 시스템에서는 자바언어가 적합하지 않다.

 

 

  • 자바 프로그램은 안전한다.

자바는 타임 체크가 매우 엄격하며, 포인터의 개념이 없기 때문에, 잘못된 자바 프로그램으로 인해 컴퓨터 시스템이 중단되는 일은 없다.

 

 

  • 프로그램 작성이 쉽다.

포인터 개념이 없기에 프로그램 작성에 부담이 적다.

또한 프로그램 개발을 쉽게 할 수 있도록 도와주는 다양한 라이브러리를 지원한다.

 

 

  • 실행 속도를 개선하기 위해 JIT 컴파일러가 사용된다.

자바는 자바 가상 머신이 인터프리터 방식으로 바이트 코드를 실행하므로 일반적으로 C/C++로 작성된 프로그램보다 실행이 느리다고 알려져 있지만, 최근에는 자바 프로그램을 실행하는 도중 해당 CPU의 기계어 코드로 컴파일하고 CPU가 바로 기계어를 실행하도록 하는 JIT(Just in Time) 컴파일링 기법을 이용하여, 실행 성능이 C/C++와 거의 비슷하도록 개선되었다.

'자바' 카테고리의 다른 글

시트프 연산자  (0) 2019.05.23
Scanner 클래스로 키 입력받기  (0) 2019.05.23
List의 인스턴스화  (0) 2019.05.20
Comments