Kutsu Lab
[Java] Java란? 본문
Java란 무엇인가?
썬 마이크로 시스템즈에서 개발하여 1996년 공식적으로 발표한 객체지향 프로그래밍 언어.
현재는 오라클(Oracle)에서 썬을 인수하여 현재는 Oracle사의 제품이 되었다.
자바의 역사
초기부터 변화가 계속되어왔고 최신버전은 Java 16이다.
현재 대부분의 현장에서는 1.8이 사용되고 있고, 입문자 강의 등에서도 1.8을 기준으로 서술됨.
이 블로그에서는 JDK 1.8 을 기준으로 서술할 것이다.
자바의 특징
1. 운영체제에 독립적 : 운영체제에 따라 프로그램을 변경해서 작성하지 않고도, 실행이 가능하다. (밑에서 후술함)
2. 객체지향 프로그래밍 언어
객체지향 프로그래밍(OOP, Object-oriented programming)은 수많은 '객체(object)'라는 기본 단위로 나누고 이들의 상호작용으로 프로그래밍을 하는 방식이다. 객체지향 프로그래밍 언어의 대표적인 언어가 바로 이 Java라 할 수 있다. Java는 객체지향의 주요 개념인 상속, 캡슐화, 추상화, 다형성이 잘 적용되어 있어, 객체지향 개념을 입문하기에 매우 좋다.
3. 풍부한 클래스 라이브러리 (API)를 제공
위에서 언급한 '객체'를 다루려면 그 객체가 어떤 성질을 가지고 있고, 어떤 기능을 갖고 있는지를 서술해야하는데, 자바에서 객체에 대한 설정을 모아둔 설계도에 해당하는 것이 '클래스(Class)'다. 자바에서는 기본적인 Class 라이브러리들을 무료로 제공하고 있는데(JRE) 이 라이브러리만을 잘 활용해도 양질의 java 프로그램을 작성할 수 있다.
4. 자동 메모리 관리 (Garbage Collection)가 자동으로 메모리 관리 -> 별도로 메모리를 따로 관리하지 않아도 됨.
5. 네트워크와 분산처리를 지원한다.
6. 멀티 쓰레드를 지원한다.
7. 동적 로딩(Dynamic Loading)을 지원한다.
자바 개발을 위해 알아야할 JVM, JRE, JDK 생기초 지식
위의 벤다이어그램을 보면 알 수 있듯,
결국 JDK 하나를 깔면 개발, 실행 등 모든 것에 대해 문제가 없겠지만 이게 뭐하는 것들인지는 알아둘 필요는 있다.
1. 자바 가상 머신 (JVM : Java Virtual Machine)
자바를 실행하기 위한 가상 기계.
Java 어플리케이션은 JVM에서만 실행되기 때문에, JVM이 반드시 설치되어야한다.
일반적인 프로그램(소프트웨어)의 코드는 OS를 거쳐서 하드웨어에 전달되다보니, 코드를 OS에 맞춰서 따로 짜줘야하는데 Java 어플리케이션은 각 OS에 맞게 제작된 JVM을 거쳐서 실행된다. JVM이 자바 어플리케이션 - OS 사이의 정보 전달 과정에서 중계를 해주기 때문에 개발자 입장에서는 결국 OS 별로 코드를 매번 다르게 짤 필요가 없게 된다.
2. 자바 실행 환경 (JRE : Java Runtime Environment)
자바로 적용된 응용프로그램이 실행되기 위한 최소의 실행 환경.
JVM + 클래스 라이브러리
위에서 언급된 JVM을 포함하여, Oracle에서 제공해주는 기본 클래스 라이브러리를 포함하는 개념이 JRE이다.
자바의 코드들은 기본적으로 제공해주는 클래스 라이브러리를 공통분모로 하여 작성되고, 실행하는 하드웨어 역시 클래스 라이브러리가 반드시 존재해야 실행이 된다.
3. 자바 개발 도구 (JDK, Java Development Kit)
자바 어플리케이션을 개발하는데 필요한 도구들. JRE를 포함하여, 개발에 필요한 실행파일들도 여기에 포함된다.
JDK : JRE(JVM + 클래스 라이브러리) + 개발에 필요한 실행파일 (컴파일러 javac.exe을 비롯한 각종 개발 환경)
결국 JDK를 깔면 위에서 언급한 JVM, JRE도 같이 설치된다는 것인데, 이 다음 글에서 JDK를 설치하는 부분을 다룰 것이다.
* 앞으로 서술될 글들은 자바의 정석을 학습하면서 개인적으로 정리하는 목적으로 사용됨.
* 혹시 잘못된 부분이 있다면 적극적으로 까주세용
'Java > 학습정리' 카테고리의 다른 글
[Java] 변수의 필요성 (+ 객체지향개념 살짝 맛보기?) (0) | 2021.09.12 |
---|---|
[Java] 화면에 원하는 내용 출력 : print(), println() (0) | 2021.09.12 |
[Java] 주석(comment) 달기 (0) | 2021.09.11 |
[Java] 첫 번째 Java 프로그램 작성 : Hello, World! (0) | 2021.09.07 |
[Java] Java 개발환경 구축 (JDK 설치, IDE 설치) (0) | 2021.09.06 |