Java

Java는 Sun Microsystems 사의 그린프로젝트(Green Project) 팀에서 개발 된 언어로 C 또는 C++ 보다 간결한 프로그램을 만들기 위해 시작하여 만들어진 언어이다. 이 팀은 가정에서 사용되는 일종의 대화형 제어기를 개발하는 중이었는데 그 프로그램을 처음에는 C++로 작성하였으나 C++에서 제공하는 클래스가 다중 상속(multiple inheritance)으로 인한 복잡함이나 메모리 할당 등 여러 가지 문제로 개발 목적에 맞지 않다는 사실을 발견하고, 좀더 간편한 프로그램을 만들었다.  이것이 자바의 모체인 오크(Oak)라는 언어다.

이 오크 언어의 사용에 있어 실패로 다른 방향으로 전환에서 Sun의 창업자 중 한 명인 Bill Joy 가 인터넷에 최적화를 시킬 수 있다는 비전을 제시했고 이를 James Gosling 과 Patrick Naughton 이 오크(Oak)언어를 인터넷에 최적화 된 언어로 만드는 작업을 하였다. 그 후 1995년 중반 그디어 Java란 정식 명칭으로 공식적 발표가 되었다.
여기서 재밋는 사실은 JAVA의 아버지는 고슬링(James Gosling)이다. 다른 이들은 어디간겨~


 

[James Gosling]

Java 실행 환경



위 그림에서와 같이 Java는 JVM(JAVA Virtual Machine 자바 가장 머신) 이 운영체제 중간에서 자바 응용프로그램을, JAVA 고유 바이트 코드(class 파일), 해석하여 운영체제에 전달 한다. 이 말은 자바 코드를 해석할 매개체가 필요하단 이야기 이다. 또한, 어떤 운영체제에서도 사용이 용이하다는 장점이 (크로스 플랫폼, 멀티 플랫폼) 있다.

[참고] 크로스 플랫폼을 지원하는 소프트웨어의 예는 다음과 같다.

    • 자바 (썬 마이크로시스템스)
    • 오페라 (오페라 소프트웨어)
    • 파이어폭스 (모질라 재단)
    • 도스박스
    • 오픈오피스
    • 어도비 플래시
    • 실버라이트
    • KOffice
    • 루비

그런데 MS와 Sun사이 법정공방이 있었는데 Sun 사가 승리를 하면서 Windows 운영체제 XP 버전 이후부터는 이 JVM이 설치가 안되어 있어 JAVA를 이용하기 위해서는 설치가 필요하다.


이 정도면 자바를 이해하는데 도움이 되었으리라 믿고, 다운로드 및 설치를 해 보자.

  1. 다운로드
    다운로드는 Oracle 사의 공식 싸이트에서 받을 수 있다. Oracle사가 Sun microsystem 사를 사들였기 때문
    오라클 공식 싸이트 : http://oracle.com
    이곳을 방문하면 상단 메뉴탭에서 Download 탭에 마우스를 가져가면 좌측 Java for Developers 를 클릭 한다.




    JDK와 JRE 가 있다 그 중에 개발자는 JDK(JAVA Development Kit)를 응용프로그램 사용자는 JRE(JAVA Runtime environment)를 다운 받는다.





    JDK Download 클릭 시 화면


    Accept License Agreement를 선택한 후 자신의 운영체제에 맞는 JDK를 다운 받는다.
    [참고] x84는 32비트 x64는 64비트를 의미한다. 또한, 자신의 운영체제가 64비트라면 x84와 x64 두 개 모두 설치 하여 사용할 수 있다.



설치

처음 다운받은 실행파일을 실행하면 하단의 그림처럼 실행된다.


[그림 1-1] 설치


위 그림에서 Next를 클릭하면 하단 그림과 같은 창이 열리는데 이 창은 JDK가 설치될 디렉토리를 변경 할 수 있다. 디렉토리를 변경하는 이유는 추후 내 자신이 JDK를 관리하기 위한 목적으로 변경을 한다. 만약, 자신의 생각이 변경하는 게 더 헤깔린다면 변경을 안해도 된다. 우측 하단 "Cancel" 버튼 위 "Change..." 버튼 클릭


[그림 1-2] 설치


하단의 그림은 "Change..." 버튼을 클릭 했을 때 새로 생성되는 창으로 여기서 JDK 기본 디렉토리를 변경할 수 있다.


[그림 2-1] 설치 시 기본 JDK 디렉토리 변경


나는 관리상 다음과 같이 디렉토리를 변경한다. 'C:\JDK1.7(x64)' 이렇게 하는 이유는 Program Files 란 디렉토리명 때문이다. 중간에 스패이스가 들어가 있어 언어별 또는 프로그램 별 문제를 야기할 소지가 있어서 임의의 디렉토리를 설정했다.


[그림 2-2] 설치 시 기본 JDK 디렉토리 변경


하단 이미지는 디렉토리 변경 완료 후 모습니다.


[그림 2-3] 설치 시 기본 JDK 디렉토리 변경


디렉토리 변경까지 완료되었다면 "Next" 버튼 클릭을 한다.


[그림 3-1] 기본 JDK 설치 중


설치가 완료되면 이제 다음으로 JRE가 설치되어야 한다. 그래서 하단 이미지와 같이 JRE 설치 디렉토리를 설정하라는 창이 열린다. 나는 JRE가 필요한게 아니라 JDK가 필요하므로 그냥 기본으로 설정되도록 한다. 그럼 "Next" 클릭


[그림 4-1] 설치 시 JRE 디렉토리 변경 여부 뭍기


하단은 마지막 JRE까지 설치가 진행되는 이미지이다.


[그림 4-2] JRE 설치 중


모든 설치 과정이 끝난 이미지. "Close" 버튼을 클릭하면 오라클 레지스터리 등록 페이지가 열린다. 등록해도 되고 안해도 된다.


[그림 5-1] JAVA 설치 완료



환경설정

환경설정은 많은 책과 인터넷에서 찾아볼 수 있지만 정작 중요한 설명을 안하고 반강제적으로 PATH와 CLASSPATH 설정까지 하도록 한다. 이게 무슨 경우인지 참...

그럼 PATH와 CLASSPATH에 대해 몇자 적어보면

간단예로 설명을 하겠다.

어느날 친한 친구녀석의 집에 놀러 갔는데 무척이나 재미있을 법한 CD게임을 발견하고 이 녀석 몰래 가지고 컴퓨터 CD-ROM에 넣었다. 근데 실행이 안되는 것이다. 알고보니 인터넷에 보안으로 CD 및 USB 자동실행 방지를 위해 자동실행이 안되도록 바꾸어 놓았다. 이걸 모르고 한 두 시간 삽질을...

이제 실행이 안되는 원인을 알았으니 실행을 하는 일만 남았다. 탐색기 창을 열어 CD가 들어 있는 미디어 장치 E:\ 를 찾아 들어가 보았더니 setup.exe 파일이 있었다. 클릭을 하는 순간 모든 인스톨이 완료가 되어 재미 있게 게임을 즐겼다.

위 예를보면 가장 중요한 부분은 CD가 들어 있는 미디어 장치를 탐색기에 찾아 E:\ 로 간것이다. 그럼 디렉토리 경로는 E:\setup.exe 가 된다. 만약, 이 setup.exe 파일의 위치가 "E:\Program Files\Fun Game\My First CD Game\Blizzard Entertainment\Diable III\setup.exe" 라면 탐색기로 일일이 찾아가야 한다. 그럼 탐색기가 없는 도스 시절엔 어찌했겠나?

아래와 같은 방법 또는 상응하는 방법으로 해야 했다.

C:\>E:\ [엔터]
E:\>cd "Program Files\Fun Game\My First CD Game\Blizzard Entertainment\Diable III"
E:\>Program Files\Fun Game\My First CD Game\Blizzard Entertainment\Diable III>setup.exe

또는,


C:\>E:\
"Program Files\Fun Game\My First CD Game\Blizzard Entertainment\Diable III"\setup.exe [엔터]


그럼 위 경로를 시스템 변수인 Path에 등록하면 어찌될까?


C:\>
setup.exe [엔터]

너무 간단하지 않은가?


그럼 CLASSPATH 란 멀까? 자바는 컴파일을 하게 되면 .java 파일이 컴파일되어 .class 파일로 새로 생성된다. 이 파일을 실행하면 setup.exe 파일을 실행하는 것처럼 된다. 근데, 내가 예전에 겁내 좋은 달력을 만들었다. 그걸 이용하려 신규 프로젝트에 추가하고 싶지만 코드를 일일이 넣기 짜증나서 라이브러리에 추가를 하여 필요한 메소드만 호출해 사용하면 좋을거 같았다. 그런데, 이걸 import로 추가를 하니 오류가 났다. 그래서 javac만 처보니 다음과 같은 메시지가 나온다.


C:\>javac
Usage: javac <options> <source files>
where possible options include:
  -g                         Generate all debugging info
  -g:none                    Generate no debugging info
  -g:{lines,vars,source}     Generate only some debugging info
  -nowarn                    Generate no warnings
  -verbose                   Output messages about what the compiler is doing
  -deprecation               Output source locations where deprecated APIs are used
  -classpath <path>          Specify where to find user class files and annotation processors
  -cp <path>                 Specify where to find user class files and annotation processors
  -sourcepath <path>         Specify where to find input source files
  -bootclasspath <path>      Override location of bootstrap class files
  -extdirs <dirs>            Override location of installed extensions
  -endorseddirs <dirs>       Override location of endorsed standards path
  -proc:{none,only}          Control whether annotation processing and/or compilation is done.
  -processor <class1>[,<class2>,<class3>...]Names of the annotation processors to run; bypasses default discovery process
  -processorpath <path>      Specify where to find annotation processors
  -d <directory>             Specify where to place generated class files
  -s <directory>             Specify where to place generated source files
  -implicit:{none,class}     Specify whether or not to generate class files for implicitly referenced files
  -encoding <encoding>       Specify character encoding used by source files
  -source <release>          Provide source compatibility with specified release
  -target <release>          Generate class files for specific VM version
  -version                   Version information
  -help                      Print a synopsis of standard options
  -Akey[=value]              Options to pass to annotation processors
  -X                         Print a synopsis of nonstandard options
  -J<flag>                   Pass <flag> directly to the runtime system


위 정보에서 CLASSPATH 관련 메시지를 보니
-classpath <path>          Specify where to find user class files and annotation processors
라고 한다. 즉, 위에서 이야기 했듯 에러가 난 원인은 라이브러리에 추가해 사용한 클래스 파일의 위치를 지정하란거였다. JAR 파일도 맞찮가지로 적용이된다. 그럼 이 CLASS 가 모인 디렉토리가 있다면 그 디렉토리만 시스템변수에 추가하면 다음과 같은 일은 안해도 된다.

C:\>javac -classpath c:\classpath\my_good_codes\Calendar HelloWorld.java

-- 이걸 아래와 같이 단순하게 처리가 가능

C:\>javac HelloWorld.java

근데 내가 근 8년간 개발을 해 오면서 시스템 변수에 CLASSPATH 설정은 처음 자바 배울 때 빼곤 써 본적이 없다. 이미 내용을 알기 때문에 설정을 할 필요가 없었기 때문이다.


그럼 본격적으로 PATH 설정에 들어가 본다.


하단의 이미지들은 시스템 속성까지 이동하여 시스템 변수 등록까지 할 수 있게 편집해 보았다.


[그림 6-1] 환경설정 - 컴퓨터 우클릭 후 속성 클릭



[그림 6-2] 환경설정 - 시스템/고급 시스템 설정



[그림 6-3] 환경설정 - 시스템속성/환경변수 클릭



[그림 6-4] 환경설정 - 시스템 변수 Path 설정


아래 이미지에서 중요한 부분이 있다. "C:\JDK1.6\bin" 다음에 방금 설치한 JDK 1.7 64비트가 온다. 이유는 내가 이전에 설치한 JDK가 있는데 이는 x86 즉, 32비트 JDK이고 이 JDK를 우선순위에서 가장 먼저 두기 위해 JDK 1.7 앞에 둔것이다.


[그림 6-5] 환경설정 - 시스템 변수 Path 등록

그럼 이렇게 설정하고 JAVA 버전을 확인해 보면 다음과 같이 나온다.

C:\>java -version
java version "1.6.0_19"
Java(TM) SE Runtime Environment (build 1.6.0_19-b04)
Java HotSpot(TM) Client VM (build 16.2-b04, mixed mode, sharing)


그럼 변수 값(V) 항목에 다음과 같이 하고 JAVA 버전을 확인 해 보자.
변수값 - C:\JDK1.7(x64)\bin;C:\JDK1.6\bin;

설정 후 컴퓨터를 종료 후 재시작한다음 다음과 같이 버전을 알아본면 다음과 같이 나온다.

 C:\>java -version
java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b11)
Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)


여기까지 JAVA 설치부터 환경 설정이다.


'01. Java 개발언어 > Java' 카테고리의 다른 글

단위  (0) 2012.12.08