샤브의 블로그 RSS 태그 관리 글쓰기 방명록
Device & Language/Java (21)
2010-09-01 01:29:53

출처 : Sun Microsystems

'Device & Language > Java' 카테고리의 다른 글

jstl 1.0 spec  (0) 2010.09.01
servlet 2.4 spec  (0) 2010.09.01
ejb 3.0 spec persistence  (0) 2010.09.01
ejb 3.0 spec ejbcore  (0) 2010.09.01
확장 형 변환  (0) 2010.08.31
2010-09-01 01:28:33

출처 : Sun Microsystems

'Device & Language > Java' 카테고리의 다른 글

servlet 2.4 spec  (0) 2010.09.01
ejb 3.0 spec simplified  (0) 2010.09.01
ejb 3.0 spec ejbcore  (0) 2010.09.01
확장 형 변환  (0) 2010.08.31
특성과 제한자의 가능한 모든 조합  (0) 2010.08.31
2010-09-01 01:26:59


출처 : Sun Microsystems


'Device & Language > Java' 카테고리의 다른 글

ejb 3.0 spec simplified  (0) 2010.09.01
ejb 3.0 spec persistence  (0) 2010.09.01
확장 형 변환  (0) 2010.08.31
특성과 제한자의 가능한 모든 조합  (0) 2010.08.31
Java의 연산자(내림차순)  (0) 2010.08.31
2010-08-31 17:41:58

'Device & Language > Java' 카테고리의 다른 글

ejb 3.0 spec persistence  (0) 2010.09.01
ejb 3.0 spec ejbcore  (0) 2010.09.01
특성과 제한자의 가능한 모든 조합  (0) 2010.08.31
Java의 연산자(내림차순)  (0) 2010.08.31
배열 원소의 최기값  (0) 2010.08.31
2010-08-31 17:16:47

 제한자  클래스  변수  메소드  생성자  자유블록
 public  yes  yes  yes  yes  no
 protected  no  yes  yes  yes  no
 (default)[각주:1]  yes  yes  yes  yes  yes
 private  no  yes  yes  yes  no
 final  yes  yes  yes  no  no
 abstract  yes  no  yes  no  no
 static  no  yes  yes  no  yes
 native  no  no  yes  no  no
 transient  no  yes  no  no  no
 volatile  no  yes  no  no  no
 synchronized  no  no  yes  no  yes

  1. Default는 제한자가 아니다. 단지 아무런 제한자가 명시되지 않았을 경우에 대한 접근 권한을 나태내는 이름일 뿐이다. [본문으로]

'Device & Language > Java' 카테고리의 다른 글

ejb 3.0 spec ejbcore  (0) 2010.09.01
확장 형 변환  (0) 2010.08.31
Java의 연산자(내림차순)  (0) 2010.08.31
배열 원소의 최기값  (0) 2010.08.31
CellPhone 클래스를 완성하라!  (0) 2010.08.25
2010-08-31 16:55:21

 카테고리 연산자 
 단항 연산자  ++     --     +     -     !     ~
 산술 연산자   *     /      %     +      -
 쉬프트 연산자  <<     >>     >>>
 비교 연산자  <     <=     >     >=     instanceof     ==      !=
 비트 단위 연산자  &     ^     |
 쇼트-서킷 연산자  &&     ||
 조건 연산자  ?|(삼항연산자)
 대입 연산자  =     op=

'Device & Language > Java' 카테고리의 다른 글

확장 형 변환  (0) 2010.08.31
특성과 제한자의 가능한 모든 조합  (0) 2010.08.31
배열 원소의 최기값  (0) 2010.08.31
CellPhone 클래스를 완성하라!  (0) 2010.08.25
Java StringBuilder vs StringBuffer  (1) 2010.08.23
2010-08-31 16:50:42

 데이터형
초기값 
 데이터형
초기값 
 byte
 short
 0
 int
 0
 long
 0L
 float
 0.0f
 double
 0.0d
 char
 '\u0000'
 boolean
 false
 객체 참조
 null
 
 

'Device & Language > Java' 카테고리의 다른 글

특성과 제한자의 가능한 모든 조합  (0) 2010.08.31
Java의 연산자(내림차순)  (0) 2010.08.31
CellPhone 클래스를 완성하라!  (0) 2010.08.25
Java StringBuilder vs StringBuffer  (1) 2010.08.23
Java Message Service spec  (0) 2010.08.22
2010-08-25 09:00:00
하루하루의 과제를 완성해 가면서 블로그를 만들어가고 있습니다.
오늘의 과제는 Main 함수가 작성되어 있는데 이에 맞는 CellPhone이라는 클래스를 완성하라는 과제입니다.

 CellPhone  
 String model  // 핸드폰 모델 번호
 double battery  // 남은 배터리 양
 CellPhone(String model)  // 모델 번호를 인자로 받는 생성자
 void call(int time)  // 통화 시간(분)을 출력하고, 통화 시간에 따라 배터리 양을 감소시킨다.
// 감소되는 배터리 양 = 통화시간(분) * 0.5
// 배터리 양은 0보다 작아지지 않는다.
// 통화 시간(분)이 0보다 작은 경우에는
IllegalArgumentException(“통화시간입력오류”)을 발생시킨다.
 void charge(int time)  // 충전한 시간(분)을 출력하고, 충전한 시간에 따라 배터리 양을 증가시킨다.
// 충전되는 배터리 양 = 충전시간(분) * 3
// 배터리 양은 100까지만 증가한다.
// 충전 시간(분)이 0보다 작은 경우에는
IllegalArgumentException(“충전시간입력오류”)을 발생시킨다.
 void printBattery()  // 남은 배터리 양을 출력한다.
 boolean equals(Object otherObject) // Object 타입의 객체를 입력받고, 입력받은 객체가CellPhone 타입의 클래스이면서 모델 번호가 같은 경우에 true를 리턴한다.

위와 같은 멤버변수와 메소드를 가지고 있습니다. 실제 실행 되는 쏘스를 한번 보시죠~

public class CellPhoneMain {
   public static void main(String[] args) { 
      CellPhone myPhone = new CellPhone("SCH-600");
  
      myPhone.charge( 20 );  //20분간 충전을 한다.
      myPhone.printBattery();
  
      myPhone.call( 300 );  //300분간 통화를 한다.
      myPhone.printBattery();
  
      myPhone.charge( 50 );  //50분간 충전을 한다.
      myPhone.printBattery();
  
      myPhone.call( 40 );  //40분간 통화를 한다.
      myPhone.printBattery();
  
      try {
         myPhone.call( -20 );  //통화시간이 잘못 입력되었다.
      } catch(IllegalArgumentException e) {
         System.out.println( e.getMessage() ); 
      } 
  
      CellPhone yourPhone = new CellPhone("SCH-600");
  
      if( myPhone.equals(yourPhone) ) {
         System.out.println("동일 모델입니다.");
      } else {
         System.out.println("다른 모델입니다.");
      } 
   }
}

위와 같은 소스를 가지고서 아래와 같은 결과가 나와야 합니다.

충전 시간 : 20분
남은 배터리 양 : 60.0
통화 시간 : 300분
남은 배터리 양 : 0.0
충전 시간 : 50분
남은 배터리 양 : 100.0
통화 시간 : 40분
남은 배터리 양 : 80.0
통화시간입력오류
동일 모델입니다.


이런 결과가 나오도록 해야하는 것입니다. 그래서 나온 녀석이 아래에 있습니다.

public class CellPhone {
   String model;
   double battery;

   public CellPhone(String model) {
      this.model = model;
   }

   void call(int time) {
      if (time < 0) {
         throw new IllegalArgumentException("통화시간입력오류");
      } else {
         System.out.println("통화 시간 : " + time + "분");
         battery = battery - time * 0.5;
         if (battery < 0)
            battery = 0;
      }
   }

   void charge(int time) {
      if (time < 0) {
         throw new IllegalArgumentException("충전시간입력오류");
      } else {
         System.out.println("충전 시간 : " + time + "분");
         battery = battery + time * 3;
         if (battery > 100)
            battery = 100.0;
      }
   }

   void printBattery() {
      System.out.println("남은 배터리 양 :" + battery);
   }

   public boolean equals(Object otherObject) {
      if((otherObject instanceof CellPhone)&&model.equals(((CellPhone) otherObject).model)){
         return true;
      }

      return false;
   }
}

간단한 소스이니 설명은 생략~ ^^;;;

'Device & Language > Java' 카테고리의 다른 글

Java의 연산자(내림차순)  (0) 2010.08.31
배열 원소의 최기값  (0) 2010.08.31
Java StringBuilder vs StringBuffer  (1) 2010.08.23
Java Message Service spec  (0) 2010.08.22
자바를 이용한 부대활동(???)  (0) 2010.08.21
2010-08-23 00:18:57

 

 

 StringBuilder

 StringBuffer

동기화 여부 

실행  속도 

 >

 쓰레드 사용

비추 

추천 

자바 지원 버전 

1.5 

1.0 

상호 호환 

StringBuilder와 StringBuffer간의 호환 됨...

'Device & Language > Java' 카테고리의 다른 글

Java의 연산자(내림차순)  (0) 2010.08.31
배열 원소의 최기값  (0) 2010.08.31
CellPhone 클래스를 완성하라!  (0) 2010.08.25
Java Message Service spec  (0) 2010.08.22
자바를 이용한 부대활동(???)  (0) 2010.08.21
2010-08-22 01:07:46

[출처:ORACLE]
1.1 관념
  이 명세서는 JavaTM 메시지 서비스(JMS)의 목적과 기능을 설명해줍니다. JavaTM 메시지 서비스(JMS)은 자바프로그램이 엔터프라이즈 메시징 서비스의 메시지를 만들거나 보내고 받고 읽는 일반적인 역할을 제공합니다.

1.2 개요
  엔터프라이즈 메시징 제품(또는 메시지 지향 미들웨어 제품)은 통합 내부 작업에 필수적인 컴포넌트가 되고 있다. 이런 제품들은 신뢰할 수 있고 유연한 시스템으로 통합하는 비지니스 컴포넌트를 분리할 수 있다. 전통적인 메시지 지향적인 미들웨어 벤더들 외에도 엔터프라이즈 메시징 제품들은 또한 몇몇의 데이터베이스 벤더들과 많은 인터넷 관련 회사들에 의해서도 제공됩니다. 자바 언어 클라이언트와 자바언어기반 미들 계층 서비스는 이 메시징 시스템을 사용할 수 있는 능력이 있어야 한다. 자바 메시징 서비스(이하 JMS)는 자바 언어 프로그램이 이 시스템에 접근하는 일반적인 방법을 제공한다. JMS는 엔터프라이즈 메시징 제품에 JMS 클라이언트가 접근하는 방법을 정의하는 인터페이스와 관련된 시맨틱들의 집합이다.

  메시징이 피어 투 피어인 이래로, JMS의 사용자들은 일반적으로 클라이언트로 여겨진다. JMS 어플리케이션은 메시지를 교환하는 클라이언트의 집합과 메시지를 정의하는 어플리케이션의 집합으로 구성된다. JMS를 충족시키는 제품은 JMS 인터페이스들을 포함하는 프로바이더가 제공함으로 작동된다.

1.2.1 JMS는 Mail API인가?
  메시징은 컴퓨팅 분야에서 꽤널리 정의되어있다. 그것은 다양한 운영체제 개념을 묘사하는데 사용되어지고 이메일과 팩스 시스템을 묘사하기 위해서도 사용되어지며 엔터프라이즈 어플리케이션간에 비동기식 커뮤니케이션을 묘사하는데에도 사용되고있기 때문이다. 여기서 묘사된 바와 같이 메시지는 사람이 아닌 엔터프라이즈 어플리케이션에 의해 소모되는 비동기식 요청, 리포트, 이벤트들이다.
  메시지는 이런 시스템을 조정하는데 필요한 중요한 정보를 포함하고 특정 비지니스 액션을 묘사하는 정밀하게 형식화된 데이터를 포함한다. 이러한 메시지들의 교환을 통해서 각각의 어플리케이션들은 엔터프라이즈의 진행을 추적한다.

1.2.2 기존 메시지 시스템
  메시징 시스템은 피어투피어 기술이다. 보편적으로, 각각의 클라이언트들은 메시지를 다른 클라이언트와 주고 받을수 있다. 각각의 클라이언트는 메시지를 만들고 주고 받기 위한 기술을 제공하는 메시징 에이전트와 연결되어 있다.
  각각의 시스템은 메시지에 접근하고 만들어서 데이터를 채우는 방법을 제공한다. 어떤 시스템은 많은 목적지로 메시지를 브로드캐스팅할수 있는 능력이 있는가 하면 다른 시스템은 하나의 목적지로만 메시지를 보낼 수 있다. 일부 시스템은 메시지의 비동기 수신을 위한 기술을 제공합니다.(메시지가 도착하면 클라이언트에게 전달된다.) 다른 시스템은 동기 수신만을 제공한다.(클라이언트는 각각의 메시지를 요청해야 한다.) 각각의 메시징 시스템은 일반적으로 메시지 기반 당 선택할 수 있는 서비스의 범위를 제공합니다. 한 가지 중요한 속성은 시스템이 배달을 보장할 수 있는 길이다.
  이것은 단순하고 최선의 노력과 보장에 따라 다르지만 단 한번의 배달이다. 다른 중요한 속성은  살아있고 우선순위가 있으며 응답이 필수적인 메시지이다.

1.2.3 JMS 목적
  JMS는 메시징 시스템의 모든 기능의 집합을 제공하는 경우, 의도한 사용자에게 매우 복잡할 것입니다. 반면에 JMS는 모든 제품들에게 메시징의 일반적인 특징의 공통점 그 이상이다. JMS는 복잡한 엔터프라이즈 응용 프로그램을 구현하는 데 필요한 기능을 포함하는것은 중요하다. JMS는 엔터프라이즈메시징의 개념과 기술의 공통 집합을 정의합니다. JMS는 Java 언어 프로그래머가 엔터 프라이즈 메시징 제품을 사용하도록 배워야하는 개념의 집합을 최소화하려고 시도합니다. JMS는 애플 리케이션을 메시징의 이동성을 최대화하기 위해 노력하고 있습니다.

1.2.3.1 JMS 프로바이더(provider)
앞서 언급한 것처럼, JMS provider는 메시징 제품을 위해 JMS를 구현한 부분을 제공합니다. 이상적으로 JMS provider들은 애플릿과 같이 순수 자바에서 사용될 것이다. 설치를 간단하게 하고 운영체제나 아키텍쳐를 넘어서 작업할수 있습니다. JMS의 중요한 목표는 provider를 구현하기위해 필요한 작업을 간소화하는 것입니다.
 

1.2.3.2 JMS 메시지
JMS는 메시지 인터페이스들의 집합을 정의한다. 클라이언트는 JMS provider에 의해 지원되도록 구현된 메시지를 사용한다. JMS의 주 목적은 클라이언트가 JMS provider에 독립적인 메시지를 생성하고 작업하는 모순되지 않는 API를 가지는 것이다.

 

1.2.3.3 JMS 도메인
메시징 제품은 크게 포인트투포인트 또는 구독 게시시스템으로 분류할 수 있다. 피투피제품은 메시지큐의 개념으로 만들어져있다. 각각의 메시지는 특정큐로 찾아간다. 클라이언트는 그들의 메시지를 가지고 있는 큐로부터 메시지들을 추출한다. 게시/구독 클라이언트가 콘텐츠 계층에서 어떤 노드에 메시지들의 주소를 지정한다. 게시자들과 구독자들은 일반적으로 익명이고 콘텐츠 계층 구조를 동적으로 게시하거나 구독할 지도 모른다. 시스템은 노드의 여러 게시자로부터 다수의 구독자에게 도착하는 메시지들의 분배를 다룬다. 각 도메인의 시멘틱들을 지원하면서 JMS는 클라이언트가 두 도메인에서 메시지를 주고 받을 수 있는 인터페이스의 집합을 제공합니다. 또한 JMS는 클라이언트 인터페이스를 각 도메인에 맞게 제공합니다. JMS 1.1 버전 이전에서는, 각 도메인에 맞게 조정되는 클라이언트 인터페이스만 사용할 수 있었다. 이러한 인터페이스는 이전 버전의 JMS 클라이언트를 구현에 대한 호환성을 제공하기 위해 지원을 계속합니다. 클라이언트를 구현하기 위한 기본 접근 방법은 도메인 독립적인 인터페이스를 사용하는 것입니다. "공통 인터페이스"로 참고되는 이러한 인터페이스는 도메인의 특정 인터페이스의 부모입니다.

 

1.2.3.4 이식성

기본 이식의 목표는 새로운, JMS, 어플리케이션들이 동일한 메시징 도메인 내에서 제품간에 이식이 되는 것입니다. 이것이 기계 구조와 운영체제를 넘어서는 JMS 클라이언트의 예상되는 이식성이다. 

Although JMS is designed to allow clients to work with existing message
formats used in a mixed language application, portability of such clients is not
generally achievable (porting a mixed language application from one product
to another is beyond the scope of JMS).

JMS는 클라이언트가 기존의 메시지 형식으로 혼합 언어 응용 프로그램에서 사용되는 이러한 클라이언트의 이동성 작동하도록 설계되어 있지만 일반적으로 달성되지 않습니다

 

 

1.2.4 What JMS Does Not Include
JMS does not address the following functionality:
• Load Balancing/Fault Tolerance - Many products provide support for
multiple, cooperating clients implementing a critical service. The JMS API
does not specify how such clients cooperate to appear to be a single, unified
service.
• Error/Advisory Notification - Most messaging products define system
messages that provide asynchronous notification of problems or system
events to clients. JMS does not attempt to standardize these messages. By
following the guidelines defined by JMS, clients can avoid using these
messages and thus prevent the portability problems their use introduces.
• Administration - JMS does not define an API for administering messaging
products.
• Security - JMS does not specify an API for controlling the privacy and
integrity of messages. It also does not specify how digital signatures or keys
are distributed to clients. Security is considered to be a JMS providerspecific
feature that is configured by an administrator rather than controlled
via the JMS API by clients.
• Wire Protocol - JMS does not define a wire protocol for messaging.
• Message Type Repository - JMS does not define a repository for storing
message type definitions and it does not define a language for creating
message type definitions.

'Device & Language > Java' 카테고리의 다른 글

Java의 연산자(내림차순)  (0) 2010.08.31
배열 원소의 최기값  (0) 2010.08.31
CellPhone 클래스를 완성하라!  (0) 2010.08.25
Java StringBuilder vs StringBuffer  (1) 2010.08.23
자바를 이용한 부대활동(???)  (0) 2010.08.21