- 컴퓨터는 기계어인 2진수로 동작. (신호가 없을때 0, 신호가 있을때 1)
- 0과 1조합으로 된 2진수가 명령 입력 컴퓨터는 입력된 2진수를 해석하여 실행
- 2진수는 사람이 사용하기 힘듬
- 프로그래밍 언어는 사람과 컴퓨터의 커뮤의 역할
- 프로그래밍 언어로 작성된 코드가 실행되면 2진수로 변환되어 컴퓨터에 명령을 전달
- 저급프로그래밍 언어 : 기계어(2진수), 어셈블리어
- 고급 " 언어 : C, C++, Python, Java ...
- 저급언어는 기계중심 고급언어는 사람중심
- 저급언어는 해석과정이 필요없고 컴퓨터에서 직접 실행 가능
- 고급언어는 기계어로 해석해주는 과정이 필요 이것을 처리해주는 과정에 컴파일러, 인터프리터가 필요.
- 저급언어는 하드웨어 지식 풍부해야됨 고급언어는 하드웨어 지식보다는 언어에 대한 문법이 더 중요
- 기계어와 1대1 매핑되는 저급 프로그래밍 언어
- 1949년 등장한 첫 프로그래밍 언어
- 명령어 예 mov = 파일이동 명령어 10110000 01100001 -> mov al, 061h (16진수 61을 al(레지스터)로 이동시켜라)
- 1995년 썬 마이크로 시스템즈에서 발표한 프로그래밍 언어
- Java는 JVM(Java Virtual Machine)이 자바 프로그램을 기계어로 해석해서 동작시키는데 어떠한 Os든 동작됨
- Windows에서 작성한 Java코드가 MacOS, 리눅스에서도 동일하게 동작
- C나 C++ 경우 Os별 컴파일러가 달라서 설정도 따로 해줘야된다. (자바는 JVM에서 귀찮은 과정들을 자동처리) (Windows에서 작성한 c나 c++코드를 리눅스에서 동작하기 위해서는 gcc컴파일러를 별도로 설치해야됨)
- JVM 내의 존재하는 GC(Garbage Collector) 장시간 사용되지 않는 변수나 클래스, 함수등을 자동으로 메모리에서 삭제
- C, C++ 에서는 malloc 명령어로 변수, 함수, 클래스를 메모리에 올려줘야되고 free 명령어로 메모리 해제
- Java 객체지향 언어(OOP: Object Oriented Programming)이다.
- 객체지향 언어는 클래스(부품의 설계도)를 작성하여 객체(부품)를 만들어서 부품들간에 관계를 정의하고 부품들간의 연결을 생성하여 더 큰 프로그램을 작성하는 방식
- 오픈소스 라이브러리들이 다른 언어에 비해 풍부해서 다른 언어보다 개발기간이 짧다.
- JDK(Java Development Kit): 자바 프로그램을 개발할 수 있는 환경을 제공하는 키트
- JDK에는 Java Compiler와 JRE(Java Runtime Environment)가 포함되어 있다.
- Java Compiler는 작성된 .java 파일을 컴파일하여 .class 파일로 변경
- .class 파일은 16진수인 바이트코드로 구성되어 있다. 따라서 컴퓨터가 바로 실행 불가.
- JRE에 존재하는 JVM이 .class 파일을 기계어로 해석해주고 컴퓨터에 명령을 내린다.