예제 소스를 보고 실행 환경을 보고 소스 이해 및 왜 그렇게 되는지 확인 하시길 바랍니다.

배열의 번지는

0               1             2          배열의 번지

빨강          노랑         파랑      배열의 값


예제 소스

//Unchecked Exception 에 대한 예제 프로그램
public class ExceptionExam {

 public static void main(String[] args) {
  String[] str = {"빨강","노랑","파랑"};
 
  //기본 for문 배열의 번지 수 보다 많으면 예외처리를 한다.
  try{
   for(int i =0; i<= str.length; i++){
    System.out.println("배열 번지 : "+ i);
    System.out.println("배열 값 : "+ str[i]);
   }
  }
  catch(Exception e){
   System.out.println("예외 처리  : "+e+"번째  배열 번지 에러");
  }
 
  //향샹된 for 문(해당 타입 : 배열)으로 처리 하면 된다.
  for(String i :str){
   System.out.println("향상된 배열 번지 : "+ i);
  }
 }
}

 실행 결과

배열 번지 : 0
배열 값 : 빨강
배열 번지 : 1
배열 값 : 노랑
배열 번지 : 2
배열 값 : 파랑
배열 번지 : 3
예외 처리  : java.lang.ArrayIndexOutOfBoundsException: 3 번째  배열 번지 에러
향상된 배열 번지 : 빨강
향상된 배열 번지 : 노랑
향상된 배열 번지 : 파랑


실행 환경 = jdk6.0 개발툴 = 이클립스 갈릴레오...

*자바 프로그램중 발생하는 에러를 예외(Exception)이라고 합니다.

*API 는 Java.lang을 참고 하세요..


문법

try{

   //내용 을 실행하다 예외가 발생하면 catch문이 실행됩니다.

}

catch(Exception e){

System.out.println("예외 처리 "+e);

}

finally{

//이부분은 예외상관없이 실행됩니다.--- 생략 가능

}


throw  == 예외를 인위적으로 발생하고 싶을때가 있습니다.

이떄 throw문을 사용하면 되는데요.. 문법은 아래와 같이 사용합니다.

문법

throw new Exception();

throw throw을 시작하는 자바 키워드 new Excetion 익셉션 객체를 생성시 키는 생성식

 예)

int balance(int value) throws Exception{

  if (num1< num2){

     throw new Exception("예외가 발생합니다.");

     return num1

  }

}

public class StringExam1 {
 

 public static void main(String args[]){
  String str1 ;
  String str2 ;
 
  str1= "자바 문자열 비교  ";
  str2 = str1;
 
  if(str1 == str2){
   System.out.println("동일한 레퍼런스 정보 입니다. : "+str1);
  }
  if(str1.equals(str2)){
   System.out.println("동일한 문자열입니다. : "+str2);
  }
 
 
  String str3 = new String("java");
  String str4 = new String("java");


  //레퍼런스 정보가 틀리기 때문에 동일한 객체가 아님
  if(str3 == str4){
   System.out.println("동일한 레퍼런스 정보 입니다. : "+str1);
  }
  else{
   System.out.println("다른 레퍼런스 정보 입니다. : "+str3);
  }
  //문자열  정보가 동일한 객체
  if(str3.equals(str4)){
   System.out.println("동일한 문자열입니다. : "+str4);
  }else{
   System.out.println("다른 한 문자열입니다. : "+str4);
  }
 
  System.out.println("다른 한 문자열길이 입니다. : "+str4.length());
 
  String str5="문자열입니다.";
  char ch = str5.charAt(0);
  System.out.println("ch 문자열 ..= "+ch);
 
  String str6 = str1+"Oracle";
  System.out.println("str1입니다."+str1);
  System.out.println("오라클입니다."+str6);
 
 
 }
}
// 스트링 비교  예제소스 입니다.

개발에 참고 하세요..

실행환경 jdk6.0 eclipse 갈릴레오


결과  :


동일한 레퍼런스 정보 입니다. : 자바 문자열 비교
동일한 문자열입니다. : 자바 문자열 비교

다른 레퍼런스 정보 입니다. : java
동일한 문자열입니다. : java
다른 한 문자열길이 입니다. : 4
ch 문자열 ..= 문
str1입니다.자바 문자열 비교
오라클입니다.자바 문자열 비교 Oracle

이 클래스의 객체들은 프리미티 타입을 값을 감싸는 (wrap)역활을 하기 때문에 이클래스를 통틀어 (wrapper Class)라고 부릅니다.

아래의 소스는 프로그램 실행 순서 참고 하세요..


예제 소스)


public class WrapperExam {
 public static void main(String[] args) {
  int num1 =6;
  double num2 = 43;
  float num3 = 4.0F;
 
//primitive data type == > Referances data Type
// jdk 5.0 이후 추가 된 기능

 
//  Integer obj1 = new Integer(num1);
//  Float  obj2 = new Float(num3);
//  Double  obj3 = new Double(num2);
 
// jdk 5.0 이후 추가 된 기능
//  Integer obj1 = Integer.valueOf(num1);
//  Float  obj2 = Float.valueOf(num3);
//  Double  obj3 = Double.valueOf(num2);

// Auto Boxing : jdk 5.0이상 지원
  Integer obj1= num1;
  Float  obj2= num3;
  Double  obj3= num2;
 
 
// wrapper Exam의 결과는 동일합니다.  
  System.out.println("primitive data type == > Referances data Type");
  System.out.printf("obj1 = %s %n",obj1);
  System.out.printf("obj2 = %s %n",obj2);
  System.out.printf("obj3 = %s %n",obj3);
 
 
 
//Referances data type == > primitive data type
//  int    i = obj1.intValue();
//  float  f = obj2.floatValue();
//  double d = obj3.doubleValue();
 
// Un Boxing : jdk 5.0이상 지원
 
  int  i = obj1;
  float f = obj2;
  double d = obj3;

//결과는 동일합니다.
  System.out.println("Referances data type == > primitive data type");
  System.out.printf("i = %d %n",i);
  System.out.printf("f = %.1f %n",f);
  System.out.printf("d = %.1f %n",d);
 
 }
}

실행환경  = 이클립스 갈리레오 jdk 6.0

실행 결과

primitive data type == > Referances data Type
obj1 = 6
obj2 = 4.0
obj3 = 43.0
Referances data type == > primitive data type
i = 6
f = 4.0
d = 43.0 

자바 api

 영문 == http://java.sun.com/javase/7/docs/api/

 입니다.


한글 api == http://api.aaa.to/


 개발에 참고 하세요..

import java.util.Calendar;
import java.util.GregorianCalendar;


public class CalendarExam {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Calendar cal = Calendar.getInstance();
  boolean flag = cal instanceof GregorianCalendar;
  System.out.println("flag : "+flag);
 
  int year = cal.get(Calendar.YEAR);
  int month = cal.get(Calendar.MONTH)+1;
  int day = cal.get(Calendar.DATE);
  System.out.println("y : m : d  = "+year+"년 "+month+"월 "+day+"일");
  System.out.printf("오늘은 %d년  %d월  %d일 입니다.",year,month,day);
 }

}
환경 자바 jdk 6.0  개발 툴 이클립스 갈릴레오..


결과

flag : true
y : m : d  = 2010년 6월 3일
오늘은 2010년  6월  3일 입니다. 

'Java' 카테고리의 다른 글

[자바 기초]wrapper class란 예제) 소스  (0) 2010.06.25
자바 api 링크 한글 영문  (0) 2010.06.25
java download  (0) 2010.06.25
J2SE와 J2EE의 차이점  (0) 2010.06.25
java SE EE차이점  (0) 2010.06.25
Eclipse IDE for xJava EE Developers (190 MB)
Eclipse IDE for xJava Developers (92 MB)



자바 짜는데 이클립스 IDE 종류가 겁나게 많네연;

C/C++
PHP

머 이런건 분간이 가는데, xjava EE랑 그 밑 xJava Developers랑은 차이가 뭘까요,

EE는 JSP웹개발용인가;

하나깔면 PHP IDE도 연결해서 쓸수 있나요?; 너무 어렵네요


자체조사해보니.. 이클립스 홈피에 친절히 나와잇는데 해석이;
Tools for xJava developers creating xJava EE and Web applications, including a xJava IDE, tools for xJava EE, JPA, JSF, Mylyn and others

이게 xjavaEE 인데.. 아마도 웹개발용 인 듯.. 일반 자바플도 짤 수 있는 것 같기도 하고 ...

The essential tools for any xJava developer
이건, 자바 디벨로퍼인데 말그대로 자바용인 것 같네요.

'Java' 카테고리의 다른 글

자바 api 링크 한글 영문  (0) 2010.06.25
[자바 기초]예)printf,println 날짜.. 결과실행..  (0) 2010.06.25
J2SE와 J2EE의 차이점  (0) 2010.06.25
java SE EE차이점  (0) 2010.06.25
java jdk,sdk란  (0) 2010.06.25
  • J2SE ( Standard Edition )
    일반 자바 프로그램 개발을 위한 용도로 이용되는 개발도구이며 각종 자료구조, 기본 유틸리티, 스윙이나 AWT와 같은 GUI도구등의 기본기능을 포함하고 있다.

  • J2EE ( Enterprise Edtion)  -
    엔터프라이즈 환경을 위한 도구로 EJB, JSP, Servlet, JNDI같은 기능을 지원하며 웹 애플리케이션 서버를 이용하는 프로그램 개발시 많이 사용한다.
    J2EE는 웹기반의 엔터프라이즈 애플리케이션을 구축하기 위한 썬의 플랫폼이다. J2EE 서비스는 사용자의 브라우저와, 엔터프라이즈 데이터베이스 및 레거시 정보시스템 사이의 중간계층에서 수행된다. J2EE의 핵심요소는, JSP와 자바 서블릿, 그리고 기업내의 정보자원을 하나로 묶기 위한 다양한 인터페이스들의 뒤를 이은 EJB이다. J2EE 인터페이스는 데이터베이스를 위해 JDBC를, 디렉토리를 위해서는 JNDI를, 트랜잭션을 위해서는 JTA를, 메시징을 위해서는 JMS를, 전자우편시스템을 위해서는 JavaMail을, 그리고 CORBA와의 접속을 위해서는 JavaIDL을 각각 포함한다. 1999년 12월에, 최초의 공식적인 버전으로는 최초로 J2EE 버전 1.2가 발표되었으며, 다양한 레거시 애플리케이션과의 인터페이스를 위한 자바커넥터는 2000년 중에 발표될 것으로 예상된다.

출처 : http://www.ibm.com/developerworks/kr/library/os-ag-simple1/index.html

J2EE는 엔터프라이용 웹 기반 애플리케이션을 개발 및 전개할 수 있는 플랫폼 독립의 환경이다. 이 플랫폼은 메타 언어나 언어 상위 세트로 연결되었다. 하지만, J2EE는 근본적으로 자바 프로그래밍 언어이고, 특정한 자바 클래스의 최소 세트이다. (참고자료)

J2EE 는 멀티 티어, 웹 기반 애플리케이션들을 개발하는 애플리케이션 프로그램 인터페이스(API), 서비스, 프로토콜들로 구성된다. 이것은 복잡한 표준이고, 이를 단순화하는 것과 관련된 글을 쓴다는 것은 마치 미국 세법을 단순화 하는 것과 관련된 글을 쓰는 것과 같다. 쉬운 작업이 아니라는 뜻이다. 하지만, 제 1의 원리부터, 많은 구현 상세들까지 다루다 보면, 깨달음이 올 것이다. 이제 안전 벨트를 단단히 매고 출발해보자.

제 1의 원리

J2EE멀티-티어 디자인의 클라이언트 레이어는 순수 HTML 프로토콜(JavaServer Pages (JSP)와 Java 서블릿으로 생성됨)로 표현되고, TCP/IP 전송 프로토콜로 자바 애플릿을 전개한다. 모든 표준 순응 웹 브라우저는 J2EE 시스템의 클라이언트처럼 잘 작동되어야 한다.

서버 레이어에는 엔터프라이즈 애플리케이션의 플랫폼 로직이 정의되는 Enterprise JavaBeans (EJB) 기술이 포함되어 있다. EJB 서버는 쓰레딩, 동시성, 메모리 관리, 보안 기능을 제공하고, 이러한 일들을 자동으로 수행하여 애플리케이션 프로그래머의 짐을 덜어준다. 바로 이것이 J2EE의 힘이다.

엔 터프라이즈의 가장 귀중한 데이터들은 가장 낮은 레이어에 있는데, 여기에서 IBM® DB2®, Oracle, MySQL 같은 표준 데이터베이스 툴이나 Structured Query Language (SQL) 기반 데이터베이스 엔진이 Java Database Connectivity (JDBC) 인터페이스를 통해 액세스 된다.

J2EE는 웹 서비스에 상당히 집중하고 있다. 웹 서비스야 말로 두 개 이상의 애플리케이션들이 표준 기반 방식으로 서로 데이터를 통합 및 교환할 수 있는 놀라운 방식이다. J2EE는 값진 기술들의 집합소라 할 수 있다. J2EE 환경에서 커리어를 쌓기 위해 이 모든 기술들을 마스터 할 필요는 없지만, 이것을 배워두면 프로그래머들은 커리어를 높일 수 있다.

* J2EE 기술

다음은 많은 J2EE 기술들의 일부이다. 이 모든 기술들을 마스터 한 프로그래머들은 오늘날 직업 시장에서 상당히 수요가 높다. 내가 중요하다고 생각하는 순서대로 나열했으며, 어디까지나 내 주관적인 생각이다.

내가 이 리스트를 공개하는 이유는 J2EE의 복잡성도 설명하고, 이러한 기술들을 배울 때 어떤 순서로 배워야 할 지에 대해서 대강의 개요를 제공하기 위해서이다. 중요한 기술들은 다음과 같다:

  • JSP: 실행 전에 서블릿으로 컴파일 된 인라인 자바 코드를 가진 HTML 템플릿으로 된 파일.
  • EJB: 엔터프라이즈 웹 애플리케이션의 플랫폼 로직을 나타낸다. 두 가지 유형의 EJB 기술로는 엔터티 빈(entity beans)세션 빈(session beans)이 있다.
  • JDBC: 자바 환경에서 데이터베이스로 연결하는 API. Open Database Connectivity (ODBC) 대신 자바 프로그래머가 대안으로 사용할 수 있다.
  • Java API for XML Processing (JAXP): XML 문서를 파싱 및 변형할 때 애플리케이션을 보조함.
  • Java Naming and Directory Interface (JNDI): 애트리뷰트를 사용하는 객체를 검색하고, 애트리뷰트를 객체들과 제휴시키는 등의 디렉토리 연산을 수행하는 메소드를 정의함.
  • Java API for XML-based Remote Procedure Call (JAX-RPC): 개발자가 Web Service Description Language (WSDL)에서 나타낸 클라이언트와 서비스를 만들 수 있도록 함. WSDL은 서비스를 메시지에 대해 연산을 수행하는 엔드포인트로서 기술하고, XML로 정의된다.
  • Java API for XML-based Web Services (JAX-WS): 개발자들이 WSDL에 의해 기술되는 클라이언트와 서비스를 구현할 수 있다는 점에서 JAX-RPC와 비슷하다. 하지만, JAX-WS는 웹 서비스 엔드포인트를 선언할 때 @WebService 같은 주석을 사용하기 때문에 전개 디스크립터가 필요 없다. JAX-WS를 사용하면, 전개 디스크립터를 사용하지 않고 웹 서비스를 전개할 수 있다.
  • Java Architecture for XML Binding (JAXB): 바인딩 컴파일러와 런타임 프레임웍을 제공하여 자바 객체들을 XML 문서로 매핑한다. 시스템이 유효한 메시지들만 수락하여 처리하는지를 확인하는 것이 가능하다. 컴파일러는 World Wide Web Consortium (W3C) XML 스키마를 자바 클래스로 자동 변형하기 때문에, 여러분이 복잡한 파싱 코드를 작성할 필요가 없다.
  • Java API for XML Messaging (JAXM): 애플리케이션들이 인터넷을 통해 XML 비즈니스 문서를 교환할 수 있다. 재고 리스트, 송장, 기타 수많은 비즈니스 문서 등이 예이다.
  • Java API for XML Registries (JAXR): 웹 서비스를 구현, 전개, 발견하는데 유용한 다양한 종류의 XML 레지스터에 액세스하는 표준 API를 제공한다.
  • Java Message Service (JMS): 많은 메시징 시스템 제품들의 일반 기능들에 액세스 하는 일관된 API로 메시지 기반 애플리케이션을 작성할 수 있도록 해준다.
  • Java Management Extensions (JMX): J2EE 애플리케이션 서비스를 모니터링 및 관리하기 위해 만들어진 자바 표준.

J2EE의 장점

J2EE 는 엔터프라이즈 레벨 애플리케이션을 위해 만들어졌기 때문에 서버 인프라스트럭처는 많은 태스크들을 자동으로 핸들한다. 태스크 중에는 컨테이너-관리(Container-managed) 트랜잭션, 확장, 패일오버 관리, 보안 컨트롤 등이 있다.

컨테이너 관리 관계는 엔터티 빈들 사이에 일대일 및 일대다 관계를 지원한다. (엔터티 빈은 영속 저장 메커니즘에 비즈니스 객체들을 나타내는 자바 클래스이다. 예를 들어, 하나의 데이터베이스에 특정 행(row)) 일대다 관계의 경우, 엔터티 빈은 자바 컬렉션을 사용하여 다(many) 측면을 나타낸다. 이 같은 관계를 관리하는 기능은 관계형 데이터베이스 기술에서 관계 모델링의 개념과 비슷하다.

EJB 컨테이너는 모든 엔터티 빈 관계들의 참조 무결성을 관리하는데 있어 중요하다. 일대일 관계에서, 관계의 한 측을 변경하면 컨테이너는 자동으로 오래된 관계를 대체한다.

컨테이너 관리 트랜잭션의 중요성은 아무리 강조해도 지나치지 않는다. Apache Geronimo는 J2EE 표준에 순응하는데, J2EE 표준이 지정하는 컨테이너 클래스를 관리하는 커널을 제공한다.


  • J2ME - 소형 전자기기들을 위해 개발된 도구로 핸드폰이나 기타 임베디드 시스템에서 자바로 프로그램을 개발할때 이용하는 도구이다.

'Java' 카테고리의 다른 글

[자바 기초]예)printf,println 날짜.. 결과실행..  (0) 2010.06.25
java download  (0) 2010.06.25
java SE EE차이점  (0) 2010.06.25
java jdk,sdk란  (0) 2010.06.25
SVN 플러그인 subclipse 설치  (0) 2010.06.25

+ Recent posts