2021. 3. 3. 19:06ㆍ코 딩 공 부/J A V A
프로그래밍 언어
개요
● 컴퓨터 시스템 구성
- 컴퓨터 시스템 구성
하드웨어 + 소프트웨어
- 하드웨어(hardware)
컴퓨터를 구성하고 있는 물리적인 기계장치의 총칭(CPU, 기억장치, 입력장치, 출력장치 등)
- 소프트웨어(software)
컴퓨터 시스템을 효율적으로 운영하기 위해 개발된 프로그램의 총칭(시스템 소프트웨어, 응용 소프트 웨어)
● 프로그램(program)
- 어떤 문제를 해결하기 위해 컴퓨터에게 주어지는 처리 방법과 순서를 기술한 일련의 명령문의 집합체.
- 프로그램은 소프트웨어의 동의어로 취급되는데 엄밀히 말해, 프로그램은 소프트웨어의 하위 집합이다.
- 애플리케이션, 또는 앱이라고 불리기도 한다.
● 프로그래밍 언어
- 프로그래밍 언어는 컴퓨터 시스템을 구동시키는 소프트웨어를 작성하기 위한 언어이다.
저급 언어와 고급 언어
● 저급 언어(low-level language)
컴퓨터가 이해하기 쉽게 작성된 프로그래밍 언어로, 일반적으로 기계어와 어셈블리어를 일컫는다.
1) 기계어(Machine Language)
- 기계어는 특별한 변환 과정 없이 컴퓨터(CPU)가 직접 처리할 수 있는 언어
- 2진수 0과 1로만 이루어져 있다.
- 기종마다 기계어가 다르므로 언어의 호환성이 없다.
- 번역할 필요 없이 바로 실행되므로 실행 속도가 빠르다.
- 프로그램을 작성하거나 이해하기가 어렵다.
2) 어셈블리 언어(Assembly Language)
- 기계어와 1:1로 대응하여 기호화 한 언어. 즉, 2진수 0과 1로 이루어진 명령어를 ADD, MOV 같은 문자로 1:1 대응하여 표현한 언어
- 기호 코드(Mnemonic code)라고도 함
- 어셈블러(Assembler)에 의해 기계어로 번역해 주어야한다.
● 고급 언어(high-level language)
- 사람이 이해하기 쉽게 작성된 프로그래밍 언어
- 저급 언어와는 다르게 특정 컴퓨터와 관계없이 독립적으로 프로그램을 작성 할 수 있다.
- 저급 언어 보다 가독성이 높고 작성하기 쉬우며 유지 보수가 편리하다.
- 컴파일러(compiler)나 인터프리터(interpreter)에 의해 기계어로 번역되어 실행된다.
- C, C++, C#, JAVA, 파이썬(Python) 등
자바 소개
개요
- 썬 마이크로시스템즈 (Sun Microsystems Inc) 제임스 고슬링(James Gosling)에 의해 시작
- 1991년 그린 프로젝트(Green Project)라는 이름으로 시작해 1995년에 발표
- 초기에는 가전제품을 위한 언어로 개발되었으나 범용 개발 언어로 발전
- 2009년 썬 마이크로시스템즈가 오라클과 인수 합병
- 웹 어플리케이션 개발 및 모바일 기기용 소프트웨어 개발 등에 널리 사용
JAVA 분류
● Java SE(Java Platform, Standard Edition)
- 데스크탑 및 서버, 고사양 임베디드 시스템을 위한 표준 자바 플랫폼
● Java EE(Java Platform, Enterprise Edition)
- 자바를 이용한 서버 측 개발을 위한 플랫폼. Java SE 기반
●Java ME(Java Platform, Micro Edition)
- 휴대전화, PDA, 셋톱박스 등에서 Java 프로그래밍 언어를 지원하기 위해 만들어진 플랫폼. Java SE 기반
자바 특징
- 플랫폼에 독립적이다. Java 응용 프로그램은 컴퓨터 아키텍처에 관계없이 모든 Java 가상머신(JVM)에서 실행할 수 있다.
- 객체지향(Object Oriented) 프로그래밍
- 네트워크와 분산 환경을 지원
- 멀티쓰레드 지원
- 동적 로딩을 지원
- 견고하고 안전
- 자동으로 메모리를 관리
● 컴퓨팅 플랫폼(computing platform)
- 소프트웨어가 구동 가능한 하드웨어 아키텍처나 소프트웨어 프레임워크(응용 프로그램 프레임워크 포함)의 종류를 설명하는 단어
- 플랫폼은 컴퓨터의 아키텍처, 운영체제(OS), 프로그램 언어, 그리고 관련 런타임 라이브러리 또는 GUI를 포함
- 플랫폼은 소프트웨어 응용 프로그램들을 돌리는데 쓰이는 하드웨어와 소프트웨어의 결함
- 플랫폼은 하나의 운영체제 또는 컴퓨터 아키텍처라고 말할 수 있으며 그 두가지를 통칭해서 말할 수도 있다.
자바 실행 환경
● 자바 컴파일러(Java Compiler)
- 자바 프로그램을 중간 언어(intermediate language) 형태인 자바 바이트 코드로 컴파일
● 자바 바이트 코드(Java Byte code)
- 플랫폼에 상관없이 자바 가상 머신에 의해 실행될 수 있도록 정의된 중간코드
● 자바 가상 머신(Java Virtual Machine : JVM)
- 자바 바이트코드를 실행할 수 있는 주체이다.
● Java Interpreter
자바 바이트코드는 자바 가상 머신에 의해 해석되어 실행되는데, 이때 자바 가상 머신은 자바 바이트코드에 대한 해석기 즉 인터프리터(interpreter)로 동작하게 된다.
● JIT 컴파일(Just-In-Time compilation) 또는 동적 번역(dynamic translation)
- 프로그램을 실제 실행 시점에 기계어로 번역하는 컴파일 기법으로, 프로그램 실행 속도를 빠르게 하기 위해 사용
- 실행 시점에서 기계어 코드를 생성하면서 그 코드를 캐싱하여, 같은 함수가 여러번 불릴 때 매번 기계어 코드를 생성하는 것을 방지
- 자바 가상 머신과 .NET, V8(node.js)에서 JIT 컴파일을 지원
Java Virtual Machine
● 자바 가상 머신(JVM)
- 자바 바이트코드를 실행할 수 있는 주체
- 스택 기반의 가상 머신이다.
- 포인터를 지원하되 C와 같이 주소 값을 임의로 조작이 가능한 포인터 연산은 불가능
- 메모리 관리 및 가비지 컬렉션(Garbage Collection) 수행
- 모든 기본 타입의 정의를 명확히 함으로써 플랫폼 독립성 보장
● JVM 구성
- Class Loader : JVM 내로 클래스(.class 파일)를 로드하고 링크를 통해 배치하는 작업을 수행하는 모듈
- Execution Engine(실행 엔진) : 클래스를 실행시키는 역할이다.
- Interpreter(인터프리터) : 실행엔진은 자바 바이트 코드를 명령어 단위로 읽어서 실행한다.
- JIT(Just-In-Time) : 인터프리터 방식의 단점을 보완하기 위해 도입된 JIT 컴파일러이다.
- Garbage collector : GC를 수행하는 모듈(쓰레드)
- Runtime Data Area : 프로그램을 수행하기 위해 OS에서 할당받은 메모리 공간
JDK와 JRE
● JDK(Java Development Kit)
- 자바 어플리케이션 개발 및 배포를 위한 개발키트
- JDK는 JAVA SE 개발도구를 의미
● JRE(Java Runtime Environment)
- 자바 실행 런타임(JVM 포함)
- 자바 실행 환경만 필요한 경우 JRE만 설치 가능
● 설치된 JDK의 bin 디렉토리에 포함된 주요 개발 도구
- javac : 자바소스를 바이트 코드로 변환하는 컴파일러
- java : 클래스 파일(자바 바이트 코드)을 해석 및 실행
- jar : 자바 아카이브 파일(JAR)의 생성 및 관리하는 유틸리티
- jdb : 자바 디버깅 툴
- javap : 클래스 파일을 자바 소스 코드로 디스어셈블 해주는 도구
- javadoc : 소스 코드 주석으로부터 자동으로 문서를 생성하는 툴
자바 API
● 자바 API(Application Programming Interface)
- Java SE(JDK)에 포함된 클래스 라이브러리. 주요한 기능들을 미리 구현한 클래스 라이브러리의 집합
- 자바를 사용하여 사용자의 부담을 최소화하는 반면에 입출력, 화면구성, 이미지, 네트워크와 같이 복잡하지만 필요한 클래스들을 제공하여 사용자가 쉽게 구현할 수 있도록 하는 API
● 자바 패키지
- 서로 관련된 클래스 라이브러리를 묶어 놓은 것으로 하나의 디렉토리(폴더) 이다.
- 패키지명과 같은 디렉토리 내에 클래스 파일을 포함하며 하위 패키지도 포함하는 중첩 구조
● API 문서
- 영문
https://docs.oracle.com/javase/8/docs/api/
Java Platform SE 8
docs.oracle.com
https://docs.oracle.com/javase/10/docs/api/index.html?overview-tree.html
Java SE 10 & JDK 10
docs.oracle.com
프로그램 작성 및 컴파일
프로그램 작성
● 자바 애플리케이션의 형식
[import 패키지.클래스명;] // 외부 클래스 import
public class 클래스명{ // 클래스 시작. 클래스명은 대소문자를 구분한다.
public static void main(String[] args){ // main 함수의 시작
각종 선언; // main 함수 몸체
문장 또는 명령문;
} // main 함수의 끝
} // 클래스 끝
· 자바 애플리케이션 프로그램 실행 시작은 main()이라는 함수에서 시작된다.
· main() 함수의 인수에는 String 배열을 기입한다.
· 중괄호({})는 함수의 유효범위를 지정하는 것으로 중괄호 안에 프로그램을 기술한다.
· 자바에서는 클래스명, 변수, 메소드명 등에서 영문자의 대소문자를 명확히 구분한다.
· 한 문장의 끝은 세미콜론(;)을 이용하여 종료하며, 한줄에 여러 문장을 기술 할 수 있다.
● 프로그램 작성 예
public class Hello{
public static void main(String[] args){
System.out.println("첫 번째 자바 프로그램 !!!");
}
}
● 프로그램 저장
클래스명.java
위 프로그램은 Hello.java 라는 이름으로 저장하며, 파일명도 대소문자를 명확하게 구분하므로 클래스명과 동일하게 저장해야 한다.
프로그램 컴파일 및 실행
● 프로그램 컴파일
cmd>javac 클래스명.java
cmd>javac -encoding utf-8 자바파일명.java // 자바 소스파일이 UTF-8로 저장된 경우
자바 소스 코드(.java)를 컴파일 하면 자바 클래스 파일(바이트코드, .class)이 생성되고, 클래스 파일은 플랫폼에 상관없이 자바 가상 머신만 있으면 실행 할 수 있다.
● 프로그램 실행
cmd>java 클래스명
main 함수를 포함하고 있는 자바 클래스 파일(.class)을 자바 가상 머신에 의해 실행한다.
'코 딩 공 부 > J A V A' 카테고리의 다른 글
JAVA - 배열 (0) | 2021.04.12 |
---|---|
JAVA - 제어문 (0) | 2021.03.24 |
JAVA - 연산자 (0) | 2021.03.16 |
JAVA - 기본 프로그램(2) (0) | 2021.03.08 |
JAVA - 기본 프로그램(1) (0) | 2021.03.05 |