1. 프로그래밍 언어
👀 프로그램: 컴퓨터에서 특정 목적을 수행하기 위해 프로그래밍 언어로 작성된 소스를 기계어로 번역한 것
👀 프로그래밍 언어: 사람과 컴퓨터가 대화하기 위한 언어. 고급 언어와 저급 언어로 나뉜다.
👀 고급언어
뜻: 컴퓨터 언어 중 사람이 쉽게 이해할 수 있는 언어
종류: C, C++, Java....
특징:
- 컴퓨터가 바로 이해할 수 없기 때문에 Compile 과정을 통해 컴퓨터가 이해할 수 있는 기계어로 변역해야 한다.
- 작성된 코드(소스) 는 Compiler 라는 소프트웨어에 의해 기계어로 변환된 후 컴퓨터에서 실행할 수 있다.
👀 저급언어
뜻: 컴퓨터 언어 중 컴퓨터가 쉽게 이해할 수 있는 언어
종류: 어셈블리어
특징:
- 사람이 바로 이해하기 쉽지 않기 때문에 학습이 까다롭다.
2. Java의 특징
👀 이식성이 높은 언어
이식성: 서로 다른 실행 환경을 가진 시스템 간에 프로그램을 옮겨 실행할 수 있는 것
Java 언어로 개발된 프로그램은 JRE가 설치되어 있는 모든 운영체제에서 실행 가능
다른 언어는 리눅스에서 실행하려면 프로그램 소스 파일을 수정한 후, 재컴파일을 해야 실행 가능
👀 객체 지향 언어
부품에 해당하는 객체들을 먼저 만들고, 하나씩 조립해서 전체 프로그램을 완성하는 기법
객체 지향 언어가 가져야 할 특징을 갖고있음 (캡슐화, 상속, 다형성)
👀 함수적 스타일 코딩 지원
함수적 프로그래밍을 위한 람다식을 지원함
람다식 사용 시 컬랙션의 요소를 필터링, 매핑, 집계처리 등을 할 수 있음
람다식 사용 시 코드가 간결해짐
👀 메모리 자동 관리
Java에서는 자동으로 메모리를 관리하는 기능이 있음(메모리는 Java가 직접 관리)
객체 생성 시 자동으로 메모리 영역을 찾아서 할당함
사용이 완료되면 Garbage Collector 를 실행시켜 사용하지 않는 객체를 제거
👀 다양한 어플리케이션 개발 가능
다양한 운영체제에서 실행되는 프로그램 개발 가능
👀 멀티 스레드 쉽게 구현 가능
Java 는 스레드 생성 및 제어와 관련된 라이브러리 API 를 제공
멀티 스레드 프로그래밍이 필요한 경우
- 하나의 프로그램이 동시에 여러 가지 작업을 처리해야 할 경우
- 대용량 작업의 빠른 처리를 위해 서브 작업으로 분리해서 병렬 처리 하는 경우
👀 동적 로딩 지원
Java 는 객체가 필요한 시점에 클래스를 동적 로딩해서 객체를 생성함
Java 의 객체는 클래스로부터 생성됨
코드 유지보수 시, 해당 클래스만 수정하면 되기 때문에 애플리케이션을 다시 컴파일할 필요가 없음
👀 다양한 오픈소스 라이브러리
3. Java Virtual Machine (JVM)
운영체제는 Java 프로그램을 바로 실행할 수 없음
Java 프로그램은 중간 단계의 바이트 코드이기 때문(*.class)
👀 JVM (Java Virtual Machine):
자바를 실행시키는 가상의 기계
실제 운영체제를 대신해서 자바 프로그램을 실행시키는 가상의 운영체제 역할을 함
👀 JVM 특징:
운영체제에 종속적(운영체제에 맞게 설치해야 함)
완전한 기계어보다는 속도가 느림(C, C++)
JIT 컴파일러를 통해 빨라지고 있긴 함
Just It Time
JVM 내부에 최적화되어있음
👀 Java SE (Standard Edition)
Java 프로그램 개발에 필요한 도구와 라이브러리 API 를 정의함
👀 Java EE (Enterprise Edition)
분산 환경(네트워크, 인터넷)에서 서버용 애플리케이션 개발에 필요한 도구와 라이브러리 API 를 정의함
서버용 어플리케이션: Servlet/JSP 를 위한 웹 어플리케이션, XML 웹 서비스 등등..
4. Java 프로그램 개발 순서
- .java 파일을 생성하고 프로그램 소스(Java 소스 파일)를 작성함
- 작성한 소스를 컴파일하여 .class 파일을 생성함
- 컴파일이 되면 .class 파일(바이트 코드 파일)이 생성됨
- .class 파일을 실행하기 위해 JVM()을 실행함
이때 JVM 을 구동시키는 명령어는 java.exe 임 - java.exe 명령어가 실행되면 JVM 은 .class 파일을 메모리로 로드하고 기계어로 번역함
- main() 메서드가 실행됨
출처: [책] 이것이 자바다
'컴퓨터 > Java' 카테고리의 다른 글
[Java] JavaSE, JDK, JRE 의미, JDK 의 주요 디렉토리 및 exe 정리 (1) | 2024.05.03 |
---|---|
[Java] List<Map<String, Object>> 을 List<Map<String, String>> 으로 형변환하기 (0) | 2023.02.27 |
[JAVA] 이것이 자바다 (신용권, 한빛미디어) 6단원 연습문제_5번 풀이 (0) | 2021.11.10 |
[JAVA] 이것이 자바다 (신용권, 한빛미디어) 6단원 연습문제_5번 풀이 (0) | 2021.11.09 |
[JAVA] 이것이 자바다 (신용권, 한빛미디어) 6단원 연습문제_4번 풀이 (0) | 2021.11.08 |
댓글