자바공부하기132

클래스파일탐색_ class search

 

- 패키지는 보통 파일시스템에 저장

: Applet 같은 경우 인터넷에 저장

 

- 클래스 탐색 경로는 패키지가 저장되어 있는 최상위 디렉토리들을 나타냄

: 컴파일러와 JVM은 클래스를 찾기 위해 최상위 디렉토리에서 패키지 디렉토리로 찾아 들어감

 

- 일반적으로 자바 관련 프로그램에 CLASSPATH 환경 변수 값을 설정 함으로서 클래스 탐색 경로의 일부 지정 가능

 

- 자바 가상머신이 클래스를 검색하는 순서

 

 

자바공부하기 131

패키지 만들기

- 자바 원시 파일은 다음과 같은 순서로 이루어져있어야한다.

 

 

- 자바의 패키지는 디렉토리와 연관되어있다.

: 특정 패키지에 속하도록 설정했다면 그 이름과 동일한 이름을 가진 디렉토리에 컴파일 되어야한다.

: 패키지 선언이 없으면 해당 클래스들은 익명 패키지에 속한다.

 

 

 

 

 

실행

1. package1 이라는 폴더를 만들고 파일들을 저장한다.

2. C:\java\source\ 위치에서 아래와 같이 컴파일 후 실행

3. javac  -d  C: \java\source\package1    C: \java\source\package1\ *.java

4. java -cp   .;C:\java\source\package1   MyApplication

 

 

자바공부하기 130

J2SE 패키지 종류

 

java.lang

- java 프로그래밍에 필요한 기본요소 / java의 데이터 타입과 구문 문법에 관한 클래스가 정의 / 예외 상황과 스레드. 시스템 등의 클래스가 정의

 

java.io

- String 클래스에 바탕을 둔 I/O 기능을 제공 / 특정 운영체제에 종속되지 않는 입출력을 제공 / String 입출력, 파일입출력, 입출력에 관련된 예외 처리를 위한 클래스들이 포함

 

java.net

- Network와 관련된 클래스들

   소켓 연결과  URL 처리를 위한 클래스들로 구성

 

java.awt

- AWT는 Abstract Window Toolkit의 약자로 Java의 운영체제에 무관한 윈도우 생성툴을 지원 / 메뉴바, 스크롤바, 버튼, 프레임, 체크박스, 다이얼로그박스, 폰트 등에 관련한 사용자 그래픽 환경 구성을 위한 클래스들로 구성

 

java.applet

- Java applet을 만드는데 기본이 되는 Applet 클래스 제공

   init,start, display등의 메소드 등을 재정의하여 사용함

 

java.util

- 프로그래머에게 유용한 유틸리티 클래스를 제공 / 날짜와 시간, 비트 집합, 해쉬테이블, 렌덤, 스택 등 다양한 표준 프로그래밍 자료 구조체를 지원

 

javax.swing

- AWT 컴포넌트 보다 미려하고 풍부한 기능성을 갖춘 스윙 컴퍼넌트. Look and Feel 지원

 

java.beans

- S/W 컴포넌트 프로그래밍 모델 지원

 

java.sql

- 데이터 베이스 종류에 독립적인 데이터 베이트 접근 지원(JDBC)

 

 

** java.text, java.math, java.rmi, java.security

 

 

자바공부하기129.

패키지와 컴파일러/JVM

- 패키지 이름이 생략된 클래스/인터페이스 이름은 컴파일러가 import 문장을 참조하여 모두 완전한 패키지이름으로 변환하여 컴파일

: 이름으로 변환하는 과정 중 완전한 패키지 이름을 가진 클래스가 실제 로딩 가능한 클래스인지 알아보는 과정이 필요 - 클래스로더(import가 여러 개 될 수 있음을 기억할 것)

: 이것은 뒤의 classpath와 관련된다.

: 패키지 이름은 반드시 그 파일이 속해있는 디렉토리 이름과 일치해야 한다.

 

 

1. 컴파일러는 위와 같이 완전 클래스명 후보군을 만들어낸다.

2. 그 다음 CLASSPATH를 기반으로 위 후보 클래스 파일이 실제 존재하는지 검색한다. 자바 디폴트 라이브러리(rt.jar)를 검색한 후 현재 디렉토리(.)를 검사한다.

: java.lang.newClass를 찾아본다면 ./java/lang/디렉토리에 newClass.class파일이 있는지 찾는 것이다.

3. 찾아서 단 하나만 일치하는 게 var의 형을 결정한다. 그러나 여러 개가 있다면 충돌 에러를 발생시킨다.

자바공부하기128

패키지사용법

 

패키지의 클래스와 인터페이스를 사용하기 위해서

Improt 문장을 사용하면 패키지 이름을 생략하고, 클래스/ 인터페이스 이름만을 사용할 수 있다.

* import 패키지이름.클래스이름

* import 패키지이름.*

 

: 부 패키지는 import 되지 않는다.

* 별도로 import해야함

* import java.awt.*라고 했다고 해서 java.awt.color.*까지 import되는 것은 아님

* 단지 java.awt 패키지 내의 클래스만 import

 

* 컴파일 시 자동으로 importjava.lang.*가 자동삽입

 

패키지 사용

 

 

 

 

JAVA공부하기127

패키지(package)

- JAVA에서는 서로 관련된 클래스를 하나의 단위로 그룹화

- 계층 구조를 이루고 있음(이름만)

- 소프트웨어 재사용을 위한 매커니즘

- C/C++의 라이브러리와 동일

- 사용방법은 C/C++과 전혀 다름

 

목적

- 클래스, 인터페이스, 부 패키지 이름의 우연한 충돌방지 및 관리 용이성

: 2개의 클래스 혹은 인터페이스가 이름이 서로 같아도 서로 다른 이름의 패키지에 속하면 구분

: name space 부여

 

- 패키지단위 접근권한지정

 

패키지 구성

- 패키지 이름 : 클래스 파일이 있는 폴더 구조

- 클래스 이름 : 실제 자바 api

 

 

 

패키지 구조

JAVA공부하기126

throws의 원리





JAVA공부하기125


throw 예외처리


- throw를 사용해 사용자 임의대로 예외 발생이 가능

: 컴파일러가 인식하지 못하는 예외를 사용자가 새롭게 정의해서 사용 가능


: 새로운 예외 클래스를 만들 때에는 무조건 Exception클래스를 상속 해야함


: 컴파일러가 인식하는 예외를 사용자가 다른 예외클래스로 바꿔 발생시키고자 

  할 때도 사용가능





+ Recent posts