프로그래밍을 한다는 것은 컴퓨터가 일을 하도록 컴퓨터 언어로 명령을 만들고 컴퓨터로 하여금 그 명령을 실행하게 하는 것
자바는 1991년 제임스 고슬링을 비롯한 선 마이크로시스템스 연구원들이 처음 개발했습니다. 당시에 가장 많이 사용하던 프로그래밍 언어는 C 와 C++였는데, 가전제품이나 휴대용 장치 등에 사용하는 소프트웨어를 만들기 위해 독립적으로 작동하는 더 안정된 프로그래밍 언어가 필요했습니다. 이러한 이유로 개발된 언어가 자바입니다.
1. 플랫폼에 영향을 받지 않으므로 다양한 환경에서 사용 할 수 있다
※ 플랫폼(platform)이란 프로그램이 실행되는 환경을 의미. 우리가 사용하는 컴퓨터의 운영체제(OS) 즉 윈도우, 맥, 리눅스 등
예를 들어, 윈도우 운영체제에서 C 언어로 개발한 Test 라는 프로그램이 있습니다. 이 프로그램을 컴파일 하면 Test.exe가 만들어지는데 이를 '실행파일'이라고 합니다. 하지만 이는 리눅스(다른 운영체제)에서는 실행할 수 없고 다시 컴파일을 통해 리눅스 운영체제에 맞는 실행 파일을 새로 만들어야 합니다.
하지만 자바에서는 컴파일을 하면 Test.class 파일이 생성됩니다. 이 파일을 바이트 코드라고 하는데 운영체제에 맞는 완벽한 기계어(완벽한 실행 파일)가 아니라 중간 기계어 입니다. 이 바이트 코드를 실행하려면 운영체제에 맞는 자바 가상 머신이 필요합니다.
운영체제에서 직접 실행하는 게 아니라 가상 머신에서 먼저 실행하고, 이 가상 머신이 운영체제에 맞는 완벽한 실행 파일로 바꿔 줍니다.
즉, .class 파일을 만들어 두면 운영체제에 맞는 가상 머신을 이용하여 어느 환경에서나 실행할 수 있습니다.
이러한 특성때문에 초기에는 프로그램 실행 속도가 느렸으나, 하드웨어가 발전하면서 컴파일 방식이 개선되어 실행 속도 문제는 해결되었습니다.
❓ 자바 가상 머신 (Java Virtual Machine: JVM)
❓ JIT (Just In Time) 컴파일러
2. 객체 중심 언어이기 때문에 유지보수가 쉽고 확장성이 좋다
※ 객체란 프로그램의 대상을 의미
객체 중심 프로그래밍이란 일의 순서대로 프로그래밍하는 것이 아닌 여러 객체의 협력을 통해 프로그램을 구현하는 것입니다.
예를 들어, 어떤 회원이 쇼핑몰 사이트에 접속하여 상품을 주문하고 상품이 집까지 배송되는 과정을 생각해 봅시다. 이때 회원, 상품, 주문, 배송 등이 객체입니다. 즉 회원와 상품과 주문과 배송이라는 객체를 기반으로 각 객체의 상호 관계를 이용하여 프로그래밍하는 것입니다.
객체 중심 언어로 프로그래밍하면 공통으로 상요하는 부분을 수정하지 않고도 프로그램에 새 기능을 쉽게 추가할 수 있습니다. 따라서 객체 중심 언어로 프로그램을 잘 설계하면 유지보수가 쉽고 확정성이 좋습니다.
3. 프로그램이 안정적이다
자바는 C 나 C++ 에서 제공하는 문법인 포인터를 사용하지 않아 메모리를 직접 제어할 수 없습니다. 하지만 프로그램에서 메모리를 직접 제어하면 오류가 발생할 수 있는데, 이러한 위험성이 없으므로 훨씬 안정된 코드를 만들 수 있습니다. 또한 동적 메모리 수거를 프로그래머가 하지 않고 가비지 컬렉터 (Garbage Collector; GC) 를 이용하므로 메모리를 효율적으로 관리할 수 있습니다.
※ 가비지 컬렉터란 쓰레기(더이상 사용하지 않는 메모리)를 수집하는 기능. C/C++에서는 필요 없는 메모리 사용 해제를 프로그래머가 직접 해야 했지만, 자바는 가비지 컬렉터가 사용하지 않는 동적 메모리를 주기적으로 수거함
4. 풍부한 기능을 제공하는 오픈 소스이다
기존의 다른 언어에서는 특정 기능을 대부분 개발자가 직접 개발하여 사용했습니다. 자바에는 기본 기능을 제공하는 클래스뿐 아니라 자료 구조, 네트워크, 입출력, 예외 처리 등에 최적화된 알고리즘 라이브러리를 제공하는 자바 개발 키트 (Java Development Kit; JDK)가 있어 프로그램을 빠르게 완성할 수 있습니다.
즉 자바는 오픈 소스이고 자바를 활용한 오픈 소스가 이미 많이 개발되어 있으므로 이들 오픈 소스를 연동하여 더 풍부한 기능을 빠르게 구현할 수 있다는 장점이 있습니다.
자바를 설치한다는 것은 자바 JDK를 설치한다는 뜻
JDK (Java Development Kit) : 자바 프로그램을 개발하는 데 필요한 라잉브러리와 플랫폼이 포함되어 있다
자바 프로그램을 실행하기 위해서는 자바 실행 환경 (Java Runtime Environment; JRE)만 있으면 되지만, 자바 프로그램을 만들기 위ㅐㅎ서는 반드시 JDK가 있어야 합니다.
❓ Java SE(Standard Edition) : 자바의 기본 개발 환경
❓ Java EE(Enterprise Edition) : 서버 기반 프로그램의 개발 환경
❓ Java ME(Micro Edition) : 모바일 및 임베디드 시스템의 개발 환경