[ITWILL : JAVA]컴퓨터와 자바 기초이론
컴퓨터와 자바 기초이론을 아래에 정리해보았다.
Bit
0 또는 1의 정보를 나타내는 최소 단위
쉽게말해 64bit라면 64개의 선들이 한번에 cpu로 들어가는 간다.
그리고 신기한 점은 똑같은 0001, 0001이라도 컴퓨터가 알아서 저 비트가 명령어인지 숫자1인지 구분해준다
Q 그렇다면 비트는 모스부호와 같은 건가?
궁금해서 검색해보았는데 단순히 이진수의 개념인듯하다. 다음주에 강사님 만나면 물어봐야지
Adapter
어탭터는 전압을 맞춰주는 역할을 한다
만약 220볼트라면, 어탭터는 0~5볼트처럼 컴퓨터가 쓸 수 있는 낮은 전압으로 바꿔 준다.
프로그래밍 언어의 변천사
- 기계언어 = 이진수로 나타내는 언어
- ex) 0000000010101010, 01010110101110
- 기계언어로는 너무 복잡해서 사람이 프로그램을 짤 수 가 없다.
- 그래서 생긴 언어가 어셈블리어 : 니모닉 기호로 이루어짐
- ex) add 1, 1
- 그래도 자료구조 표현 어렵고 복잡함
- 그래서 만들어진 게 고급언어
- Pascal, Algol, visaul Basic, C/C++, C#, Lisp, Fortran
- ex) a =1+1
- 개발자가 작성한 고급언어를 기계어로 바꾸어주는 것은 컴파일이라고 함
- 내가 언어를 만든다고 사용할수있을까? NOPE! 컴파일러가 있어야지만 가능. 자바도 자바컴파일러(javac)도 있고 파이썬도 파이썬컴파일러가 있다
- 기타
- 기계언어 + 어셈블리어 = 임베디드와 관련이 있다고 한다.
- 내 절친 라미가 임베디드 공부했었다던데… 그가 얼마나 어려운 언어를 했는지 조금이 짐작이 간다.
절차지향적언어 VS 객체지향적언어
- 절차지향언어
- 흐름도에 따라 일련의 동작들이 순서에 맞게 실행
- 기능 위주의 언어. 예를 들어 python, c등등
- 소스 코드 분석시 경비가 높아 기술의 한계가 있음
- 객체지향적언어
- 효율적 개발을 위해 등장
- 소프트웨어의 조립화
스크립트언어
스크립트언어란 소스코드를 compile하지 않고도 실행할 수 있는 프로그래밍 언어이다
객체지향적언어가 너무 코드가 기니까 짧게 만든게 스크립트언어이고 그 예로 java에서 jsp가 있다.
기존에 이미 존재하는 어플리케이션을 제어하기 위한 용도로 쓰이는 언어이고 인터프리터 형식의 언어이다.
수정이 빈번하게 일어나는 곳에서 쓰인다
Compile VS Interpreter
둘 다 고급언어로 작성된 원시 프로그램(Source Program)을 목적 프로그램(Object Program)으로 번역하는 번역 프로그램이며, 프로그램 번역 방식에 따라 구분된다.
- 컴파일
- 목적프로그램을 생성
- 번역과정과 번역시간이 복잡하고 오래 걸리지만 한번 번역 후에는 다시 번역하지 않아도되므로 실행속도 빠름
- 대표적 JAVA, C언어
- 예시: 소스코드(.java) -> 자바 컴파일 -> 바이트코드(.class) -> JVM 의 JIT 컴파일러 -> 머신코드 -> 실행
- 인터프리터 : 컴파일로 번역된 내용을 메모리에 올려서 실행을 해준다 대표적 JS, PYTHON
- 목적프로그램을 생성하지않고 위에서 아래로 순차적으로 실행(웹 브라우저에 포함되어있음)
- 번역속도는 빠르지만 프로그램 실행시 매번 번역해야해서 실행속도가 느리다
- 대표적 JS, PYTHON
- 예시1 : 소스코드(스크립트) -> 인터프리터 -> 실행
- 예시2 : A.class 파일을 메모리에 올리고 cpu가 해석하고 실행
참고링크1: 컴파일러와 인터프리터란 무엇인가
참고링크2 : 컴파일언어와 스크립트언어 차이
java의 특징
- 플랫폼 독립적
- 컴퓨터는 개발환경(intel CPU, 애플mac / 윈도우,맥,리눅스)를 플랫폼이라고 하는데 c언어는 개발환경이 다른 경우 구현이 불가능함.
- 하지만 자바는 가능함 이걸 플랫폼 독립적이라고 함. 가능한 이유는 JVM(java virtual machine)이 해줌. 거의 모든 컴터에 기본적으로 다운로드 되어있음
- java 프로그램의 단위는 Class이다.
- Class의 첫문자는 대문자이다
- ex) Class XXX {}
- 위의 예제를 순서대로 Class=예약어, XXX=클래스의이름, {}=실행코드
- C#언어와 거의 똑같다.
- C보다는 처리속도가 느리지만 C만큼 빠르다
자바실행환경
소스파일(.java) -> 컴파일 -> 바이트코드(기계어.class) -> JVM이 인터프리터 -> 실행
로딩
CPU를 동작시키는 프로그램을 메모리에 올려놓는 작업