프롤로그
  언어란 상대방과의 의사소통을 위한 것
  컴퓨터 언어란 컴퓨터와 사람과의 의사 소통
  사람과 사람사이에 통역사가 있듯 컴퓨터와 사람사이에도 통역사가 필요하다
  자바에서는 JDK라는 통역이 있고 우리는 그것을 배우기 위해 이자리에 있다

컴퓨터언어의 발전
  저급언어 : 어셈블리어, 기계어(0과 1로 이루어진 언어)
  고급언어 : 사람이 이해하기 쉬운 언어

  ALGOL60 -> CPL(63) -> BCPL(70) -> B(70) -> C(73) -> C++(85) -> JAVA(95)

자바 언어의 의사 소통 방법
 - 컴파일러(Compiler) : 바이트 코드로의 변환
 - 인터프리터(Interpreter) : 라인 별 실행

자바 언어의 역사
  1991년 1월 15일 : Bill Joy, Andy Bechtolsheim, Wayne Rosing, Mike Sheridan,
    Patrick Naughton 그리고 James Gosling 이렇게 6명이 모여 ‘Stealth Project’라는
    이름으로 회의를 시작
  1991년 6월 : James Gosling이 ‘Oak’라는 이름으로 인터프리터 개발에 착수
  1991년 8월 19일 : 사용자 인터페이스에 대한 아이디어와 그래픽 시스템을 Sun의 창립자인
    Scott McNealy와  Bill Joy에게 소개
  1993년 9월 : Arthur Van Hoff가 ‘Interactive Television’ 프로젝트에 동참
  1994년 4월 25일 : ‘Sun Interactive’ 완성. 이후 내용은 강력하지만 프로그램의 크기는
    작은 운영체제를 목적으로 ‘Liveoak Project’를 시작했다가 다시 웹에서 동작하는 Oak
    개발에 집중
  1994년 9월 16일 : ‘HOT JAVA’의 원형격인 ‘WebRunner’(Mosaik 같은 브라우저)를
    Jonathon Payne과 Naughton이 개발을 시작.
    비슷한 시기에 Arthur Van Hoff는 James Gosling이 C 언어로 구현했던 자바 컴파일러를
    자바 언어를 이용하여 구현
  1995년 5월 23일 : ‘SunWorld 95’에 공식적으로 JAVA와 HOT JAVA가 발표.
    같은 날 Netscape사가 Netscape 브라우저에서 사용할 자바에 대한 라이센스 계약 예정 공표
  1995년 12월 7일 : MS사가 참여하기까지 많은 회사와 라이센스 계약
    (Toshiba, Oracle, Lotus, Intuit, Borland, Macromedia, Spyglass, Silicon Graphics,   
     Mitsubishi, Sybase, Symatec, IBM, Adobe 등)

자바환경 설정
  JRE - 사용자를 위한 실행환경만 제공
  JDK - 실행환경과 반기계어로 변환하는 컴파일러까지 포함 - 우리는 이것을 다운받아야 한다.

JAVA 싸이트
 - http://www.oracle.com/
환경변수 만들기
  시작 -> 설정 -> 제어판 -> 시스템 -> 고급 -> 환경변수
  path를 클릭
  맨앞에 C:\Program Files\Java\jdk1.7.0_09\bin;을 넣어준다
  변수 설정을 해준다
  설정이 끝났으면 java -version과 javac를 실행시켜본다.
 
프로그램의 작성, 컴파일, 실행
파일명.java 라는 파일을 작성하게 된다.
이것을 컴파일해야 하는데 이때 사용하는 명령어가 javac 이다.(바이트 코드로 변환시키는것)
이러면 파일명.class가 나오는데 이것을 실행하는 명령어는 java 이다(jvm내에 설치된 인터프리터)

프로그램 구문분석 및 main()메소드
예) hello java
01   import java.lang.*;  //c언어의 #include와 비슷
02   public class Exec01_01{
03      public static void main(String[] args){
04         System.out.println("Hello Java!!");
05      }
06   }

실행을 시켜 보자

우선 메모장에서 위의 구문을 입력하여 저장한후(.java), 실행(javac Exec01_01.java)을 시켜본다.

01 : import는 알지못하는 클래스의 정의가 들어 있는 곳을 지칭하기 위해 사용하는 것
     import java.lang.*; 은 java라는 폴더안에 lang이라는 폴더, 그 내안에 있는 클래스들 
     을 사용하겠다고 정의하는 것
     그런데 import java.lang.*은 생략한 곳이 많다.
     이유는 java에서는 기본적으로 java.lang 부분을 import 해 놨기 때문이다.
02 : public이라는 예약어를 쓸수 있는 클래스는 하나뿐이다.
     그리고 이 클래스가 파일명이 되는것이다.
     따라서 파일명과 이 클래스의 이름은 대,소문자까지 똑같아야만 한다.
     물론 모든 클래스가 public 이라는 이름을 사용하지 않아도 된다.
03 : public static void main(String[] args)
     시작을 나타나는 메소드 이다.. 반드시 외어야 한다
     자바프로그램은 파일명과 동일한 클래스의 main()메서드에서 시작해서 그메서드의 마지막
     블록에서 끝이난다.
04 : System.out.println("Hello Java!!");
     자바의 라인 끝은 ;이나 {}으로 끝이 난다  
     System.out.println은 출력을 나타내는 메소드 이며 자세한건 입출력을 배울때 한다

자바의 특징
  - 이식성이 높은 언어이다.
  - 외부의 포인터를 제거하고 내부 포인터만 사용한다.
  - 완벽한 객체지향적인 언어이다(하나의 덩어리다)

JVM
  - 자바가상머신(java virtual machine) : 바이트코드를 읽어서 실행할 수 있도록 해주는 도구
    자신의 메모리에 배치시킨다.
    메모리의 구조
    - 스택영역(Runtime Stack) : 자바의 로컬변수를 할당, 해당변수는 그것이 선언된 블럭을
                           벗어나는 순간 메모리가 소멸됨
                           자동으로 초기화 되지 않으므로 초기화 해주어야 한다.
    - 동적할당메모리영역 : 배열로 만들어진 연속된 공간들이나 클래스에 포함된 멤버를 할당하는 영역
                     Garbage 컬렉터에 의해 관리
                     초기화가 디폴트로 되어 있음
    - 상수와 메서드영역 : 프로그램의 시작시 생성, 종료시 소멸됨
                    고정데이터를 가진 상수나 추상화 형식을 지닌 메서드의 경우 해당 내용을
                    기억해 두어야 할 필요성 때문에 만들어진 영역, 실행시 위치값을 가지게 된다
    - Register 영역 : jvm을 실행하면서 필요한 부분의 주소를 기억해 두는 곳
                  각영역에 연결되어 있는 프로세서가 작동할때 여기에 등록된 내용을 기초로 실행
 => 단순한 프로그램이 아닌, 프로그램을 실행시키는 도구 그자체이다.

사용자 정의 명칭
  사용자가 정의한 이름이라는 뜻
  폴더의 이름, 클래스의 이름, 메서드의 이름, 그리고 필드의 이름등을 정의할때 사용
  다음과 같은 규칙으로 이루어져 있다.
  - 첫글자는 $,_,영문 대소문자여야 한다.(한글도 가능하지만 권장하지는 않는다)
  - 글자수에는 제한이 없다.
  - 공백 문자는 포함할 수 없다.
  - 특수문자(@,#,%,^,&,!,?)는 사용할수 없다.
  - 숫자는 첫 글자가 아닐경우 사용이 가능하다
  - 예약어는 사용할수 없다.
  권장사항
  - Class : 첫글자는 $,_,대문자를 사용하자
  - Method(함수) : 첫 글자는 $,_,소문자를 사용하자
  - Field(변수) : 일반적으로 전부 대문자인 경우는 static final 필드이고
                  그 외는 첫글자는 대문자, 나머지는 소문자이다
  - 합성어의 첫글자는 대문자로 한다(HelloJava)

주석사용
  프로그램에 영향을 미치지 않으면서 해당부분을 설명해 두어 나중에 그 코딩을 이해하기
  쉽게 만드는 하나의 방법

주석의 종류
  /* ~ */ : c언어에서 따온 주석으로 특정범위를 묶어서 주석 처리
  // : c++에서 따온 주석으로 해당 주석 표시가 있는곳에서부터 그 라인의 끝까지 주석처리
  /** ~ */ : 자바의 document 주석
             나중에 사용자 정의 document API를 만들때 사용하는 주석처리

'자바' 카테고리의 다른 글

자바의 연산자(8)  (0) 2012.12.11
자바의 기초적인 기초개념2(7)  (0) 2012.12.11
eclipse를 사용 자바시작(5)  (0) 2012.12.05
자바를 쉽게 쓰기 위한 툴 다운로드(4)  (0) 2012.12.05
자바를 시작(3)  (0) 2012.12.04
by 맑은소금 2012. 12. 11. 00:16