01_자바(JAVA)프로그램의 구조 및 프로그램 의미

안녕하세요 Mr_ChooC(coding)AI 입니다

자바프로그램의 구조 및 프로그램 의미

혹시 설명에서 부족한 부분이 있다면 언제든지 지적 부탁 드리겠습니다. 항상 배우는 자세로 경청하도록 하겠습니다.

유튜브 강의 제공 드립니다.

유튜브: https://youtu.be/zQb-He4ZL0g 

이번 강의내용에서는 2가지에 대해서 설명할 예정 입니다.

1.     프로그램의 기본적인 의미와 내용

2.     자바 프로그램 개발 당시의 지향점

만약 프로그램의 기본적인 의미에 대해서 잘 안다면 2번부터 보시면 됩겠습니다.



위의 그림과 같이 명령들의 집합을 프로그램이라 하며, 자바, C#, python… 등 언어 종류에 따른 명령들을 나열하는 집합을 자바, C# 프로그램이라고 합니다..

프로그래밍은 언어 종류(java, python, c….)에 따른 명령어를 통하여 컴퓨터에 명령을 내리는 행위라고 생각 할 수 있습니다.



프로그래밍을 좀 더 자세하게 설명을 하면 한국인이 미국인과 대화를 하기 위해서는 영어를 배워야 하듯 우리는 컴퓨터와 대화를 하기 위해서는 Computer language를 배워야 합니다. C언어를 배우고 나면 컴퓨터와 대화를 할 수 있게 됩니다. 그리고 영어에서도 문법이 있듯이 C언어도 컴퓨터와 대화 하기 위해서는 간단한? 문법(자료형, 입출력, 제어문, 쓰레드, 클래스 등…)을 공부를 하여야 자연스럽게 대화가 가능하게 됩니다. (기계와 대화를 하기 위한 첫 단추!)

지금까지는 전반적인 프로그래밍 얘기를 하였습니다. 지금부터는 JAVA 프로그램 관련하여 설명을 시작 하도록 하겠습니다.




위의 그림과 같이 JAVA 프로그램은 코드 작성(program)과 실행 시키는 중간 매개체인 JVM을 분리 시켜서 실행하는 것을 알 수 있습니다. JVMOS(window, linux, mac)별로 존재하여 java 코드를 OS에 상관없이 실행 할 수 있도록 도와 줍니다. 이러한 것이 JAVA를 개발할 당시에 큰 장점이였습니다. 하지만 신생 언어(python, go…) 같은 경우에는 이런 기능을 당연히 제공하고 있는 것을 알 수 있습니다.



좀 더 자세하게 JVM외의 부분을 확인해 보면 Java source즉 작성코드를 java Compiler를 통해서 byte code로 변환을 시켜 주고 작성코드에서 참조하고 필요한 패키지를 Class Library에서 찾아서 참고하여 JVM을 통해 실행시켜 실행 시키는 구조를 가지고 있습니다.



Byte로 전달된 코드들이 어떻게 실행 되는지 이해하기 위해서 JVM의 내부 구성에 대해서 설명할 예정입니다. 왼쪽 위부터 순서대로 설명을 하면 Garbage collector를 통하여 Runtime 메모리에 있는 메모리 중 사용 하지 않는 메모리를 정리하는 역할을 하는 기능입니다. Class Loader는 필요한 클래스 즉 패키지를 불러오는 역할을 하는 부분입니다. Execution Engine은 들어온 명령을 처리하여 실행하는 역할을 하는 부분입니다. 이런 구조가 당시 언어가 개발 되었을 때 굉장히 효율적인 방식으로 인정을 받아 인기있는 언어가 되었습니다. Runtime DataAreas는 프로그램을 수행하기 위해서 OS에서 할당 받은 메모리 공간이며 구성에 대해서 좀 더 알아 볼 필요가 있습니다. 하기 그림을 참조 하기를 바랍니다.



Runtime Data Areas를 위의 그림과 같이 효율적으로 나누었기 때문에 메모리를 효율적으로 사용 할 수 있게 되는 것 입니다. 지금 당장은 많은 지식이 없기 때문에 간단하게 설명을 하고 넘어 가겠습니다. 하지만 모든 내용에 대해서 공부를 하시고 다시 본다면 느끼는 점이 다를 것이라는 생각이 듭니다.

위의 내용을 바탕으로 개발 당시의 JAVA언어의 특징을 정리하면 하기와 같이 6가지에 대해서 정리 할 수 있습니다.

  1. 객체 지향 언어이다.
  2. 배우기 쉽다
  3. 어느 운영체제(OS)에 상관없이 실행된다.
  4. 메모리 관리를 개발자가 하지 않는다.
  5. 동적이며 스레드를 지원한다
  6. 네트워크 프로그래밍과 분산처리를 지원한다.

긴 글을 읽어 주셔서 감사합니다. 다음에는 자바 언어의 문법에 대해서 정리하여 올리도록 하겠습니다. 부족한 부분이 있으면 언제든지 알려 주시기를 부탁 드리겠습니다. 늘 경청 하겠습니다.


Comments