응용 소프트웨어를 제어하는 컴퓨터 프로그래밍 언어, 기존에 이미 존재하는 소프트웨어(APP)을 제어하기 위해 사용함.
source code 한줄씩 읽어가며 명령을 처리하는 프로그래밍 언어로 번역과 실행이 동시에 이루어짐. 명령자체의 속도가 컴파일러 언어보다 느림.
ex) python, javascript,sql,...
source code를 한번에 다른 object 코드로 번역한후에, compile해 실행가능한 파일로 만든 후, 모든 source code의 명령을한번에 실행하는 언어.
ex) C,C++,C#,...
1) 컴퓨터 하드웨어(cpu)가 알아들을 수 있는 low level언어(ex. Assembly,object code,machine code) 로 번역됨.
2) compile하여 실행 가능(binary)한 파일이 생성됨
💡규모가 큰 source code에 대해,
compile 언어: 프로그램 실행 전 먼저 기계어로 컴파일함.
interpreter 언어: 코드를 한번에 한줄 씩 읽어 들이면서 바로 실행함
결론적으로, Java는 compiler언어에도 interpreter언어에도 포함된다.
Java는 자바 컴파일러(Java Compiler)를 사용한다. 이는, Java코드를 자바 가상머신(Java Virtual Machine, JVM)이 실행 가능한, 자바 바이트 코드 (자바 바이트 코드: .class)로 번역한다.
자바 바이트 코드는 자바 가상 머신(JVM)의 자바 인터프리터(Java Interpreter)를 이용해서 한 줄씩 실행된다.즉, 자바 바이트 코드로 작성된 실행 프로그램을 자바 인터프리터가 한 줄씩 읽으며, 컴퓨터가 이해 가능한, 2진 코드로 번역한 후에 실행시키는 것이다.
📌GIL
global interpretor lock의 약어로, python 프로그램은 특정 시점에 하나의 thread만 실행된다. multi threaded 프로그램에서 single thread처럼 동작하는 성능 병목 현상이 발생한다.
📌thread
process 내에서 실제로 작업을 수행하는 주체이다. 두개이상의 thread를 가지는 process를 multi threaded process라고한다.
📌process
process는 단순히 실행중인 program이라고 할 수 있다. 사용자가 작성한 program이 운영체제에 의해서 메모리 공간을 할당받아 실행중인걸 의미한다.