728x90
반응형

1. Java On Server

 

 

자바에는 JDK라는 개발 툴이 있습니다. 

java.sun.com에 접속하시면 자바의 툴인 JDK를 무료로 다운로드 받으실 수 있습니다. JDK라 하는 것은 또 Java SE라고도 하는데 JDK 1.6버젼부터 Javs SE6 이라고 다르게 불렸다는 것은 <Java의 역사>편에서 자세하게 알아보실 수 있습니다. 

 

 

 

 

 

JDK (Java Development Kit)은 컴파일러와 JRE, JVM으로 구성되어 있습니다. 컴파일러의 명령어는 javac이며 우리가 작성한 *.java코드를 컴파일러를 통해 기계가 읽을 수 있는 Bytecode(.class파일)로 변환해주는 역할을 합니다.

JRE는 (Java Runtime Enviornment) 컴파일된 Java파일을 실행해주는 역할을 합니다. 개발자가 아니라 실행만이 필요할 시 JRE만을 설치하는 것이 권장됩니다.  위 그림에서 보다시피 JVM (Java Virtual Machine)은 Class파일을 각각의 운영체제 변환해 주는 역할을 합니다. javac가 컴파일한 *.class코드를 jvm은 각 운영체제와 하드웨어에 적합한 코드로 변환해 연산을 해줍니다. 그래서 앞 포스팅에서 O/S와 H/W는 Java SE가 있다면 어떤 것이든 가능한 Any O/S, H/W가 되는 것입니다.  서버컴퓨터에 Enterprise Edition과 Standard Edition이 설치된 컴퓨터를 그림으로 보면 다음과 같습니다.

 

 

 

 

 

 

 

 

Jave EE는 서버의 Model, View, Controller이 포함된 MVC의 보안과 안정성을 제공해 줍니다. 보안과 안정성을 제공해 줍니다. 안정성과 보안 등을 제공받는 코드는 Java SE의 컴파일러에서 OOO.class파일로 만들어 지게 됩니다. 그럼 서버와 O/S에 자바 실행파일인 Class가 전달되어 하드웨어가 작업을 수행 할 수 있는 환경을 만들어 줍니다. 

전 포스팅에서 서버의 Biz모델이 포함되어 있는 서버에플리케이션에 대해서 조금더 알아보기로 했는데요. Biz는 우리가 자주 사용하는 로그인, 로그아웃 그리고 다양한 데이터 베이스가 있는 Business에 중요한 정보가 담긴 모델입니다. 그런 중요한 정보를 Client는 윗 그림에 Controller라는 곳으로 요청을 하게 되는데요 여기서 중요한 정보가 담겨 자원이 많이 필요한 biz모델을 다른 프로세서로 옴겨 서버의 메인 프로세스에서 비즈모델과 통신을 하는 것을 그림으로 표현하면 다음과 같습니다.

 

 

 

 

 

 

그림과 같이 서버의 메인 프로세서에서 rmi-iiop 프로토콜을 이용해 업무에 관한 로직만 가지고 있는 서버에플리케이션과 통신을 하게 됩니다. 이것을 우리는 EJB (Enterprise Java Bean) 이라고 합니다. Biz프로세서는 서버의 메인이 되는 프로세서의 컨트롤러는와 Java EE를 통해 통신을 합니다. 이 Biz모델 역시 안정성, Tx, 설정이 적힌 명세가 있는데 이를 서버의 메인 컨트롤러에서 xml파일로 컨트롤 할 수 있는것이 Framework입니다. sturts, Spring 등 다양한 프레임워크에 관한 이야기는 자바이야기 후에 하도록 하겠습니다. 그럼 우리가 자바코트를 작성하여 실행하기까지 Java SE의 JVM은 어떻게 작업을 수행하고 메모리에는 어떤 방식으로 적재를 하는지 알아보도록 하겠습니다. 

 

 

 

 

 

 

2. 자바의 컴파일 및 메모리 적재

 

 

 

 

 

 

자바의 컴파일러는 그림과같이 Class Loader, Byte Verifier, Machine code Generator 이렇게 세가지로 구성되어 있습니다. Class Loader는 우리가 작성한 .java 형태의 자파파일을 JVM에 로드합니다. 이후 Byte Verifier가 코드가 잘못된 곳은 없는지 검사를 합니다. 흥미로운 사실은 정상적인 java파일은 파일 맨앞에 16진수로 CAFEBABE라고 코드화 되어 있다고 합니다. B/V가 검사를 끝내면 Machine code Generator가 머신코드로 바꾸워 .class파일로 만들어 줍니다. 이러면 컴파일은 끝나게 되는데 컴파일이후 JVM은 바이트코드로 된 .class파일을 로더에 올려 실행 준비를 하게 됩니다.

JVM은 다음과 같은 방법으로 .class파일을 실행합니다.

 


 

 

 

 

 

 윗 다이어그램과 같은 방식으로 MAIN메서드가 끝날때까지 계속작업을 하게 되는데 아직 Class, Static멤버, 상속관계등 배우지 않은 것들이 나와있어 자세한 설명은 후에 코드를 통해서 아주아주 반복적으로 할 예정이오니 기대해주시면 감사하겠습니다. 일단은 저런식으로 JVM이 .class파일을 동작시킨다고만 알고 계시면 충분할 것 같습니다. 이렇게 실행에 필수적인 것이 메모리 적재 입니다. 자바의 메모리의 구조는 다음과 같이 생겼습니다.

 

 

 

 

 

이 역시 아직 생각보다 많이 낯선용어들이 많이 나옵니다. 메모리에 적재하는 방법또한 아주 반복적으로 코드와 비교해서 설명을 할 예정입니다. 그러니 지금은 저렇게만 생겼다. 라고 이해해 주시면 감사하겠습니다:)

다은편에는 기본적인 자바의 용어와 특징, 그리고 간단한 자바 문법부터 시작하도록 하겠습니다.

사실 문법적인 내용은 제 블로그보다는 책에 더 자세하게 나와있을 것입니다. 저는 메모리에 적재되고 JVM이 작동하는 원리에 포커스를 두고 자바를 공부하고 있고 블로그도 최대한 그런 형식으로 작성할 예정입니다. 모쪼록 자바를 공부하시는데 제 블로그가 많은 도움이 되셨으면 좋겠습니다.

그럼 다음편에 만나요~~~

 

 

 

 

 

 

 

 

 

 

728x90
반응형

+ Recent posts