Only do what only you can do!!
오직 너만 할 수 있는 일을 하라!!
Showing posts with label JAVA. Show all posts
Showing posts with label JAVA. Show all posts

Tomcat Title 변경

Posted In: . By lkh


여러개의 Tomcat을 실행하다 보면 전부 똑같아 헤깔려서~

톰캣의 타이틀 바를 변경해서 구별해주면 편리합니다 ..^^

CATALINA_HOME 즉 톰캣이 설치 된 폴더에서 bin\catalina.bat 을

메모장이나 editplus로 열어서 중간에

set _EXECJAVA=start "Tomcat" %_RUNJAVA%

"Tomcat"부분을 원하는 이름으로 변경하면 끝!!

 

정확히 얼마를 해야 최적화인지는 동시접속자에 따라 다르겠지만 잘 몰라서 넉넉하게 세팅!!! ㅎㅎ

è Tomcat설정 변경 : Server.xml

maxThreads="1024" minSpareThreads="126" maxSpareThreads="512"

enableLookups="false" redirectPort="8888" acceptCount="100"

connectionTimeout="5000" disableUploadTimeout="true" />


è WEB-INF\classes\SqlMapConfig.xml

lazyLoadingEnabled="true" maxRequests="2048" maxSessions="512"

maxTransactions="1024" useStatementNamespaces="false" />


è JVM Heap Memory 설정 : Startup.bat

set JAVA_OPTS= -Xms512m -Xmx1024m -MaxPermSize=128m


è AdmPoolFactory.java

GenericObjectPool.Config getDefaultConfig(){

GenericObjectPool.Config config=new GenericObjectPool.Config();

config.maxIdle=32;

config.minIdle=8;

config.maxActive=128;

config.testOnBorrow=true;

return config;

}

 

모델(Model)1 구조 정리
정의:
모든 클라이언트 요청과 응답을 JSP가 담당하는 구조이다.
장점: 단순한 페이지 작성으로 쉽게 구현 가능하다. 중소형 프로젝트에 적합하다.
단점: 웹 애플리케이션이 복잡해지면 유지보수 문제가 발생된다.

모델 (Model)2 구조 정리
정의:
클라이언트의 요청처리와 응답처리, 비즈니스 로직 처리하는 부분을 모듈화시킨 구조이다.
장점: 처리작업의 분리로 인해 유지보수와 확장이 용이하다. 개발자와 디자이너의 역할과 책임구분이 명확해진다. 각 컴포넌트의 재사용성이 높아진다.
단점: MVC 구조에 대한 이해가 필요하며 개발자의 높은 skill이 요구된다.

MVC 패턴의 핵심
비즈니스 로직을 처리하는 모델과 결과 화면을 보여주는 뷰가 분리되어 있다.애플리케이션의 흐름 제어나 사용자의 처리 요청은 컨트롤러에 집중된다.
Model - 정보를 담고 있는 객체, 자바 빈즈를 뜻한다.
View - 정보를 표현하는 객체, JSP를 뜻한다.
Controller - 정보를 컨트롤하고 Model과 view 사이를 중재하는 객체이다. 모델 2에서는 서블릿으로 구현한다.

 

Ajax의 개념과 장단점

Posted In: . By lkh

- Ajax의 개념
AJAX는 `Asynchronous JavaScript And XML`의 머리글자를 딴 신조어로 XMLHttpRequest 객체를 사용해서 비동기적 통신을 하고 XML로 응답을 받는 기 술을 뜻한다. 또한 광의적 의미로 DHTML, CSS, DOM, javascript 등의 기술을 사용해서 동적인 페이지를 구성하는 기술 또한 포함하고 있다. XMLHttpRequest 객체는 IE5.0에서 처음 지원하기 시작했고 현재 파이어폭스, 오페라 등 대부분의 브라우져에서 지원하고 있다. 지금까지 설명에서 알 수 있듯이 AJAX는 어떤 새로 운 기술이라기 보다는 기존 기술의 집합체라 할 수 있으며 기존과 다른 새로운 웹 UI 개발을 가능하게 해주는 WEB2.0의 구현 도구라 할 수 있다.


-Ajax의 장점
1) 웹페이지 속도 향상 : http 통신은 서버에 요청 후 전체페이지를 다시 받아야 한다. 하지만 AJAX를 사용할 경우 비동기적으로 서버에 변경사항을 알린 후 변경된 부분만 javascript를 사용해서 반영할 수 있다. 또는 전체 리스트 자 료를 화면에 보여준 후 세부정보는 개별적으로 서버에 요청해서 사용자에게 보여줄 수 있다. 결과적으로 페이지 로딩속도를 빠르게 할 수 있고 불필요한 페이지 리로드와 트래픽을 줄일 수 있다.

2) 사용자 UI 개선 : 기존 웹에서는 불가능했던 다양한 UI를 가능하게 해준다. 사진공유 사이트 Flickr의 경우 사진의 제목이나 태그를 페이지 리로드 없이 수정할 수 있다. 쇼핑몰에서는 Drag&Drop 방식으로 장바구니에 상품을 담을 수 있고, 이미 Writely 와 같은 Web Word Processor도 등장했다. 기술과 친화적인 상상력 풍부한 기획이 뒷받침 된다면 아직 아무도 경험해 보지 못한 새로운 웹 이 탄생할 가능성이 열려있다.
(사실 기존에도 hidden frame이나 Java Applet, Active-X, Flash 등을 사용해 서 이런 작업이 가능했다. 하지만 AJAX는 추가 설치가 없고 개발이 쉬우며 다양한 브라우져를 지원해주는 장점이 있다.)


-Ajax의 단점
1) 뒤로가기 버튼 사용의 어려움 : AJAX는 javascript를 사용해서 동작하기 때 문에 페이지 단위의 브라우져에서 사용자 경험과 다르게 작동하는 경우가 있 다. 특히 뒤로가기 버튼이 무용지물이 되기 때문에 AJAX를 유해한 기술로 매 도하기도 한다. (뒤로가기 버튼은 웹서핑을 할 때 클릭 다음으로 많이 쓰이는 기능이다.) 하지만 이미 iframe을 사용한 해결책이 제시되어 있다. 또한 AJAX 를 활용한 서비스 사용 경험이 증대될 수록 이런 문제는 줄어들 것으로 보인다.

2) 진행상황 파악의 어려움 : XMLHttpRequest를 통해 통신을 하는 경우 웹페 이지 로딩과는 달리 사용자에게 아무런 진행 정보가 주어지지 않는다. 그래서 아직 요청이 완료되지 않았는데 사용자가 페이지를 떠나거나 오작동할 우려가 발생하게 된다. 이 경우 사용자 요청이 처리중에 있다는 표시를 화면에 보여 주도록 권고되고 있다. 예를 들어 Gmail에서는 중간중간 `loading` 이라는 상 태표시를 통해 사용자의 요청이 처리중임을 알려준다. 이러한 상태는 XMLHttpRequest.readyState의 상태를 통해 판단할 수 있다. 또한 이때 사용할 수 있는 공개된 이미지도 제공되고 있다.

 

자바의 특징 - Java

Posted In: . By lkh

Simple
- 기존의 C, C++에 비해 배우기 쉽고 간편하다.
- c++의 객체지향 개념에 영향을 받아 설계되었으나 복잡한 C++의 구문(포인터, 다중상속등)들을 제외
- 메모리 할당 후 제거의 필요, 전처리기(Preprocessor )

Object oriented
- 실세계를 모델링한 객체지향언어, 함수나 변수가 아닌 클래스로부터 생성된 개체이용
- 유연(flexible)하며 클래스를 이용한 모듈 중심의 프로그램이 가능
- 필요한 클래스 라이브러리 제공

Portable
- 플랫폼 독립성 (구조에 중립적인 바이트 코드 사용, 이식성 높다)
- 자바 가상 기계(Java Virtual Machine)

Distributed
- 분산 네트워크 환경에 적합 (네트워크상의 파일이나 개체를 사용하여 원격지 프로그램과 상호 동작)
- 자바는 인터넷에 필요한 주요 프로토콜을 지원

Robust
- 실행 중 발생될 오류 처리를 위한 exception handling 제공, 포인터 사용 안함, 자동메모리관리(garbage collection)

Multithreaded
- 하나의 프로그램이 동시에 여러 작업 수행

Secure
- 바이트 코드 검증 (부적절한 클래스접근, 스택의 오버플로우 , 부적절한 형 변환)
- 자바 가상 기계에서 실행되기 때문에 기반 플랫폼의 운영체제나 자원에는 치명적인 문제를 방지할 수 있어 보안이 뛰어남

High-performance
- 다른 인터프리터(basic, perl)보다 빠르게 처리

 

◎ 추상클래스
- 하위클래스에서 구현되는 추상적인 기능만을 정의하는 클래스
- 기능이 무엇(what)인지만을 정의하고 어떻게(how) 구현되는지는 정의하지 않는다.
- 추상 메소드는 하위 클래스에서 오버라이딩되어 구현된다.
- 추상 클래스는 추상 메소드 외에 일반적인 속성과 메소드를 가질 수 있다.
- 추상 클래스를 사용하면 동작을 정의할 수 있을 뿐만 아니라 클래스 상속을 위한 공통 구현을 제공할 수 있습니다.
- 추상메소드는 추상클래스 내에 정의된 메소드로서 선언부분만 있고 구현 부분은 없음 - 추상 클래스로부터는 직접 객체가 생성될 수 없다.

abstract class 클래스이름 {
……..// 일반 속성과 메소드 기술
abstract void 추상메소드이름(); // 추상 메소드 선언
……
}

◎ 인터페이스
- 추상메소드와 상수만으로 구성된 추상클래스(public만 사용)
- 추상 클래스보다 더욱 완벽한 추상화를 제공한다.
- 자바에서는 다중상속을 지원하지 않는다. 인터페이스를 이용하여 다중상속 부분 지원
- 이벤트 처리, 쓰레드, 애프릿에서 사용
- 현재 클래스가 이미 다른 클래스로부터 상속을 받고 있는 상태이면서 또 다른 클래스의 여소들이 필요로 된다면 이때는 인터페이스를 사용
- 클래스 생성시 인터페이스를 사용하기 위해 “implements”예약어 사용

public interface 인터페이스이름 {
public long ONE_SECOND // 상수선언
public void 메소드 이름(); // 메소드 선언
}

 

1. Web browser에 응답하는 페이지
페이지 지시자에서 캐릭터 세을 euc-kr로 지정한다.

<%@ page language="java" contentType="text/html;charset=euc-kr" %>

2. WebBrowser에서 WebServer에서 Parameter가 post 방식으로 넘어오는 페이지
요청 객체(request)에서 사용되는 문자의 인코딩 방식을 euc-kr로 변경한다.

<% request.setCharacterEncoding("euc-kr") %>

3. WebBrowser에서 WebServer로 Parameter가 get 방식으로 넘어오는 페이지 영문 인코딩(8859_1)을 한글 인코딩(euc-kr)으로 변환하는 작업을 해야 한다. 이러한 작업을 위해서는 String 클래스의 getByte 메소드를 사용한다. JSP 페이지에서 get 방식으로 넘겨진 한글은 기본적으로 8859_1 인코딩 방식으로 인식하므로 이 값을 제대로 출력하기 위해서는 euc-kr 인코딩방식으로 변환해야 한다.

String s_name = request.getParameter("name");
s_name = new String(s_name.getBytes("8859_1"), "euc-kr");


반대로 쿼리스트링으로 한글을 전달할 경우에는 한글 인코딩 방식(euc-kr)을 영문 인코딩 방식(8859_1)으로 변환한 후에 전송한다.

String s_name = "한글처리";
s_name = new String(s_name.getBytes("euc-kr"), "8859_1");
jsp 페이지에서는 기본적으로 한글이 지원이 되지 않아 한글이 깨지거나 특수문자로 나올 것입니다. 이는 유니코드를 지원하게 해주거나, 한글 지원을 해주는 인코딩 방식으로 변환를 하는 코드를 넣어 주어야 한글 처리가 됩니다. ^^

 

JSP 관련 용어 정리(?)

Posted In: . By lkh

- 태그 라이브러리 사용의 장점과 사용 방법은?
: 태그라이브러리를 사용하면 웹 페이지 내에서 자바 코드를 줄이거나, 또는 완전히 없앨 수도 있다. 이 경우 페이지의 가독성이 증대하고, 재사용을 통해 생산성을 늘일 수 있다. 전문 자바 프로그래머가 아니라도, 간단히 태그를 이용하여 복잡한 기능을 수행하는 기능을 가진 웹 페이지를 쉽게 작성할 수 있다. 태그를 웹 페이지에서 사용하려면 태그를 처리하는 태그 핸들러가 필요하다. 태그 핸들러는 태그를 처리하는 특수 자바 프로그램으로서, 자바 코드를 작성한 다음 컴파일하여 클래스 파일이 위치한 곳에 두거나, 압축하여 라이브러리 디렉토리에 두어야 한다. 그리고, 태그와 태그 핸들러의 연결 정보를 갖는 태그 정의 파일을 두고, 이 정의 파일을 웹 페이지에서 삽입하여, 페이지 내에서 자유롭게 이용할 수 있다.

- 웹에서 세션을 유지하는 방법은?
: 웹에서 세션을 유지하는 방법은 쿠키를 이용하는 방법과 URL 재작성 방법이 있다. 쿠키는 클라이언트에 저장되는 서버에서 보낸 작은 데이터로서, 클라이언트가 서버로 접근 시 이를 웹 메시지의 헤더에 같이 포함시켜 접근한다. 서버는 클라이언트가 처음 접속할 때에, 응답 메시지의 헤더에 쿠키와 URL 재작성 방법을 동시에 적용하여 내려 보낸다. 간혹, 쿠키를 지원하지 않는 클라이언트가 있을 수 있어서, 이를 위해 서버는 URL 재작성 기법을 사용할 수 있다. URL 재작성 방식에서는 클라이언트로 내려지는 웹 페이지 내에서, 다음에 호출하게 될 URL의 뒷부분에 특수 정보를 붙여서 같이 올라오도록 하는 방식이다. 쿠키와 URL 재작성 정보를 바탕으로 서버는 클라이언트가 처음으로 접근하는 유저인지 아니면 기존의 유저인지를 알 수 있고, 클라이언트에서 쿠키를 지원하는지 여부도 알 수 있다. 이러한 정보를 바탕으로 서버는 클라이언트를 인식하고, 이러한 인식을 바탕으로 클라이언트와의 세션을 유지하고, 각각의 클라이언트에 필요한 처리를 할 수 있게 된다.

- 국제화와 지역화, 리소스 번들이란?
: 국제화는 각기 다른 언어를 사용하는 이용자를 위하여, 각각의 언어와 지역을 지원하도록 소프트웨어를 설계하는 일련의 과정이다. 지역화는 실제 이용자의 요청이 들어왔을 때, 이용자의 헤더에 있는 이용자의 사용 언어 환경 정보를 통해 이용자의 언어와 지역 정보를 인식하여, 이용자의 환경에 적합한 정보를 제공하는 일련의 과정이다. 이용자에게 제공되는 정보에서 각각의 언어 환경에 따른 정보는, 웹 페이지에서 분리하여 따로 다른 파일에 보관하여 둔다. 이러한 파일은 이름에 각각의 언어 및 지역 정보를 통해 구분한다. 예를 들어 한국어의 경우, 파일이름 뒤에 ko_KR 또는 단순히 ko란 이름을 붙이고, 영어의 경우에는 en_US 혹은 en의 이름을 붙여 구분한다. 메시지 번들은 이들 자바 프라퍼티 파일로서, 파일 안에 텍스트, 메시지, 이미지 등의 정보를 따로 두어, 애플리케이션을 새로운 언어와 지역으로 쉽고 빠르게 수정할 수 있다.

 

"Somecharacters cannot be mapped using “ISO-8859-1” character encoding ......"
위와 같은 에러 메세지가 나온다면 javascript에서 한글인코딩이 문제가 되는 것입니다.

이클립스(Eclipse)에서 자바 스크립트 code속에서
한글을 자유롭게 사용하고 저장하기 위해서는 Default encoding을 MS949로 변경해야 합니다..

1. [window] - [Prefernces] 메뉴를 선택하면 [Prefernces] 창이 나타납니다.


2. [Prefernces]창에서 [General] - [Content Types]를 선택합니다.

3. 화면 오른쪽에서 [Text] - [JavaScript]를 선택합니다.

4. 화면 아래쪽에 Default encoding 입력란에 "MS949"를 입력한 후 [Update] 선택후 [OK]를 클릭합니다.

참고로 저는 Eclipse Europa 3.3.2버전을 사용 했는데, encoding을 변경전에는 *.js 의 자바스크립트 파일 안의 한글들은 전부 깨져서 외계어로 되어있었고, 저장 되지도 않았습니다.

 

1) 클래스(Class) : 클래스란 일반적으로 객체들이 가진 공통적인 특징을 가진 집합을 말한다. 클래스 내부에는 객체의 특성을 나타낼 수 있는 필드와 동작을 정의 할 수 있는 메소드로 구성이 되어진다.

2) 객체 (0bject): 객체란 클래스를 특성화한 이름을 가진 매개체라고 할 수 있다. 사람이라는 클래스가 있다고 가정을 한다면, 사람마다 다른 이름을 가지고 있다. 이러한 것을 객체이름이라고 하며 객체는 이름으로 다른 객체와 구분되어진다.

3) 필드(field) : 필드란 클래스 내부에 있으면서 객체가 가진 공통적인 특성을 나타낼 수 있도록 하는 변수이다. 사람이라는 클래스에서 나이, 성별 등의 필드를 사람마다 가지고 있지만, 값에서는 차이가 나는 것을 정의하게 된다.

4) 메소드(method) : 메소드란 클래스 내부에 있으면서, 객체가 행해야 하는 공통적인 동작을 정의하는데 사용이 된다. 사람이라는 클래스에서 움직인다, 잔다 등의 공통적인 동작을 하기 때문에 이러한 메소드를 이용해서 객체가 행동하도록 한다.

알듯말듯한 자바의 기본적인 용어들....
기본적으로 대충 알고는 있지만..누군가 문득 물어 보았을때 말로 설명하기 힘든 경우가 있다. ^^

 

1. Runnable Object(스레드에서 할 작업)를 만듭니다.

Runnable r = new MyThreadJob();

2. Thread Object을 만들고 그 객체에 Runnalbe Object를 전달합니다.

Thread myThread = new Thread(r);

3. Thread 객체를 실행합니다.

myThread.start();

※ Runnable을 객체로 사용하지 않고
Thread t = new Thread();
만들어도 상관은 없지만, 객체지향적인 관점에서 Thread 객체와 그 스레드에서 해야 하는 역할은 확실히 구분되어 있으므로 그리 좋은 방법은 아니라고 할 수 있습니다.

 

1. 자바 패키지 컴파일
우선 소스를 아래의 그림과 같이 수정한다.
Package com.util;

마찬가지로 매뉴->도구->사용자 도구 구성을 선택한 후 추가 버튼을 클릭하고 프로그램을 선택한다.
아래의 그림과 같은 화면이 나오면 javac를 선택하고 열기 버튼을 누른다.
아래의 그림과 같이 인수(E)부분에 –d . 을 입력하고 오른쪽 버튼에 있는 파일이름을 선택한다.
아래의 그림과 같이 디렉토리에서 파일디렉토리를 선택한다.

출력내용 캡쳐를 선택하고 적용->확인 버튼을 누른다.

아래의 그림과 같이 도구->자바패키지 컴파일(Ctrl + 3)하면 패키지 컴파일이 됩니다.
아까 위에서 –d . 을 설정했는데…이것은 현재 디렉토리 밑으로 패키지를 생성하라는 인수 입니다.
컴파일 하고나서 com/util 밑에 Test.class가 생성되어 있을 겁니다.

 

-경고 메세지
Note: BeatBox.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

  java version 1.5 이전에 나온 책들의 예제중(Head First Java, being java등등)에 ArrayList API를 사용하는 경우 저런 경고 메세지가 발생할 수 있습니다. 에러는 아니라서 프로그램 실행에는 별 문제가 없다. 컴파일시에 -Xlint 옵션을 추가해서 상세 내역을 확인보면 아마도 ArrayList를 선언이나, 객체 생성시에 문제가 발생 할 것입니다. 이는 JDK1.5버젼부터 ArrayList사용 문법이 약간 변경이 되어서 저런 경고메세지가 출력이 됩니다.
  예를 들면

  1. ArrayList boxList = new ArrayList();
  2. ArrayList<int> boxList = new ArrayList<int>();

  1번을 2번과 같은 식으로 변경해 주어야 Warning Message가 사라질 것입니다. 즉 ArrayList에서 사용 할 객체의 Type을 변수 생성 단계에서 직접 명시해 주어야 합니다. 그 이전 버전에서는 Object type이라 모든 type을 아무 제한없이 사용할 수가 있었는데.... 역시 JAVA는 엄격한 type check를 하는 언어답게 변화를 하는 것 같네요.. ㅎㅎ

 

  • equals(Object o)
    - 두 객체를 '같은'것으로 볼 수 있는지 판별하는 method
  • hashCode()
    - 그 객체에 해당하는 hash code를 출력하는 method
  • getClass()
    - 어떤 클래스의 Instanse인지 알 수 있도록 그 객체의 클래스를 리턴합니다.
  • toString()
    - 클래스명과 몇가지 별로 잘 쓰이지 않는 숫자가 포함된 String 메세지를 출력합니다.

출 처 : Head First Java 참조

 

Java API - ArrayList

Posted In: . By lkh

  • add(Object o)
    - 객체 매개변수(o) 를 목록에 추가
  • remove(int index)
    - index 매개변수로 지정한 위치에 있는 객체를 제거합니다.
  • contain(Object o )
    - 객체 매개변수 o에 match 되는 것이 있으면 'true'를 리턴합니다.
  • isEmpty()
    - 목록에 아무 원소도 없으면 'true'를 리턴합니다.
  • indexOf(Object o)
    - 객체 매개변수(o)의 인덱스 또는 -1을 리턴합니다.
  • size()
    - 현재 목록에 들어있는 원소의 개수를 리턴합니다.
  • get(int index)
    - 주어진 index 매개변수 위치에 있는 객체를 리턴합니다.

출 처 : Head First Java 참조

 

Thread 개요 - JAVA

Posted In: . By lkh

  • 순차적으로 동작하는 문장들의 단일 집합
  • 경량(lightweight) 프로세스
  • 다중 스레드
    -> 하나의 프로세스(프로그램)에 하나 이상의 스레드를 생성하여 실행할 때
  • 자바는 스레드를 지원하기 위해 java.lang.Thread 클래스 제공


다수개의 CPU를 가진 컴퓨터에서 다중 스레드의 실행


한 개의 CPU를 가진 컴퓨터에서 다중 스레드의 실행

 

1. 먼저 두 개의 폴더(이클립스에서 프로젝트 단위)를 생성한다.

2. 각 폴더안에 패키지 단위의 폴더를 생성한다.
(예) c:\test1\tt\ttt\tttt, c:\test2\gg\ggg\gggg)

3. 최종패키지 단위 폴더에 다음과 같은 소스 파일을 작성, 저장한다.
(Test2.java는 Test1.java를 임포트하여 사용하려고 한다.)

4. 콘솔창을 열고 test2\gg\ggg\gggg 폴더에 들어간다.

5. 소스에서 import하려는 폴더가 다른 경우이기 때문에 자바컴파일 및 자바실행을 할 때 -classpath라는 옵션과 import하려는 폴더경로를 적어준다.

6. 단, 컴파일한 코드를 실행할 때 패키지 경로까지 적어주어야 한다는 것을 주의하자.

(출저 : 수업자료)

 

Eclipse pakage add - JAVA

Posted In: . By lkh

1. 먼저 두 개의 프로젝트를 생성한다.


2. 다른 프로젝트를 가져올 프로젝트에서 오른쪽 마우스버튼을 누르고 맨 아래에 Properties를 클릭한다.
3. 왼쪽 메뉴박스에서 Java Build Path 설정에서(①) 탭메뉴에서 Projects 선택 후(②) 추가한다.

4. 자신이 참조하고자 하는 클래스를 체크한 후 Ok 버튼으로 추가한다.

5. 하나의 프로젝트가 추가된 걸 볼 수 있다. 이렇게 설정하고 test11이라는 프로젝트를 test22 프로젝트에서 사용이 가능해진다.


(출저 : 수업자료)

 

자바를 공부하시는분들이 용어를 많이 헷깔려 하더군요...
저역시 그랬구요... 그래서 정리 한번 해봅니다.
자바를 공부하는 사람으로서 꼭 알아야 하는 간단한 용어 몇가지입니다^^

SDK => Standard Development Kit 혹은 Software Development Kit
위의 두가지 표현 모두 맞다고 보시면 됩니다.
어떻게 사용하고, 어떻게 해석하는가에 따라 다르지만 내용은 비슷합니다.
SDK는 자바뿐만아니라 모든 개발언어의 소프트웨어 개발 킷을 말합니다.
프로그램을 개발하려면 개발하는 프로그램이 있어야 겠죠? 그것을 말합니다^^

JDK => Java Development Kit
위에 설명한 SDK가 모든 소프트웨어 개발 킷이라면... JDK는 말그대로 JAVA 개발 킷을 말합니다. 즉, Java용 SDK의 이름이 JDK라고 표현할수 있죠. 그런데 요즘들어 J2SE Development Kit라고 표현되있는것을 볼수있습니다. 이것은 J2SE의 JDK를 다운받을때 볼수 있는데요...
java.sun.com 홈페이지에 가보면... sun에서는 J2SE의 경우 jdk라 표현하며... 이때 J2SE Development Kit라고 되있습니다. 그리고 J2EE의 경우 j2eesdk라고 되있더군요.
즉, 최근 sun에서는 J2SE의 개발킷을 jdk라고 표현하며... J2EE의 개발킷은 j2eesdk라고 표현하더군요.

J2SDK => Java2 Standard Development Kit 혹은 Java2 Platform Standard Development Kit
위에 JDK설명에서 보시듯이 요즘 J2SE의 개발킷을 JDK라 표현하는데요...
예전에 java2 platform이 출시되었을 당시 java1과 구분하기위해 J2SDK라고 표현 했습니다.
즉, 현제는 java2 platform만 사용하기 때문에 JDK와 동일하다고 보시면 됩니다.

J2SE => Java 2 Standard Edition 혹은 Java2 Platform Standard Edition
J2SE는 말그대로 java의 표준 플렛폼 입니다.

J2ME => Java 2 Micro Edition혹은 Java2 Platform Micro Edition
J2ME는 규모가 작은곳에 프로그램을 개발하기 위한 플렛폼 입니다.
예를들면 PDA를 들수있죠^^

J2EE => Java 2 Enterprise Edition혹은 Java2 Platform Enterprise Edition
J2EE는 웹기반의 엔터프라이즈 어플리케이션을 구축하기 위한 플렛폼 입니다.
대표적으로 EJB가 있죠^^

JRE => J2SE Runtime Environment
JRE는 실행버젼입니다. JDK로 제작한 테스트 프로그램등을 실행할수 있도록 해주죠.
그래서 파일용량이 적은대신 개발할수는 없습니다.
기본적으로 디벨로퍼킷에 JRE가 포함되어 있으므로 따로 설치할 필요가 없습니다.
예를들면 한글뷰어 아시죠? 한글파일을 작성할수는 없지만 읽을수는 있죠.
이것과 비슷합니다^^

출처 : Tong - BlueSky_08님의 Java통

참 용어 정리가 쉽게 잘 되어있는 자료를 퍼왔습니다. 여기저기서 얼핏 들어온 약자들은데...
이런 뜻이 있었군요.. ㅎㅎ

 

Short cirsuit - java

Posted In: . By lkh

단축 논리 연산자(Short-circuit logical operateor)인 '&&(논리곱)'과 ' || (논리합)'을 제공 하고 있다. 이 연산자는 하나의 첫 번째 operand를 평가한 결과 두 번째 operand를 평가할 필요가 없을 경우, 바로 경과를 반환하는 연산자이다.

'&&(논리곱)'연산의 경우 왼쪽에서부터 평가해 갈 때, 하나의 operand라도 falue이면, 전체 논리식은 거짓이 되므로 더 이상 나머지 논리식을 평사하지 않습니다.
' || (논리합)'연산의 경우에도 왼쪽에서부터 평가해 갈 때, 하나의 피연산자라도 참이 되면, 나머지 논리식을 평가할 필요없이 전체 논리식은 참이 됩니다.

-> &, | 연산자가가 논리 연산자로 사용될 경우, 두 개 짜리 &&, || 와 한 개 짜리 &, | 의 차이는 Short circuit 효과가 있는지 없는지의 차이입니다.