Hotspot JVM의 Garbage Collector

Dec152009

   View Comments

Hotspot JVM, 다시말해 Sun사에서 만들어 HP, Solaris, Windows, Linux, Mac 등에서 사용하는 JVM은 Garbage Collector를 추가하는 방식으로 Garbage Collection이 개선되어 왔다. 다시말해 버전이 올라가면서 기존의 Garbage Collector 보다 더 나은 알고리즘을 가진 Garbage Collector를 추가하여 제공하는 방식으로 진화해왔다는 것이다.

그러므로 Hotspot JVM에서는 
Garbage Collector를 이해하는 것이 바로 Garbage Collection자체를 이해하는 것을 의미하게 된다. 다음의 그림은 Java 6까지 Hotspot JVM에서 제공하는 Garbage Collector를 정리한 것이다. 


Hotspot JVM의 또 하나의 특징은 generation 별로 Garbage Collector가 사용하는 알고리즘이 각각 다르다는 것이다. 그렇기 때문에 Hotspot JVM의 Garbage Collector를 이해하기 위해서는 각각의 Generation별 알고리즘을 이해해야 한다.

Serial Collector는 Hotspot JVM의 가장 기본적인 
Garbage Collector로 Default Collector라고도 불린다. 이 Garbage Collector는 Young Generation의 경우 Generation Algorithm을 사용한다. 각 Garbage Collector의 알고리즘에 대해서는 차차 포스팅하겠지만, 이 Serial Collector의 Generation Algorithm은 Sun JVM의 대표적인 알고리즘으로 인터넷에 나와있는 Garbage Collection의 과정이 대부분 이 알고리즘을 설명하고 있다. 간략하게 설명하면 Eden, Survivor 영역으로 Live Object가 이동하면서 Garbage Collection을 수행하는 방식이라 할 수 있다. 반면 Old Generation에는 Mark-and-Compacting 알고리즘을 사용한다. 

Parallel Collector는 Young Generation을 병렬 처리하여 Garbage Collection의 속도를 높이자는 전략을 사용한다. Serial Collector와의 차이는 단지 Young Generation을 Multi thread로 Garbage Collection을 수행한다는 것이다. 그밖의 사항은 모두 동일하다.

Parallel Compation Collector는 Parallel Collector에서 Old Generation의 알고리즘을 병렬처리로 변경한 것이다. Young Generation은 Parallel Collector와 동일한 방식을 사용한다. 이 
Garbage Collector는 비교적 나중에 나온 것으로 이것이 나오기 전에는 CMS Collector와 Incremental Collector가 있다. 

이 두 Collector와 Parallel 방식과는 개념적인 차이가 있다. 우선 Parallel 방식은 
Garbage Collection에 최대의 리소스를 투입해서 빨리 끝내겠다는 전략을 가지고 있다. 반면 CMS나 Incremental 방식은 이와는 달리 Garbage Collection을 하는 동안에 어플리케이션이 멈추는 시간을 최소화하려는 전략을 가지고 있다. 그렇기 때문에 Garbage Collection 중에도 모든 Thread가 멈추게 하는 것 보다는 가능한 Garbage Collection과 어플리케이션이 동시에 작업이 가능하도록 한다.

Concurrent Mark-Sweep Collector (CMS Collector)는 1.4 버전에서 추가되었고 주로 어플리케이션이 오래 간섭을 받는 Old Generation의 Garbage Collection에 집중하고 있다. Old Generation에서는 Concurrent Mark-Sweep이라는 알고리즘을 사용한다. 명칭에서는 적어도 두가지 사실을 알 수 있다. Concurrent라는 단어는 Garbage Collection와 어플리케이션을 동시에 수행한다는 것을 나타내고, Mark-Sweep은 Compaction을 하지 않는 다는 것을 알 수 있다. Young Generation에서는 기존과 같이 Parallel Copy 알고리즘을 사용한다.

Incremental Collector는 1.3버전에 추가된 비교적 오래된 Collector로 Train Collector라는 별명을 가지고 있다. 그 이유는 Old Generation에서 Train 알고리즘을 사용하고 있기 때문이다. 그런데 이 Collector는 현업에서 거의 사용되지 않고 있고 Java 6에 와서는 관련 Option들이 사라지는 등 사실상 지원이 끊긴 Collector이다.

위의 표에는 나타나지 않았지만 
Java 7에서는 새로운 Collector가 하나 더 추가되었다. 그것은 Garbage First Collector인데 이 Collector를 사용하게 되면 Young Generation과 Old Generation의 물리적인 구분은 사실상 사라지고 1Mbytes로 시작되는 각 Region으로 쪼개어진다. 그리고 그 Region이 하는 역할에 따라 Young, 혹은 Old Generation의 Region으로 인정되는 논리적인 구분이 존재하게 된다. 

Garbage First라는 이름은 이 Region중에 Garbage Object로 가득찬 Region부터 Collection을 수행하기 때문에 붙여졌다. 이 Gatbage Collection의 기본 알고리즘은 Train 알고리즘에 근간을 두고 있다. 

이후의 포스트를 통해 차차 각 
Garbage Collector에 대해 자세히 알아보도록 하겠다.

'Development > Java' 카테고리의 다른 글

자바 네트워크 구동 프로토콜(JNLP)과 참조 구현, 자바 웹 스타트  (0) 2012.01.18
자바 데몬(daemon) 만들기  (0) 2012.01.18
java - RMI  (0) 2012.01.17
자바 SimpleDateFormat  (0) 2011.01.24
아스키 코드  (0) 2011.01.11
Posted by linuxism
,

java - RMI

Development/Java 2012. 1. 17. 09:35

 RMI (Remote Method Invocation) ; 원격 메쏘드 호출 

RMI는 자바 프로그래밍 언어와 개발환경을 사용하여 서로 다른 컴퓨터들 상에 있는 객체들이 분산 네트웍 내에서 상호 작용하는 객체지향형 프로그램을 작성할 수 있는 방식이다. RMI는 일반적으로 RPC라고 알려져 있는 것의 자바 버전이지만, 그러나 요청과 함께 하나 이상의 객체들을 통과시키는 능력을 가지고 있다. 객체는 원격 컴퓨터 내에서 수행될 서비스를 변경하는 정보를 포함할 수 있다. 자바를 발명한 회사인 썬 마이크로시스템즈에서는 이것을 "움직이는 작용"(moving behavior)이라고 부른다. 예를 들면, 원격 컴퓨터에 있는 사용자가 비용 청구서를 채울 때, 사용자와 상호작용을 하는 자바 프로그램은 RMI를 사용하여 비용 보고에 관해 항상 최신 방침을 가지고 있는 다른 컴퓨터의 자바 프로그램과 통신할 수 있을 것이다. 이에 답하여, 그 프로그램은 최신 방침에 위반됨이 없는 방식으로 사용자의 비용 청구서 데이터를 심사하는 원격 컴퓨터 프로그램의 이용을 허락하는 객체와, 관련 메쏘드 정보를 돌려보낼 것이다. 사용자와 회사는 둘 모두 초기에 실수를 예방함으로써 시간을 절약할 수 있게 된다. 회사의 방침이 변경될 때마다, 오직 한 컴퓨터에 있는 프로그램만 변경하면 된다.

썬은 그것의 객체 매개변수 전달 방식을 객체 직렬화라고 부른다. RMI 요청은 원격 객체의 메쏘드를 부르는 요청이다. 이 요청은 지역 컴퓨터 내에 객체 메쏘드를 부르는 것과 같은 구문 형식을 가진다. 일반적으로, RMI는 네트웍에 걸쳐 있는 객체 모델과 그것의 장점들을 보호하기 위해 설계된다.

RMI는 응용프로그램과 자바 가상머신 사이에 세 개가 계층으로 구현된다. 그 세 가지 계층이란 다음과 같다.

  • 클라이언트/서버 관계의 클라이언트 측에 있는 스터브 프로그램과, 서버 측에서 대응하는 조직. 호출하는 프로그램에게 스터브는 서비스를 위해 호출되는 프로그램으로 보이게 된다 (썬은 스터브와 비슷한말로 프럭시라는 용어를 사용한다)..
  • Remote Reference Layer는 호출하는 프로그램에 의해 전달된 매개변수에 따라 다르게 행동할 수 있다. 예를 들면, 이 계층은 그 요청이 단일 원격 서비스를 호출하는 것인지 또는 멀티캐스트에서 다중 원격 프로그램을 호출하는 것인지를 결정할 수 있다.
  • Transport Connection Layer는 이 요청을 설정하고 관리한다.

단일 요청은 한 컴퓨터 상에 있는 계층들을 통하여 아래로 내려오며, 다른 쪽에 있는 컴퓨터의 계층들을 통하여 위로 올라간다. RMI는 썬 마이크로시스템즈의 JDK의 일부로서 공급된다.

 







자바 원격 함수 호출

위키백과, 우리 모두의 백과사전.

자바 원격 함수 호출(Java Remote Method Invocation, Java RMI)는 자바 프로그램에서 각
객체간, 컴퓨터간 메서드를 호출할 수 있게 해주는 기술이다.

[편집]개요

  • 서로 다른 JVM상에 있는 객체의 메소드를 호출함.
  • RMI는 전송 계층을 은폐함. ==> 투명성 보장
  • 소켓상의 통신

자바만을 위한 최초의 프로토콜은 JRMP (Java Remote Method Protocol) 이었다. 이후 공통적인
객체를 호출하기 위해 CORBA (Common Object Request Broker Architecture)가 개발되었다.
이후 CORBA의 IIOP를 받아들여 RMI가 개발되었다. 현재 RMI-IIOP는 JRMP 구현과 그 인터페이스
는 동일하지 않다.

자바 원격 함수 호출 API(Java RMI)는 자바 응용프로그램을 짜는 인터페이스이다. 이것은 공통적인
객체를 호출하기 위해 사용된다. 이API는 보통 두가지 실시방법이 있다. 최초의 실행방법은 Java
Virtual Machine (JVM) 클래스 표현 구조를 의지한다. 그러므로 이방식은 한JVM에서 다른
JVM에로의 호출만 지원한다. 이런 자바에서만 실행되는 프로토콜은 Java Remote Method
Protocol (JRMP)로 알려져있다. 코드가 JVM환경 밖에서도 운행시키기 위해 CORBA (Common
Object Request Broker Architecture)가 개발되었다.

다른 추천하는 RMI의 버전은 Jini이다. 이것은 앞의것과 비슷하지만 더욱많은 찾기능력과 분산
오브젝트 애플리케이션 기법을 지원한다.

[편집]바깥 고리

  • Cajo A framework for transparent, dynamic cooperation between Java Virtual Machines



 




RMI란?

- 원격 메서드 호출이란 로컬 컴퓨터에서 원격 컴퓨터의 메서드를 호출하는 기술이다.

실제 클라이언트에서 원격 컴퓨터에 존재하는 메서드를 호출할 것이고, 클라이언트가 원격 메서드를 호출 했을때 원격 컴퓨터의 CPU를 사용하며, 클라이언트는 그 결과값만을 네트웍으로 전송받는다.


RMI의 데이터 전달 기법은?

-매개변수와 반환값이 없는 메서드의 호출은 의미가 없습니다. 로컬 머신에서 원격으로 메서드를 호출하더라도 매개변수를 RMI 통신을 통해서 날려주고, 그리고 리턴값을 다시 되돌려 받아야 합니다. 이것을 해결하기 위해서 RMI 내부에서는 객체 직렬화(Serialization)의 기법을 이용합니다. 매개변수로 넘겨 줄 객체를 직렬화한 후 메서드를 호출할 때 함께 보내주는 것입니다. 그리고 그 결과값 또한 직렬화되어 원격 컴퓨터로부터 반환됩니다.


RMI모델

- RMI를 구축하기 위해서는 원격지의 컴퓨터에 RMI Server가 필요하다. 이 RMI Server에 객체를 넣어두고 (바인딩) 로컬 머신에서 접근한 후 객체의 메서드를 호출하는 것이다. 기본적으로 RMI Registry라는 서버모델이 제공 되기는 하나 이것은 단순 개발용이고, 일반적으로 RMI기반의 모델 중 가장 널리 알려진 것이 바로 EJB를 서비스해주는 J2EE모델이다. J2EE기술은 비지니스 로직을 처리하기 위한 RMI 기반의 응용 모델이며, 여기서 서비스 되는 객체를 EJB라고 한다.


▣ RMI Registry 
◈ 자바 RMI는 원격 객체를 관리하고 서비스하는 원격 객체 컨테이너(Container)를 제공하는데, 이것을 RMI Registry라고 한다.

▣ 바인딩(Binding) 
◈ RMI Registry에 원격 객체를 등록하는 과정을 바인딩(Binding)이라고 한다. 
◈ RMI Registry에 원격 객체를 등록할 때에는 객체를 식별할 수 있는 식별자(Name)와 함께 등록해야 한다. 

- J2EE상업 모델 중 가낭 잘 알려진 것이 웹로직이다.


클라이언트의 원격 참조 객체는 그냥 만들어지는 것이 아니고 클라이언트로부터 LookUp이라는 과정을 통해 서버로부터 내려받아야 한다. 이 룩업은 원격 객체의 바인딩 과정에서 사용한 식별자(Name)를 사용하여 RMI Registry에 존재하는 객체를 클라이언트 측에서 검색하는 작업이다. 그리고 클라이언트가 이 원격 객체를 LookUp하였을때 RMIRegistry는 원격객체를 대신 할 원격참조객체를 클라이언트에 보내주게 되며, 클라이언트는 이 원격참조객체를 통하여 원격객체를 호출 하는 것이다.



RMI만들기.

1.원격 인터페이스의 작성

-원격 인터페이스는 원격 객체가 사용 할 메서드를 명시하는 과정임.

▣ 원격 인터페이스 
◈ public interface IHello extends Remote{ 
◈        public String sayHello(String name) throws RemoteException; 
◈ } 
- 여기에 명시된 메서드만이 원격으로 호출이 가능하다.

- 위의 이유로 이 인터페이스는 클라이언트측에 공개 되어야 한다.(수동으로...메일이든 뭐든..)

- Remote를 상속하며, RemoteException처리를 해주어야 한다.(규약)


2.원격 클래스 만들기

- 원격 인터페이스를 구현해야 한다.

- UnicastRemoteObject클래스를 상속해야 한다.

▣ 원격 클래스의 실제 구현 
◈ public class HelloImpl extends UnicastRemoteObject implements IHello { 
◈         public HelloImpl() throws RemoteException { } 
◈         public String sayHello(String name) throws RemoteException{ 
◈             System.out.println(name + "님 안녕하십니까! "); 
◈             return name + "님 안녕하십니까! "; 
◈         } 
◈ }

- 생성자에도 Exception처리가 있음을 주의

- 인터페이스인 IHello를 구현하고 있다.


3.Stub 클래스 만들기

- 클라이언트가 사용하는 원격 참조 객체를 만들기 위해서는 스텁(Stub)클래스가 필요하다.

- 이 스텁 클래스로 객체를 만들면 원격 참조 객체(가짜 객체)가 되는 것이다.

- 제공되는 rmic.exe라는 툴을 사용한다.

javac HelloImpl.java

rmic HelloImpl

▣ rmic.exe로 생성된 스텁(Stub)과 스켈레톤(Skeleton) 파일 
◈ HelloImpl_Stub.class 
◈ HelloImpl_Skeleton.class 

-Java 1.2이후에서는 Stub클래스에 스켈레톤 클래스의 기능이 통합되어 있으며, 버젼 유지를 위해 현재도 스켈레톤 클래스는 같이 생성된다.


4.스텁과 스켈레톤을 사용하여 바인딩 시키기

- 스텁과 스켈레톤까지 작성했다면 원격 클래스를 이용하여 원격 객체를 만든 후 RMI Registry에 바인딩 시키는 서버 프로그램이 필요하다


▣ 바인딩을 위한 서버 프로그램의 구현 
import java.rmi.*; 
import java.rmi.server.*; 
public class HelloRMIServer{ 
    public static void main(String[] args)    throws Exception { 
        if (System.getSecurityManager() == null) { 
            System.setSecurityManager(new RMISecurityManager()); 
        } 
        HelloImpl h = new HelloImpl(); 
        Naming.rebind("rmi://203.252.134.119:1099/BABO", h); 
        System.out.println("HelloImpl의 객체 h를 BABO이름으로 바인딩");     
    } //end of main 
} //end of HelloRMIServer 

▣ 자바 시스템 차원의 보안 정책 파일 
◈ [JAVA_HOME]\jre\lib\security\java.policy 
◈ 자바 설치 디렉토리의 jre 디렉토리를 확인하시기 바랍니다.


- 원격 클래스 HelloImpl의 객체 h를 만든 후, Naming의 rebind()를 이용해서 RMI Registry에 바인딩시키고 있다.

- 위의 HelloRMIServer를 실행시키면 RMI Registry에 원격객체가 등록된다.

(단, RMI Registry를 실행시킨 후 HelloRMIServer를 실행해야 한다.)


◈ java -Djava.security.policy=rmi.policy HelloRMIServer 


start rmiregistry(포트 변경 할시 start rmiregistry 2000) - 디폴트 1099번

- 여기서 포트를 변경하려면 위의 rebind()메서드에서 사용한 포트도 변경해줘야 한다.

- 클라이언트가 원격객체를 Look Up할때 RMI서버는 원격 참조 객체(stub)의 메모리를 직렬화시켜 클라이언트로 전송한다.

- 이것을 역직렬화 하기 위해서는 원격 참조 객체의 클래스 파일이 필요한데 이것이 stub파일이다.

- 따라서 stub파일은 클라이언트가 다운로드 할 수 있는 곳에 위치 시켜야 하며, 이때 위치는 codebase를 사용하여 지정한다.


5.Look Up


▣ 클라이언트의 룩업과정을 순서 
◈ Lookup 요청 
◈ 직렬화된 Stub 객체 반환 
◈ Stub 파일을 찾기 위해서 codebase 검색 
◈ Stub 클래스 파일 요청 
◈ Stub 클래스 파일 다운로드 
◈ 직렬화된 Stub 객체와 Stub 클래스를 이용해서 역직렬화


- 역직렬화를 마치면 원격 참조 객체가 만들어지며, 이 원격참조객체를 이용해서 클라이언트는 메서드를 호출 할 수 있다. 단 실제 메서드를 호출하기 위해서는 원격참조객체를 인터페이스로 캐스팅 해주어야 한다. (그래서 공개되어야 하는 것이다..)


import java.rmi.*; 
public class HelloRMIClient { 
    public static void main(String[] args)    throws Exception { 
        if (System.getSecurityManager() == null) { 
            System.setSecurityManager(new RMISecurityManager()); 
        } 
        IHello h = (IHello)Naming.lookup("rmi://203.252.134.119:1099/BABO"); 
        String str = h.sayHello("홍길동"); 
        System.out.println(str); 
    } //end of main 
} //end of HelloRMIClient class 

- 원격 인터페이스로 사용 할 클래스 파일 확보

- 원격 클라이언트 프로그램 컴파일

javac HelloRMIClient.java

- 실행

java -Djava.security.policy=rmi.policy -Djava.rmi.server.codebase=http://www.jabook.org/java/rmi/ HelloRMIClient

- 위의 url은 스텁 파일이 있는 url


- 룩업을 과정을 거쳐서 원격 참조 객체를 얻었다면 객체가 로컬에 있는 것처럼 메서드를 호출할 수 있습니다. 메서드를 호출하기 위해서는 서버에서 배포하는 원격 인터페이스를 이용해서 원격 참조 객체를 캐스팅해야만 합니다. 위의 예에서는 룩업과 동시에 원격 인터페이스로 캐스팅하고 있습니다. 

출처 : jabook.org



'Development > Java' 카테고리의 다른 글

자바 데몬(daemon) 만들기  (0) 2012.01.18
Hotspot JVM의 Garbage Collector  (0) 2012.01.18
자바 SimpleDateFormat  (0) 2011.01.24
아스키 코드  (0) 2011.01.11
초보 Java 웹 개발자들을 위한 학습 로드맵  (0) 2010.12.18
Posted by linuxism
,


리치 인터넷 애플리케이션 [ Rich Internet Application ]

  • 약어

    RIA

플래시 애니메이션 기술과 웹 서버 애플리케이션 기술을 통합하여 기존 하이퍼텍스트 생성 언어(HTML)보다 역동적이고 인터랙티브한 웹 페이지를 제공하는 신개념의 플래시 웹 페이지 제작 기술. 다양한 컴포넌트가 추가된 플래시와 플렉스(Flex) 같은 멀티미디어 도구와 데이터베이스가 연동되는 단일 인터페이스를 통해 기존의 웹에서는 볼 수 없었던 다이내믹하고 편리한 고객 중심의 웹 페이지가 제공된다. 2001년 매크로미디어사가 플래시 MX 저작 툴을 통해 처음 선보인 이후 쇼핑 몰이나 대고객 웹 서비스, 포털 등을 중심으로 널리 확산되고 있다. 원래 리치 인터넷 애플리케이션(RIA)은 웹 애플리케이션의 하나로 통상적인 데스크톱 응용의 기능과 특징을 유사하게 갖는 형태를 말한다. 마이크로소프트의 원격스크립팅, SUN의 자바, 매크로미디어의 X-인터넷, AJAX 등도 RIA로 통칭되고 있다.

출처 - http://terms.naver.com/entry.nhn?docId=863455 

==============================================================================

RIA는 Flash 4.0 시절(1999년) 기존의 Vector Motion Graphic Tool 이었던 Flash에

ActionScript가 추가되면서, 그 개념적인 출발이 이루어졌습니다.
 즉, ActionScript를 통해 외부 자원을 활용할 수 있게 되면서 Text나 이미지, 추가적인 Flash 
Movie 등을 Flash내에 동적으로 불러들일 수 있게 되었는데, 이런 형식의 것들을

Dynamic Contents라고 불렀습니다. 
그리고, Flash Filme Festival처럼 유럽에서는 일찍이 Dynamic Contents Conference라는 것도 
열렸고요.
 
 이 RIA라는 것은 엄밀히 이야기 해서, Flash 응용 분야에 있던 사람들 사이에서 생겨난 말이 아니라

Macromedia가 Flash가 응용되면서 점점 Dynamic Contents에 대한 의견을 수렴하고 이에 대한

가능성이 높은 것을 파악하여 Server 제품군들을 만들어내면서 RIA라는 용어를 만든 것입니다.

즉, 자사의 제품 판매 강화를 위한 마케팅 용어의 성격이 짙습니다.

마치 현재의 Web Trend를 Web 2.0이라고 포장하고 정의하는 것처럼요.
 
 RIA에 대하여 Macromedia가 어떻게 정의를 내리든, Flash로 이루어진 Visual Application이라고

생각하시면 크게 지장은 없을 듯 합니다.
 
RIA를 하기 위해서는 아시다 시피 Flash가 가지는 Design, Motion Graphic, Programming의

통합적인 성격을 잘 이해해야 함은 기본이며, UI, Performance, Debugging 등에 대한 계획도 
철저하여야 합니다.
최근에는 Flex 등의 서버 제품군을 사용하여 구축하려는 사례도 조금씩 증가하는 것 같은데,

사실 Macromedia의 Server 제품군은 국내 지원 체계의 미비로 개인적으로는 신뢰성이 잘 안갑니다.

하지만, Flash 개발자가 아닌 일반 개발자가 접근하기에는 괜찮은 방법이라 생각됩니다.
 
 저희 회사에서 2003년도 당시에 현대 홈쇼몰의 주문결제/회원관리/상품 전시 등등의 거의 전 과정을

Flash로 개발할 때에 비하여 최근에는 OOP에 대한 확실한 자리 매김한 상태라 일반적인 개발자들이

접근하기에 Flash를 사용한 RIA 개발은 좀 더 수월해졌다고 평가되고 있습니다.

(그럼에도 불구하고 일반 개발자가 Flash를 접근하기에는 약간의 시행착오를 거쳐야할 것입니다.)
 
 Macromedia에서 RIA라고 부르는 이러한 흐름은 앞으로 상당기간 지속될 것임에는 틀림없으며,

최근의 Ajax와 마찬가지로 Web 상에서 여러 부분에 활용될 것입니다. 
 
"RIA로 개발하면 어떨까" 라는 모호한 입장보다는 "Flash로 이런 기획으로 개발하자"가 좀 더 구체적이고/생산적인

방식에서 접근하는 방법이라 생각됩니다.

RIA는 Flash로 개발되는 형태들에 대한 하나의 Trend에 불과하니까요.
 
오호... RIA는 Flash의 발전된 형태라는 건데, 그렇다면 최근 이슈가 되는 Flex 하고는 다른건가?

 

인터넷을 더 검색해 보니 RIA 라는 것은 Flash로 된 Visual Application 으로 Flex, Silverlight 가 대표적인

툴 들이군요. 그렇다면 Flex 를 사용 해야하는지, Silverlight를 사용해야 하는지에 대한 고민이 있어야 되겠네.

 

Adobe RIA 공식사이트의 RIA 샘플

http://www.adoberia.co.kr/iwt/board/board.php?tn=pds_ref_inq&id=248&mode=view

 

' 연말정산 간편화' 서비스가 Adobe의 RIA 플랫폼을 이용한 것이라고...

 

또다른 RIA Tool 이 Silverlight 인데...

참고로, 인터넷에 떠 있는 동영상 내용을 보니, Window 7 Phone 은 Silverlight로 어플 제작이 가능한 것 같음.

 

Silverlight 4 출시에 대한 정보

http://blogs.msdn.com/bkchung/archive/2010/04/15/silverlight-4.aspx

 

Silverlight 공식사이트

http://www.silverlight.net/

 

이것저것 훝어보니, Adobe의 Flex 의 경우에는 일반 개발자가 접근하기에는 해야 할 일들이 너무 많은 것 같다.

두 명(Flash 디자이너1명, 개발자 1명) 정도의 인원이라면 죽을 고생을 해서 웹페이지를 만들 수 있을 것 같지만,

혼자라면 원하는 웹페이지 구성은 힘들지 않을까 생각된다.

(천재적인 체력과 능력을 가지고 있다면 혹 모르겠다.)

 

Silverlight의 경우는 어떨까? 시작한 김에 인터넷을 좀 더 검색해 보고 테스팅 할 수 있는지 찾아 보아야 겠다.

 

아래 MSDN의 한글로 된 Silverlight에 대한 자료가 있다.

http://msdn.microsoft.com/ko-kr/library/bb404700(VS.95).aspx



출처 - http://blog.daum.net/nikkiji/10340705 

========================================================================================

질문자/네티즌 채택

re: RIA(Rich Internet Application)이 뭔가요?

jmlim78 
답변채택률100%
 
2004.10.07 10:44
답변 추천하기

질문자 인사

감사합니다

플래시의 제작사로 널리 알려진 매크로미디어사에서 나온 웹어플리케이션
기술을 말합니다.

현재 웹사이트제작에 사용되고 있는 HTML기술과 비교하여 
RIA는 UI의 획기적인 개선과 더불어 로딩속도의 현격한 감소 등으로 
차세대 웹 어플리케이션으로 각광받고 있습니다.

일반적으로 플래시는 HTML로 표현하기 힘든 화면의 역동성 측면들만
강조되어 왔는데, 이러한 플래시와 데이터베이스의 연동이 가능해지면서
RIA라는 어플리케이션이 탄생하게 되었습니다.

현재 극장의 예약 프로세스와 일부 쇼핑몰 등 선도업체들에서 이미
채택하고 있는 RIA는 머지않아 웹제작의 일반기술로 채용될 전망입니다.

마케팅에는 캐즘현상이라는 것이 있는데 혁신적인 기술이 나와도 
기존의 기술에 젖어있는 일반 유저들의 고정관념으로 인해 혁신적인
기술이 빠르게 확산되지 못하는 현상을 말합니다. 이처럼 RIA도 HTML의
한계를 극복한 혁신 기술로 평가받으면서도 아직까지는 조기수용층을 
제외하면 HTML을 대체하지 못하고 있습니다.

하지만, 일부기업들이 RIA를 채택하면서 비즈니스 측면에서 큰 효과를 
내고 있고 이에 따른 RIA의 확산이 이루어 지고 있는 추세입니다.
세계적인 프로세스 컨설팅 업체인 accenture는 RIA를 경이적인 사용자
경험을 제공하는 어플리케이션으로 평가하고 있고, 외국의 경우에는
RIA의 도입시 나타나는 매출향상등 비즈니스 측면에서의 이점에 대해
많은 case study가 이루어지고 있습니다.

한국에서 아직 RIA가 널리 보급되지 못하고 있는 이유 중의 하나는
원천기술의 보유자인 매크로미디어사가 한국시장을 타겟으로 선정하지않아
한국매크로미디어사의 총인원이 10명에도 못미치는 현실속에서 
관련 업체들을 지원하고 있지 못한 이유가 큽니다.
따라서 일부 선도 업체들이 기술력으로 RIA를 도입에 힘을 쓰고 있다고
보시면 됩니다.

RIA와 관련하여 참고할 만한 사이트는
한국매크로미디어사 www.macromedia.com/kr
에이탑정보기술 http://atop.co.kr/ria/ria_development.html

등이 있습니다.


===================================================================================

Q. AIR RIA JavaFX에 대해서 개념만 알고 싶어요?


RIA는 플래쉬나 자바어플렛, Ajax등을 사용한 어플리케이션을 말합니다.

단순한 HTML보다 조작성이나 표현력이 풍부하다는 의미인(Rich Internet Applications)의 약자입니다.

 

AIR는 Adobe Systems가 개발한 RIA의 실행환경입니다.

 

JavaFX는 Sun이 개발한 RIA의 또 다른 실행환경입니다.

 

비슷한 위치로 Microsoft에서 개발한 Silverlight도 RIA의 실행환경입니다.

 

즉, "RIA를 AIR에서 실행하는가, JavaFX에서 실행하는가, silverlight에서 실행하는가"가 다를 뿐

그 주체가 되는 것은 RIA입니다.

 

"실행환경"이라는 표현을 썼습니다만, 각각의 제품은 RIA를 위한 개발환경도 제공합니다.

출처 - http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=10405&docId=112790758&qb=amF2YWZ4&enc=utf8&section=kin&rank=1&search_sort=0&spq=0&pid=gxe5L35Y7vsssvrObqsssc--222258&sid=TxRJN3E7FE8AADrdCYk  

===============================================================================

RIA(Flash vs Silverlight)         2007.7.26


1. RIA (Rich Internet Application) 란?

 RIA는 Macromedia가 Flash 기술을 개발하면서 소개한 개념입니다.

RIA와 비슷한 개념으로 X-Internet, Rich Web Client 라는 용어들도 자주 언급되는 데, 등장배경은 조금씩 다르지만 이들이 제시하는 새로운 인터넷 기술과 ‘웹 어플리케이션’의

모습은 개념적으로 거의 유사하다고 볼 수 있습니다.

 

기 존 웹 환경의 경우, 정적이고 단방향으로 커뮤니케이션이 이루어지는 특성 때문에 사용자는 일방적으로 서버에서 제공하는 정보흐름만 확인이 가능했습니다. 그나마도 서버의 처리시간이 길어질 경우 지루하게 브라우저 앞에서 기다려야 했죠. 유저 인터페이스도 C/S 환경의 어플리케이션에 비하면 초라한 수준이였습니다. 이러한 기존 웹 환경의 단점을 극복하기 위해 등장한 기술이 RIA입니다.

 

RIA 를 사용함으로써 비동기 통신을 통해 사용자가 빠른 응답속도를 느낄 수 있도록 웹 어플리케이션을 구현하는 것이 가능해졌으며, C/S 환경만큼의 화려하고 다이나믹한 웹 환경을 제공할 수 있게 되었습니다. 말그대로 Rich한 웹 환경을 만드는 것이 가능해진 것이죠.

 

최근에 소개되고 있는 많은 RIA 기술 중에서 가장 대표적인 기술로는 Adobe의 Flash/Flex와 곧 출시를 앞두고 있는 MS의 SilverLight를 들 수 있습니다. 이 두 기술은 벡터 기반의 그래픽과 애니메이션 지원을 통해 화려하고 인터렉티브한 유저 인터페이스를 구현할 수 있다는 공통점을 가지고 있습니다. 차세대 RIA 플랫폼의 대표 주자라 할 수 있는 이 두 기술에 대해 살펴보면서 차이점과 전망에 대해 다루어보도록 하겠습니다.

 

 

 

2. Flash와 SilverLight

 

- 지원 운영체제

Flash 와 SilverLight는 윈도우 뿐만 아닌 다른 운영체제에서도 사용 가능한 멀티플랫폼을 지원하는 기술입니다. 둘 다 브라우저를 통해 2메가 정도의 런타임을 설치하고 나면 바로 사용이 가능합니다. SilverLight 베타의 경우 아직 윈도우(XP – ServicePack2 이상), Mac OS까지만 지원하고 있습니다. 그에 비하면 Flash는 멀티플랫폼을 깔끔하게 지원하고 있죠. MS에서 SilverLight 출시를 앞두고 리눅스 및 윈도우 2000이하 버전에서도 지원 가능한 모델을 검토 중이라고 하니 지켜봐야겠습니다.

 

- 미디어

Flash Media Player는 VP6 코덱 기반으로 동영상 재생을 하며, SilverLight는 WMV9 코덱과 VC-1 코덱 기반으로 동영상 재생을 합니다. VC-1 코덱을 통해 HD급의 고화질 동영상 재생이 가능한 점은 Flash보다 뛰어난 SilverLight만의 가장 큰 경쟁력이라 할 수 있습니다. 그리고 동영상의 ‘전체화면 보기’ 기능 구현을 자체로 지원하는 것도 특징입니다.

기존 Flash Media Player에서는 이 기능이 지원되지 않아 편법적인 방법으로 구현할 수 밖에 없었거든요. Adobe에서도 곧 출시하는 Adobe Media Player부터는 이러한 ‘전체화면 보기’ 기능을 지원할 예정이라고 밝히고 있습니다.

 

- 개발 환경

Flash/Flex 의 경우 기능구현을 위해 Action Script, MXML등의 새로운 언어를 개발자나 디자이너가 익혀야 하는 부담이 있었습니다. 그리고 수정이 필요할 경우 as파일이나 MXML 파일을 수정하고 새로 컴파일한 swf 파일을 다시 퍼블리싱을 해야했죠. 

 

SilverLight는 XML기반의 XAML이라는 디자이너와 개발자가 공유할 수 있는 중간단계의 언어를 이용하는 모델을 제공합니다. 디자이너가 디자인 툴을 통해 생성한 XAML 파일을 개발자가 전달받아 기존에 사용하던 프로그래밍 언어(JavaScript, C#, …)를 이용하여 자연스럽게 개발하는 것이 가능해졌습니다. 그리고 수정작업 시 스크립트의 수정만으로 작업을 완료할 수 있기 때문에 편리하다고 할 수 있습니다. MS 에서 디자이너와 개발자의 협업을 원활히 할 수 있는 모델로 많은 노력을 기울인 부분입니다. 하지만 새로운 디자인 툴(Expression Blend, Expression Design)과 XAML 기반의 모델에 실무자들이 적응하는데 까지는 다소 시간이 필요할 것으로 보입니다.

 

 

- 향 후 전망

전 체적으로 봤을 때 SilverLight가 Flash 이후에 나오는 기술인 만큼 더 많은 장점을 가진 것은 틀림없습니다. 물론 Flash에 익숙한 디자이너/개발자가 SilverLight 디자인 툴과 기술을 익히는 데는 아무래도 시간이 필요하겠죠? Flash가 UCC는 물론 윈도우 이외의 플랫폼에서도 큰 영향력을 행사하고 있기 때문에 당분간 대세의 흐름이 급격히 바뀌지는 않을 겁니다. 하지만 SilverLight의 많은 장점을 생각한다면 앞으로 SilverLight가 차지하는 비중은 틀림없이 늘어날 것으로 예상됩니다. 특히 별도로 제공하는 Expression Media Encoder를 통한 미디어 플랫폼으로서 SilverLight를 도입할 경우의 가격이 기존 Flash기반의 미디어 서비스(VP6 코덱으로 인코딩)를 도입할 때에 비해 훨씬 싸기 때문에 가격 경쟁력 면에서도 상당히 위협적인 부분으로 어필할 것으로 보입니다.

 

다분히 SilverLight가 Flash에 대해서 대항마적인 성격을 가지고 있기 때문에, Adobe에 서도 이에 뒤질세라 발빠르게 Flash 기술의 다음 버전인 Apollo와 Adobe Media Player 등 새로운 RIA 솔루션의 발표를 앞두고 있습니다. RIA 시장에서의 Flash 진영과  SilverLight 진영의 대결 구도는 매우 흥미롭게 전개되는 양상입니다.

출처 -  http://gojump0713.blog.me/140040557221


=====================================================================================

리치 인터넷 어플 리케이션

리치 인터넷 애플 리케이션 ( Rich Internet Application , RIA )는 개인용
컴퓨터
 등의 소프트웨어 분류 중 하나이며, 웹 브라우저 등의 클라이언트 
의 기능을 살린 유연한 인터페이스를 가진 
웹 애플 리케이션 이다 .

일반적으로 DHTML 과 Flash 등을 가리킨다 [1] .

RIA를 사용하여 기존에는 HTML (또는 XHTML )과 CSS 에 의해
기술되었다 
웹페이지 에 새로운 기능을 추가할 수있다. 또한 실현하기
어려웠던 동적 응용 프로그램 만들기가 더 쉽게되어있다. 
 
Flash 등의 RIA의 보급으로 웹 표시를 지금까지의 고정적인 것에서
동적인 것으로 바꾸어 화면에 표현력을주고있다.

목차

  [ 숨기기 ] 

특징 편집 ]

  1. 응용 프로그램 실행 환경을 포함하는 소프트웨어의 배포와 업데이
    트가 쉽다
  2. 여러 다른 플랫폼에 대응하는
  3. 표현력의 높은 사용자 인터페이스를 구축할 수

1은 바이러스 백신과 같은 관점에서 문제를 포함하고, Web 페이지의
제공자와 이용자 모두에게는 편리성이 더한다.

2 같은 HTML 및 JavaScript 를로드도 OS 와 웹 브라우저마다 나타나는
화면에 차이가 발생하는 문제를 Web 페이지 공급자가 해결하여 RIA도
대응하고 있으면 동일한 화면을 보장 수 점에서도 효과적이다 
[출처 1] .

한계 문제점 편집 ]

휴대 기기
RIA는 Flash 등을 지원하는 웹 브라우저에서 사용할 수 있지만, 휴대
전화
 로 대표되는 인터넷에 액세스할 수있는 휴대 기기류는 웹
브라우저의 기능 차이와 
하드웨어 의 한계에서 충분한 대응이
따라가지 못하는 것 이 많은 마우스 같은 포인팅 장치를 사용할 수
없는 경우 조작 불능이되는 경우도 많다.
과도한 장식
동적 표현이 쉽게 행할 수 있기 때문에 화면에 동적 장식을 과도하게
배치하고 링크 버튼과 같은 작업 대상 개체와 마크가 방문자의주의를
치지 않고 매몰되어 버리는, 또는 장식을 읽어 때까지 링크가
표시되지 않는 등 자신의 환경에 의한 
가용성 의 저하를 만들어
쉽다.
음성 브라우저
시각 장애인을위한 같은 음성 브라우저는 이미지는 읽을 수 않고 조작이 어렵게되는 등 액세스 의 저하라는 문제가 존재한다. 그러나, WAI - ARIA에 따라서 등 뛰어난 디자인의 RIA에서는 키 할당 기능을 마음껏 활용할 수 진정으로 이용하기 쉬운 웹 페이지를 구축할 수도있다.
일본어
RIA에 의한 것은 아니지만, 일본어에 관한 한계로 다음을들 수있다.
1) Macintosh / Windows / Linux 사이에서 한자 코드의 일치하지 않는
기호 (○ 월 숫자 등) 존재
2) OS 표준 설치한 한자 폰트가 적기 때문에 각 사용자가 각종 글꼴이
추가 설치된다. 
그 결과 브라우저에서 문자 표현이 변화하게된다.
1)은 이러한 특수 문자의 사용을 피하는 것이 바람직하지만, 사이트에
사용되고 있으면 극복할 수 없다.
2)에 대해서는 일본 정부의 행정 비용 부담에 의한 인프라 정비가
바​​람직하다.

출처 편집 ]

  1. ^ 키타고 타츠,道本켄지의 "부드러운 가전" "니케이 일렉 트로닉스 2009 년 6 월 1 일호"

참고 편집 ]

  1. ^ DHTML과 Flash의 다른 JavaFX 및 Silverlight 가있다.

관련 항목 편집 ]

외부 링크 편집 ]


===================================================================================

JavaFX

JavaFX
등장시기2008 년 1 월 24 일
개발자썬마 이크로 시스템즈
최신 릴리스1.2.3 / 2010 년 1 월
플랫폼Java 가상 머신
웹사이트www.javafx.com
템플릿을 표시

JavaFX (자바 에프 엑스)는 Java 가상 머신 상에서 동작하는 리치 인터넷
애플 리케이션
 플랫폼이다. 개발에는 JavaFX Script 라는 프로그램 언어를
사용한다.

경쟁 플랫폼으로 Adobe Flex , Microsoft Silverlight 가있다.


목차

  [ 숨기기 ] 


개요 편집 ]

JavaFX는 2007 년 의 JavaOne (2007 년 5 월 8 일) 피로연되었다. 
 
이 시점에서 RIA 플랫폼으로 이미 
Adobe Flex 가 보급되어 있으며, 
 
Microsoft Silverlight 버전이 2007 년 9 월 6 일에 육박했다. 
 
JavaFX는 3 번째 RIA 플랫폼이다.

JavaFX는 기존의 AWT 와 Swing 의 Java의 GUI 개발을 더 쉽게 그 표현력을
더욱 풍부하고 새로운 플래트 홈이다. 
JavaFX에서는 애니메이션 GUI를
쉽게 만들 수 있고, 
Java Applet 과 Java Web Start 를 사용하여 브라우저를
통해 쉽게 배포 수행할 수있는 
RIA 플랫폼이되고있다. JavaFX 자체
브라우저를 요한 않고 독립 실행형 Java 응용 프로그램으로 실행하는
것이 가능하다.

임베디드를위한 JavaME에서 동작하는 JavaFX mobile이 2009 년 2 월
12 일 출시된 휴대 전화, Web 브라우저, 단일 응용 프로그램과 폭넓은
용도에 사용할 수 있도록되었다.

JavaFX 2.0을 향해 편집 ]

Oracle은 2010 년 의 JavaOne ( 2010 년 9 월 20 일 )에서 JavaFX 2.0을 
 
2011 년 하반기에 선보일 예정임을 밝혔다 로드맵을 발표했다. 동시에
Oracle의 목표에 대한 노력의 일환으로 JavaFX Script를 폐지하고,
JavaFX 응용 프로그램을 생성하는 Java의 표준 API로 대체한다고
발표했다. 
JavaFX 2.0 표준 API를 사용하여 응용 프로그램을 생성한다. 
 
이 API는 JRuby, Groovy 등 다른 프로그래밍 언어에서 사용할
수있게된다. 
그러나 JavaFX 스크립트의 특징 중 하나였다 "바인딩"의
구현에 문제가 현재 해결을위한 작업이 진행되고있는 상태이다.

외부 링크 편집 ]






'Web > Common' 카테고리의 다른 글

웹브라우저의 역사  (0) 2012.01.23
BEA 시스템즈  (0) 2012.01.18
SOA(Service Oriented Architecture : 서비스 지향 아키텍처)  (0) 2012.01.16
웹 서비스(Web Service)  (0) 2012.01.16
Sun ONE  (0) 2012.01.13
Posted by linuxism
,