본문 바로가기

자바

1. 자바 시작 (공부 메모)

*관련 용어 이해

 

-바이트 코드(byte code) : 자바 컴파일러가 자바 소스 프로그램을 컴파일한 기계어로서 , 자바 가상 머신에서 실행되는 바이너리 코드.

 

CPU에 의해 직접 실행 되는게 아니라 가상 기계가 바이트코드를 인터프리터 방식으로 실행

 

 

-자바는 플랫폼(운영체제)에 독립적으로 돌아가는 것이 장점. 자바 가상머신 때문  //자바 가상 머신 자체는 플랫폼 종속적임

 

-JDK(java development kit) - 자바 컴파일러 같은 자바 응용프로그램 개발하는데 필요한 도구 +

자바 프로그램이 실행될 때 필요한 자바 가상 기계와 표준 클래스 파일들 포함한 JRE

 

-JRE(java run-time enviorment) -자바 프로그램이 실행될 때 필요한 자바 가상 기계와 표준 클래스 파일들 포함 

 

 

*자바의 구조

 

자바컴파일러

자바 소스코드 -----------------> 바이트 코드 ------>자바 가상기계 상에서 바이트 코드를 실행

  (Hello.java)                         (Hello.class)        (이때 실행에 필요한 다른 class 파일들을 JDK라이브러리에서 가져옴 // 자바 가상기계 실행 시작 전)

I

I

I

실행에 필요한 자바 클래스 라이브러리(JDK API)      

(Object.class , String.class , .....)

 

cf. 바이트 코드 ----(disassemble)---->Hello.bc //바이트 코드를 우리가 이해할 수 있게 바꾸는 것임. 

 

 

특징은 C/C++과 달리 링커가 필요 없음 . 로딩시간 지연 줄이기 위해 JDK라이브러리는 자바가상머신 시작시에 미리 로딩함.

 

 

//C/C++의 경우

 

소스 코드 ------------------------------------------> 바이너리 실행 파일

 Hello.cpp                 컴파일러                               Hello.exe

                  중간단계인 '오브젝트 코드' 생성 후

링커가 필요한 라이브러리들을 링크

      

 

 

*자바 배포판 10가지 정도 있으며 Java SE/ME/EE(표준, 모바일용, 기업용 ) 3가지가 대표적 

 

 

* 자바 설치시 디렉토리 설명

사진 출처: 생능_ 명품 java 프로그래밍 p.31

(참고로 내가 설치한건 javaSE-1.8버젼임)

 

 

 

 

*bin 파일에 들어 있는 주요 개발 도구  // 동일 서적 p.32

 

 

 

*자바 API ?

 

패키지 - 서로 관련된 클래스들을 분류하여 묶어 놓은 것

 

자바API(application programming interface): 주요 기능을 미리 구현한 클래스 라이브러리로 묶어 놓은 패키지

 

ex) 모니터 화면에 문자를 출력하는 것, 키보드에서 입력을 받는 것 같이 빈번한 기능을 자바에서 미리 구현해서 API로 제공

 

 

     자바 API                 <--------------------    개발자

개발자가 필요한 class          import

 

 

포함관계가  자바 api (패키지(클래스)) 인가  // 여기서 ,  패키지 = 클래스 라이브러리

 

 

 

cf . https://docs.oracle.com/javase/7/docs/api/        자바API 온라인 문서

 

 

//p.34 javadoc 을 이용해 자신만의 API 문서 생성  //이것과 관련된 실습은 해보도록 하자. 지금은 생략

 

 

 

 

 

 

 

 

 

 

*자바 통합개발환경(IDE) eclipse 설치 위치(내 pc)

cf. 용어 정리 IDE : intergrated deveolpment enviorment                ex) MS사의 비주얼 스튜디오, 자바의 이클립스

 

 

C:\Users\Administarator\eclipse\java-oxygen

 

 

*자바 프로젝트 생성

 

프로젝트 - 하나의 자바 응용프로그램에 속하는

              1.여러 자바 소스파일들 , 2.이미지나 동영상 같은 리소스 , 3. 컴파일된 클래스 파일들 을 일괄적으로 관리하는 공간

 

클래스 생성 - file->new->class로 소스 생성

 

 

*자바 자동 완성 단축키

 

Ctrl + Space

 

 

*자바 hello2030 실행한 모습

 

 

 

 

 

*자바 응용프로그램의 종류

 

1.데스크톱 응용프로그램 - 가장 일반적 pc에서 사용됨

 

2.애플릿(applet) 응용프로그램- 웹페이지에서 내장되어 사용됨.(웹 브라우저에 의해 구동되고 실행됨)

 

3.자바 서블릿(servlet) 응용프로그램- 애플릿과 반대로 서버에서 실행되는 응용프로그램

 

4.모바일 응용프로그램 -모바일 기기

 

-Java Me - 모바일 기기를 위한 자바 배포판

 

-안드로이드 - 구글의 주도로 여러 모바일 회사가 모여 구성한 OHA에서 개발한 무료 모바일 플랫폼.

 

개발 언어는 자바이지만 오러클 사의 자바 라이선스를 피해 별도의 개발도구를 개발(Dalvik 이라는 자바가상기계도 만듦)

 

 

 

*자바의 특징

 

1. 객체 지향언어 - 객체와 객체간의 상호관계로 표현해서 인간의 사고에 가깝게 표현한 언어

 

ex) 연필 깎는 것을 객체지향적언어로 표현해본다면

 

객체에는 "연필", "연필 깎이 기계", "연필을 기계에 끼우기" , "연필 깎기" 뭐 이런식으로 쪼개서 표현한다고 할까.

 

 

2. 클래스 계층구조, 상속성, 다형성, 캡슐화등을 지원 // 각각은 검색하면 정리된 내용들이 많다. 나는 이미 대충 알고 있으므로 설명은 생략하겠음

 

 

3. 자체 멀티 스레드 지원(C/C++포함한 많은 언어들은 멀티스레드를 자체적으로 지원 x -->운영체제의 도움을 받아 멀티스레드 가능)

 

!! 자바는 자체 멀티스레드가 지원되므로, 멀티스레드 지원안되는 운영체제에서도 멀티스레드 프로그램 개발이 가능  

 

// 운영체제 중에 멀티스레드 지원 안되는 것도 있나봄..

 

 

4. 플랫폼 독립성(운영체제와 상관없이 하나의 프로그램이 자바가상머신만 있으면 여러 운영체제에서 이용가능)

 

5. 소스와 클래스 파일

 

하나의 자바 소스에는 여러 클래스 작성 가능

 

하나의 클래스 파일에는 반드시 하나의 컴파일 된 자바 클래스만이 포함됨

 

public class A {
      ....
}
class B {
      ....
      class C {
            ....
      }
}
class D {
      ....
}
 

 

위와 같은 A.java라는 코드가 있으면 컴파일 하면 A.class , B.class, B$C.class, D.class 총 4개의 클래스 파일이 생성됨

 

 

소스파일 안의 클래스 중 하나만 public으로 선언되며, 해당 클래스 명과 소스파일의 이름은 동일해야 한다.

 

 

6. 실행 모듈

 

자바 응용프로그램 = 1개 or 다수의 클래스 파일으로 구성

 

다수의 클래스 파일을  jar 파일 형태로 압축하여 배포 실행 가능

 

자바의 실행은 main( )메소드에서 시작되며, 하나의 클래스 파일하나 이상의 main( )메소드를 가질수 없음.

 

그러나 다수의 클래스 파일이 각각 main( )메소드를 가지는 것은 상관없음

 

7. 클래스로 캡슐화

 

변수나 메소드는 반드시 클래스 내에 구현된다.

 

클래스 안에 클래스 들어갈 수 있다.

 

 

8. 패키지

파일 시스템의 폴더 개념과 같다.

 

ex) java.lang.System 클래스는       java\lang 폴더 안에 System.class 파일이 있는 것이고, 여기서 java.lang을 패키지라고 부른다.

 

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