컴퓨터가 익숙치 않으면 어렵게 느껴질 수 도 있다
처음부터 완벽히 이해하려고 하지말고 즐기기 바란다
*자바 프로그램의 실행구조와 자바 가상머신
일반적인 프로그램의 실행구조는
하드웨어위에 운영체제가 동작을 하고, 운영체제 위에서 프로그램이 동작한다.
그래서 일반적인 프로그램은 운영체제에 굉장히 의존적이다
예를들면, 윈도우에서 동작하는 테트리스 라는 게임을 만들었다
그것을 리눅스로 가져가서 실행시키면 동작하지 않는다.
왜냐하면 실행파일의 구조가 완전히 다르기 때문이다
그런데 만약에 JAVA로 테트리스를 만들면 운영체제에 상관없이 실행이 된다
(운영체제에 의존적이지 않다)
왜냐하면 자바는 운영체제 위에 JAVA 가상 머신을 놓고 그 위에 JAVA 프로그램
를 놓기 때문에 JAVA 가상머신이 운영체제에 맞게 변환을 하고 운영체제에 전달하기 때문이다.
하지만 자바 가상머신은 운영체제에 의존적이기 때문에 운영체제마다 다르게 설치해야 한다.
*자바 컴파일러와 자바 바이트 코드
컴파일러, 런처 등을 통합해서 설명을 해보겠다
예전에 FirstJavaProgram.java를 만들었다
이것은 javac.exe에 의해 컴파일 되고
FirstJavaProgram.class 라는 파일이 만들어지고
이것을 JAVA 가상 머신에 올린다.
(자바 컴파일러는 자바 가상머신이 인식할 수 있는 자바 바이트 코드를 생성해 낸다.)
그래서 java가상머신이 FirstJavaProgram.class 를 실행시킨다.
*자바 가상머신 때문에 속도의 저하가 있을까?
- 대부분의 소프트웨어는 속도보다 안전성이 우선시된다
- 물론 속도는 중요하지만 여기서 말하는 속도는 소프트웨어의 개발속도 이다
- 개발중인 소프트웨어의 90% 이상은 인터넷, 네트워크 기반 소프트웨어이다.
- 인터넷, 네트워크상에서 소프트웨어의 속도보다 데이터의 전송속도가 더 중요하다
- 속도가 문제가 되면 대부분의 개발자들은 데이터베이스를 먼저 의심한다. 그리고 그곳에서 대부분 문제를 발견하고 해결한다.
-> 자바의 속도를 문제 삼지 말자.
'IT관련 > JAVA' 카테고리의 다른 글
[난 정말JAVA를 공부한 적이 없다구요] 2-2. 정수 표현방식의 이해 (0) | 2013.05.06 |
---|---|
[난 정말JAVA를 공부한 적이 없다구요] 2-1.변수의 이해와 활용 (0) | 2013.04.16 |
[난 정말JAVA를 공부한 적이 없다구요]1-4 컴파일의 대상에서 제외되는 주석! (0) | 2013.04.16 |
[난 정말JAVA를 공부한 적이 없다구요]1-3 첫번째 자바 프로그램의 관찰과 응용 (0) | 2013.04.16 |
[난 정말 JAVA를 공부한 적이 없다구요]1-1. java의 세계로 오신것을 환영합니다 (0) | 2013.04.16 |