강의 복습 1주차 "java(자바)란?"
230303 금
java(자바)란?
- 현재 컴퓨터 업계에서 많이 사용하는 프로그래밍 언어로 아직까지도 가장 많이 사용되는 3가지 언어 중 하나 (C, Java, Python)
- 방대한 라이브러리+다양한 실행환경을 가진 거대한 플랫폼
java와 javascript 차이?
java는 범용 개발 언어,
javascript는 웹에서 동적인 컨텐츠를 만들기 위해 사용하는 스크립트 언어(웹에서 그림그리거나 게임 작성할 때 사용, 웹 브라우저가 해석하여 실행)
누가 JAVA를 만들었나?
- 1991년 제임스 고슬링(James Gosling)을 비롯한 썬 마이크로시스템즈 사의 'Green' 프로젝트 팀.
- >가정용 전자제품에 사용할 수 있는 컴퓨터 언어를 설계하고 싶어서개발.
- 전자제품은 많은 종류의 CPU로 만들어지므로 특정한 CPU에 의존하면 안 됨 = 자바가 CPU-중립적인 언어로 설계된 이유
- SO, 연구팀은 일종의 가상 컴퓨터인 '가상 기계(virtual machine)'개념 도입
JAVA의 특징
- 단순(simple)
- 객체지향적
- 분산처리가능
- 견고(robust)
- 멀티스레드 지원
- 구조 중립적
- 동적(dinamic)
- 인터프리트 언어
- 이식성(porta-billity)
- 안전(security)
java는 컴퓨터구조에 중립적이다.
- 자바 컴파일러는 자바 언어로 작성된 프로그램을 바이트 코드(byte code)라는 특수한 이진파일로 변환함.
- 바이트 코드를 실행하기 위해서는 자바 가상 기계(JVM:Java Virtual Machine)라는 특수한 가상 컴퓨터 S/W(소프트웨어)가 필요함. 이것이 바이트 코드를 한 줄씩 읽어서 해석한 후 실행.
>>JAVA가 다양한 종류의 computer(스마트폰, 데스크탑pc,게임기,노트북, 서버)에서 실행 가능한 것은 '가상 기계' 개념 때문
JAVA는 객체 지향적이다.(객체 지향 언어)
객체 지향이란?
>객체 별로 코드를 작성하고 객체들을 조합하여 전체 프로그램을 완성하는 프로그램 설계 방법론
객체 지향 기법을 사용했을 때 이점?
>작성한 코드를 재사용하기가 쉬워서 빠르게 신뢰성 있는 프로그램 개발 가능.
JAVA는 멀티스레딩을 지원한다.
'멀티스레딩'이란 여러 가지 작업을 동시에 실행하는 것.
JAVA는 다른 언어와 달리 쉽게 멀티스레딩 프로그램 작성 가능
>특히 멀티 프로세서 하드웨어를 지원하도록 설계되었으므로 멀티 프로세서 시스템에서 높은 효율 낼 수 있음
JAVA로 만들 수 있는 것
자바 애플리케이션(Java application)
: 독립적으로 실행될 수 있는 일반 응용 프로그램
자바 애플릿(Java applet)
: 웹 브라우저 안에서 실행되는 작은 프로그램
자바 서블릿(Java servlet)
: 웹서버에서 동작하는 서버 모듈. 클라이언트의 요구를 처리한 후 실행 결과를 HTML 문서 형태로 클라이언트 컴퓨터로 전송함
가상기계
가상기계는 실제 장치가 아니고 가상적인 컴퓨터를 만드는 소프트웨어를 의미.
기존의 컴퓨터에서 가상 기계 소프트웨어를 실행하면 가상 기계가 된다고 간주함.
c언어, c++을 사용하여 프로그래밍하면?
타겟 컴퓨터의 cpu와 운영체제에 맞춘 코드가 생성됨
따라서 이 프로그램을 다른 cpu나 운영체제에서 실행하려면 다시 컴파일 해야함
(ex) 작성한 C프로그램
>>윈도우(인텔 cpu)에서는 실행 O
>>BUT, 리눅스(AMD CPU)나 MacOS(운영체제) 등등 에서는 실행 X.
JAVA로 컴파일 하면?
>> 운영체제나 cpu 상관없이 실행 가능
+
자바 플랫폼
플랫폼(platform)이란 프로그램이 실행되는 하드웨어와 소프트웨어 환경
자바 플랫폼은 두가지 요소로 이루어져 있으며, 플랫폼만 같으면 바이크 코드를 변경 없이 실행 가능
ㅡ자바 가상 기계(JVMl Java Virtual Machine)
ㅡ자바 응용 프로그래밍 인터페이스(API: Application Programming Interface)
일반적으로 API란 많은 유용한 기능을 제공하는 라이브러리들의 모임.
API는 자바 프로그래밍 언어의 핵심 기능을 제공, API에는 네트워킹, 보안, XML 생성, 데이터베이스 접근에 필요한 기능들이 포함되어 있음.
Java는 개발 분야에 따라 Java SE, Java EE, Java FX 플렛폼 등으로 나누어서 제공된다
Java SE
: 데스크탑과 서버에서 자바 애플리케이션을 개발하고 실행하게 해주며 임베디드 환경(embedded environmen), 실시간 환경(real-Time environments)도 지원함
Java EE
: 기업용 애플리케이션을 개발하는 데 필요한 여러가지 도구 및 라이브러리들을 모아놓은 것
응용 서버, 웹서버, J2EE API, 엔터프라이즈 자바 빈즈(JabaBeans) 지원, 자바 서블릿 API와 JSP등을 포함.
Java ME
: 핸드폰, PDA, TV 셋터박스, 프린터와 같은 모바일 기기나 다른 엠베디드 장치들에서 실행되는 애플리케이션을 위한 강인하고 유연한 환경 제공
JavaFX 플랫폼
: 애플리케이션 개발자들이 더 쉽게 리치-인터넷-애플리케이션(RIA: Rich Internet Application)을 생성하고 배포하기 위한 자바 클라이언트 플랫폼
Java의 버전
Java 1.0 (1996년)
- 211개의 클래스
- 속도는 느림
- 애플릿이 가장 주목받음
↓
J2SE 5.0 (2004년)
- 제네릭 클래스
- "for each" 반복 루프
- 오토 박싱
- 열거형
↓
Java SE 8 (2014년)
- 함수형 프로그래밍 지원
- 람다표현식(Lambda expressions)
- 새로운 Date & Timem API
↓
Java SE 15 (2020년)
- Sealed 클래스
- 은닉 클래스
- 텍스트 블록
- 레코드 도입
*함수형 프로그래밍이 Java SE 8부터 지원됨.
Java SE 8에 추가된 중요한 특징
함수형 프로그래밍의 지원.
람다식(Lambda expressions).
작은 가상 기계(VM).
병렬 배열 정렬(paralleAraay Sorting).
컬렉션을 위한 대용량 데이터 처리.
Base64 인코딩과 디코딩을 위한 표준 API.
새로운 날짜, 시간, API(Date & Time API).
강화된 패스워드 기반 암호화 (Password-Based-Encryption(PBE)).
JRE와 JDK
JRE(Java Runtime Environment)
자바 프로그램을 실행하기 위한 라이브러리, 자바 가상 기계, 기타 컴포넌트들을 제공
JDK(Java Development Kit)
JRE에 추가로 자바 프로그램을 개발하는데 필요한 컴파일러, 디버거와 같은 명령어행 개발 도구를 추가한 것
+
JDK의 폴더
JDK의 기본 설치 경로는 "c:\Program Files\Java"
JDK의 디렉터리
폴더 | 설명 |
bin | 컴파일러, 디버거 등의 도구가 들어 있음 |
conf | 구성 파일이 저장됨. 개발자가 편집할 수 있음 |
include | 네이티브 코드 프로그래밍을 지원하는 헤더 파일들. 이들 파일들은 자바와 C를 동시에 사용하는 프로그램 개발 시에 사용됨 |
jmods | 컴파일된 모듈이 정의되어 있음 |
legal | 저작권, 라이선스 파일이 저장됨 |
lib | 개발 도구들이 필요로 하는 추가적인 클래스 라이브러리와 지원 파일들. |
강의 복습~~~
출처
교수님이 올려주신 강의 자료 (자료 참고 도서 「Power JAVA Compact」와 「Power JAVA 3판」 ,인티니트 북스, 저자 천인국)