자바(Java)란?
- 썬마이크로시스템즈에서 1995년 개발된 객체지향 프로그래밍 언어입니다.
- 다양한 환경의 하드웨어에서 동작하는 프로그램을 만들기 위해 탄생했습니다.
(당시 많이 사용되던 언어인 'C++'의 장점과 확장성이 부족하다는 단점을 보완) - 현재는 다양한 운영체제가 공존하는 웹 환경에서 적합한 언어로 인기를 끌고 있습니다.
(국내에서는 전자 정부 프레임워크에 사용되면서 특히 백엔드 분야에서는 가장 보편적으로 사용) - 슬로건: 'Write Once, Run Anywhere'
자바의 주요 특징
- 독립성(Independence)
- 자바 이전의 언어들은 특정 CPU에서만 작동하거나, OS에 따라 다르게 작성해야 했는데,
자바는 자바 가상 머신(Java Virtual Machine)에 의해 해당 OS나 CPU에 맞는 언어로 번역합니다. - 따라서 JVM만 설치되어 있는 환경이라면 모든 운영체제에서 실행이 가능하도록 만들어졌습니다.
- 자바 이전의 언어들은 특정 CPU에서만 작동하거나, OS에 따라 다르게 작성해야 했는데,
- 객체지향(Object Oriented Programing) 방식
- 객체 지향 프로그래밍이란 모든 요소를 객체로 규정을 하고,
해당 객체들을 연결하여 하나의 프로그램을 실행하는 방식으로 설계되었습니다.
(객체를 부품화 하고, 이를 조립하는 개념) - 자바는 모든 기능을 객체로 구성하여 활용합니다.
- 객체지향적으로 설계된 프로그램은 유지보수가 쉽고 확장성이 높습니다.
- 객체 지향 프로그래밍이란 모든 요소를 객체로 규정을 하고,
- 함수형 프로그래밍(Functional Programing) 지원
- 함수형 프로그래밍 방식인 람다식과 스트림을 이용하여 컬렉션 요소를 필터링, 매핑, 집계 처리하기가 용이해졌습니다.
(자바 8버전부터 지원)
- 함수형 프로그래밍 방식인 람다식과 스트림을 이용하여 컬렉션 요소를 필터링, 매핑, 집계 처리하기가 용이해졌습니다.
- 자동 메모리 관리(Automatic memory management)
- 자바는 가비지 컬렉터를 통해 사용하지 않는 메모리를 자동으로 수거하는 기능을 지원합니다.
- 덕분에 개발자는 메모리를 관리하는 수고를 덜고, 핵심 코드에 집중할 수 있게 되었습니다.
( C, C++ 등 이전 언어는 개발자가 메모리를 제어해 줘야 했음)
자바의 구성
- 자바 프로그래밍 언어(Java Programing Language)
- 자바는 사람이 쉽게 이해할 수 있도록 만들어진 고급 언어입니다.
- 자바 가상 머신(컴파일러)이 해석할 수 있는 문법(Syntax) 제공합니다.
- 자바 개발 키트(Java Development Kit)
- 자바 애플리케이션을 개발하기 위한 툴 세트로 JRE(실행 환경)와 JVM(가상 머신)을 포함합니다.
- Oracle JDK(오라클 표준 JDK)와 Open JDK(사용자가 만든 오픈 소스 JDK)로 나뉘어집니다.
- 자바 실행 환경(Java Runtime Environment)
- OS 위에서 실행되고, 클래스 라이브러리 및 특정 Java 프로그램이 실행해야 하는 리소스를 제공하는
소프트웨어 계층입니다. - 클래스 로더, 자바 API, 런타임 라이브러리 등을 포함합니다.
- OS 위에서 실행되고, 클래스 라이브러리 및 특정 Java 프로그램이 실행해야 하는 리소스를 제공하는
- 자바 가상 머신(Java Virtual Mechine)
- 자바는 중간에 JVM을 활용하기 때문에 자바 -> JVM -> 기계어 순으로 변환됩니다.
- 프로그램이 실행되기 위해서 컴퓨터의 자원을 제어하는 OS가 정한 규칙을 따라야 하는데,
자바는 JVM을 매개체로 이용하기 때문에 OS에 대해서 독립적으로 사용될 수 있습니다. - 하지만 JVM을 거치기 때문에 C, C++ 같이 OS에 다이렉트로 작동되는 언어에 비해서는 속도의 한계가 발생합니다.
- JIT(Just In Time) 기법을 통해서 이러한 단점을 보완하고자 노력하고 있습니다.
(JIT: 프로그램을 실행하는 시점에서 필요한 부분을 즉성해서 컴파일하는 방식)
- 기타 유틸 프로그램(Util Program)
자바의 구분
- Java SE(Standard Edition): 표준 에디션
- Java EE(Enterprise Edition): 서버 페이지에 특화된 에디션
- Java ME(Micro Edition): 임베디드 시스템에 특화된 경량 에디션
'Programing Language > Java' 카테고리의 다른 글
[Java] 자바의 패키지(Package) (0) | 2022.05.11 |
---|---|
[Java] 기본 자료형(Primitive Data Type) (0) | 2022.05.11 |
[Java] 변수와 자료형(Variable & Data Type) (0) | 2022.05.11 |
[Java] 자바 프로그램 메모리 구조(Java Program Memory Structure) (0) | 2022.05.11 |
[Java] 자바 객체지향 개념 기초(Basic Java Object Oriented Programing) (0) | 2022.05.11 |