[Java]

[Java] 개요

Jarvis2304 2022. 12. 23. 11:15

▶ 자바

- 객체 지향 프로그래밍 언어

- C++ 언어의 객체 지향적인 장점을 살리면서 분산 환경을 지원

 

▷ 도입배경

플랫폼 호환성 문제 해결

- 기존 언어로 작성된 프로그램은 PC, 유닉스, 메인 프레임등 플랫폼 간에 호환성 없음

- 소스를 다시 컴파일하거나 프로그램을 재작성 해야하는 단점

 

● 플랫폼 독립적인 언어 개발

- 모든 플랫폼에서 호환성을 갖는 프로그래밍 언어 필요

- 네트워크, 특히 웹에 최적화된 프로그래밍 언어의 필요성 대두

 

● 메모리 사용량이 적고 다양한 플랫폼을 가지는 가전제품에 적용

- 내장형 시스템 요구 충족

 

(플랫폼 = 하드웨어 플랫폼 + 운영체제 플랫폼)

 

 

 

 

▶ 자바의 특성

● 객체지향

- 객체지향의 특징인 클래스 계층 구조, 상속성, 다형성, 캡슐화 등 지원

 

● 멀티스레드

- 다수 스레드의 동시 수행 환경 지원

- 자바는 운영체제의 도움 없이 자체적으로 멀티스레드 지원

 

● 플랫폼 독립성

- 특정 플랫폼에서만 작동되는 문제해결

- 자바 가상 기계가 바이트 코드 실행

- 플랫폼에 종속성을 갖지 않음

 

실행 모듈

- 한개의 class 파일 또는 다수의 class 파일로 구성

- 여러 폴더에 걸쳐 다수의 클래스 파일로 구성된 경우 → jar 파일 형태로 배포 가능

 

● 클래스로 캡슐화

- 자바의 모든 변수나 함수는 클래스 내에 선언

- 클래스 안에서 새로운 클래스(내부 클래스) 작성 가능

 

● 패키지

- 관련된 여러 클래스를 패키지로 묶어 관리

- 패키지는 폴더 개념

ex) java.lang.System은 java\lang 디렉터리의 System.class 파일

 

● 소스(.java)와 클래스(.class) 파일

- 하나의 소스 파일에 여러 클래스 작성 가능(나의 public 클래스만 가능)

- 소스 파일의 이름과 public으로 선언된 클래스 이름은 같아야함

- 클래스 파일에는 단 하나 만의 클래스만 존재

(다수의 클래스를 가진 자바 소소를 컴파일하면 클래스마다 별로 클래스 파일 생성)

 

▶ C++과 자바의 차이

이미지 출처:자바 프로그래밍 6강. 자바 언어의 특징 - YouTube (뉴렉처)

 

 

 

 

▶ 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하여 사용)

- 개발자가 자신의 패키지 생성 가능