[Java] 개요
▶ 자바
- 객체 지향 프로그래밍 언어
- C++ 언어의 객체 지향적인 장점을 살리면서 분산 환경을 지원
▷ 도입배경
● 플랫폼 호환성 문제 해결
- 기존 언어로 작성된 프로그램은 PC, 유닉스, 메인 프레임등 플랫폼 간에 호환성 없음
- 소스를 다시 컴파일하거나 프로그램을 재작성 해야하는 단점
● 플랫폼 독립적인 언어 개발
- 모든 플랫폼에서 호환성을 갖는 프로그래밍 언어 필요
- 네트워크, 특히 웹에 최적화된 프로그래밍 언어의 필요성 대두
● 메모리 사용량이 적고 다양한 플랫폼을 가지는 가전제품에 적용
- 내장형 시스템 요구 충족
(플랫폼 = 하드웨어 플랫폼 + 운영체제 플랫폼)
▶ 자바의 특성
● 객체지향
- 객체지향의 특징인 클래스 계층 구조, 상속성, 다형성, 캡슐화 등 지원
● 멀티스레드
- 다수 스레드의 동시 수행 환경 지원
- 자바는 운영체제의 도움 없이 자체적으로 멀티스레드 지원
● 플랫폼 독립성
- 특정 플랫폼에서만 작동되는 문제해결
- 자바 가상 기계가 바이트 코드 실행
- 플랫폼에 종속성을 갖지 않음
● 실행 모듈
- 한개의 class 파일 또는 다수의 class 파일로 구성
- 여러 폴더에 걸쳐 다수의 클래스 파일로 구성된 경우 → jar 파일 형태로 배포 가능
● 클래스로 캡슐화
- 자바의 모든 변수나 함수는 클래스 내에 선언
- 클래스 안에서 새로운 클래스(내부 클래스) 작성 가능
● 패키지
- 관련된 여러 클래스를 패키지로 묶어 관리
- 패키지는 폴더 개념
ex) java.lang.System은 java\lang 디렉터리의 System.class 파일
● 소스(.java)와 클래스(.class) 파일
- 하나의 소스 파일에 여러 클래스 작성 가능(하나의 public 클래스만 가능)
- 소스 파일의 이름과 public으로 선언된 클래스 이름은 같아야함
- 클래스 파일에는 단 하나 만의 클래스만 존재
(다수의 클래스를 가진 자바 소소를 컴파일하면 클래스마다 별로 클래스 파일 생성)
▶ C++과 자바의 차이
▶ WORA(Write Once Run AnyWhere)
- 한번 작성된 코드는 모든 플랫폼에서 바로 실행
- C/C++ 등 기존 언어가 가진 플랫폼 종속성 극복 (OS, H/W에 상관없이 자바 프로그램이 동일하게 실행)
- 네트워크 연결된 어느 클라이언트에서나 실행 (웹 브라우저, 분산 환경 지원)
▷ WORA를 가능하게 하는 자바의 특징
● 바이트 코드(byte code)
- 자바 소스를 컴파일한 목적 코드, 자바 가상 세계에서 실행 가능한 바이너리 코드
- CPU에 의해 직접 실행되지 않음
- 자바 가상 기계가 작동 중인 플랫폼에서 실행, 인터프리터 방식으로 바이트 코드 해석
- 클래스 파일(.class)에 저장
● JVM(Java Virtual Machine)
- 자바 바이트 코드를 실행하는 자바 가상 기계(SW)
- 각기 다른 플랫폼에 설치, 동일한 자바 실행 환경 제공
- 자바 가상 기계가 클래스 파일(.class)의 바이트 코드를 실행
- 자바 가상 기계 자체는 플랫폼에 종속적, 플랫폼마다 각각 작성됨
ex) 리눅스에서 작동하는 자바 가상 기계는 윈도우에서 작동하지 않음
▶ 플랫폼 종속성(platform dependency)
● 프로그램의 플랫폼 호환성이 없는 이유
- 기계어가 CPU마다 다름
- 운영체제마다 API 다름
- 운영체제마다 실행파일 형식 다름
▷ WORA, 자바의 플랫폼 독립성
▶ 자바의 오픈 소스
- 소프트웨어 제작자의 권리를 보존
- 누구나 액세스할 수 있도록 소소 코드를 무상 공개한 소프트웨어
● 오픈 소스의 장점
- 공개된 소스 코드를 참조함으로써 개발 시간 및 비용 단축
- 공개된 소프트웨어를 다수의 인원이 참여 개량, 우수한 품질의 소프트웨어 개발
● 오픈소스의 단점
- 무단으로 상용 소프트웨어에 사용할 경우 저작권 침해 발생
- 다양한 개량 버전의 소프트웨어로 인한 호환성 문제
● 오픈소스 사이트 http://sourceforge.net
Compare, Download & Develop Open Source & Business Software - SourceForge
ClickUp is the future of work with tasks, docs, goals, project management and more. Data silos and duplicate spend have no place in a modern workplace. ClickUp brings all of your work into one place—one app to replace them all. Whether you're proofing ad
sourceforge.net
▷ 자바의 배포판 종류
- 오라클은 개발환경에 따라 다양한 자바 배포판 제공
● Java SE
- 자바 표준 배포판(Standard Edition)
- 데스크탑, 서버, 임베디드 시스템 개발을 위한 표준 자바 플랫폼
ex) JDK(Java Development Kit), JRE(Java Runtime Envrionment)등
● Java ME
- 자바 마이크로 배포판
- 휴대전화나 PDA, 셋톱박스 등 제한된 리소스를 갖는 하드웨어에서 응용개발을 위한 플랫폼
- 가장 작은 메모리 풋프린트
- Java SE의 서브셋 + 임베디드 및 가전 제품을 위한 API 정의
● Java EE
- 자바 기업용 배포판
- 자바를 이용한 다중 사용자, 기업용 응용 개발을 위한 플랫폼
- Java SE에 웹서버 역할을 추가한 것
- Java SE + 인터넷 기반의 서버사이트 컴퓨팅 관련 API 추가
ex) JSP&Servlet, JDBC 등
▷ Java SE 구성
● JDK(Java Development Kit)
- 자바 응용 개발 환경, 개발에 필요한 도구들을 포함
- 자바 개발 환경으로서 Java Virtual Machine(JVM)과 컴파일러, 디버거 및 애플리케이션 개발을 위한 도구들이 포함
● JRE(Java Runtime Envrionment)
- 자바 애플리케이션 개발 도구인 JDK의 일부로서, 자바 애플리케이션이 실행되는데 필요한 최소한의 요건을 제공, JVM과 핵심적인 클래스들 그리고 각종 지원 파일들로 구성
▶ 자바 API(Application Programming Interface)
- JDK에 포함된 클래스 라이브러리
- 주요한 기능들을 미리 구현한 클래스 라이브러리의 집합
- 개발자는 API를 이용하여 쉽고 빠르게 자바 프로그램 개발
- API에서 정의한 규격에 따라 클래스 사용
● 자바 패키지
- 서로 관련된 클래스들을 분류하여 묶어 놓은 것
- 계층구조로 되어있음 (클래스의 이름에 패키지 이름도 포함, 다른 패키지에 동일한 이름의 클래스 존재 가능)
- 자바 API는 JDK에 패키지 형태로 제공됨 (필요한 클래스가 속한 패키지만 improt하여 사용)
- 개발자가 자신의 패키지 생성 가능