본문으로 바로가기

The Java Language and JVM

category Information Security 2013.04.14 20:35

보통 Java 라는 언어를 언급할 때 가장 자주 등장하는 것이 바로 객체지향이라는 단어입니다. 이것은 Java라는 언어의 중요한 software 기술 중의 하나입니다. Java라는 언어는 그리 오래 되지 않은 프로그래밍 언어입니다. 그렇기 때문에 비교적 최신의 Software 기술이 적용되어 있습니다. 그 중 하나가 객체지향인 것입니다. 그 밖에도 Multi-Threading, SEH(Structured Exception Handler), Garbage Collection, Dynamic Linking, Dynamic Extension 등의 기술들이 접목되어 있습니다.

Java의 Class 파일은 JVM 위에서 다시 실행 가능한 형태로 변형되는데 이 때 Linking 작업이 발생하게 됩니다. 그래서 Class 파일은 실행 시 Link를 할 수 있도록 Symbolic Reference 만을 가지고 있습니다. 이 Symbolic Reference는 Runtime 시점에서 메모리상에서 실제로 존재하는 물리적인 주소로 대체되는 작업인 Linking이 일어나게 되는 것입니다. 이러한 Link 작업은 필요할 때마다 이루어지기 때문에(동적행위) 이를 가리켜 Dynamic Linking이라고 합니다.

이 Dynamic Linking이라는 기술 덕분에 Class 파일의 크기를 작게 유지할 수 있습니다. C언어와 같이 모든 정보를 가지고 있지 않기 때문에 파일 크기가 작고, 그래서 Network를 통해 객체를 전송하고, 배포하는데 있어 유리합니다.

또한 Class파일은 JVM이 읽을 수 있는 형태(Bytecode)로 되어 있습니다. 어떤 시스템이든 JVM만 설치되어 있으면 어디서 작성되었든 Class파일은 실행이 가능합니다. 즉, 플랫폼에 독립적입니다. 그렇기 때문에 생산성을 극대화 할 수 있으며, 이러한 이유로 인해 Java는 비약적으로 발전 할 수 있게 되었습니다.

Java는 Runtime Memory를 직접 핸들링 하지 않습니다. 다시 말해 Java 사용자는 Runtime Memory를 핸들링 해서도 안되고, 또한 할 수 있는 방법도 전혀 없다는 의미입니다. 그 밖에도 객체지향의 특성인 Source Code의 재사용, Array Bound Check 등과 같은 엄격한 Type Rule, 그리고 Object Reference Check 등을 통한 프로그램의 안정성의 제공 등도 Java의 장점으로 꼽을 수 있습니다.

'Information Security' 카테고리의 다른 글

The Java Application Interface  (0) 2013.04.18
The Java Class File Format  (0) 2013.04.14
The Java Language and JVM  (0) 2013.04.14
Dual-boot Windows 7 and Kali Linux  (2) 2013.04.14
Javocalypse  (0) 2013.04.11
Automater.py  (1) 2013.04.11

댓글을 달아 주세요

티스토리 툴바