일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- jvm
- tcp
- aws s3
- PostgreSQL
- CVAT
- kubectl
- helm
- AWS Redshift
- zookeeper
- EC2
- docker
- AWS
- CSV
- grafana
- MAC address
- Vision
- java
- Network
- JavaScript
- OS
- log
- ip
- Python
- airflow
- Spring
- kubernetes
- Kafka
- Operating System
- Packet
- kubeadm
- Today
- Total
JUST WRITE
Java 특징 본문
이 글은 책 자바의 정석의 1장을 정리하여 작성한 글입니다.
운영체제에 독립적
이러한 특징은 일종의 에뮬레이터인 자바가상머신(JVM) 덕분에 가능하다.
JAVA 응용 프로그램은 JVM과 통신, JVM이 해당 통신을 운영체제가 이해하도록 변환 후 전달한다.
따라서, JAVA는 운영체제제에 독립적, JVM은 운영체제에 종속적이다.
여러 운영체제에 설치할 수 있는 서로 다른 버전의 JVM을 제공하고 있다.
객체지향언어 (OOP)
Object-oriented Programing Language
JAVA는 객체지향 프로그래밍언어 중의 하나이다.
객체지향개념의 특징인 상속, 캡슐화, 다형성이 잘 적용되어 있다고 평가 받고 있다.
자동메모리관리
JAVA에서는 가비지컬렉터(Garbage Collector)가 자동으로 메모리를 관리해준다.
C나 C++에서는 OS레벨 메모리에 직접 접근, free()라는 메소드를 호출하여 명시적으로 할당메모리 해제해줘야 한다.JAVA에서는 가비지컬렉터가 알아서 free()를 실행해 메모리를 확보해준다.
프로그래머가 따로 메모리를 관리하지 않고 프로그래밍에 집중할 수 있도록 도와준다.
네트워크와 분산처리 지원
다양한 네트워크 프로그래밍 라이브러리를 통해 단기간내에 네트워크 관련 프로그램을 쉽게 개발이 가능하다.
Socket, Servlet, JSP, Netty 등 다양한 라이브러리가 존재한다.
Muliti-Thread
JAVA에서 개발되는 Multi-Thread 프로그램은 시스템과는 관계없이 구현이 가능하다.
Concurrent 라이브러리 등 관련 라이브러리가 제공된다.
여러 Thread에 대한 스케줄링은 JAVA Interpreter가 담당한다.
Dynamic Loading
애플리케이션 실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩한다.
일부 클래스가 변경되어도 전체 애플리케이션을 다시 컴파일 하지 않아도 된다.
[주요용어]
interpreter
javac 명령어로 컴파일된 자바바이트코드 파일(.class)을 interpreter가 한줄씩 읽으면서 기계어로 번역, 실행한다.
[참고사이트]
'Programing > Java' 카테고리의 다른 글
Immutable Objects (0) | 2021.09.25 |
---|---|
Wrapper Class (0) | 2021.09.24 |
Static (0) | 2021.09.24 |
접근 제어자 (0) | 2021.08.26 |
OOP (0) | 2021.08.25 |