자바란? 자바에 대한 기초 지식!!





자바란? 자바에 대한 기초 지식!


우선 자바란 무엇인지 위키백과사전에 정리된 내용을 천천히 읽어 보시기 바랍니다.
흥미롭게 읽어 보실 내용이 많을 겁니다. 저만 그런가? ^^


▶ 자바 (프로그래밍 언어) 위키백과로 읽어보러 가기

자바가 무엇인지 감이 오시나요?? 아마 자바를 이제 처음 입문
하시는 분이라면.. 어려운 단어도 많고 알쏭달쏭 하실텐데요 간략하게 자바에 대해 그림과 예를 들어가면서 알아 보도록 하겠습니다.~^^


자바의 동작 원리


■ 전체적인 흐름
(그림1)을 통해 자바 프로그램이 어떤식으로 만들어지고 어떤식으로 작동하는지 알아봅시다

                         (그림1)

① 프로그램머가 MyProgram.java라는 이름으로 어떤 동작을 하는 프로그램을 작성 하게 됩니다.
② 작성된 프로그램을 Compiler를 통해 *.class로 변환하게 되는데요(*.class로 바뀐다는건 JVM에 인식할 수 있는 바이너리코드로의 변환입니다.) 이때 에러가 있다면 에러를 수정하고 다시 컴파일 하고를 반복하게 됩니다 에러가 없을때까지 반복을 하게 됩니다.
③ 오류 없이 컴파일된 프로그램을 실행 시키면 자신의 컴퓨터에서 프로그램을 실행 할 수가 있는데요 이때 자바 프로그램 실행을 위한 도우미가 있습니다.이름하여 JVM(Java Virtual Machine) 아주 중요한 녀석입니다.


※ 여기서 잠깐 Compiler란?
Compiler에 관하여 살짝 알아 보도록 하겠습니다.
프로그램머가 프로그램을 작성하게 되면 사람들이 이해 할 수 있는 약속된 언어들로 프로그램을 작성을하게 되는데요. 이렇게 작성된 문서를 소스코드 또는 원시코드라고 부릅니다. 이 원시코드는 기계인 컴퓨터가 이해 할 수가 없습니다. 컴퓨터는 오로지 0과 1만을 인식 하기 때문인데요. 그럼 이 원시코드를 컴퓨터가 이해 할 수 있는 언어로 번역을 해야 할 필요가 있습니다. 이때 쓰이는게 바로 Compiler입니다.




JVM의 역활
                                       

                                                  (그림2)

                                                                                                                                                         (그림3)

(그림2)와  (그림1)은 서로 다른 부분이 있는데요 JVM이 여러게 있고 운영체제가 다른 컴퓨터도 여러 개가 있다는겁니다. 여기서 자바의 중요한 특징 하나를 살펴 볼 수 있습니다. 바로 자바언어는 플랫폼(운영체제)에 구속되지 않고 자유롭다는 건데요. Window에서 프로그램을 작성하고 컴파일을 한 완성된 파일을 가지고 UINX나 MacOS에서 바로 실행이 가능한거죠 아주 아주 놀라운 거랍니다. ^^
(그림2)와 같이 자바언어가 플랫폼(운영체제)로 부터 자유로워 지기 위해서는 플랫폼(운영체제)와 자바언어 사이의 다리역활을 하는 JVM이 플랫폼(운영체제)별로 존재하게 되는데요. (그림3)에서 보는거처럼 플랫폼(운영체제)에 맞는 JVM이 설치 되었다면 서로 다른 플랫폼(운영체제)에서도 JVM이 플랫폼(운영체제)간의 다른 부분들을 보완하기 때문에 같은 결과를 얻을 수 있게 되는 겁니다. 그러나 이 장점에 단점이 될 수도 있는데요 타 언어는 (그림3)에서 보는거와 같이 자바언어의 JVM과 같은 과정이 없기 때문에 자바언어가 다른 언어에 비해 속도가 느리다는 편견이 생기게 되었습니다. 그러나 요즘에 자바가 C보다 느리다 빠르다라는 주제로 논쟁은 거이 없어진듯 합니다. 최적화에 따라 결과가 달라지기 때문이져 ^^;;





프로그램머의 친구 가비지콜렉션 이란?
JVM의 또다른 기능중에 가비지콜렉션(

garbage collection, GC)이란 기능이 있습니다.
프로그램머가 프로그램작성시에 메모리를 상용하게 되는데요 이때 쓰고 필요 없게 되는 메모리를 가비지콜렉터가 회수 해서 다시 사용가능하도록 반환 하게 됩니다. 이렇게 메모리 누수와 메모리 해제 실수를 막아줍니다.

하지만 가비지콜렉션 작업은 컴퓨터의 리소스를 상당히 소비 하므로 가비지콜렉션 작업이 많이 일어나는 프로그램은 시스템의 부하를 주게 됩니다.


                     ▲제임스 고슬링 이 할배가 자바의 아버지 입니다.


이번 포스팅은 여기까지 하겠습니다. 부족한점이 많은데 읽어 주셔서 감사하구요 틀린부분이 있다면 댓글로 지적해주세요 바로 바로 수정하도록 하겠습니다. ^^


이 글을 공유하기

댓글

Designed by JB FACTORY