※ 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)인터페이스 의미? (나무위키)
- 두 물체, 공간, 단계 등의 공통 접점면
-
독립되고 관계가 없는 시스템이 접촉하거나 통신이 일어나는 부분
-
인터페이스에서 상호작용이나 통신이 일어날 때의 수단
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 |