달력

3

« 2024/3 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2008. 10. 15. 22:00

Silverlight 2 Released 공부하는 것2008. 10. 15. 22:00

며칠 전에  ZDNet을 통해서 실버라이트의 정식 버전 발표가 입박했음으로 보았는데, 이제는 쉽게 정식 버전이 출시되었다는 기사를 볼수 있다.

Silverlignt의 정식 버전은 PressPress 을 통해서 발표되었다.
이는 또한 며칠전에 Scott Guthrie's의 블러그에도 언급도기도 했는데, 어제는 Silverlight 2 Released 라는 제목으로 새로 글이 올라와 있다.

공식적으로 한국시간으로 10월 15일자로 마이크로 소프트는 Silverlight를 배포하고 있으며, 이는 http://www.microsoft.com/silverlight/ 에서 다운로드 받을 수 있다.

아시다시피 Silverlight는 다양한 Platform을 지원하고 동작하도록 마이크로 소프트에서 서포트 하고 있는데, 이는 기존의 MS의 정책과는 상당히 다른 접근 방법이었다. 하지만, 이는 10년전에 마이크로 소프트가 OS시장을 주도적으로 이끌고 경쟁에서 살아남기 위해서, 많은 Application을 개발할 수 있도록 SDK만을 제공하던 그 때와는 크게 다르다.

구글의 경우만 해도 MS의 브라우져 시장에 대한 지배력과는 무관한 방향에서 사업을 성장시켰으며, 특정 OS와는 무관한 방향에서 사업을 키워나갔다. 검색엔진과 다양한 Application을 여러 Platform에 제공하며서, Beta아닌 Beta 서비스로 사용자 층을 끌어 모으으고 확장하고 있다. 최근에는 Crom이라는 브라우져를 발표하였다.

하지만 역시, Adobe의 Flash가 MS의 행보에 가장 큰 영향을 키쳤을 거랴 생각한다.
다양한 브라우져와 OS에서 동일하게 동작을 한다. RIA를 떠 올리면 Flash로 만들어진 Application을 쉽게 떠 올리게 되는데, 이는 Flash를 통해서 만들어진 Application이 주변에 많기 때문이다. Adobe는 브라우져가 아닌 OS위에서 Flash가 동작할 수 있는 Application을 개발할 수 있도록 AIR와 Flex 3를 제공하고 있다. 이는 Desktop시장뿐만 아니라 Mobile시장까지 확장하려는 Adobe의 의지가 보이는 대목이다.

MS는 이들과 경쟁을 해야 한다. 최근에는 SUN에서 JavaFX의 정식버전을 발표했다.(Mobile지원에 대해서는 슬그머니 빼 놓고 말이다.) 이는 SUN의 JavaFX도 경쟁 상대임을 의미한다.
따라서 MS는 Cross-Platform을 지원해야 하고, Cross-Browser를 지원해야만 한다. 이를 위한 최적의 기술은 바로 Silverlight임을 쉽게 알 수 있고, 개발되고 있는 것이다.

Eclipse에서 Silverlight를 개발 할 수 있는 툴을 만들고 있는 회사가 있다. 이를 MS에서 지원하고 있다.  http://www.eclipse4sl.org/ 를 보면 툴에 대한 설명과 Screen-shot를 볼수 있다. 그리고 여기를 보면 실버라이트의 Step-by-Step 예제가 있다. 

이번에 Silverlight 2.0 에는 새로운 컨트롤이 많이 추가 되었다.


다음은 Silverlight 2.0의 ReadMe Note 인데, 개발전에 한번 꼭 읽어 보면 많은 도움이 될것이다. 설치에 대한 부분과 달라진 점들은 읽어볼 필요가 있다.

 
 
:
Posted by 행복상자
Spring Dynamic Module 1.1.1 이 정식으로 Release 되고, 약 1달이 지났다.
며칠전에 새롭게 1.2.0 M1 버전이 릴리즈 되었다. 빠르게 업그레이드 된다는 점도 있지만, 이는 아직 안정화가 안되어 있다는 반증도 된다.

현재 내가 진행하고 있는 프로젝트는 1.1.1을 사용하고 있다. 아마도 정식으로 1.1.2가 나오기 전까지는 이 상태로 유지해야 할 것 같다.

아래는 이번에 추가되거나 수정된 항목이다.
DM을 위한 MVC예제가 수정된 부분이 눈에 띈다.

Changes in version 1.2.0 M1 (2008-09-05)
----------------------------------------

General
* added new annotation-based, Spring-MVC sample
* removed petclinic sample (superseeded by simple-web-app and web-console samples)
* improved sample wars packaging
* improved framework behaviour when running in environments with Java 2 security enabled

Package org.springframework.osgi.context
* added reporting of Errors raised during delegated refresh in AbstractDelegatedExecutionApplicationContext

Package org.springframework.osgi.extender
* fixed bug related to enabling Spring-DM annotation depedency processing
* improved annotation injection processing
* improved extender configuration thread-safety
* fixed potential race condition in asynchronous waiting for service dependencies

Package org.springframework.osgi.io
* improved existence check for bundle resources
* improved jar space pattern matching when the root is not specified
* fixed classpath pattern matching on certain resources when the default Bundle-ClassPath entry (.) is not specified

Package org.springframework.osgi.service
* changed the proxying classloader strategy to address package dependency visibility
* fixed usage of incorrect class loader for imported services with client thread context class loader management
* fixed intermittent deadlock that appeared in some cases betweem importers and exporters during shutdown

Package org.springframework.osgi.web
* improved web extender configuration thread-safety
* improved web extender initialization by using an asynch model for cases with out-of-order dependencies

그리고 레퍼런스 가이드는 여기를 참조하면 된다.
http://static.springframework.org/osgi/docs/1.2.0-m1/reference/html/


:
Posted by 행복상자
정말 이번 주는 바쁘기도 무척 바빴지만, 더위와 높은 습도로 인하여 지치는 한주간이었다.

일반적으로 자바에서, 사용 가능한 Scheduler는 Java에서 기본적으로 제공하는 Timer(J2SE 1.3이후 제공)와 Quartz 라이브러리를 많이 사용한다.
만약, 우리가 어떤 작업들에 대해서 반복적인 처리를 하고 싶다면, 두 라이브러리의 API와 상속받은 Class를 통해서 호출이 될수 있도록 코드를 추가하기만 하면 된다.

J2SE에서 제공하는 java.utilTime와 Quartz는 기능적으로 차이가 있는데, Timer는 일정한 주기를 반복하는 기능만을 제공하므로 정해진 시간에 실행되는 기능은 제공하지 않는다.
반면에, Quartz는 두 가지 모두를 제공한다.(주기적인 실행, 지정한 시간에 실행)
물론, Quartz의 경우는 더 많은 기능들을 제공한다. Unix와 리눅스의 Cron 텝의 사용법과 유사하게 설정하여, Task또는 Job을 실행 시킬수 있다.
 
필요에 따라 둘 중에 하나를 사용하면 된다. J2SE의 Timer는 사용법이 쉽다. Quartz는 여러가지 기능을 제공하기 때문에 약간의 노력이 더 필요하다.

[Quartz 시작하기]
1. Quartz 시작 하기: http://www.opensymphony.com/quartz/
   - 위 사이트에 가면 간단하게 Quartz가 무었인가에 대해 설명해 주고 있다. Quartz는 오픈소스로 Apache 2.0의 라이센스를 사용하므로, 소스를 고치거나 사용함에 큰 무리는 없다.
   - 현재 사용할 수 있는 최신 버전은 1.6 버전이다.

2. Quartz 다운로드 하기: http://www.opensymphony.com/quartz/download.action
   - 1.6버전을 다운로드해서 사용하면 된다.

3. Quartz 관련 문서들: http://wiki.opensymphony.com/display/QRTZ1/Documentation  
   - 보아야 할 문서들이 많다. 하지만 시간이 없거나 간단하게 개념을 이해하고 싶은 사람은
     "3. Learn Quartz의 Tutorials"를 보면 된다. 기본적인 개념과 API사용법을 익히는데
     부족함이 없을 거다.

4. Quzrtz 간단 예제들: http://wiki.opensymphony.com/display/QRTZ1/Tutorial
   - 12개의 간략한 예제들이 있다. 반드시 읽어봐야 할 예제들로 구성되어 있다.
      Quartz를 사용하고 싶은 사람은 꼭 여기를 보라.

5. Quartz의 API: http://www.opensymphony.com/quartz/api/
   - Quartz 사용을 위한 API 문서로서, 기본적으로 봐야 할 클래스와 인터페이스는
      1) Scheduler
      2) Trigger
      3) JobDetail
      4) Job (가장 기본적인 Interface이다.)
      5) 기타등등( 나머지는 필요에 따라서 보면된다.)


조금 복잡할 수동 있지만 Trigger와 JobDetail 클래스(or Interface)의 사용 및 설계 의도를 이해하면 별로 어렵지 않게 Quartz를 접할 수 있을 거다.

Trigger와 JobDaeail과 Job은 다음 기회에 설명하려고 한다.


:
Posted by 행복상자
2008. 4. 12. 08:41

Java 7의 자바 Module System 좋아하는 것2008. 4. 12. 08:41


틈틈히 OSGi를 공부하기 위해서, 여러 사이트를 돌아다니면서, 알지 못했던것들을 배우게 된다. 친절하게도 자세하게 설명해주신 모든 분께 감사드린다.(사실 친분은 없지만, 그래도...)

http://www.osgian.com/ 의 자바 모듈 시스템 이라는 글을 보면 자바 7의 새로운 모듈 시스템에 대한 글이 있다. 기존의 자바의 모듈 시스템은 몇 가지 문제점을 안고 있다.

   [기존의 문제점]
    1. 제한된 Scoping Mechanisms
    2. 기본적이고 제한된 기능의 버전관리
    3. 모듈간 의존선(Implicit Dependency)문제
    4. 패키지에서이 단순한 Class path 관리
    5. 불분명한 Class Space Consistency

이러한 문제들은 자바 플랫폼에서의 모듈이라는 실행단위가 명확하지 않기때문이라고 결론을 내리고 있다.(위의 자바 모듈 시스템 링크 참조)
그래서 JSR 277을 통해 이를 개선하려 하고 있다.

    [문제점의 개선사항]
    1. 버전관리(Version Management)
    2. 배포(Distribution) 및 패키징 (Packaging)
    3. 새로운 저장소 (New Repository)
    4. 모듈간 공유 및 연결성 (Module Interconnection)


이는 OSGi 모델을 자바 플랫폼에서 구현하려는 노력의 결과물인데, 이로 이해서 기존에 사용되고 있던, .jar 포맷의 파일은 .jam 포맷의 새로운 파일을 탄생시키게 된다.
물론 이는 자바 7 을 통해서 반영될 수 있을 것이다.

자바는 진화하는 언어임이 분명하다!

:
Posted by 행복상자