Java에 대해 알아보기 전에, 먼저 Java가 왜 등장했는지 가볍게 살펴봅시다.
어디서 누가 개발했는지 먼저 설명하자면, Java는 썬 마이크로시스템스
에서 제임스 고슬링과 그 팀원들에 의해 만들어졌습니다.
Java가 등장하기 전, 제임스 고슬링과 그 팀원들과 함께 가전 제품이나 휴대용 장치에 들어가는 소프트웨어를 제작했는데, 이때 가장 많이 사용한 언어가 C와 C++ 이였습니다.
하지만 이 C와 C++ 언어는 위험성(포인터의 존재 때문)이 존재했습니다. 이런 위험성을 없애고 안정적인 언어를 위해 만든 것이 Java 입니다.
위에서 설명했듯이 Java는 안정적인 특징이 존재합니다.
이 외에 가장 중요한 특징이 있는데, 바로 플랫폼에 영향을 받지 않는다는 것입니다. 즉, 다양한 운영체제 환경에서 사용할 수 있다는 의미가 됩니다.
Java 같은 경우, Java Compiler
가 자바 소스 코드를 컴파일 하게 되면 class 확장자를 가진 바이트 코드 파일
이 생성됩니다. 이때, 바이트 코드 파일은 완전한 실행 파일이 아닙니다.
여기서 JVM(Java Virtual Machine)이라는 가상머신을 통해 바이트 코드 파일이 실행됩니다.
요약하면, JVM만 있다면 어느 운영체제에서든 실행될 수 있다는 의미입니다.
Java가 동작하는 과정은 이보다 더 복잡하고 뒤에 추가적인 과정이 존재하지만 지금은 이해하기 힘들 수 있고 사실 저도 아직 설명하기에는 부족하기 때문에 나머지 과정은 생략하겠습니다.
그리고 Java는 객체 지향 언어적인 특징이 있습니다.
그래서 유지보수가 쉽고 확장성이 좋습니다.
그렇다면, 객체 지향이라는 것은 무엇일까요?
객체 지향에 대해서 간단히 설명하고 넘어가겠습니다.
먼저, 시간의 흐름순으로 프로그래밍을 하는 것을 절차 지향 프로그래밍이라고 합니다. 예를 들어, 부품들을 조립하여 어떤 물건 또는 장치를 만들려고 하는데, 설명서의 순서대로 차근차근 만들어야 하며, 조립 순서가 틀리면 안됩니다.
대표적으로 C 언어가 존재합니다.
위의 절차 지향 프로그래밍은 컴퓨터 처리 방식과 유사하여 실행 속도가 빠르지만 유지 보수가 어렵고 대규모 프로젝트에 적합하지 않습니다. 그래서 이를 극복하기 위해 객체 지향 프로그래밍이 등장했습니다.
객체 지향 프로그래밍은 실세계의 사물들을 데이터로 추상화시켜 객체로 만들고 그 객체들 간에 협력(상호작용)을 기반으로 프로그램하는 것입니다.
객체 지향의 특징에는 캡슐화, 다형성, 상속성등이 존재하는데, 이는 다음에 알아보겠습니다.
JDK(Java Development Kit) : Java에서 제공되는 라이브러리
JRE(Java Runtime Enviorment) : Java 프로그램이 실행되는 환경
JVM(Java Virtual Machine) : 메모리 관리, Java가 운영체제 사이에 중재자 역할을 수행하며, JRE가 설치되어 있어야 함