Java 언어와 시스템의 특징
자바 언어와 시스템은 객체지향, 멀티스레드, 플랫폼 독립성과 같은 독특한 특성을 가진다. 하나씩 살펴보자.
1. 객체지향
- 자바는 객체 지향 언어로서 클래스 계층 구조, 상속성, 다형성, 캡슐화 등을 지원합니다.
2. 멀티 스레드
- 자바는 하나의 프로그램에서 다수의 스레드가 동시에 실행할 수 있는 환경을 지원합니다.
- C, C++ 등 많은 언어들은 자체적으로 멀티스레드를 지원하지 않아 운영체제의 도움을 받지만 자바의 경우 운영체제의 도움 없이 멀티스레드 프로그래밍이 가능합니다.
3. 플랫폼 독립성
- 자바는 하드웨어, 운영체제 등 플랫폼에 종속되지 않는 독립적인 바이트 코드로 컴파일 됩니다.
- 자바 가상 기계만 있으면 하드웨어나 운영체제를 막론하고 자바 프로그램의 실행이 가능합니다.
4. 실행 모듈
- 자바 응용프로그램은 한 개의 클래스 파일 또는 다수의 클래스 파일로 구성됩니다.
- 자바의 실행은 main 메서드에서 시작되며, 클래스 파일에 오직 한 개의 main 메서드를 가져야 하지만 다수의 클래스 파일이 각각 main 메서드를 가질 수 있습니다.
5. 클래스로 캡슐화
- 자바는 객체 지향 언어의 캡슐화(Encapsulation)의 원칙을 철저히 지켜 변수나 메서드는 반드시 클래스 내에 구현해야 합니다.
- 클래스에 속하지 않은 변수나 메서드는 있을 수 없으며 클래스 안에 새로운 클래스 클래스인 내부 클래스를 만들 수 있습니다.
6. 패키지
- 서로 관련 있는 클래스를 패키지로 묶어 관리할 수 있으며 패키지는 파일 시스템의 폴더 개념과 유사합니다.
- 예를 들어,
java.lang.System
클래스는 java\lang 폴더의 System.class 파일을 나타내며, 여기서 java.lang을 패키지라고 합니다.
7. 소스와 클래스 파일
- 하나의 자바 소스 파일에는 여러 개의 클래스를 작성할 수 있지만 하나의 클래스 파일에는 반드시 하나의 컴파일된 자바 클래스만이 포함됩니다.
- 하나의 자바 소스 파일에 여러 개의 클래스를 작성하고 컴파일을 진행하면 클래스마다 별도의 클래스 파일이 생성됩니다.
- 예를 들어, 아래와 같이 선언 후 컴파일을 진행하면 결과를 통해 확인할 수 있습니다.
public class A {
...
}
class B {
...
}
class C {
...
class D {
...
}
}
위의 A.java 파일을 컴파일하면 A.class B.class C.class 파일이 생성되고 C&D.class 파일이 생성된다.
여기서 클래스 D는 클래스 C 내에 작성된 내부 클래스(Inner Class) 이고 자바 소스 파일 내에 오직 한 클래스만 public으로 선언될 수 있습니다. 또한 public
으로 선언된 클래스의 이름과 소스 파일의 이름이 동일해야 합니다.