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