프로그래밍 언어
- 기계어
- 0과 1 : 2진수
- 컴퓨터의 cpu는 기계어만 이해 가능
- 어셈블리어 : 니모닉기호와 일대일 대응
- 고급언어:
- 사람이 이해하기 쉬움
- 절차지향& 객체지향
컴파일
- 소스: 프로그래밍 언어로 작성된 텍스트파일
- 컴파일: 소스 파일을 컴퓨터가 이해할 수 있도록 기계어로 만드는 과정
그린프로젝트
- 플랫폼 호환성 문제 해결
- 플랫폼 독립적인 언어 개발
- 메모리 사용량 적고 다양한 플랫폼을 가지는 가전제품에 적용
WORA (working once run anywhere)
- 한번 작성된 코드는 모든 플랫폼에서 바로 실행
- 바이트 코드
- 자바 컴파일러가 자바 소스 프로그램을 컴파일한 기계어
- 자바 소스 컴파일한 목적 코드
- cpu에 종속x (cpu에 의해 직접 실행x)
- JVM(자바가상기계)에서 인터프리터 방식으로 해석
- 클래스 파일에 저장
- 디어셈블: 바이트코드-> 텍스트로 변환
자바의 개발
- 바이트 코드를 하나의 실행 파일로 만드는 링크 과정 x
- main() 메소드 가진 클래스부터 실행
| 자바 | C/ C++ |
| - 컴파일러가 바로 바이트 코드 생성한 후 링크 과정 x - -> 메모리의 용량에 따라 필요한 클래스 파일만 메모리에 올려 실행함으로써 적은 메모리를 가진 어떤 환경에서도 실행 가능 - 바이트 코드는 JVM에서만 실행 가능 - 프로그램 실행 중에 동적 로딩 |
- 컴파일러가 중간 단계인 목적코드 생성 - 링커가 목적 코드와 라이브러리 연결 -> 실행 가능한 최종 실행 파일 생성 - 정적 라이브러리는 실행 파일에 포함 - 동적 라이브러리는 실행 중에 동적 링크 - 목적코드 파일은 플랫폼에 따라 다름 |
| JDK | JRE |
| - 자바 응용 개발 환경 - 개발에 필요한 도구 포함 |
- 자바 실행 환경 - JVM포함 - 컴파일 된 자바 API들이 들어 있는 모듈 파일 |
- 자바 API: JDK에 포함된 클래스 라이브러리
- 자바 패키지
- 서로 관련된 클래스들을 분류하여 묶어 놓은 것
- 계층 구조로 되어있음
- 자바 API 내에 패키지 형태로 제공됨
- 모듈화
- 작은 크기의 실행 환경 구성
- 세밀한 모듈화로 자바 응용프로그램이 실행되는데 필요 없는 모듈 배제
- 하드웨어가 열악한 소형 IoT 장치 지원
- public static void main(String[]args)
- System.out.println(“ “)
- 서블릿
- 웹 서버에서 실행되는 자바 프로그램
- 사용자 인터페이스가 필요없는 응용
- 웹 서버에 의해 실행 통제 받음
- 자바의 특성
- 플랫폼 독립성
- 상속성, 다향성, 캡슐화
- 클래스로 갭슐화 되어 클래스 내에 모든 변수와 함수를 구현해야한다.
- 하나의 소스 파일에 여러 클래스를 작성 가능하다.
- 컴파일된 클래스 파일에는 클래스가 하나만 존재해야한다.
- 실행코드를 배포한다
- 관련된 여러 클래스를 묶어 관리하는 패키지 단위를 사용한다
- 운영체제의 도움 없이 자체적으로
- 멀티스레드 지원
- 가비지 컬렉션
- 메모리 반환 기능x
- 메모리 할당 기능 (new)만 존재
- 가비지: 할당 후 사용x 메모리
- JVM이 자동으로 가비지 회수
- 실시간 응용 시스템에 부적합
- 실행 도중 예측 할 수 없는 시점에 가비지 컬렉션 실행
- 안전
- 타입 체크가 매우 엄격
- 포인터 개념 없음
'java' 카테고리의 다른 글
| 5강 상속 (0) | 2025.02.26 |
|---|---|
| 3강 반복문의 배열 그리고 예외 처리 (0) | 2025.02.26 |
| 2강 자바 기본 프로그래밍 (0) | 2025.01.10 |