1️⃣ 소프트웨어를 구성하는 양대 개념

<aside> 👉 <원인> Source Code Language원인’을 나타내는 표현 중 하나인 Source. 원천이라는 뜻이다. ‘**부호 기호’**라는 뜻으로 Code라고 표현을 하기도 한다. 그리고 우리가 원하는 대로 결과물이 나왔으면 좋겠지만 그렇지 않다. ‘약속’을 한다면? Language 이 세 가지는 같은 대상을 바라보는 관점에 따라서 다르게 사용하는 표현일 뿐이다.

</aside>

<aside> 👉

<결과> Application(App) Program 이 두 가지 또한 관점에 따라 ‘결과’라는 말을 다르게 사용하는 표현이다. 우리가 하고자 하는 일은 Java라는 컴퓨터 프로그래밍 언어에 맞게 코드를 작성해서 컴퓨터에게 시키고 싶은 일을 시키는 것이다! 이 개념을 다른 구조로 살펴보면 아래2️⃣와 같다.

</aside>

2️⃣ Java의 동작원리

스크린샷 2022-09-07 오전 12.56.13.png

출처 : 생활코딩)Java의 동작원리 순서도

출처 : 생활코딩)Java의 동작원리 순서도

<aside> 👉 1. [Java Source code.java] 개발자가 구현하고자(Hello World!!) 하는 코드(class HelloWorldApp{})를 확장자가 .java인 파일에 작성했다. 이것은 java 컴퓨터 프로그래밍 언어에 맞게 작성된 Source code다. 그리고 이 Source code는 사람만이 이해할 수 있다. 때문에 우리는 기계가 확장자가 .java인 파일을 이해할 수 있도록 전환하는 작업을 해야한다. 이 작업을 “Compile”이라고 말한다.

</aside>

<aside> 👉 2. [Java Application.class] 다시 말하자면, 우리가 Compile을 다음과 같이 사용했다. IDE에서 Source code를 작성하고 저장버튼을 눌렀을 때 자동으로 .class 확장자를 가진 파일이 만들어진다. 이 작업이 “Java Application”이다.

</aside>

<aside> 👉 3. [Java Virtual Machine] 개발자에 의해 컴파일 과정을 마친 프로그램은 사용자에 의해 실행되며(“Run(▶︎)” 버튼 클릭), JVM은 확장자가 .class인 파일을 읽어서 적혀 있는대로 동작시키게 된다. 개발자는 HelloWorld.class 파일을 만들었으니 실행하라고 JVM에게 시키는 것이다.

</aside>