자바(Java Programming Language) 1990년대 초에 JAVA가 탄생하였으나, 일반적으로 사람들이 알게 된 시기는 1990년대 말이다. 제임스 고슬링이라는 사람이 가전제품의 효율적인 사용을 위한 프로그램 언어로 JAVA를 만들었다. 하지만, 기존의 C/C++에 비해서 속도가 많이 느려 사람들로부터 외면을 받았다. 1990년대 말에서 2000년대에 들어오면서 인터넷의 등장으로 JAVA를 외면했던 사람들로부터 관심을 얻기 시작했다.
- JAVA는 대표적으로 3가지의 플랫폼을 이루고 있다. JAVA SE(Stand Edition) : JAVA Application 개발 > 일반적인 어플리케이션 개발 JAVA ME(Mobile Edition) : 휴대 가능한 소형 디바이스에 사용을 목적으로 개발 > 현재의 스마트폰 등장으로 쇠퇴 JAVA EE(Enterprise Edition) : 기업 솔루션 개발 > 가장 핵심
자바언어의 특징 2.1 운영체제에 독립적이다. Virtual Machine - 운영체제(Windows, Linux, MAC OS)의 영향을 받지 않는다.
2.2 자동 메모리 관리(Garbage Collection) Garbage Collection - 자바로 작성된 프로그램이 실행되면, 가비지컬렉터(garbage collector)가 자동적으로 메모리를 관리해주기 때문에 개발자는 메모리 관리를 하지 않는다.
2.3 객체지향언어이다. Object Oriented Program(OOP) - 객체지향 언어로 개발과 유지보수를 효율적으로 진행 할 수 있다. - 객체지향개념의 특징으로는 상속, 캡슐화, 다형성이 있다.
2.4 네트워크와 분산처리를 지원한다. 인터넷과 대규모 분산환경을 염두에 두어 다양한 네트워크 프로그래밍 라이브러리(Java API)를 통해 비교적 짧은 시간에 네트워크 관련 프로그램을 쉽게 개발할 수 있도록 지원한다.
2.5 멀티쓰레드를 지원한다. 일반적으로 멀티쓰레드(multi-thread)의 지원은 사용되는 운영체제에 따라 구현방법도 상이하며, 처리 방식 도 다르다. 그러나 자바에서 개발되는 멀티쓰레드 프로그램은 시스템과는 관계없이 구현가능하며, 관련된 라 이브러리(Java API)가 제공되므로 구현이 쉽다. 그리고 여러 쓰레드에 대한 스케줄링을 자바 인터프리터가 담 당하게 된다.
2.6 동적 로딩(Dynamic Loading)을 지원한다. 보통 자바로 작성된 애플리케이션은 여러 개의 클래스로 구성되어 있다. 자바는 동적 로딩을 지원하기 때문 에 실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용할 수 있다는 장점이 있다. 그 외에도 일부 클래스가 변경되어도 전체 애플리케이션을 다시 컴파일하지 않아도 되며, 애플리케이션의 변 경사항이 발생해도 비교적 적은 작업만으로도 처리할 수 있는 유연한 애플리케이션을 작성할 수 있다.
- 자바의 단점으로는 속도문제가 가장 대표적인 것인데 바이트코드(byte code)를 하드웨어의 기계어로 바로 변환해주는 JIT컴파일러와 Hotspot과 같은 신기술의 도입으로 JVM의 기능이 향상됨으로써 속도문제가 상당히 개선되었다.