성향별 언어 종류 → main 언어/DB 언어/GUI 언어
1. 운영체제에 독립적(이식성이 높음)
이식성: 서로 다른 실행환경을 가진 시스템 간 프로그램을 옮겨 실행할 수 있는 것
운영체제: window, ios, linux(centos, ubuntu), android
2. 객체지향언어(OOP) <-> 절차 지향 언어
OOP: 프로그램을 개발하는 기법으로 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립 및 연결해서
전체 프로그램을 완성하는 기법/캡슐화, 상속, 다형성
3. 사용하기 쉬운 언어
4. 자동 메모리 관리(Garbage Collection): 불필요한 메모리 자동관리
5. 동적 로딩 지원
미리 객체를 만들지 않고, 필요한 시점에 필요한 클래스들이 JVM에 연결되며 클래스 로더가 필요한 클래스를 동적으로 로딩해서 객체 생성, 유지 보수 시 특정 객체만 쉽게 수정 및 교체 사용 가능
6. 멀티 쓰레드 지원
하나의 프로그램이 동시에 여러 작업을 처리해야 하는 경우와, 대용량 작업을 빨리 처리하기 위해 서브 작업으로 분리해서 병렬처리하는 것
Java는 쓰레드 생성 및 제어와 관련된 라이브러리 API를 제공
7. 네트워크와 분산 환경 지원
다양한 네트워크 프로그래밍 라이브러리를 통해 빠른 시간안에 네트워크 관련 프로그램을 쉽게 개발할 수 있도록 지원
> 컴파일러: 고급 언어 → 저급 언어로 번역
번역 과정이 번거롭고 번역 시간이 오래 걸림
한번 번역한 후에는 다시 번역하지 않으므로 실행 속도가 빠름
jdk: 자바 개발 키트, compile 역할
jre: 자바 실행 환경, 실행 역할 → 실행하면 JVM 돌아감
JVM: 자바 바이트코드를 해당 운영체제 기계어로 재번역하면서 실행하는 interpreter
- interpreter: 한 줄씩 실행해 나간다는 뜻
운영체제와 자바 프로그램을 연결시켜주는 역할
> 자바 개발 환경 설치 범위
> IDE : 통합개발도구
> 주석(comment): //, /* /, /** /