자바/Web2009. 6. 24. 11:34
JQuery를 이용해서 특정 페이지를 div 태그로 로딩해 올때 히스토리에 쌓이지 않아 뒤로가기/앞으로가기 버튼이 전혀 먹지 않게 된다. 혹시나 해서 검색해 봤더니 쓸만한 플러그인이 있었다.

JQuery 홈페이지에도 소개되어 있는 History 관련 plug-in은 두개인데 

History/Remote by Klaus Hartl 와 Ajax History by Taku Sano 이다.

해당 페이지로 가면 관련 소스와 js 파일 데모 화면을 볼수 있는데

History/Remote는 문제가 좀 있다. Firefox와 Crome 에서는 문제 없이 돌았는데 IE8에서는 뒤로가기를 두번해줘야 한다.

그래서 찾은게 Ajax History... 이쪽은 업데이트가 활발하다... 그런데 이건 제대로 돌지를 않는다. 

문제를 찾아보면 되는데 밤새 작업했더니 피곤해서 찾기도 싫다. 뭐 조만간 업데이트가 되겠지.. -_-

그냥 History/Remote 쓰기로 했다... 이게 헐씬 사용하기도 편하다. ^^


Posted by 양군이당

댓글을 달아 주세요

자바/Web2009. 6. 24. 02:48
뭐 이런걸 다시 한번 쭈욱 만들어 보는건 예전부터 생각해오던 문제긴 했는데

실천은 한적이 없는것 같다.. 그래서 남은 소스도 별로 없고... ㅡ_ㅡ

학교가 끝나기 전에 그래도 뭔가 좀 끄적거려 놔야 나중에 하나씩 붙여가면서라도 만들수 있을 것 같아서

공부를 다시 시작했다. 웬지 마음 먹으니까 불붙어 올라서 ㅡ_ㅡ;;; 계속 계속 자료 검색하고

장단점 비교해 보고 하다 보니 시간 정말 잘 간다...

암튼 이것들을 만드는데 편하고 빠르고 효율성 좋게 개발하려다 보니 Framework을 써야 하겠고

요즘 대세가 Framework 사용이고 이런 것들을 해놔야 나중에 먹고 살기도 편할듯 해서 이래 저래 고민하고 있다

기본 Web Framework은 Struts, Spring, 혹은 이 둘의 조합을 생각하고 있다. 

struts는 간단하고 빠르게 웹 개발할 수 있는 장점이 있고 Spring은 웹개발 뿐만이 아닌 객체 관리부터 MVC 까지 다양하고 광범히 하게 쓰이며 세부적인 개발이 가능하다... 하지만 그만큼 복잡하지.. ㅡ_ㅡ

Persistance 쪽도 좀 고민인게... 처음엔 아무 생각없이 iBatis를 선상에 올려놨었다.. 

예전에 써보기도 했고 성능도 좋은 편이고 해서... 그런데 이게 참 고민되는게 JPA도 관심이 있어서 그쪽도 계속 보게 되더라..

iBaits는 쿼리를 직접 컨트롤 가능하고 캐싱 기능부터 다양한 기능을 수행하는데 JPA는 POJO 기반의 클래스와

1:1 매핑을 Annotation을 통해 가능하게 하는 매력적인 넘이고 앞으로 주목받을 만한 기술이라 고민이다.. ㅡ_ㅡ

그리고 빼놓을수 없는 Ajax 이넘도 요즘 Web 2.0이 반짝하는 시대라 덩달아 아주 중요해졌다...

요즘 각종 자바스크립트 프레임웍이 난무하는데 물망에 올린건 Prototype, JQuery, ExtJs 였다

ExtJs 는 유료기 떄문에 이래 저래 좀 피곤할 듯 하고.. ㅡ_ㅡ;;

그래서 본게 Prototype 인데 이넘이 매력적인게 꼭 자바같다.. ㅡ_ㅡ OOP 개념이 거의 다 녹아들어가 있고

Ajax 통신에서 원하는 대부분을 지원하고 여러모로 맘에 들었다.

그런데 요즘 주변 얘기도 들어보고 했을때 JQuery가 상당히 뜨고 있는 상황이라는 얘기를 들었고 실제 뒤져보니

각종 UI 콤포넌트부터 시작해서 쉽고 빠르게 접근할수 있는 장점이 있었다...

지금 생각엔 죄다 짬뽕을 해서 쓸 생각도 한다.

Spring + Struts + JPA(or iBatis) + JQuery를 메인으로 필요할때 Prototype 곁다리로... 

대충 이렇게 버무리면 개발시간도 많이 단축될것 같다...

아... 사이트 신나게 디벼보고 있었더니 시간 정말 빨리 간다...

이렇게 대충 보고 시작하면 항상 내가 뭐 하려고 할때 뭔가 부족하던데... ㅡ_ㅡ;;

암튼 열심히 공부해보자...



Posted by 양군이당

댓글을 달아 주세요

자바/Web2009. 6. 2. 05:20
웹 프로그래밍질을 하다 보니 가끔 헷갈려서 정리한다. 

프로그래밍 하다 보면 프레임웍을 쓰기도 하고 안쓰기도 하고.... 호출 하는 것이 특정 Servlet, Action, JSP 등일때

이것들에서 사용하는 View 단에서는 CSS, JS, Image 등을 거의 필연적으로 가져다 쓰게 되는데

이넘들의 경로가 참 애매하더라... 그래서 한번에 정리하기로 맘 먹었다...

지금은 Struts2 기반의 프로젝트를 하고 있는데 이곳에서 사용하는 View 영역에서 JS 와 CSS, Image의 기준 경로가

몇번 헷갈렸는데 명확하게 해결했다.

Action의 Result인 JSP 파일에서 CSS, JS, Image 등을 가져다 쓸때는 [http://host:port/ContextPath] 부터 시작하게 된다.

결과적으로 무조건 ContextRoot를 기준으로 경로를 설정해 주면 된다.

이때 또 하나 헷갈려서 애를 먹였던 것이 CSS 에서 사용하는 아이콘이나 백그라운드 이미지다.

CSS 에서 사용하는 경로의 경우는 무조건 CSS 파일 자신이 기준이다.

자신을 기준으로 사용하는 이미지등이 어디 있는지 상대경로로 표시해주면 정확하게 맞아 떨어진다.

다음부터는 헷갈리지 말아야지.. ㅡ_ㅡ;
Posted by 양군이당
TAG CSS, image, js, Web, 경로

댓글을 달아 주세요

사진2009. 2. 8. 20:55
일주일에 잘 해야 하루 정도 놀아주는데도

우리 은서는 무럭무럭 자란다... 장난도 잘 치고 애교도 만땅... 요즘 얼마나 이쁜지 몰라... >_<

NIKON D300 | Aperture priority | Spot | 1/40sec | F/3.5 | 18.0mm | ISO-800


NIKON D300 | Aperture priority | Spot | 1/60sec | F/3.5 | 22.0mm | ISO-800
NIKON D300 | Aperture priority | Spot | 1/100sec | F/4.0 | 18.0mm | ISO-800

크크 과자 먹는 입모양 정말 압권이당!!!

'사진' 카테고리의 다른 글

불량아빠 한테서도 은서는 잘 큰다.  (1) 2009.02.08
에버랜드 고고싱 (2008-11-02)  (0) 2008.12.04
용문산 단풍구경 (2008-10-18)  (0) 2008.12.04
은서가 이만큼 컸당!  (2) 2008.11.06
은서 100일 사진  (2) 2008.06.26
은서 50일 사진  (1) 2008.06.26
Posted by 양군이당
TAG 과자, 은서

댓글을 달아 주세요

  1. ㅋㅋㅋ 은서 피부봐~~
    넘예쁘당^^

    2009.04.14 13:14 신고 [ ADDR : EDIT/ DEL : REPLY ]

자바2009. 2. 5. 18:38
드디어 컨퍼런스의 홍보 이미지가 나왔다... 크...

몇달 동안 고생한 결실이 이루어 지려납다...

관심 있는 사람은 꼭 꼭 참석하길...

 
행사 종합 안내 스케줄 빌더, 바코드 사용, 입장, 오시는 방법 및 장소 안내 등
행사에 대한 종합적인 정보가 안내됩니다. (안내 페이지 바로 가기)
강의 안내 이번 강의는 생경하신 강의도 있고, 제목만으로는 강의 내용을
예측하지 못 하는 강의도 있습니다.
강의 상세 정보 페이지와 강의 안내 페이지를 꼭 방문해주세요
경품·이벤트 안내 이번 컨퍼런스의 테마는 축제입니다. 아쉽게도 축제로서
많은 장치를 준비하지는 못 했습니다. 하지만, 여러 이벤트를 준비
했사오나 많은 참여를 부탁 드립니다. (이벤트 안내)
또한, 컨퍼런스의 또 다른 재미가 경품 추첨이죠?
경품 목록을 확인하셔서 많은 경품 받아가시길 바랍니다. (경품 안내)
역대 회장님 인터뷰 10회 컨퍼런스를 준비하면서 역대 회장님(현 고문님) 인터뷰
현재 회장님 인터뷰를 했습니다. 많은 관심 바랍니다.
 

'자바' 카테고리의 다른 글

12회 한국 자바 개발자 컨퍼런스  (5) 2012.01.26
객체를 Json 형태로 출력하기  (6) 2010.05.23
제10회 한국자바개발자 컨퍼런스  (0) 2009.02.05
Posted by 양군이당

댓글을 달아 주세요

내맘대로2009. 1. 5. 00:55
노트북이 미치미치해서 다시 깔면서 램디스크를 잡으면서 cache 디렉토리 변경에 대한 검색질이 귀찮아

정리하기로 마음먹었다... 자 그럼 시작!



1번타자 요즘 부쩍 점유율을 높이고 있는 파폭 선수!!

주소창에 about:config 를 치고 고급 설정 확인 누르고 들어가면 아래와 같은 화면이 나오는데

여기서 마우스 오른쪽 버튼 누르고 새로 만들기 > 문자열 한 후

나오는 창에 차례로 browser.cache.disk.parent_directory     -       cache 경로 를 넣으면 캐시 디렉토리 변경 완료



2번타자 구글의 야심작 크롬!!

아주 가볍고 색다른 기능과 편의 기능을 갖춘 신생 브라우저당!!

이넘은 비교적 간단...

Google 크롬 바로가기 아이콘에서 오른쪽 버튼 누르고 속성 창 하면 아래 그림!!

대상 칸에 제일 마지막 위치로 이동 후 --user-data-dir="경로" 를 추가해 주면 완료!!

추가)
위와 같이 --user-data-dir="경로" 를 할 경우 Ramdisk가 clear 되었을때 그동안 사용했던 사용자 정보 북마크가 날아간다

그래서 재검색!! --disk-cache-dir="경로" 와 같이 하면 사용자 데이터는 하드디스크에 저장되므로 설정은 문제없고

캐시만 램디스크를 사용하게 된다.



마지막으로 IE 뭐 워낙 막강한 점유율을 보유하고 있고 cache 디렉토리 변경도 간단!!

도구 -> 인터넷 옵션 -> 일반 -> 검색기록에 설정 버튼

위에까지 완료하면 아래와 같은 창에서 폴더 이동 하면 완료!!



Posted by 양군이당
TAG Browser, cache

댓글을 달아 주세요

내맘대로2008. 12. 23. 02:37

우리 은서가 태어난지 벌써 1년이 다 되어 간다...

2008년 1월 2일 태어나서 벌써 일년... 100일까지는 밤 낮이 바뀐 것 때문에 수면 부족이 일어나게 하더니

그 후로는 특별히 아픈데도 없이 잘 버티다가 얼마전에 원인불명 선천성 고관절 탈구라는 넘이 은서한테 찾아왔다

무려 3개월을 깁스하고 1년동안 보정기를 차고 있어야 한단다.. ㅡ_ㅡ;; 무려 15개월...

판정 받기 전까지도 아빠 엄마 말하고 혼자 잡고 일어나서 재롱 떨고 걷기까지 하는 한참 이쁠때 이렇게 되고나니

마음이 심히 아팠다... ㅠ_ㅠ

그래서 돌잔치도 취소할까 했는데 그래도 첫아이고 해주고 싶은 맘에 강행군...

다행히 은서가 깁스하고 잘 적응하고 있어서 그나마 불행중 다행이랄까?

한복입은 사진은 깁스하기 전 사진.. 이 사진도 다행히 깁스하기 전에 찍은;;;;

NIKON D300 | Aperture priority | Center-weighted average | 1/60sec | F/5.6 | 29.0mm | ISO-200


NIKON D300 | Aperture priority | Center-weighted average | 1/60sec | F/5.6 | 31.0mm | ISO-200


NIKON D300 | Aperture priority | Center-weighted average | 1/60sec | F/5.6 | 29.0mm | ISO-200



울 이쁜 은서 첫 돌잔치 인포메이숑~*

일시 : 2008년 12월 27일 토요일 늦은 6시

장소 : 분당 정자역 3번출구 오페라 하우스




Posted by 양군이당

댓글을 달아 주세요

내맘대로2008. 12. 17. 01:22
이번 WoC에도 JCO 에서 지원을 한다...

이런것도 WoC를 돕는 거겠지? ^^

About WoC
Posted by 양군이당

댓글을 달아 주세요

자바/Web2008. 12. 15. 20:29

기고한지 한달이 지나서 SDN에 올라와서 1.0 정식 버전이 발표된 후에야 이 글을 오픈한당. ㅡ_ㅡ;;

암튼 고고고~~~



필자는 작년부터 Web 2.0과 함께 부상한 RIA(Rich Internet Application)에 대해 귀가 따갑게 들어왔다. 필자가 현재 몸담고 있는 JCO내에서도 JCO가 직간접적으로 관여하는 각종 세미나 및 행사에서도 RIA는 큰 화두였으며 지금까지도 관심을 끄는 이슈로 부각되고 있다. 이런 이슈에 호응(?)하기 위해 Sun, Adobe, MS에서 JavaFX, Flex, Silverlight 라는 삼총사를 내놓았다. 세가지를 비교하는 것도 재미있는 일이겠지만 본인은 자바 프로그래머로만 10년 가까이 먹고 살았다. Silverlight는 어떤 것 이라는 것만 아는 편이고 Flex는 약간 끄적거려 보았다. 결국 가장 자신있는 Java 진영에서 나온 JavaFX 를 다루어 보기로 했다.

 

JavaFX를 처음 접한 것은 2007 JavaOne 이 끝난 후였다. 국내 유일의 자바 챔피언인 양수열 고문이(참고로 본인의 친형이다) JavaOne이 끝나고 귀국하고 만난 자리에서 JavaFX가 앞으로 엄청난 발전을 할 것이라고 흥분해서 말했던 기억이 있다. 그 후 몇 가지 관련된 글을 보았었고 2008 JavaOne에 운이 좋게 참석하게 되어 다시 보게 된 JavaFX는 정말 놀라울 정도로 발전해 있었다. 예전에 간단한 Flash ActionScript 같았던 모습에서 Multimedia 쪽이 대폭 강화되어 수많은 동영상이 화면에 Display되면서 자유롭게 떠도는 Demo를 보고 그 놀라운 Performance에 놀라움을 금치 못했다. 그러면서도 Demo가 일반적인 PC에서도 저만큼 가능할까?’ 라는 의문이 들었다. 그래서 결국 만들어 보게 되었으니

 

시작하기

JavaFX를 처음 접하면서 느낀점은 JavaFX 문법이 JavaScript와 상당히 닮아 있다는 점이었다. JavaScript Java의 절묘한 짬뽕(?)이랄까? JavaFX Application을 물론 메모장으로도 개발할 수 있지만 IDE에 길들여진 개발자들이 메모장으로 개발할리가 없다. 그리고 JavaFX를 전면에 내세운 Sun에서도 개발자들이 편하고 능률적으로 개발할 수 있도록 NetBeans 최신버전에 JavaFX plugin을 추가해 놓았다. 이전에는 JavaFX Pad라는 응용 프로그램을 활용했었으나 좀 더 융통성있고 편하게 개발할 수 있도록 NetBeans에 통합해 놓은 것이다. JavaFX Pad에서와 같이 Source Edit 창에서 코드를 변경하면 위쪽 Preview 영역에서 바로 변경된 결과물을 볼 수 있고 오른쪽 팔레트를 이용해 각종 콤포넌트나 노드 이벤트 등을 원클릭으로 소스에 적용할 수 있다.

NetBeans JavaFX plugin 설치는 신상철 박사님이 운영하시는 JavaPassion을 참고하면 편하게 설정할 수 있다. (http://www.javapassion.com/handsonlabs/javafx_basics1/)

 




[JavaFX plugin을 설치하고 실행중인 모습]

본론으로

JavaFX를 이용해 Multimedia 파일을 컨트롤 하기 위해 필요한 정보와 샘플들을 우선 수집하였다. 일차적으로 Sample Code를 몇 개 받아 mp3 파일을 재생하는 테스트 코드를 만들었을 때 mp3 파일은 아주 잘 재생되었다. 하지만 동영상 파일로 바꾸었을 때는 아래와 같은 에러를 발생시켰다.




FX Media Object caught Exception com.sun.media.jmc.MediaUnsupportedException: Unsupported media: file:/D:/Projects/NetBeans/SimpleMovie/build/classes/simplemovie/SoHot.avi

    source ='file:/D:/Projects/NetBeans/SimpleMovie/build/classes/simplemovie/SoHot.avi'

 

Exception의 이름으로 인해 해당 동영상 파일이 FX 에서 지원하지 않는 Media 형식인걸 확인하였고 빠르게 손가락은 구글링을 하여 JavaFX가 지원하는 미디어 포멧을 찾아내었다.

 

JavaFX Media 지원타입

  Container Types:

  ASF (Advanced Systems Format),MPEG-1, AVI (Audio-Video Interleaved),WAVE, MIDI (Standard MIDI)

  Encoding Types:

  WMAUDIO8 (WindowsMedia Audio 2/7/8),WMSCREEN (Windows Media Screen), WMVIDEO9 (Windows Media Video 9), Voxware, MS MPEG-4, WMVIDEO7 (Windows Media Video 7), MPEG11 Video, MPEG-1 Audio, Uncompressed video (RGB/YUV/RLE), PCM, ADPCM, MP3, MIDI

  Protocol Types:

  HTTP, FILE

  Known not to work at present are media with DRM (Digital Rights Management), and media played directly from DVD or CD.

 

Multimedia 파일을 컨트롤 하기 위해서는 항상 Codec이 문제인데 JavaFX에서는 생각보다 많은 종류의 Codec을 지원해주어 특별히 Codec에 신경 쓰지 않아도 되었다. (물론 가지고 있는 많은 수의 동영상은 실행되지 않았다.)

 

몇 가지 문제를 잡아나가면서 만들어 낸 결과물은 CustomNode를 사용해 재사용할 수 있는MediaViewNode를 만들었고 Timeline을 이용해 이 Node Animation 효과를 보여주는 프로그램을 만들어 보았다. 아래 소스를 실행하면 0.2 배율 스케일의 동영상 화면이 정지된 채로 실행되고 클릭시 회전하며 원래 비율로 커지고 실행되는 프로그램이다.

 

 

Source

/*

 * Main.fx

 *

 * Created on 2008. 11. 8, 오후 1:29:49

 */

 

package simplemovie;

 

import javafx.ext.swing.*;

import javafx.scene.*;

import javafx.scene.media.*;

import javafx.scene.effect.*;

import javafx.scene.paint.Color;

 

/**

 * @author eclips

 */

SwingFrame {

    title: "Movie Player"

    width: 800

    height: 600

    closeAction: function() {

        java.lang.System.exit( 0 );

    }

    visible: true

 

    menus: [  ]

 

    content: Canvas {

        width:800

        height:600

        background: Color.WHITE

        content: [

            MediaViewNode {

                // {__DIR__}은 클래스 파일이 있는 디렉토리이다

                mediaURL: "{__DIR__}Nobody.avi"

                viewX: 10

                viewY: 10

            }

        ]

    }

}

 

/*

 * MediaViewNode.fx

 *

 * Created on 2008. 11. 8, 오후 6:48:47

 */

 

package simplemovie;

 

/**

 * @author eclips

 */

 

import java.lang.System;

 

import javafx.scene.CustomNode;

import javafx.scene.*;

import javafx.input.*;

import javafx.scene.media.*;

import javafx.scene.effect.*;

import javafx.scene.paint.Color;

import javafx.scene.geometry.*;

import javafx.scene.transform.*;

import javafx.animation.Timeline;

import javafx.animation.KeyFrame;

import javafx.animation.Interpolator;

 

public class MediaViewNode extends CustomNode {

    /**

     * 동영상 화면의 X Sacle

     */

    public attribute viewScaleX:Number = 0.2;

   

    /**

     * 동영상 화면의 Y Scale

     */

    public attribute viewScaleY:Number = 0.2;

   

    /**

     * MediaViewNode의 회전 반경

     */

    public attribute rotation:Number = 0.0;

   

    public attribute viewX:Number = 50;

    public attribute viewY:Number = 40;

   

    /**

     * 현재 활성화 여부

     */

    private attribute actived:Boolean = false;

    /**

     * 현재 Animation 중인지 여부

     */

    private attribute moving:Boolean = false;

   

    private attribute media:Media;

    private attribute mediaView:MediaView;

   

    private attribute strokeColor:Color = Color.DARKGRAY;

   

    // 동영상 미디어 객체 URL

    public attribute mediaURL:String on replace {

        media = Media {

            source: mediaURL

        };

    }

   

    // Media Player 객체

    private attribute player =

        MediaPlayer {

            media: media,

            autoPlay: false

        }

 

   

    private attribute choiceTimeLine =

    Timeline {

        keyFrames : [

            KeyFrame {

                time: 0ms

                values: [

                    viewScaleX => 0.2,

                    viewScaleY => 0.2,

                    viewX => 10,

                    viewY => 10,

                    rotation => 0.0,

                    moving => true

                ]

            },

            KeyFrame {

                time : 500ms

                values: [

                    viewScaleX => 1.0 tween Interpolator.LINEAR,

                    viewScaleY => 1.0 tween Interpolator.LINEAR,

                    viewX => 40 tween Interpolator.LINEAR,

                    viewY => 40 tween Interpolator.LINEAR,

                    rotation => 360 tween Interpolator.LINEAR,

                    moving => false

                ]

                action: function():Void {

                    player.play();

                    mediaView.toFront();

                    actived = true;

                }

            }

        ]

    };

   

    private attribute unchoiceTimeLine =

    Timeline {

        keyFrames : [

            KeyFrame {

                time: 0ms

                values: [

                    viewScaleX => 1.0,

                    viewScaleY => 1.0,

                    viewX => 40,

                    viewY => 40,

                    rotation => 360,

                    moving => true

                ]

            },

            KeyFrame {

                time : 500ms

                values: [

                    viewScaleX => 0.2 tween Interpolator.LINEAR,

                    viewScaleY => 0.2 tween Interpolator.LINEAR,

                    viewX => 10 tween Interpolator.LINEAR,

                    viewY => 10 tween Interpolator.LINEAR,

                    rotation => 0.0 tween Interpolator.LINEAR,

                    moving => false

                ]

                action: function():Void {

                    player.pause();

                    mediaView.toBack();

                    actived = false;

                }

            }

        ]

    };

   

    public function create():Node {

        Group {

            content: [

                this.mediaView = MediaView {

                    mediaPlayer: player

                    scaleX: bind viewScaleX

                    scaleY: bind viewScaleY

                    translateX: bind viewX

                    translateY: bind viewY

                    transform: bind [Transform.rotate(rotation,200,150)]

 

                    onMouseEntered:

                        function(me:MouseEvent):Void {

                            strokeColor = Color.BLACK

                        }

                    onMouseExited:

                        function(me:MouseEvent):Void {

                            strokeColor = Color.DARKGRAY

                        }

                    onMouseClicked:

                        function(me:MouseEvent):Void {

                            System.out.println("clicked => " + actived);

                            if(moving == false) {

                                if(actived) {

                                    unchoiceTimeLine.start();

                                    System.out.println("inactive - " + viewScaleX);

                                }

                                else {

                                    choiceTimeLine.start();

                                    System.out.println("active - " + viewScaleX);

                                }

                            }

                        }

                },

                Rectangle {

                    width: 708

                    height: 472

                    scaleX: bind viewScaleX

                    scaleY: bind viewScaleY

                    translateX: bind viewX

                    translateY: bind viewY

                    stroke: strokeColor

                    strokeWidth: 10

                    transform: bind [Transform.rotate(rotation,200,150)]

 

                    onMouseEntered:

                        function(me:MouseEvent):Void {

                            strokeColor = Color.BLACK

                        }

                    onMouseExited:

                        function(me:MouseEvent):Void {

                            strokeColor = Color.DARKGRAY

                        }

                }

            ]

        }

    }

}

 

 

실행 결과

 

Clip을 클릭하면 해당 동영상 클립이 회전하면서 1:1 스케일로 커지면서 동영상이 실행된다.

 

 

아쉬운 것들

l  JavaFX Document의 부실함

n  작업을 위해 다운 받아 펼쳐본 Document는 한마디로 부실함이었다. 물론 아직 초기 버전이라 그런 것이라 생각되지만 현재의 Document는 그냥 어떤 것이 있다는 것을 설명하기 위해 만들어 놓은 수준이라고 봐야 할 것 같다. JDK SE 버전의 Document에 비하면 정말 완성도가 떨어졌다.

l  NetBeans JavaFX plugin

n  미디어 이름에 한글이 들어가거나 공백이 있을 경우 실행시 에러가 발생한다.

n  실시간으로 코딩시 에러 내용이 표시되는데 간혹 이런 에러 내용이 잘못 표시되는 문제

n  미디어의 이름을 바꿀 경우 간혹 미디어 적용이 안되 Rebuild 해야하는 불편함

n  소스에서 사용되는 클래스에 대해 자동으로 import 되지 않는 불편함

 이런 문제들은 앞으로 JavaFX 1.0 정식 버전이 나오고 plugin이 업그레이드 되면서 점점 좋아질 것이라고 생각하지만 아직까지는 약간의 불편함을 감수하고 개발해야 한다.

 

JavaFX로 간단한 동영상 실행 Application을 만들면서 어떻게 이렇게 간단할 수 있지? 하는 생각이 들었다. 이해하기 쉬운 코드 몇 줄로 꽤 대단한 애니메이션 효과를 줄 수 있었고 동영상 플레이도 코드 몇 줄로 끝났다. 자바 Application으로 만들려 했으면 엄청난 소스 코드 속에서 헤메야 간신히 나올만한 프로그램을 JavaFX의 스크립트 몇 줄이 해낸것이다. 물론 이런 힘이 JavaFX 에만 있는 것이 아니다. JavaFX가 경쟁하고 있는 Flex Silverlight도 비슷한 수준으로 지원하고 있거나 더 월등히 앞선 기능과 툴을 지원하고 있기도 하다. 지금 현재도 간단한 Application은 만들기 너무 쉽지만 정식 버전이 나올 시점이 되면 지금보다 모든 면에서 더욱 편하고 강력해져야 할 거라고 생각한다. 위쪽에서 지적한대로 Document도 현재 JDK 만큼 완성도가 높아져야 하며 IDE의 발전과 JavaFX가 적용될 수 있는 Platform도 더욱 넓어진다면 다양한 분야에서 JavaFX 가 활약하는 것을 볼 수 있을거라 생각한다.

 

참조사이트

http://www.javapassion.com/javafx/

http://www.javafx.com

http://java.sun.com/javafx/index.jsp

http://openjfx.dev.java.net

 

Posted by 양군이당

댓글을 달아 주세요

자바/Web2008. 12. 9. 17:19
아직 SDNKorea blog 에 올라가진 않았지만 JavaFX 를 이용해 동영상을 실행하는 글을 기고 했다.

해당 원고를 쓸때까지만 해도 JavaFX 가 정식이 아니었는데 오늘 간만에 들어가서 둘러보니

1.0 정식 버전이 릴리즈 되었다.

정식 전버전에는 정말 눈물날 정도로 API가 부실하고 자료도 없었는데

이번에 정식 릴리즈 되면서 다양한 샘플과 코드가 제공되고 무엇보다 달랑 한줄이나 설명도 안 붙어 있던 API가

정식으로 뜨면서 많이 정리가 되었다...

차라리 1.0 나온 다음에 기고를 할걸 그랬납다... ㅡ_ㅡ;;

JavaFX Script는 YahooUI 스크립트와 상당히 유사하게 닮아 있는데 이녀석이 Swing쪽과 짬뽕되면서

좀 더 복잡해져버려서 많이 헷갈렸는데 그나마 이제 API도 정리되고 샘플도 많이 생겨서 다행이다.

아래는 새로 나온 JavaFX 데모 캡쳐...




'자바 > Web' 카테고리의 다른 글

Web Project 에서 View에서 사용하는 파일에 대한 경로 설정 기준  (0) 2009.06.02
[SDN 기고] JavaFX 와 Multimedia  (0) 2008.12.15
드디어 JavaFX 1.0 정식 Release...  (0) 2008.12.09
Eclipse Ganymede 출동~  (0) 2008.07.02
JSON  (0) 2008.06.26
JSON vs XML  (0) 2008.06.26
Posted by 양군이당
TAG 1.0, JAVAFX

댓글을 달아 주세요