자바 (Java Programming Language)

1. Java

썬 마이크로시스템즈에서 개발한 객체 지향 프로그래밍 언어

 

2. Java 언어의 특징

1) 자바는 운영체제(OS)에 독립적이다. (운영체제의 종류와 관계없이 실행이 가능하다.)

 자바 응용프로그램은 JVM(Java Virtual Machines)으로 통신하고 JVM이 자바 응용프로그램으로부터 전달받은 명령을 운영체제가 이해할 수 있도록 변환하여 전달한다. JAVA로 작성된 프로그램은 운영체제에 독립적이지만 JVM은 운영체제에 종속적이므로 운영체제마다 다른 버전의 JVM이 제공된다.

 

-JVM (Java Virtual Machine)

자바를 실행하기 위한 가상 컴퓨터(기계) 

소프트웨어로 구현된 컴퓨터속의 컴퓨터

자바로 작성된 프로그램은 JVM에서만 실행된다. 

일반 Application의 코드는 OS만 거쳐서 하드웨어로 전달되는데, Java Application은 JVM을 한번 더 거친다. 또한 완전히 컴파일된 상태가 아니고 실행 시에 해석(interpret) 때문에 속도가 느리다는 단점이 있다. (그러나 바이트코드(컴파일된 자바코드)를 하드웨어의 기계어로 바로 변환해주는 JIT컴파일러와 향상된 최적화 기술이 적용되어 속도의 격차를 많이 줄였다.)

java 애플리케이션은 JVM하고만 상호작용을 하기 때문에 OS, 하드웨어에 독립적이다. "Write once, run anywhere."

 

 

2) 객체지향 언어이다. (object-oriented programming language)

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

 

 

3) 자동 메모리 관리 (Garbage Collection)

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

 

 

4) 네트워크와 분산처리를 지원한다.

네트워크 프로그래밍 라이브러리 (Java API)를 통해 비교적 짧은 시간에 네트워크 관련 프로그램을 개발할 수 있도록 지원한다. API란 자바 시스템을 제어하기 위해서 자바에서 제공하는 명령어들을 의미한다. JDK(Java Development Kit)에서는 프로그래밍을 위해 많은 유용한 클래스(Java API)를 기본적으로 제공하며 우리는 이 클래스들을 이용해서 원하는 기능의 프로그램을 보다 쉽게 작성 할 수 있다.

https://docs.oracle.com/javase/7/docs/api/index.html

자바에서 기본적으로 제공하는 기본 패키지, 클래스들을 확인할 수 있다.

 

- 자바에서 제공하는 기본 패키지 예시

java.lang : 자바 프로그래밍을 위한 가장 기본적인 패키지와 클래스를 포함하는 패키지

java.util : 프로그램을 제어하기 위한 클래스와 데이터를 효율적으로 저장하기 위한 클래스 포함하는 패키지

java.io : 키보드, 모니터, 프린터, 파일등을 제어할 수 있는 클래스 포함하는 패키지

java.net : 통신을 위한 기능들을 담은 클래스 포함하는 패키지 

 

 

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

운영체제와 관계없이 멀티쓰레드(multi-thread) 구현이 가능하다. 자바 인터프리터는 여러 쓰레드에 대한 스케쥴링을 담당한다.

 

 

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

여러개의 클래스로 구성된 프로그램이 실행될 때 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용할 수 있다. 일부 클래스가 변경되어도 전체 프로그램을 다시 컴파일 하지 않아도 되고 변경사항이 발생해도 비교적 적은 작업으로 처리할 수 있다.