JAVA/자바 이론 / / 2021. 4. 11. 12:00

Java | 시작

# 프로그래밍 언어

º 기계어 (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 형식의 파일로 만들 수 있음.

 

 

 

 

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유