배움 __IL/TIL 1기

4번째- 221202 [11-5-금]

Mo_bi!e 2022. 12. 2. 19:37

※ Keep in mind

 본 내용은 웹개발과정의 강의 중 내용을 복습을 위해서 메모한 것에 불과한 것입니다. 이러한 연유로 강의내용을 오인한 나머지 오기재 및 불기재가 있을 수 있으니 '참고'만 해주시길 바랍니다. 저의 경우에도 본 내용을 단순하 읽은 것이 결코 저의 것이라고 생각하지 않습니다. 본 내용은 복습를 위한 초기 내지 중간 과정에 불과한 것이고, 이후에 내용을 보충 후 인출 및 설명하기 과정이 있어야 비로소 복습의 단추가 어느정도 마무리 되어간다고 볼 수 있습니다.

 따라서 당초에 본 내용은 비공개였습니다. 그럼에도 불구하고 본 내용을 공개한 점은 함께 공부하는 동료들과 나눔을 바탕으로 배움과 성장의 공진화라는 소기의 목적을 달성에 어느정도 도움이 될수 있기 때문이라고 생각합니다.

 


I. 자바의 기초

1. INTRO : 물음

-지난 시간 복습

절차 -> 자바언어코드 -> 플랫폼 -> API 로 이용 ( 금일내용)


왜 번역을 안해도 되지?

함수는 왜 입출력할 때 사용하지?

 

2. 자바 언어의 특징

(1) 시작

Green Project (Stealth project) :

모든 디바이스에 제어가 가능하게 만들어 보자! (for 유비쿼터스)

C++ 로 하려고했으나, C++의 한계

즉 언어의 유연성을 줄여서 누가 만들어도 하나의 코드로 할 수 있게끔 하기위해서

즉 간결 단순하게 하기위해서 자바가 탄생하게 됨

 

따라서 자바의 장점 : 간결, 단순 ( ->C++ 의 장점을 쳐내기 시작함)

 

(2) C/ C++ 언어가 가지는 문제점들 (왜 언어가 간결해져야하는지)

 

객체 생성과 제거 - delete 키워드 제거 (가비지 관련)

참조변수와 포인터 변수 - 객체의 포인터 제거

이차이상의 포인터 문제 - 모든 포인터 제거 (안전성 up)

데이터 구조를 정의하는 두가지 방법 - struct 키워드 제거

함수지향? 객체지향? -함수는 메소드로만 사용하도록 제약

컬렉션의 부재 - 언어에 컬렉션을 포함 (과거에는 외부 라이브러리로 이용)

글로벌한 문자 데이터처리의 복잡성 - 다양한 인코딩 문자열 기능 개선 (유니코드 이용)

............ - ......제거

 

즉 자바의 키워드는 "제거" (간결성, 언어의 컬렉션 포함, 완전한 객체지향 언어)

 

like C++ == 스틱 / 자바 == 오토

 

<정리>

간결 -> 안전 -> 기계 제어

 

3. 자바 플랫폼의 특징

 

(1) 새로운 WORA(Write Once Run Anywhere) API의 탄생 - platform independent

 

언어(C++ , 파이썬 등)는 다 동일하게 CPU와 메모리를 동작시킴 하지만 출력은 할수없음

이경우 입출력장치가 필요한데 입출력장치는 매우 다양하다. (CPU는 인텔, AMD에 거의 국한)

 

입출력장치를 직접쓰기보다 간접적으로 쓰는 방법을 채택 함

즉 가운데 접근 수단이 들어감 (인터페이스 : 접근수단 like 배터리 접지와 같은)

 

이 경우 방법은 수학을 모티브따서 함수를 이용 함

 

(2)입출력 장치를 이용하는 방법

 

콘솔이란

이경우 가장 기본적인 입출력장치는 콘솔 이라 함

장치를 이용하기 위한 '물리적인' 사용자환경 (조종간)

 

UI와 는 다름

 

컴퓨터의 기본콘솔 : 키보드 & 모니터

이 경우 간접적으로 java Platform 으로 지원해준다.(이를 인터페이스 적용한다고 함)

플랫폼의 형태는 함수 형태이다 (즉 함수로 이용한다)

 

-참고 : C++ 가 사용하는 메인 플랫폼은 OS이다

 

(3) 함수로 제공되는 인터페이스

1) 수학을 닮은 자바 인터페이스 

 

이경우 함수를 왜 쓰는가?

장치 직접쓰는것은 무리 되기 때문에 차단해서 간접적으로 사용해야함

접근 수단은 인터페이스이고 구현은 함수로 한다.

 

2) 함수를 이용한 연산식의 장점

함수란 식을 간단한 방식으로 치환해서 이용 함

 

복잡한 2차식 -> 치환해서 간단하게 표현 

 

함수정의(101등 2진수로 정의) -> 함수사용 (키워드로 수월하게 사용가능)

따라서 인터페이스 역할을 용이하게 가능

 

(4)논리 플랫폼과 API

 

함수는 여러가지 용도로 쓸수있는데, 그 중에서 인터페이스 역할이 가능한다 이 경우에는 API가 된다

따라서 모든함수는 API가 아니다.

 

자바어플리케이션은 어디 장치나 다 이용원함

그러나 OS 별 print 의 키워드가 같을까? 즉 서로 함수가 다르다.

 

따라서 OS가 달라지면 못쓴다. OS로 부터 단일한 환경 설정이 필요하다

이를 맞춘 java platform 이 있다. (서로 같게 함)

--

<정리>

자바 API (인터페이스 역할을 하는 함수) -> 자바 플랫폼 -> 다양한 OS

but CPU를 아직 안맞춤

--

인터프리터 VS 컴파일러

컴파일은 번역만 하고, 실행할 때 그때마다 번역하는 것은 인터프리터(JIT 컴파일러 그때마다)

 

자바는 JIT 컴파일러를 이용한다 그러나 이 경우 모든 플랫폼에 번역해서 사용해서 플랫폼 종속은 안되고 모든 CPU 가능함

그러나 느림 -> 그래서 "중간"번역기(컴파일러)를 드림

 

 

3. 자바 번역기의 특징

[인터프리터(jit 컴파일러)] 필요한 만큼 번역 VS [컴파일러]미리 모두 번역 (.class : 중간코드라고 함)

 

- 형태소분석 -> 구문분석 -> 의미분석 ->중간코드 ->최적화 -> 물리코드

                              중간코드                                    |||      인터프리터

 

.class 는 오래걸리는 중간코드(바이트코드, 슈도코드)까지 번역해서 일부를 줌 

 

- 자바코드 [번역기] 바이트코드 [번역기] 어셈블코드 [번역기] 기계(이진)코드

앞 : JDK 컴파일러 디버거(개발용) / 뒤 : JRE (실행용) 

 

<정리>

자바 언어, 플릿폼, 번역기의 삼위일체가 되어야 함

 

 

II. 자바 

1. 자바에서의 값의 종류와 표현방법

(1) 피연산자

우리는 32bit 인데 64처럼 에뮬레이터 이용함

메모리 CPU간에 전기선이 32bit 가 최대치 이다.

이경우 값의 크기 한정 및 표현식을 생각해야한다.

 

정수값 : 표현식 (16진수 : 0x / 8 : 0 / 2: 0b) / 26L(8byte) , 0x1aL

실수값 : 등

문자값 : 등 A / 'A' 구분 필

진리값 : 등

 

(2) 2진수와 10진수

생략

 

(3)값의 종류와 형식명칭

1) 정수형식과 변환

26은 6bit 로 충분히 표현이 가능하다.

 

byte :1 byte / short : 2byte / int  : 4byte / long : 8byte (각각 선언시 버스 선의 사이즈를 정해줌)

 

ex)

long x = 30; [30 만 선언한것은 오류임 번역기가 l을 뒤에 별도로 붙여줌] (묵시적 형변환)

byte x = (byte)30; [자르는건 혼자서 못함 (byte)로 내가 명시적으로 하라고 허락해줌]  (명시적 형변환)

 

 

 


1. 보충

(1)인터페이스 의미?  (나무위키)

  1. 두 물체, 공간, 단계 등의 공통 접점면
  2. 독립되고 관계가 없는 시스템이 접촉하거나 통신이 일어나는 부분
  3. 인터페이스에서 상호작용이나 통신이 일어날 때의 수단

IT 계열에선 사용자가 기기를 쉽게 동작시키기 위해 도움을 주는 시스템을 뜻한다.

 

(2) 콘솔이란 / UI와 차이?

 

콘솔 [나무위키]

시스템을 물리적으로 조작할 수 있는 체계. 컴퓨터라는 것이 생겼을 때부터 존재하던 개념이다. 보통은 명령 프롬프트 같은 텍스트 기반 터미널을 칭하는 경우가 많다.

컴퓨터에 접근하여 작업하기 위해서는 모니터와 키보드로 이루어진 콘솔

 

발전형태가 GUI 로 이해

 

 

 

(3)순서?

 -> 자바 플랫폼(함수)-> 상이한 OS (API 따로 존재)

 

 

(4) 플랫폼 vs 자바 플랫폼

 

자바플랫폼 : 자바 플랫폼은 자바 프로그래밍 언어로 개발된 프로그램을 개발하고 실행하는 일을 쉽게 해주는 프로그램의 모임

 

플랫폼 : 플랫폼은 응용 소프트웨어를 실행하기 위해 쓰이는 하드웨어와 소프트웨어의 결합이다. 플랫폼은 하나의 운영 체제 또는 컴퓨터 아키텍처라고 단순히 말할 수 있으며 그 두 가지를 통칭해서 말할 수도 있다. (컴퓨터의 아키텍처, 운영 체제(OS), 프로그램 언어, 그리고 관련 런타임 라이브러리 또는 GUI)

 

 

2. 회고 

삼위 일체 - 자바언어, 자바 플랫폼, 자바 번역기 간의 관계는 서로간에 보완 및 정합관계를 해줄수 있다는 것을 알게되었다.

더군다나 자바언어의 간결성과 안정성 / 자바 플랫폼의 플랫폼 독립성 / 자바 번역기의 속도 높이기 위한 방법 간의 관계를 아는 것은 제법흥미롭다.

 

'배움 __IL > TIL 1기' 카테고리의 다른 글

TIL : 6번째- 221206 [12-1-화]  (2) 2022.12.06
TIL : 5번째- 221205 [12-1-월]  (0) 2022.12.05
3번째- 221201 [11-4-목]  (0) 2022.12.01
2번째- 221130 [11-4-수]  (1) 2022.11.30
OT 20221129  (0) 2022.11.29