1. Java 버전

1) JRE (Java Runtime Environment)

자바 프로그램을 실행할 수 있도록 해준다.

http://java.com/ko/download/index.jsp

2) JDK (Java Development Kit)

자바 개발 킷으로 JRE 가 포함되어 있으며, 이외에도 컴파일러(javac) 및 여러 유틸리티, 라이브러리가 포함되어 있다.

http://www.oracle.com/technetwork/java/javase/downloads/index.html

 

2. Java bit 선택

Java 는 32bit 와 64bit, 두 종류로 제공되고 있다.

1) 32bit

Solaris 커널을 제외한 32bit 운영체제에서는 최대 4GB 메모리 사용의 한계가 있으며, 실제적으로 사용 가능한 공간은 그 이하이다. 32bit Solaris 커널의 경우 최대 2GB 까지만 사용 가능하다. 앞서 최대 메모리라고 이야기 한 4GB 나 2GB 는 java heap 과 native heap 을 합한 수치이다. 따라서 native heap 이 어느 정도 사용하느냐에 따라 java heap 의 최대 사용량이 결정된다. 

2) 64bit

32bit 에서의 메모리 제한 이슈가 사라졌다. 더 많은 heap 을 할당할 수 있게 됨에 따라 더 많은 thread 를 사용할 수 있게 되었다.

32bit Java 는 ILP32 이다. int, long, pointer 모두 32bit 라는 것이다. 이에 비하여 64bit Java 는 LP64 이다. long, pointer 가 32bit Java 와 다르게 64bit 라는 것이다. 그리고 int 는 여전히 32bit 이다. 이렇듯 동일 응용을 구동한다고 할 때, 32bit 에 비하여 더 많은 메모리를 사용하고 32bit 에 비해 더 느려질 수 있다. (이 부분은 좀 더 확실한 검증이 필요하다)

아래 표를 통하여 비교하여 본다.

C Type ILP32 LP64
char 8 8
short 16 16
int 32 32
long 32 64
long long 64 64
pointer 32 64

 

일반적으로 32bit 와 64bit Java 의 선택은 시스템 아키텍처가 scale out 이냐 scale up 이냐에 달려있다. 횡으로 펼쳐지는 scale out 구조인 경우 각 node 에 많은 메모리 할당을 하는 경우가 드물기 때문에 32bit Java 를 선택하는 것이 유리하다. 그러나 sacle up 구조인 경우 많은 메모리 할당이 필요할 수 있으므로 64bit Java 선택을 해야 할 경우가 많다.

 

3. Java 버전 확인 

1) Version 7 Update 51 의 경우

$ java -version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode) 

2) Version 7 Update 45 의 경우

$ java -version
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)

3) IBM JDK 의 경우 

$ java -version
java version "1.6.0"
Java(TM) SE Runtime Environment (build pap6460sr14-20130705_01(SR14))
IBM J9 VM (build 2.4, JRE 1.6.0 IBM J9 2.4 AIX ppc64-64 jvmap6460sr14-20130704_155156 (JIT enabled, AOT enabled)
J9VM - 20130704_155156
JIT  - r9_20130517_38390
GC   - GA24_Java6_SR14_20130704_1138_B155156)
JCL  - 20130618_01