# 프로그래밍 언어
º 기계어 (machine language)
- 0, 1 이진수로 구성
- 컴퓨터의 CPU는 기계어만 이해하고 처리함
º 어셈브리어 (assembly language)
- 기계어의 명령을 ADD, SUB, MOVE 등과 같이 표현하기 쉬운 상징적인 단어인 니모닉 기호(mnemonix symbol)로 1:1 대응시킨 언어
º 고급언어 (high level language)
- 사람이 이해하기 쉽고, 복잡한 작업, 자료 구조, 알고리즘을 표현하기 위해 고안된 언어
- C/C++, Java, C# 등
- 절차 지향 언어와 객체 지향 언어로 나눌 수 있음
Structured programming
Object oriented programming
#프로그램 편집, 컴파일 및 실행
- Java : .java -> .class
- C : .c -> .obj -> .exe
- C++ : .cpp -> .obj -> .exe
소스 프로그램 편집 및 개발 -> 소스 프로그램 -> 컴파일 -> 기계어 -> 프로그램 실행
#자바의 태동
º Sun Microsystems 의 제임스 고슬링(James Gosling) 이 개발
- 1991년에 가전 제품에 들어갈 소프트웨어를 위해 개발 시작
- 1995년 자바 발표
º 목적
- 플랫폼 호환성 문제 해결, 플랫폼 독립적인 언어 개발
- 메모리 사용량이 적고 다양한 플랫폼을 가지는 가전 제품에 적용
º 초기 이름 : 오크(OAK)
- 인터넷 환경에 적합하게 발전시켜 Java 발표
º 2009년에 Sun Microsystems 를 Oracle 사에서 인수
#플랫폼 종속성 (platform dependence)
플랫폼 = 하드웨어 플랫폼 + 운영체제 플랫폼
º 프로그램의 플랫폼 호환성이 없는 이유
- 기계어가 CPU마다 상이함
- 운영체제마다 API가 서로 다름
- 운영체제마다 실행파일 형식이 서로 다름
#WORA (Write Once Run Anywhere)
º 한 번만 작성하여 모든 플랫폼에서 실행 가능
- C/C++ 등과 같은 기존 언어의 플랫폼 종속성 극복
- OS, HW에 상관없이 JVM이 있는 곳이면 어디서나 자바 프로그램에 동일한 실행환경을 제공하며 실행 결과 기대
- 네트워크에 연결된 클라이언트들에서 실행 가능
-> 웹 브라우저, 분산 환경에서 지원됨
º WORA를 가능하게 하는 자바의 특징
- 바이트 코드 (byte code)
- 자바 가상 기계, JVM (Java Virtual Machine)
#자바의 플랫폼 독립성, WORA
자바 응용 프로그램 -> 바이트 코드 -> 자바 가상 기계가 설치된 모든 컴퓨터에서 실행됨
#자바의 실행 환경
º 바이트 코드 (Bytecode)
- 자바 가상 기계에서 실행 가능한 바이너리 코드
- 클래스 파일 ( .class )에 저장
º 자바 가상 기계 (JVM : Java Virtual Machine)
- 가상 기계로서 각기 다른 플랫폼에서 동일한 자바 실행환경 제공
- 자바 가상 기계 자체는 플랫폼에 종속적
- 인터프리터 (interpreter) 방식으로 바이트 코드 해석하고 실행
- 자바 가상 기계는 다양한 회사에서 개발되어 공급
º 자바의 실행
- 자바 가상 기계가 클래스 파일 ( .class )의 바이트 코드 실행
#자바와 C/C++의 실행 환경 차이
º Java
자바 소스 파일(Test.java) -> 컴파일러 -> 바이트 코드(Test.class) -> 자바 프로그램
º C/C++
소스 파일(Test.cpp) -> 컴파일러/링커 -> 바이너리 실행 파일(Test.exe) -> C++ 프로그램
#자바와 C/C++ 실행 환경과 실행 과정
º Java
- 링크 과정 없이 컴파일러가 바로 바이트 코드를 생성한다.
- 바이트 코드는 JVM에서만 실행 가능하다.
- 런타임에 필요한 클래스들은 JVM에 의해 링크되며, 클래스 로더가 동적으로 필요한 클래스를 로딩한다.
º C/C++
- 컴파일러가 오브젝트 코드를 생성한 후, 링커가 필요한 라이브러리를 링크하여 최종 실행 가능한 실행 파일 (exe 파일)을 생성한다.
- 정적 라이브러리들은 실행 파일에 포함되므로 실행 파일의 크기가 커진다.
- 동적 라이브러리의 경우 런타임에 링크가 일어난다.
- 오브젝트 코드와 실행파일은 플랫폼마다 다르다.
#자바의 배포판 종류
º Java SE (Java Standard Edition)
- 자바 표준 배포판
- 데스크탑과 서버 응용 개발 플랫폼
º Java ME (Java Micro Edition)
- 자바 마이크로 배포판
- 휴대폰 등 제한된 리소스를 갖는 하드웨어에서 응용 개발을 위한 플랫폼
- Java SE의 subet + 임베디드 및 가전 제품을 위한 API 정의
º Java EE (Java Enterprise Edition)
- 자바 기업용 배포판
- 자바를 이용한 다중 사용자, 기업용 응용 개발을 위한 플랫폼
- Java SE + 인터넷 기반의 서버측 컴퓨팅 관련 API 추가
# JDK와 JRE
º JDK : Java Development Kit
- 자바 응용 개발 환경으로, 개발에 필요한 도구 포함
-> 컴파일러 및 도구, JRE (Java Runtime Environment), 클래스 라이브러리의 소스, 자바 응용 프로그램의 샘플 소스 등
º JRE : Java Runtime Environment
- 자바 실행 환경으로 JVM이 포함되어 있음
- 자바 실행 환경만 필요한 경우 JRE만 따로 다운 가능
º JDK와 JRE의개발 및 배포
- 오라클의 Technology Network의 자바 사이트에서 다운로드
# 자바 응용프로그램 실행기
º JDK의 bin 디렉토리에 포함된 주요 개발 도구
- javac : 자바 소스를 바이트 코드로 변환하는 컴파일러
- java : 자바 응용프로그램 실행기 (jre bin에도 있음)
- javadoc : 자바 소스프로그램으로부터 HTML 형식의 API 도큐먼트 생성
- jar : 자바 클래스 파일을 압축한 자바 아카이브 파일(JAR) 생성하고 관리하는 유틸리티
- jdb : 자바 응용 프로그램의 실행 중 오류를 찾는 자바 디버거
- javap : 클래스 파일에 담긴 바이트 코드를 자바 소스와 함께 보여주는 디어셈블러
- jmod : 자바의 모듈 파일(.jmod)을 만들거나 모듈 파일의 내용 출력
- jlink : 응용 프로그램에 맞춘 맞춤형(custom) JRE 생성
# 자바 API (Application Programming Interface)
º 자바 API
- JDK에 포함된 클래스 라이브러리
- 주요한 기능들을 미리 구현한 클래스 라이브러리의 집합
- 개발자는 API를 이용하여 쉽고 빠르게 자바 프로그램 개발
º 자바 패키지 (package)
- 서로 관련된 클래스들을 분류하여 묶어 놓은 것
- 필요한 클래스가 속한 패키지만 import하여 사용
- 계층구조로 되어 있음
º 자바 API(클래스 라이브러리)는 JDK내에 패키지 형태로 제공
º 개발자가 자신의 패키지 생성 가능
# 자바 통합 개발 환경 (자바 IDE) - Eclipse
º IDE
- Integrated Development Environment의 약자
- 통합 개발 환경
- 편집, 컴파일, 디버깅을 한번에 할 수 있는 통합된 개발 환경
º Eclipse
- 자바 응용 프로그램 개발을 위한 통합 개발 환경
- IBM에 의해 개발된 오픈 소스 프로젝트
# Hello 프로그램 설명
º public class Hello
- 클래스의 선언
- Hello는 클래스 이름
- 클래스는 { } 사이에 정의
- 자바는 하나 이상의 클래스로 구성
º public static void main(String[] args)
- 자바 프로그램은 main 메소드에서 실행 시작
- 실행을 시작하는 클래스에 main() 메소드가 반드시 하나만 존재
º System.out.println("Hello");
- 화면에 "Hello"을 출력하는 실행문
- JDK에서 제공하는 java.lang.System.out 객체 이용
# 요약
- 자바는 플랫폼 독립적, 객체지향 프로그래밍 언어
- 자바 배포판 : Java SE, Java ME, Java EE이 있음
- 자바 프로그램을 개발하고 실행하기 위한 환경은 JDK에서 제공
- IDE 환경을 제공하는 도구로는 이클립스(Eclipse)가 있음.
- 자바 프로그램은 클래스 정의로 시작하며, 클래스 내에서 모든 변수나 메소드를 정의
- 프로그램 실행은 main() 메소드부터 시작됨.
- 자바 프로그램은 하드웨어 독립적인 바이트 코드로 컴파일되며, 이는 JVM상에서 실행됨.
- 자바 소스코드의 확장자는 .java이고, 컴파일된 파일의 확장자는 .class임
- 하나의 클래스 파일에는 반드시 하나의 자바 클래스가 포함됨
- 다수의 클래스 파일로 자바 응용프로그램이 구성된 경우 jar 파일 형태로 압축하여 배포 및 실행 가능
- javadoc을 사용하여 자신이 만든 프로그램의 document를 손쉽게 html 형식의 파일로 만들 수 있음.
'JAVA > 자바 이론' 카테고리의 다른 글
Java | 3-1 반복문과 배열 (0) | 2021.04.12 |
---|---|
Java | 2-2 자바 기본 프로그래밍 (0) | 2021.04.11 |
Java | 2-1 자바 기본 프로그래밍 (0) | 2021.04.11 |
Java | 1-2 자바 기본 프로그래밍 (0) | 2021.04.11 |
Java | 1-1 자바 기본 프로그래밍 (0) | 2021.04.11 |