Recent Posts
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 개성국밥
- PersistenceContext
- python
- vfr video
- terminal
- Spring Batch
- taint
- 겨울 부산
- mp4fpsmod
- VARCHAR (1)
- JanusWebRTC
- 헥사고날아키텍처 #육각형아키텍처 #유스케이스
- 깡돼후
- JanusGateway
- preemption #
- 코루틴 컨텍스트
- JanusWebRTCServer
- 달인막창
- 오블완
- 자원부족
- Value too long for column
- table not found
- 티스토리챌린지
- kotlin
- JanusWebRTCGateway
- pytest
- k8s #kubernetes #쿠버네티스
- PytestPluginManager
- tolerated
- 코루틴 빌더
Archives
너와 나의 스토리
[Java 기초부터 다시] 1. 자바 소개 - 자바 설명 / 특징 / JVM 본문
반응형
"이것이 자바다"라는 책을 읽으며 JAVA를 기초부터 정리해 보려고 합니다.
자바란?
- 자바는 오크(Oak)라는 언어에서부터 시작되었다. 이후 인터넷의 등장과 함께 인터넷에서 실행되는 프로그래밍 언어로 사용되었고, 이름도 자바로 변경되었다.
- 지금의 자바는 스마트폰을 비롯해서 각종 장비와 데스크톱에서 실행되는 애플리케이션, 그리고 금융, 공공, 대기업 등의 엔터프라이즈 기업 환경에서 실행되는 서버 애플리케이션을 개발하는 중추적인 언어로 자리매김하고 있다.
자바의 특징
- 이식성이 높은 언어이다.
- 이식성: 서로 다른 실행 환경을 가진 시슽템 간에 프로그램을 옮겨 실행할 수 있는 것을 말함.
- 예를 들어, 윈도우에서 실행하는 프로그램을 리눅스 또는 유닉스에서 실행할 수 있는 것 -> 이식성이 높음
- 객체 지향 언어이다.
- 객체 지향 프로그래밍: 부품에 해당하는 객체를 먼저 만들고, 이것들을 하나씩 조립 및 연결해서 전체 프로그램을 완성하는 기법
- 객체 지향 프로그래밍에서 사용되는 언어를 객체 지향 언어라고 한다.
- 자바는 아무리 작은 프로그램이라도 객체를 만들어 사용한다. 처음부터 객체를 고려하여 설계되었기 때문에 객체 지향 언어가 가져야 할 캡슐화, 상속, 다형성 기능을 완벽하게 지원하고 있다.
- 함수적 스타일 코딩을 지원한다.
- 함수적 프로그래밍은 대용량 데이터의 병렬 처리, 이벤트 지향 프로그래밍에 적합하다.
- 자바는 함수적 프로그래밍을 위해 람다식을 Java 8부터 지원한다.
- 람다식을 사용하면 컬렉션의 요소를 필터링, 매핑, 집계 처리하는데 쉬워지고, 코드가 매우 간결해진다.
- 메모리를 자동으로 관리한다.
- C++과 달리 자바는 개발자가 직접 메모리에 접근할 수 없도록 설계되었으며, 자바가 직접 메모리를 관리한다.
- 객체 생성 시 자동적으로 메모리 영역을 찾아서 할당하고, 사용이 완료되는 Garbage Collector를 실행시켜 자동적으로 사용하지 않는 객체를 제거시켜준다.
- 다양한 애플리케이션을 개발할 수 있다.
- 자바는 윈도우, 리눅스, 유닉스, 맥 등 다양한 운영체제에서 실행되는 프로그램을 개발할 수 있다.
- 자바는 다양한 운영체제에서 사용할 수 있는 개발 도구와 API를 묶어 에디션(edition) 형태로 정의하고 있다.
- Java SE(Standard Edition): 기본 에디션
- 자바 프로그램들이 공통적으로 사용하는 JVM(Java Virtual Machine)를 비롯해서 자바 프로그램 개발에 필수적인 도구와 라이브러리 API를 정의한다. 자바 프로그램을 개발하고 실행하기 위해서는 반드시 Java SE 구현체인 JDK(Java Development Kit)를 설치해야 한다.
- Java EE(Enterprise Edition): 서버용 애플리케이션 개발 에디션
- Java EE는 분산 환경(네트워크, 인터넷)에서 서버용 애플리케이션을 개발하기 위한 도구 및 라이브러리 API를 정의한다. 서버용 애플리케이션으로는 Servlet/JSP를 이용한 웹 애플리케이션, 분산 처리 컴포넌트인 EJB(Enterprise Javaa Bean) 그리고 XML, 웹 서비스(Web Services) 등이 있다.
- Java SE(Standard Edition): 기본 에디션
- 멀티 스레드를 쉽게 구현할 수 있다.
- 하나의 프로그램이 동시에 여러 가지 작업을 처리해야 할 경우와 대용량 작업을 빨리 처리하기 위해 서브 작업으로 분리해서 병렬 처리하려면 멀티 스레드 프로그래밍이 필요하다.
- 자바는 스레드 생성 및 제어와 관련된 라이브러리 API를 제공하고 있기 때문에 실행되는 운영체제에 상관없이 멀티 스레드를 쉽게 구현할 수 있다.
- 동적 로딩(Dynamic Loading)을 지원한다.
- 자바 애플리케이션은 여러 개의 객체가 서로 연결되어 실행되는데, 이 객체들은 클래스로부터 생성된다. 애플리케이션이 실행될 때 모든 객체가 생성되지 않고, 객체가 필요한 시점에 클래스를 동적 로딩해서 객체를 생성한다.
- 막강한 오픈소스 라이블러리가 풍부하다.
- 자바는 오픈소스(Open Source) 언어이기 때문에 자바 프로그램에서 사용하는 라이브러리 또한 오픈소스가 넘쳐난다. 검증된 오픈소스 라이브러리를 사용하면 개발 기간을 단축하면서 안전성이 높은 애플리케이션을 쉽게 개발할 수 있다.
JVM(Java Virtual Machine)
- 운영체제는 자바 프로그램을 바로 실행할 수 없는데, 그 이유는 자바 프로그램은 완전한 기계어가 아닌, 중간 단계의 바이트 코드이기 때문에 이것을 해석하고 실행할 수 있는 가상의 운영체제가 필요하다. 이것이 JVM이다.
- 즉, 자바를 실행시키는 가상의 기계라고 해서 JVM이라고 한다.
- 운영체제별로 프로그램을 실행하고 관리하는 방법이 다르기 때문에, 운영체제와 자바 프로그램을 중계하는 JVM을 두어 자바 프로그램이 여러 운영체제에서 동일한 실행 결과가 나오도록 설계한 것이다.
- 바이트 코드는 모든 JVM에서 동일한 실행 결과를 보장하지만, JVM은 운영체제에 종속적이다. 자바 프로그램을 운영체제가 이해하는 기계어로 번역해서 실행해야 하므로 JVM은 운영체제에 맞게 설치되어야 한다.
- JVM은 JDK 또는 JRE를 설치하면 자동으로 설치되는데, JDK와 JRE가 운영체제별로 제공된다.
- 자바 프로그램의 실행 단계: 소스 코드(*.java) -> [컴파일러(javac.exe)] -> 바이트 코드 파일(*.class) -> [JVM 구동(java.exe)] -> (윈도우용 JVM이였다면) 윈도우에서 실행할 수 있는 기계어로 번역 후 실행됨
출처:
- [이것이 자바다]
반응형
'Programming Language > Java' 카테고리의 다른 글
[Java] 싱글톤(Singleton)을 만들자! (0) | 2021.04.07 |
---|---|
[Java] Static field의 복잡한 초기화 작업을 위한 정적 블록(Static block) (0) | 2021.04.07 |
[Java 기초부터 다시] 4. 데이터 - 참조 타입/JVM/Enum (0) | 2021.04.07 |
[Java 기초부터 다시] 3. 조건문과 반복문 (0) | 2021.04.04 |
[Java 기초부터 다시] 2. 변수 / 연산자와 연산식 (0) | 2021.03.24 |
Comments