<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>Java Barista</title>
<link>http://javba.tistory.com/</link>
<description>임베디드 자바 + 자바FX + 테크뉴스</description>
<language>ko</language>
<pubDate>Tue, 31 May 2016 11:00:08 +0900</pubDate>
<generator>TISTORY</generator>
<managingEditor>javafxkor</managingEditor>
<item>
<title>팀블로그 운영을 중단합니다.</title>
<link>http://javba.tistory.com/24</link>
<description>안녕하세요.&lt;div&gt;
마지막 인사 드립니다.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
저는 원래 1년정도 전부터 자바FX를 주제로 블로깅을 시작했었고&lt;/div&gt;
&lt;div&gt;올해 들어와서 팀블로그를 운영하자는 제안을 받아서 이쪽으로 옮겨와서 블로깅을 하게되었습니다.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
사실 이 블로그는 실험적인 시도였고 참여하는 분들도 특별한 규칙이나 제한없이 자유롭게 운영하기로 하였습니다.&lt;/div&gt;
&lt;div&gt;여러가지 이유들이 있지만 어찌되었든 처음에 생각만큼 운영이 잘되고 있지도 않고&lt;/div&gt;
&lt;div&gt;참여 의사를 밝히셨던 분들도 글 포스팅을 제대로 못하고 있어서 블로그 운영을 중단하기로 결정하였습니다.&lt;/div&gt;
&lt;div&gt;사실 얼마 안되는 글이지만 혹시라도 도움이 되실 분들이 있으실 것 같아서&lt;/div&gt;
&lt;div&gt;블로그를 삭제 하지 않고 이미 포스팅된 글들은 그대로 두도록하겠습니다.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
블로그와 같이 운영하던 트위터 계정 @javbateam도 운영이 중단됩니다.&lt;/div&gt;
&lt;div&gt;(이건 계정 삭제가 될 수 있습니다.)&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
더불에 @javafxkor 계정도 일단 운영 중지하겠습니다.&lt;/div&gt;
&lt;div&gt;일단 저도 좀 휴식기를 가지고 자바FX에 대한 소식을 계속 전해야 할지 나중에 다시 고민해 보도록 하겠습니다.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
다음에는 더 좋은 모습으로 뵐 수 있도록 할께요.&lt;/div&gt;
&lt;div&gt;팀블로거를 대표해서 javafxkor가 인사드립니다.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;a href=&quot;http://creativecommons.org/licenses/by-nc-nd/4.0/deed.ko&quot; target=&quot;_blank&quot; style=&quot;text-decoration: none&quot;&gt;
	&lt;img id=&quot;ccl-icon-24-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-24-1&quot; class=&quot;entry-ccl-nc&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/static/admin/editor/ccl_black02.png&quot; alt=&quot;비영리&quot;/&gt;
	&lt;img id=&quot;ccl-icon-24-2&quot; class=&quot;entry-ccl-nd&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/static/admin/editor/ccl_black03.png&quot; alt=&quot;변경 금지&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
	&lt;/a&gt;
&lt;/div&gt;
</description>
<author>javafxkor</author>
<guid>http://javba.tistory.com/24</guid>
<comments>http://javba.tistory.com/24#entry24comment</comments>
<pubDate>Wed, 29 Sep 2010 13:09:45 +0900</pubDate>
</item>
<item>
<title>Visage - 자바FX 스크립트의 새로운 이름</title>
<link>http://javba.tistory.com/23</link>
<description>사실 &lt;a href=&quot;http://javba.tistory.com/22&quot; target=&quot;_self&quot; title=&quot;[http://javba.tistory.com/22]로 이동합니다.&quot;&gt;어제 포스팅한 글&lt;/a&gt;이 마지막이 될 것으로 생각했는데&amp;nbsp;이왕 포스팅하는 김에 새로운 소식이 있어서 추가합니다.&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
자바FX 스크립트(JavaFX Script) 컴파일러는 오픈소스로 공개가 되어 있고 더이상 Sun/Oracle에서는 개발을 하지 않습니다.&lt;/div&gt;
&lt;div&gt;
이것을 가지고 Stephen Chin이라는 자바FX 커뮤니티 리더가 새로운 오픈소스 프로젝트를 만들었습니다.&lt;/div&gt;
&lt;div&gt;(참고로 자바FX 는 Sun/Oracle에서 계속 개발하고 있고 자바FX 스크립트 언어 개발만 중단되었으니 오해하지 마시기 바랍니다)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
Visage라는 새로운 이름을 가지고 더 이상 Sun/Oracle과 상관없이 커뮤니티에서 이 언어의 컴파일러를 계속 개발할 계획입니다.&lt;/div&gt;
&lt;div&gt;
일단 첫번째 목표는 JavaFX 2.0에서 지원할 Java API를 Visage를 통해서 사용가능하도록 만드는 것입니다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
혹시라도 잘 모르시는 분들을 위해 자바FX 스크립트는 컴파일러를 통해서 바이트 코드(Byte Code)로 컴파일되고 일반 자바프로그램과 동일하게 JVM(Java Virtual Machine)에서 수행하는 구조였습니다.&lt;/div&gt;
&lt;div&gt;
현재 개발에 참여할 개발자를 모집 중 입니다.&lt;/div&gt;
&lt;div&gt;
구글 그룹도 운영하고 있으니 관심 있으신 분들은 등록하시기 바랍니다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
자세한 소식은 아래 링크에서 확인 가능합니다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://steveonjava.com/accouncing-visage/&quot; target=&quot;_blank&quot; title=&quot;[http://steveonjava.com/accouncing-visage/]로 이동합니다.&quot;&gt;Announcing Visage - The DSL for Writing UIs&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://visage-lang.org/&quot; target=&quot;_blank&quot; title=&quot;[http://visage-lang.org/]로 이동합니다.&quot;&gt;Visage 프로젝트 홈페이지&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;a href=&quot;http://creativecommons.org/licenses/by-nc-nd/4.0/deed.ko&quot; target=&quot;_blank&quot; style=&quot;text-decoration: none&quot;&gt;
	&lt;img id=&quot;ccl-icon-23-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-23-1&quot; class=&quot;entry-ccl-nc&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/static/admin/editor/ccl_black02.png&quot; alt=&quot;비영리&quot;/&gt;
	&lt;img id=&quot;ccl-icon-23-2&quot; class=&quot;entry-ccl-nd&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/static/admin/editor/ccl_black03.png&quot; alt=&quot;변경 금지&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
	&lt;/a&gt;
&lt;/div&gt;
</description>
<category>Flavored Java</category>
<author>javafxkor</author>
<guid>http://javba.tistory.com/23</guid>
<comments>http://javba.tistory.com/23#entry23comment</comments>
<pubDate>Wed, 29 Sep 2010 12:49:42 +0900</pubDate>
</item>
<item>
<title>'자바FX 스크립트'언어는 죽고 자바FX는 2.0으로 재탄생한다.</title>
<link>http://javba.tistory.com/22</link>
<description>추석연휴 때 있었던 JavaOne 2010행사에서 공식적으로 발표가 되었습니다.&lt;div&gt;
기존에 자바FX는 유일하게 자바FX 스크립트(JavaFX Script) 언어를 통해서만 사용이 가능했습니다.&lt;/div&gt;
&lt;div&gt;
앞으로 자바FX 스크립트는 더 이상 개발하지 않고 자바FX 2.0 버전부터는 Java 및 JVM에서 실행가능한 모든 언어에서 직접 자바FX를 사용가능할 수 있도록 바뀌게 되었습니다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
자바FX 2.0의 릴리즈 시점은 2011년 3분기 입니다.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
[업데이트] 일단 JavaOne에서 발표한 JavaFX 2.0 데모영상을 한 번 보시죠.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;object width=&quot;640&quot; height=&quot;385&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/UXSmJYFrulY?fs=1&amp;amp;hl=ko_KR&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/UXSmJYFrulY?fs=1&amp;amp;hl=ko_KR&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;640&quot; height=&quot;385&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
앞으로 자바FX 모바일 버전은 지원을 안 할 계획입니다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
결국 자바FX는 데스크탑에서 스윙을 이어갈 차세대 UI 프레임워크로 끌고 가는 것 같네요.&lt;/div&gt;
&lt;div&gt;
대략적은 로드맵은 다음 링크에서 확인 가능합니다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://javafx.com/roadmap/&quot; target=&quot;_blank&quot; title=&quot;[http://javafx.com/roadmap/]로 이동합니다.&quot;&gt;http://javafx.com/roadmap/&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
또한 관련해서 추가적인 내용은 아래 블로그에서 확인가능합니다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
[Richard Blair]&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://fxexperience.com/2010/09/javafx-2-0/&quot; target=&quot;_blank&quot; title=&quot;[http://fxexperience.com/2010/09/javafx-2-0/]로 이동합니다.&quot;&gt;JavaFX 2.0&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://fxexperience.com/2010/09/swing-integration/&quot; target=&quot;_blank&quot; title=&quot;[http://fxexperience.com/2010/09/swing-integration/]로 이동합니다.&quot;&gt;Swing Integration&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
[Amy Fowler]&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://amyfowlersblog.wordpress.com/2010/09/21/a-heartfelt-ramble-on-swing-javafx/&quot; target=&quot;_blank&quot; title=&quot;[http://amyfowlersblog.wordpress.com/2010/09/21/a-heartfelt-ramble-on-swing-javafx/]로 이동합니다.&quot;&gt;A Heartfelt Rambles on Swing &amp;amp; JavaFX&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
[Stephen Chin]&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://steveonjava.com/javafx-2-0/&quot; target=&quot;_blank&quot; title=&quot;[http://steveonjava.com/javafx-2-0/]로 이동합니다.&quot;&gt;JavaFX 2.0 (a.k.a. What Just Happened to JavaFX Script?)&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
Stephen Chin은 자바FX 커뮤니티 리더로서 이미 오픈소스되어 있는 자바FX 컴파일러를 가지고 나중에 자바FX 2.0을 지원할 수 있도록 커뮤니티를 통해 계속 작업할 예정입니다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
이게 성공적으로 되다면 자바FX 스크립트도 커뮤니트를 통해 삶을 이어갈 수 있겠죠.&lt;/div&gt;
&lt;div&gt;
또한 오라클에서 자바FX 컴포넌트 관련된 부분들도 오픈 소스화 할 것이라고 밝혔습니다.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
[업데이트] 벌써 새로운 오픈소스 프로젝트 발표를 했네요. 관련해서 간단히 포스팅했습니다. (&lt;a href=&quot;http://javba.tistory.com/23&quot; target=&quot;_blank&quot; title=&quot;[http://javba.tistory.com/23]로 이동합니다.&quot;&gt;클릭&lt;/a&gt;)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
아마 몇 분 안되시겠지만 그동안 자바FX 스크립트를 공부하셨던 분들은 너무 아까와 하실 필요는 없을 것 같습니다.&lt;/div&gt;
&lt;div&gt;
언어는 사라질 지 몰라도 그 하부 프레임워크는 그대로 가져가기 때문에 자바FX를 공부하면서 익히셨던 많은 개념들은 여전히 유효할 것이라고 생각됩니다.&lt;/div&gt;
&lt;div&gt;
단지 사용하는 방식이 약간 바뀌는 것이겠죠.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
사실 자바FX (스크립트) 관련해서 블로그에 쓰려고 준비해 놓은 것들이 좀 있었는데 결국은 포스팅을 못할 것 같습니다.&lt;/div&gt;
&lt;div&gt;
더불어 현재 팀블로그의 일원으로 여기서 블로깅을 하고 있었습니다.&lt;/div&gt;
&lt;div&gt;
사실 시험적으로 운영한 팀블로그였는데 여러가지 운영상 어려움이 있어서 운영 중단을 할 예정입니다.&lt;/div&gt;
&lt;div&gt;
내년에 자바FX 2.0이 공개되면 어떻게 될지 모르겠지만 일단 당분간은 저도 같이 블로깅을 중단할 예정입니다.&lt;/div&gt;
&lt;div&gt;
별 내용은 없지만 자바FX에 대해서 조금이라도 관심이 있던 분들에게 도움이 되길 바랍니다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;a href=&quot;http://creativecommons.org/licenses/by-nc-nd/4.0/deed.ko&quot; target=&quot;_blank&quot; style=&quot;text-decoration: none&quot;&gt;
	&lt;img id=&quot;ccl-icon-22-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;img id=&quot;ccl-icon-22-1&quot; class=&quot;entry-ccl-nc&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/static/admin/editor/ccl_black02.png&quot; alt=&quot;비영리&quot;/&gt;
	&lt;img id=&quot;ccl-icon-22-2&quot; class=&quot;entry-ccl-nd&quot; src=&quot;//i1.daumcdn.net/cfs.tistory/resource/4191/static/admin/editor/ccl_black03.png&quot; alt=&quot;변경 금지&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-nd/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
	&lt;/a&gt;
&lt;/div&gt;
</description>
<category>Flavored Java</category>
<author>javafxkor</author>
<guid>http://javba.tistory.com/22</guid>
<comments>http://javba.tistory.com/22#entry22comment</comments>
<pubDate>Tue, 28 Sep 2010 17:32:22 +0900</pubDate>
</item>
<item>
<title>JavaFX로 만들어 보는 미투데이 클라이언트 (1)</title>
<link>http://javba.tistory.com/16</link>
<description>자바FX(JavaFX)가 가진 RIA로써 여러가지 특징중의 하나가 바로 웹서비스를 활용한 앱개발이 손 쉽다는 것이다.&amp;nbsp;&lt;div&gt;
이번 부터는 이러한 자바FX의 특징을 활용해서 국내 마이크로블로깅 서비스인 &lt;a href=&quot;http://me2day.net&quot; target=&quot;_blank&quot; title=&quot;[http://me2day.net]로 이동합니다.&quot;&gt;미투데이&lt;/a&gt;용&amp;nbsp;클라이언트 기능 중 일부를 만들어 보면서 자바FX의 기능들을 더 자세히 살펴 볼 예정이다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
몇 번의 연재로 나누어서 필요한 기능들을 완성해 갈 예정이다.&lt;/div&gt;
&lt;div&gt;
물론 완벽한 클라이언트를 만드는 것은 아니고 현재 목표는 특정 id의 (혹은 친구의) 글 목록을 가져와서 간단히 보여주는 정도이다.&amp;nbsp;호응이 좋으면 좀 더 많은 기능들을 추가하는 것도 고려해 볼 생각이다. ^^&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
일단 웹서비스에서 제공하는 OpenAPI를 사용해서 알아야 할 사항이 몇 가지가 있다.&lt;/div&gt;
&lt;div&gt;
1) REST에 대한 기본적인 이해&lt;/div&gt;
&lt;div&gt;
2) Me2Day API에 대한 기본적인 이해&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
REST관련 내용은 여러가지 서적이나 인터넷 검색으로 충분히 알 수가 있다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
REST는 URL을 통해서 내가 원하는 API를 호출하고 결과를 XML이나 JSON의 형태로 얻어와서 처리한다는 것만 알면 아래 내용을 이해하는데는 큰 문제는 없을 것으로 생각된다.&lt;/div&gt;
&lt;div&gt;
Me2Day API(일명 Me2API)는 다음 링크에 문서가 있다. -&amp;gt; &lt;a href=&quot;http://codian.springnote.com/pages/86001&quot; target=&quot;_blank&quot; title=&quot;[http://codian.springnote.com/pages/86001]로 이동합니다.&quot;&gt;http://codian.springnote.com/pages/86001&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
자바FX 스크립트에서는 &lt;a href=&quot;http://java.sun.com/javafx/1.2/docs/api/javafx.io.http/javafx.io.http.HttpRequest.html&quot; target=&quot;_blank&quot; title=&quot;[http://java.sun.com/javafx/1.2/docs/api/javafx.io.http/javafx.io.http.HttpRequest.html]로 이동합니다.&quot;&gt;HttpRequest&lt;/a&gt;와 &lt;a href=&quot;http://java.sun.com/javafx/1.2/docs/api/javafx.data.pull/javafx.data.pull.PullParser.html&quot; target=&quot;_blank&quot; title=&quot;[http://java.sun.com/javafx/1.2/docs/api/javafx.data.pull/javafx.data.pull.PullParser.html]로 이동합니다.&quot;&gt;PullParser&lt;/a&gt;두개의 클래스만 알면 Me2Day API를 사용해서 기본적인 글에 대한 정보를 얻어오는 것이 가능하다.
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;1. 미투데이 글 가져오기&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
자, 그럼 먼저 가장 쉬운 것부터 해보도록 하자.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
일단 필자의 미투데이 계정인 javafx로 쓴 글을 불러오는 기능부터 만들어 보도록 하자.&lt;/div&gt;
&lt;div&gt;
해당 기능을 사용하기 위해서는 get_posts라는 명령을 사용해야 한다.&lt;/div&gt;
&lt;div&gt;
다음링크에서 API문서의 내용을 한 번 살펴보기 바란다. -&amp;gt;&amp;nbsp;&lt;a href=&quot;http://codian.springnote.com/pages/386176&quot; target=&quot;_blank&quot; title=&quot;[http://codian.springnote.com/pages/386176]로 이동합니다.&quot;&gt;http://codian.springnote.com/pages/386176&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
일단 해당 목록을 XML로 가져오기 위해서 다음과 같은 URL을 사용해야 한다.&lt;/div&gt;
&lt;div&gt;
--&amp;gt; &lt;a href=&quot;http://me2day.net/api/get_posts/javafx.xml&quot; target=&quot;_blank&quot; title=&quot;[http://me2day.net/api/get_posts/javafx.xml]로 이동합니다.&quot;&gt;http://me2day.net/api/get_posts/javafx.xml&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
위의 URL을 웹브라우저에서 직접 띄워서 보도록 하자.&lt;/div&gt;
&lt;div&gt;
만약 웹브라우저에서 xml 원본 그대로 표시가 되지 않으면 '소스 보기'를 선택해서 원본 xml형태의 문서로 보기 바란다.&lt;/div&gt;
&lt;div&gt;
결과를 보면 &amp;lt;posts&amp;gt; 라는 최상위 태그가 있고 그 아래 여러 &amp;lt;post&amp;gt;태그들이 존재한다.&lt;/div&gt;
&lt;div&gt;
또한 각 &amp;lt;post&amp;gt; 태그 아래에는 미투데이에 올라온 글에 대한 여러가지 정보가 존재한다. 그 중에서 특별히 우리가 주목해야할 태그들은 다음과 같다: &lt;font class=&quot;Apple-style-span&quot; color=&quot;#3058D2&quot;&gt;&lt;b&gt;textBody, tags, pubDate, id, nickname, face.&lt;/b&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;2. 자바FX(JavaFX)를 통해서 XML얻어오기&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
웹에서 위의 URL을 사용해서 우리가 원하는 XML을 얻어오기 위해서는 자바FX에서 제공하는 &lt;b&gt;&lt;a href=&quot;http://java.sun.com/javafx/1.2/docs/api/javafx.io.http/javafx.io.http.HttpRequest.html&quot; target=&quot;_blank&quot; title=&quot;[http://java.sun.com/javafx/1.2/docs/api/javafx.io.http/javafx.io.http.HttpRequest.html]로 이동합니다.&quot;&gt;HttpRequest&lt;/a&gt;&lt;/b&gt; 클래스를 사용하면 된다. 결국 HTTP GET명령을 통해서 우리가 원하는 결과를 얻어오는 것이다.&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://java.sun.com/javafx/1.2/docs/api/javafx.io.http/javafx.io.http.HttpRequest.html&quot; target=&quot;_blank&quot; title=&quot;[http://java.sun.com/javafx/1.2/docs/api/javafx.io.http/javafx.io.http.HttpRequest.html]로 이동합니다.&quot;&gt;HttpReques&lt;/a&gt;t의 API문서를 보면 간단한 예제 코드가 있으므로 그것을 참고하면 클래스 사용법을 좀 더 이해하기 쉽다. 간단히 요약하면 HTTP Request에 대해서 발생하는 이벤트별로 해당 메소드들이 호출되고 각 메소드에서 필요한 기능을 적절히 구현해주면 된다. 최종 결과인 XML문서를 얻어오기 위해서는 onInput()함수만 처리하면 된다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
1) 클래스의 멤버 변수인 location에 우리가 원하는 URL을 지정해 준다.&lt;/div&gt;
&lt;div&gt;
2) onInput()함수를 통해서 InputStream이 넘어오므로 InputStream을 통해서 우리가 작성한 XML 파싱 루틴이 타도록 구현을 해준다.&lt;/div&gt;
&lt;div&gt;
3) HttpRequest.start()를 호출하면 자바FX에서 HTTP Request를 수행한다.&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;brush:javafx&quot;&gt;    
public var httpRequest = HttpRequest {
	//var parser = Me2DayParser{ };
	location: &quot;http://me2day.net/api/get_posts/javafx.xml&quot;

	onInput: function(is: InputStream) {
		println(&quot;----------------oninput---------------&quot;);
		try {
			//add XML Parsing code here
			//parser.parse(is, this);
		} finally {
			is.close();
		}
	}

	onException: function(ex: java.lang.Exception) {
		println(&quot;{ex.getMessage()}&quot;);
	}
}

httpRequest.start();
&lt;/pre&gt;


실제 XML로 얻어온 결과물을 보면 아래와 같다 (웹브라우저로 확인).&lt;/div&gt;
&lt;div&gt;
최상위에 posts가 있고 그 아래 개별 post들이 나열되어 있으며 post마다 다양한 속성을 가지고 있다.
&lt;pre class=&quot;brush:xml&quot;&gt; 
 
&lt;posts&gt;
  &lt;post&gt;
	  &lt;post_id&gt;p7dukw&lt;/post_id&gt; 
	  &lt;permalink&gt;http://me2day.net/javafx/2010/03/03#20:44:59&lt;/permalink&gt; 
	  2010 벤쿠버 동계올림픽 홈페이지에 자바FX가 사용된 것 아시나요? 관련해서 간략한 글을 올렸으니 관심있는 분들은 한 번 보세요. &lt;a href=&quot;http://bit.ly/c6aFCp&quot;&gt;자바FX 성공 사례 - 2010 벤쿠버 동계올림픽 홈페이지에 사용된 자바FX&lt;/a&gt; 
	  &lt;textbody&gt;2010 벤쿠버 동계올림픽 홈페이지에 자바FX가 사용된 것 아시나요? 관련해서 간략한 글을 올렸으니 관심있는 분들은 한 번 보세요. 자바FX 성공 사례 - 2010 벤쿠버 동계올림픽 홈페이지에 사용된 자바FX&lt;/textbody&gt; 
	  &lt;kind&gt;think&lt;/kind&gt; 
	  &lt;icon&gt;http://me2day.net/images/post_think.gif?1271318836&lt;/icon&gt; 
	  &lt;tagtext&gt;자바FX JavaFX 자바 Java&lt;/tagtext&gt; 
	&lt;tags&gt;
		&lt;tag&gt;
		  &lt;name&gt;자바fx&lt;/name&gt; 
		  &lt;url&gt;http://me2day.net/javafx/tag/자바fx&lt;/url&gt; 
		  &lt;/tag&gt;
		&lt;tag&gt;
		  &lt;name&gt;javafx&lt;/name&gt; 
		  &lt;url&gt;http://me2day.net/javafx/tag/javafx&lt;/url&gt; 
		  &lt;/tag&gt;
		&lt;tag&gt;
		  &lt;name&gt;자바&lt;/name&gt; 
		  &lt;url&gt;http://me2day.net/javafx/tag/자바&lt;/url&gt; 
		  &lt;/tag&gt;
		&lt;tag&gt;
		  &lt;name&gt;java&lt;/name&gt; 
		  &lt;url&gt;http://me2day.net/javafx/tag/java&lt;/url&gt; 
		  &lt;/tag&gt;
	&lt;/tags&gt;
	&lt;me2daypage&gt;http://me2day.net/javafx&lt;/me2daypage&gt; 
	&lt;pubdate&gt;2010-03-03T20:44:59+0900&lt;/pubdate&gt; 
	&lt;commentscount&gt;0&lt;/commentscount&gt; 
	&lt;metoocount&gt;0&lt;/metoocount&gt; 
	&lt;commentclosed&gt;false&lt;/commentclosed&gt; 
	&lt;contenttype&gt; 
	&lt;iconurl&gt; 
	&lt;callbackurl&gt; 
	&lt;author&gt;
	  &lt;id&gt;javafx&lt;/id&gt; 
	  &lt;nickname&gt;javafx&lt;/nickname&gt; 
	  &lt;face&gt;http://static2.me2day.net/images/user/javafx/profile.png?1266909287&lt;/face&gt; 
	  &lt;me2dayhome&gt;http://me2day.net/javafx&lt;/me2dayhome&gt; 
	  &lt;homepage&gt; 
	&lt;/homepage&gt;&lt;/author&gt;
	&lt;location&gt;
	&lt;name&gt;Seoul&lt;/name&gt; 
	&lt;longitude&gt; 
	&lt;latitude&gt; 
	&lt;/latitude&gt;&lt;/longitude&gt;&lt;/location&gt;
	&lt;media&gt; 
	&lt;fromapp&gt;me2day&lt;/fromapp&gt; 
	&lt;pingback_to&gt; 
	&lt;identifier&gt; 
	&lt;/identifier&gt;&lt;/pingback_to&gt;&lt;/media&gt;&lt;/callbackurl&gt;&lt;/iconurl&gt;&lt;/contenttype&gt;&lt;/post&gt;
    &lt;post&gt;
	...
	&lt;/post&gt;
	...
&lt;/posts&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;b&gt;3. 자바FX를 통해서 XML내용 파싱하기&lt;/b&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
이제 위의&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: monospace; white-space: pre; &quot;&gt;HttpRequest.&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: 굴림; white-space: normal; &quot;&gt;onInput()메소드의 파라미터로 넘어오는 InputStream을 사용해서 XML데이터를 파싱해 우리가 원하는 정보를 얻도록 하자.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: monospace; white-space: pre; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: 굴림; white-space: normal; &quot;&gt;XML파싱을 위해서는 &lt;a href=&quot;http://java.sun.com/javafx/1.2/docs/api/javafx.data.pull/javafx.data.pull.PullParser.html#&quot; target=&quot;_blank&quot; title=&quot;[http://java.sun.com/javafx/1.2/docs/api/javafx.data.pull/javafx.data.pull.PullParser.html#]로 이동합니다.&quot;&gt;PullParser&lt;/a&gt; 클래스를 사용하면 된다.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: monospace; white-space: pre; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: 굴림; white-space: normal; &quot;&gt;아래 코드를 보면 쉽게 해당 기능을 이해할 수 있으리라 생각된다.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: monospace; white-space: pre; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: 굴림; white-space: normal; &quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: monospace; white-space: pre; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: 굴림; white-space: normal; &quot;&gt;1) onEvent() 함수에서 Event.type 이 PullParser.TXT인지 확인.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: monospace; white-space: pre; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: 굴림; white-space: normal; &quot;&gt;2) Event.name과 Event.level을 적절히 조합하여 XML문서 구조에서 원하는 태그를 찾는다.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: monospace; white-space: pre; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: 굴림; white-space: normal; &quot;&gt;3) Event.text를 사용해서 태그에 지정된 값을 얻어온다.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: monospace; white-space: pre; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: 굴림; white-space: normal; &quot;&gt;4) 끝은 Event.type이 PullParser.END_ELEMENT일 경우로 체크한다.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: monospace; white-space: pre; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: 굴림; white-space: normal; &quot;&gt;* 아래 코드는 단순히 XML에서 원하는 값을 가져와 println을 사용해서 로그만 남기도록 하였다. 실제 화면에 보이도록 해주는 작업은 나중에 할 예정이다.
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: monospace; white-space: pre; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: 굴림; white-space: normal; &quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;

&lt;pre class=&quot;brush:javafx&quot;&gt;public class Me2DayParser {
	public function parse(input: InputStream) {
        def parser = PullParser {
		input: input
		onEvent: function(event: Event) {
			if (event.type == PullParser.TEXT) {
				if(event.level == 3) {
					if(event.qname.name == &quot;id&quot;) {
						println(&quot;id: {event.text}&quot;);
					 } else if(event.qname.name == &quot;nickname&quot;) {
						println(&quot;nickname: {event.text}&quot;);
					 } else if(event.qname.name == &quot;face&quot;) {
						println(&quot;profilepic: {event.text}&quot;);
					 }
				} else if(event.level == 2) {
					if(event.qname.name == &quot;textBody&quot;) {
						println(&quot;Body: {event.text}&quot;);
					 } else if(event.qname.name == &quot;tagText&quot;) {
						println(&quot;Tags: {event.text}&quot;);
					 } else if(event.qname.name == &quot;pubDate&quot;) {
						println(&quot;Date: {event.text}&quot;);
					 }
				}
			} else if (event.type == PullParser.END_ELEMENT) {
				if(event.qname.name == &quot;post&quot; and event.level == 1) {
					println(&quot;--------end of post-----------&quot;);
				}
				else if(event.qname.name == &quot;posts&quot; and event.level == 0) {
					println(&quot;--------end of all-----------&quot;);
				}
			}
		}
		parser.parse();
    }
}
&lt;/pre&gt;&lt;/div&gt;
자, 그럼 여기까지 배운 내용을 가지고 실제 넷빈즈에서 테스트를 해보도록 하자.&lt;div&gt;
쉽게 테스트가 가능하도록 미리 만들어둔 넷빈즈 프로젝트를 첨부하였다.&lt;/div&gt;
&lt;div&gt;
해당 파일을 압축을 풀고 넷빈즈에서 Open Project를 선택해서 열어보도록 하자.&lt;/div&gt;
&lt;div&gt;
Run Project를 실행하면 아래와 같이 output창에 미투데이에서 얻어온 정보를 로그로 뿌리는 것을 확인할 수 있다.&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://cfile22.uf.tistory.com/image/140AAA144C1B30EF838EA0&quot; alt=&quot;&quot; filemime=&quot;image/png&quot; filename=&quot;output1.png&quot; height=&quot;245&quot; width=&quot;600&quot;/&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
오늘은 가장 필요한 기능을 간단히 살펴보았고 다음부터는 조금씩 더 기능들을 추가해 나가도록 하겠다.&lt;/div&gt;
&lt;div&gt;
혹시 이해가 안되거나 어려운 부분들이 있다면 질문을 남겨주시기 바란다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
* 참고로 소스에서 location에&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: monospace; white-space: pre; &quot;&gt;&lt;a href=&quot;http://me2day.net/api/get_posts/javafx.xml?scope=friend[all]&quot; target=&quot;_blank&quot; title=&quot;[http://me2day.net/api/get_posts/javafx.xml?scope=friend[all]]로 이동합니다.&quot;&gt;http://me2day.net/api/get_posts/javafx.xml?scope=friend[all]&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: monospace; white-space: pre; &quot;&gt;를 지정해주면 내가 포스팅한 글이 아닌 나의 친구로 등록된 사람들의 최신글을 얻어올 수 있다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;font class=&quot;Apple-style-span&quot; face=&quot;monospace&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: pre;&quot;&gt;자세한 내용은 &lt;a href=&quot;http://codian.springnote.com/pages/86001&quot; target=&quot;_blank&quot; title=&quot;[http://codian.springnote.com/pages/86001]로 이동합니다.&quot;&gt;Me2&lt;/a&gt;&lt;a href=&quot;http://codian.springnote.com/pages/86001&quot; target=&quot;_blank&quot; title=&quot;[http://codian.springnote.com/pages/86001]로 이동합니다.&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://codian.springnote.com/pages/86001&quot; target=&quot;_blank&quot; title=&quot;[http://codian.springnote.com/pages/86001]로 이동합니다.&quot;&gt;API문서&lt;/a&gt;를 참조하기 바란다.&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;</description>
<category>Flavored Java</category>
<category>HTTP</category>
<category>javafx</category>
<category>Open API</category>
<category>REST</category>
<category>미투데이</category>
<category>웹서비스</category>
<category>자바FX</category>
<category>자바FX 스크립트</category>
<author>javafxkor</author>
<guid>http://javba.tistory.com/16</guid>
<comments>http://javba.tistory.com/16#entry16comment</comments>
<pubDate>Mon, 21 Jun 2010 12:43:06 +0900</pubDate>
</item>
<item>
<title>Java Inside - 자바가 들어간 스마트 볼펜 Livescribe Pulse</title>
<link>http://javba.tistory.com/15</link>
<description>&lt;b&gt;단순 필기도구인 볼펜이 스마트하다?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
학습을 위한 방편에는 어떤 것들이 있나? 읽기, 보기, 듣기 등등 
하지만 가장 중요한 쓰기를 빼놓을 수 없다. 학창 시절 선생님이 내 주신 연습장 한 페이지 꽉 채우기 과제 등 학습에서 쓰기의 
중요성은 두말할 필요가 없다. 사회 생활에서도 쓰기의 중요성은 결코 줄어들지 않는다.&lt;br /&gt;
&lt;br /&gt;
쓰기는 암기를 돕기 위한 
방편으로 활용할 수 있지만 주 목적은 내가 기억하고자 하는 내용을 어딘가에 기록해두고 나중에 찾아보기 위함이다. 각종 전자기기가 
범람하는 현대에서도 정보의 저장을 위한 쓰기의 중요성은 줄어들지 않고 있다.&lt;br /&gt;
&lt;br /&gt;
하지만, 디지털 정보기기와 비교해 일반 
종이에 기록하여 정보를 유지/관리하는 것에는 큰 약점이 있다. 나중에 정보를 찾으려 할 때 검색이 쉽지 않고 또한 홰손되기도 
쉽다는 것이다. 이 문제를 해결할 방법이 없을까?&lt;br /&gt;
&lt;br /&gt;
&lt;div id=&quot;suy6&quot; style=&quot;text-align: left;&quot;&gt;
&lt;img src=&quot;http://docs.google.com/File?id=dg6cj9qt_76dwq66fhq_b&quot; height=&quot;188&quot; width=&quot;279&quot;&gt;&lt;/div&gt;
(from &lt;a title=&quot;[http://www.livescribe.com]로 이동합니다.&quot; target=&quot;_blank&quot; href=&quot;http://www.livescribe.com&quot;&gt;www.livescribe.com&lt;/a&gt; 웹사이트)&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.livescribe.com/&quot; id=&quot;i241&quot; title=&quot;Livescribe Pulse 펜&quot;&gt;Livescribe
 Pulse 펜&lt;/a&gt;은 쓰기의 디지털화를 위한 솔루션이다. 여러분이 종이에 기록한 문자, 그림 등을 모두 디지털화하여 펜에 
저장한다. USB 케이블로 연결하여 데이터를 PC로 옮길 수 있다. 필기체 인식 기능을 제공하므로 문자열 검색도 가능하다. 음성
 녹음 기능을 제공하므로 필기 중 대화 내용을 저장할 수 있다.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;이렇게나 스마트한 펜에 자바까지 지원한다니! &lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Livescribe
 Pulse는 CLDC에 기반한 Java Virtual Machine을 탑재하고 있다. 개발자는 &lt;a href=&quot;http://www.livescribe.com/cgi-bin/WebObjects/LDApp.woa/wa/DeveloperToolsPage&quot; id=&quot;mys5&quot; title=&quot;Livescribe SDK&quot;&gt;Livescribe SDK&lt;/a&gt;를 사용하여 Penlet이라고 불리는
 Java 어플리케이션을 개발할 수 있다. 자신의 프로그램으로 약간의 수익이라도 내고 싶다면 Livescribe가 제공하는 App
 Store에 유료 프로그램 등록이 가능하다.&lt;br /&gt;
&lt;br /&gt;
Livescribe SDK가 제공하는 Java 라이브러리는 CLDC를 
기본으로 하여 펜이 제공하는 소형 OLED에 출력을 위한 display 관련 클래스, 데이터 저장을 위한 클래스, 문자 인식을 
위한 클래스, 입력하고 있는 문자, 그림등을 처리하기 위한 클래스 등을 제공한다. 개발을 시작하기 위해 &lt;a href=&quot;http://penlets.com/tutorials/penlets_101/&quot; id=&quot;ge56&quot; title=&quot;Penlet
 개발을 시작하기 위한 예제 코드&quot;&gt;간단한 Penlet 예제 코드&lt;/a&gt;를 참고하기 바란다.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;아쉬운 점 ...&lt;/b&gt;&lt;br /&gt;
약간 아쉬운 점은 Bluetooth와 같은 네트워크 기능이 전혀 없다는 것이다. 또한, 외부 display가 제한되어 있으므로 
iPod Shuffle 처럼 음성 출력을 이용한 인터페이스 기능이 있으면 좋겠다.</description>
<category>Whipped Cream</category>
<category>livescribe</category>
<category>penlet</category>
<author>wonkim</author>
<guid>http://javba.tistory.com/15</guid>
<comments>http://javba.tistory.com/15#entry15comment</comments>
<pubDate>Tue, 23 Mar 2010 14:52:57 +0900</pubDate>
</item>
<item>
<title>자바FX 스크립트 클래스에는 생성자가 없다</title>
<link>http://javba.tistory.com/5</link>
<description>자바FX 스크립트(JavaFX Script) 언어에서 클래스를 사용할 때 자바(Java)에서 제공하는 생성자 같은 것이 없다.&lt;br /&gt;
보통 클래스의 생성자에서는 클래스를 사용하기에 앞서 필요한 클래스 내의 변수들을 초기화하거나 초기화 관련된 함수 호츨 코드를 두는 경우가 많다.&lt;br /&gt;
JavaFX에서는 생성자 대신에 &lt;b&gt;init{}&lt;/b&gt;과 &lt;b&gt;postinit{}&lt;/b&gt; 코드블록을 활용할 수 있다.&lt;br /&gt;
이 둘은 과연 무엇이고 어떠한 차이점이 있을까?&lt;br /&gt;
&lt;br /&gt;
JavaFX Scripit Language Reference의 &lt;a title=&quot;[http://openjfx.java.sun.com/current-build/doc/reference/ch05s02.html]로 이동합니다.&quot; target=&quot;_blank&quot; href=&quot;http://openjfx.java.sun.com/current-build/doc/reference/ch05s02.html&quot;&gt;Class Member&lt;/a&gt; 에 대한 설명에는 다음과 같은 내용이 있다.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dashed rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot; class=&quot;txc-textbox&quot;&gt;
&lt;h3 class=&quot;title&quot;&gt;&lt;span class=&quot;command&quot;&gt;&lt;strong&gt;init&lt;/strong&gt;&lt;/span&gt; Block&lt;/h3&gt;
      

      

      &lt;div class=&quot;figure&quot;&gt;
&lt;a name=&quot;d4e930&quot;&gt;&lt;/a&gt;&lt;p class=&quot;title&quot;&gt;&lt;b&gt;Figure&amp;nbsp;5.4.&amp;nbsp;initBlock&lt;/b&gt;&lt;/p&gt;
&lt;div class=&quot;figure-contents&quot;&gt;
        

        &lt;div class=&quot;mediaobject&quot;&gt;
&lt;img src=&quot;http://openjfx.java.sun.com/current-build/doc/reference/initDefinition.png&quot; alt=&quot;initBlock&quot;&gt;&lt;/div&gt;
      &lt;/div&gt;
&lt;/div&gt;
&lt;br class=&quot;figure-break&quot;&gt;

      &lt;p&gt;The &lt;span class=&quot;emphasis&quot;&gt;&lt;em&gt;initBlock&lt;/em&gt;&lt;/span&gt; is an optional block of code
      which is executed as the final step of instance initialization.&lt;/p&gt;
    

    &lt;div class=&quot;sect2&quot; lang=&quot;en&quot;&gt;
&lt;div class=&quot;titlepage&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h3 class=&quot;title&quot;&gt;&lt;a name=&quot;postinitBlock&quot;&gt;&lt;/a&gt;&lt;span class=&quot;command&quot;&gt;&lt;strong&gt;postinit&lt;/strong&gt;&lt;/span&gt; Block&lt;/h3&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
      

      

      &lt;div class=&quot;figure&quot;&gt;
&lt;a name=&quot;d4e941&quot;&gt;&lt;/a&gt;&lt;p class=&quot;title&quot;&gt;&lt;b&gt;Figure&amp;nbsp;5.5.&amp;nbsp;postinitBlock&lt;/b&gt;&lt;/p&gt;
&lt;div class=&quot;figure-contents&quot;&gt;
        

        &lt;div class=&quot;mediaobject&quot;&gt;
&lt;img src=&quot;http://openjfx.java.sun.com/current-build/doc/reference/postinitDefinition.png&quot; alt=&quot;postinitBlock&quot;&gt;&lt;/div&gt;
      &lt;/div&gt;
&lt;/div&gt;
&lt;br class=&quot;figure-break&quot;&gt;

      

      &lt;p&gt;The &lt;span class=&quot;emphasis&quot;&gt;&lt;em&gt;postInitBlock&lt;/em&gt;&lt;/span&gt; is an optional block of
      code which is executed after instance initialization has
      completed.&lt;/p&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
즉, &lt;b&gt;init { ...}&lt;/b&gt; 블록은 클래스의 인스턴스를 생성하는 단계의 가장 마지막으로 수행이 된다.&lt;br /&gt;
&lt;b&gt;
postinit { ... }&lt;/b&gt; 블록의 경우는 클래스 인스턴스 생성이 완료된 후에 수행이 되는 코드 영역이다.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
사실 이 설명만으로 자세히 이해하기가 어려우므로 위의 내용을 활용한 간단한 프로그램을 만들어 보도록 하겠다.
&lt;/div&gt;
&lt;div&gt;
넷빈즈에서 JavaFX Script Application 프로젝트를 하나 새로 만들고 아래 코드를 복사해서 사용하면 된다.&lt;/div&gt;
&lt;div&gt;
단 packege 이름을 카피하지 말고 프로젝트 만들 때 지정한 이름 그대로를 사용한다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(219, 232, 251); border-right-color: rgb(219, 232, 251); border-bottom-color: rgb(219, 232, 251); border-left-color: rgb(219, 232, 251); background-color: rgb(219, 232, 251); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(219, 232, 251); border-right-color: rgb(219, 232, 251); border-bottom-color: rgb(219, 232, 251); border-left-color: rgb(219, 232, 251); background-color: rgb(219, 232, 251); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
package inittest;&lt;br /&gt;
/**&lt;br /&gt;
&amp;nbsp;* @author javafxkor&amp;nbsp;&lt;br /&gt;
&amp;nbsp;*/&lt;/div&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(219, 232, 251); border-right-color: rgb(219, 232, 251); border-bottom-color: rgb(219, 232, 251); border-left-color: rgb(219, 232, 251); background-color: rgb(219, 232, 251); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
class &lt;b&gt;Parent&lt;/b&gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;var p;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;b&gt;init&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;p=0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;println(&quot;init - Parent&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;b&gt;postinit&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;println(&quot;postinit - Parent&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
}&lt;br /&gt;
class &lt;b&gt;Child &lt;/b&gt;extends Parent&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;var c;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;b&gt;init&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;c=1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;println(&quot;init - Child&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;b&gt;postinit&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;println(&quot;postinit - Child&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
}&lt;br /&gt;
class &lt;b&gt;GrandChild &lt;/b&gt;extends Child&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;var g;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;b&gt;init&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;g=5;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;println(&quot;init - GrandChild&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;b&gt;postinit&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;println(&quot;postinit - GrandChild&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
}&lt;br /&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;
//----------------------------------------&lt;/font&gt;&lt;br /&gt;
def gc = GrandChild { g:10 c: 20 p: 30 };&lt;br /&gt;
println(&quot;---- {gc.g} , {gc.c}, {gc.p}&quot;);&lt;br /&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;
// 실행결과:&amp;nbsp;---- 5 , 1, 0&lt;br /&gt;
//--&amp;gt; 위 결과로 클래스 성성시 변수값을 넣어도 init에서 지정한 값으로 덮어써짐을 알 수 있다.&lt;br /&gt;
//----------------------------------------&lt;/font&gt;&lt;br /&gt;
gc.g=100;&lt;br /&gt;
gc.c=200;&lt;br /&gt;
gc.p=300;&lt;br /&gt;
println(&quot;---- {gc.g} , {gc.c}, {gc.p}&quot;);&lt;br /&gt;
&lt;font class=&quot;Apple-style-span&quot; color=&quot;#8E8E8E&quot;&gt;
// 실행결과:&amp;nbsp;---- 100 , 200, 300&lt;br /&gt;
//--&amp;gt; 클래스 생성 후 새로 변수에 대입한 값이 정상적으로 출력됨을 볼 수 있다.&lt;/font&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(254, 254, 184); border-right-color: rgb(254, 254, 184); border-bottom-color: rgb(254, 254, 184); border-left-color: rgb(254, 254, 184); background-color: rgb(254, 254, 184); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(254, 254, 184); border-right-color: rgb(254, 254, 184); border-bottom-color: rgb(254, 254, 184); border-left-color: rgb(254, 254, 184); background-color: rgb(254, 254, 184); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
&lt;b&gt;[실행 후 output 창에 출력된 내용]&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
init - Parent&lt;br /&gt;
init - Child&lt;br /&gt;
init - GrandChild&lt;br /&gt;
postinit - Parent&lt;br /&gt;
postinit - Child&lt;br /&gt;
postinit - GrandChild&lt;br /&gt;
---- 5 , 1, 0&lt;br /&gt;
---- 100 , 200, 300&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
위의 코드와 실행 결과를 보면 대략 어떤 식으로 init과 postinit이 호출되는 지 알 수 있다.&lt;/div&gt;
&lt;div&gt;
먼저 클래스 계층에 있는 init 블록이 부모쪽부터 아래로 쭉 수행이 된 후에 postinit블록들이 같은 순서로 수행됨을 볼 수 있다.&lt;/div&gt;
&lt;div&gt;
특별히 클래스 생성자와 차별을 보이는 내용이 있으므로 사용시 주의가 필요하다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
def gc = GrandChild { g:10 c: 20 p: 30 };&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
위의 처럼 클래스를 생성하면서 클래스 변수에 값을 대입할 경우 &lt;u&gt;&lt;b&gt;init 혹은 postinit 블록이 실행되기 이전에 지정된 값이 먼저 변수에 저장된다&lt;/b&gt;&lt;/u&gt;. 그러므로 init혹은 postinit에서 변수를 초기화하는 코드가 있다면 변수에 지정한 값이 다시 초기화 값으로 변경이 되므로 사용시 주의가 필요하다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
또한 추후에는 postinit블록이 사라질 수도 있다는 이야기도 있으므로 둘 중의 하나를 사용할 것이면 init 블록을 사용하는 것을 추천한다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;</description>
<category>Flavored Java</category>
<category>javafx</category>
<category>문법</category>
<category>생성자</category>
<category>자바</category>
<category>자바FX</category>
<category>자바FX 스크립트</category>
<author>Java Barista</author>
<guid>http://javba.tistory.com/5</guid>
<comments>http://javba.tistory.com/5#entry5comment</comments>
<pubDate>Thu, 18 Mar 2010 12:52:29 +0900</pubDate>
</item>
<item>
<title>'자바FX 스크립트' 언어의 몇 가지 특징들</title>
<link>http://javba.tistory.com/6</link>
<description>&lt;div style=&quot;text-align: right;&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(0, 0, 0); font-family: verdana, sans-serif; line-height: normal; font-size: small; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; &quot;&gt;&lt;a href=&quot;http://javafx.com/&quot; style=&quot;text-decoration: none; color: blue; &quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://blogs.sun.com/arungupta/resource/images/javafx_logo_color_1.jpg&quot; style=&quot;border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-color: initial; width: 200px; height: 100px; clear: both; float: right; &quot;&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
썬 마이크로 시스템즈(Sun Microsystems) 에서는 2008년 12월에 Java기반의 차세대 RIA 플랫폼으로 JavaFX 1.0을 공식 발표하였다. 현재 1.2.3까지 버전업이 되었고 곧 1.3 버전이 나올 것이라는 소문도 들리고 있다.&lt;div&gt;
&lt;br /&gt;
이 JavaFX플랫폼에서 사용하는 언어가 바로 바로 &lt;b&gt;자바FX 스크립트(JavaFX Script)&lt;/b&gt;이다.&lt;br /&gt;
이 글에서는 자바FX 스크립트의 몇 가지 특징적인 점에서 살펴보도록 하겠다.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
&lt;div style=&quot;text-align: right;&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;verdana, sans-serif&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: normal; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-size: small;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;b&gt;- 자바FX 스크립트는 바이트코드로 컴파일된다.&lt;/b&gt;&lt;div&gt;
언어 이름에 스크립트가 들어가서 마치 자바스크립트처럼 인터프리터를 사용하는 것처럼 보일 수 있지만 자바FX 스크립트는 별도의 컴파일러(javac.exe가 아닌 javafxc.exe)를 사용해서 바이트코드로 컴파일되고 바이트코드 형태로 실행이 된다. 그렇기 때문에 일반적으로 실행하면서 실시간으로 인터프리트되는 스크립트 언어는 아니다. 단, 문법이 스크립트언어와 유사하고 배우기 쉽다는 특성이 있다. 사실 자바FX 스크립트 설계 초기에는 인터프리트 방식으로 실행이 된 것으로 알고 있다. 일단 현재는 바이트 코드로 컴파일되는 것만 지원된다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
(참고로 소스 파일은 *.fx의 확장자를 갖는다.)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;b&gt;- 자바FX 스크립트는 선언적인 언어(declarative language)이다.&amp;nbsp;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
즉, 우리가 흔희 접하는 절차적인 언어(procedural language)인 C와 Java와 다르다. 절차적인 언어는 A를하고 B를하고 그다음에 C를 하라는 식으로 실행해야할 루틴을 연속해서 나열해서 프그램을 만들지만 선언적인 언어는 변수나 혹은 클래스를 정의하는 식으로 선언만 하면 실제 프로그램에서 동작을 하게된다. HTML이 이런 선언적인 언어 중의 하나로 볼 수 있다. 아래와 같이 간단히 코드로 비교해 보자. &lt;br /&gt;
&lt;div style=&quot;border: 1px dashed rgb(203, 203, 203); padding: 10px; background-color: rgb(255, 255, 255);&quot; class=&quot;txc-textbox&quot;&gt;
도형을 그릴려면 절차적인 언어에서는 사각형을 그리는 루틴을 호출하게 된다. &lt;br /&gt;
&amp;nbsp;drawRect(x, y, width, height);&lt;br /&gt;
&amp;nbsp;drawCircle(x, y, radius);&lt;/div&gt;
&lt;div style=&quot;border: 1px dashed rgb(203, 203, 203); padding: 10px; background-color: rgb(255, 255, 255);&quot; class=&quot;txc-textbox&quot;&gt;
선언적인 언어인 자바FX 스크립트에서는 다음과 같은 코드로 이것이 가능하다.&lt;br /&gt;
Rectangle {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x: 10&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; y: 10&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; width: 50&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hegith: 50&lt;br /&gt;
}&lt;br /&gt;
Circle {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; x: 100&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; y: 100&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; radius: 50&lt;br /&gt;
}&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;- 자바FX 스크립트는 정적 타이핑(static typing)을 사용한다.&lt;/b&gt;&lt;div&gt;
기존의 많은 스크립트 언어가 동적 타이핑(dynamic typing)을 사용하는 것과 달리 자바FX 스크립트는 Java와 유사하게 정적 타이핑을 사용한다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;- 자바FX 스크립트는 바인딩(binding) 기능을 제공한다.&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
bind라는 키워드를 통해서 특정 변수, 구문(expression) 혹은 함수가 변경될 때 바인딩된 변수가 자동으로 변경이 됩니다. 어떤 플랫폼에서든 GUI프로그래밍을 해보았다면 UI가 복잡할 수록 UI의 상태를 저장하기 위해서 사용하는 변수들이 많아지고, 또한 상태관리를 위해 사용하는 관련 코드가 증가하는 것을 경험했을 것이다. 자바FX에서는 바인딩이라는 강력한 기능을 통해서 이러한 부분들을 자동화 해주고 있다. 이것 때문에 프로그래밍 하기도 쉬워지지만 자바FX 스크립트로 만든 코드가 훨씬 더 간결해지는 효과까지 있다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;- 자바FX 스크립트는 새롭게 추가된 데이터 구조인 시퀀스(sequence)를 지원한다.&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
아래와 같은 방법으로 sequence를 정의 할 수 있다.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(203, 203, 203); border-right-color: rgb(203, 203, 203); border-bottom-color: rgb(203, 203, 203); border-left-color: rgb(203, 203, 203); background-color: rgb(255, 255, 255); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
def weekdays:String[] = [ &quot;Monday&quot; , &quot;Tuesday&quot; , &quot;Wednesday&quot; , &quot;Thursday&quot; , &quot;Friday&quot; ];&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
시퀀스는 일종의 1차원 배열로 볼 수 있으며 다차원 배열 형태를 지원하지 않는다.&lt;/div&gt;
&lt;div&gt;
자바FX 스크립트에서는 시퀀스를 조작하기 위한 편리한 방법들이 제공이 되며 여러군데에서 시퀀스가 사용된 것을 볼 수 있다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;- 자바FX 스크립트에서 기존의 자바로 작성된 코드를 사용할 수 있다.&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
단순히 새로운 언어일뿐만 아니라 기존 자바코드를 재사용할 수 있는 방법들도 제공되므로 기존의 자바코드를 재 사용하고 자바FX로 더 나은 UI를 제공하는 것도 가능하다. 또한 자바FX의 부족한 기능들을 기존의 자바에서 구현된 내용들을 가지고 보완하는 것도 가능하다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;*&lt;/b&gt; 이 외에도 다양한 언어적인 특징들이 있겠지만 그 중에서 특징적인 것들 몇 가지를 골라서 소개를 하였다.&lt;/div&gt;
&lt;div&gt;
자바FX 스크립트의 모든 것에 대해서 이 블로그를 통해서 설명할 수는 없겠지만 이야기할 만한 부분들에 대해서는 좀 더 자세히 살펴볼 수 있도록 하겠다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
<category>Flavored Java</category>
<category>javafx</category>
<category>바인딩</category>
<category>선언적 언어</category>
<category>시퀀스</category>
<category>자바</category>
<category>자바FX</category>
<category>자바FX 스크립트</category>
<category>정적 타이핑</category>
<author>Java Barista</author>
<guid>http://javba.tistory.com/6</guid>
<comments>http://javba.tistory.com/6#entry6comment</comments>
<pubDate>Fri, 12 Mar 2010 12:27:35 +0900</pubDate>
</item>
<item>
<title>자바FX 성공 사례 - 2010 벤쿠버 동계올림픽 홈페이지에 사용된 자바FX</title>
<link>http://javba.tistory.com/13</link>
<description>지난주에 마감한 벤쿠버 동계올림픽 홈페이지에 &lt;b&gt;자바FX&lt;/b&gt; 기술이 적용되었다.&lt;div&gt;
여기서 이에 대해 간략히 소개하려고 한다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;
역대 올림픽메달 및 동계올림픽 진행중에 메달 통계를 실시간으로 볼 수 있고&lt;/div&gt;
&lt;div&gt;
단순한 표가 아닌 좀 더 데이터를 좀더 매력적이면서 쉽게 비교하고 볼 수 있도록 만드는데 &lt;b&gt;자바FX&lt;/b&gt; 기술이&amp;nbsp;사용되었다.&lt;/div&gt;
&lt;div&gt;
아래 링크를 클릭해 보면 자바FX로 구현된 Medal Wheel Application 을 볼 수가 있다.&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;
&lt;a href=&quot;http://www.vancouver2010.com/olympic-medals/geo-view/&quot; target=&quot;_blank&quot; title=&quot;[http://www.vancouver2010.com/olympic-medals/geo-view/]로 이동합니다.&quot;&gt;http://www.vancouver2010.com/olympic-medals/geo-view/&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://cfile24.uf.tistory.com/image/124CAF274B8E4073A07C01&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;javafx_vancouver.PNG&quot; height=&quot;506&quot; width=&quot;600&quot;/&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;
위의 성공사례에 대한 비디오 및 정보가 &lt;a href=&quot;http://javafx.com/wintergames&quot; target=&quot;_blank&quot; title=&quot;[http://javafx.com/wintergames]로 이동합니다.&quot;&gt;http://javafx.com/wintergames&lt;/a&gt; 에 정리되어 있다.&lt;/div&gt;
&lt;div&gt;
여기서는 일부분을 우리말로 요약해서 정리하였다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
1. 개발 배경&lt;/div&gt;
&lt;div&gt;
올림픽준비 위원회(VANOC)에서는 기존에 테이블 형태로 올림픽관련 데이터를 제사하는 것을 뛰어 넘어서 과거와 현재 메달 정보를 사용자들에게 효율적으로 제공해주기 위한 새로운 방식을 찾고 있었으며 그것을 구현할 RIA 기술로 JavaFX가 채택되었다. 위의 애플리케이션 개발을 위해서 VANOC과 Sun Microsystems그리고 UI디자인 전문업체인 Effective UI사의 협업을 통해서 만족할만한 결과물을 얻을 수 있었다. (참고로 올림픽에 사용된 서버 또한 Sun Microsystem에서 공급하였다.)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
2. 요구사항&lt;/div&gt;
&lt;div&gt;
- 사용자들에게 새로운 매력적인 사용자 경험을 제공&lt;/div&gt;
&lt;div&gt;
- 실시간으로 데이터 업데이트가 가능해야하고 안정적으로 서비스가 가능해야 함&lt;/div&gt;
&lt;div&gt;
- 기존의 정적인 데이터를 사용자들이 다룰 수 있는 동적인 데이터로 바꿀 수 있어야 함&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
3. JavaFX를 통해서 얻은 결과&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
- 빠른 프로토타이핑 (빠른 개발속도)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
기존의 UI 디자인을 할 때 많이 사용하던 스토리 보드 방식을 사용하지 않고 JavaFX를 사용했기때문에 UI 디자인이 결정되기 이전에 빠른 프로토타입을 개발을 통해서 실제 사용자가 사용하는 방법 그대로 UI디자인을 시험해 볼 수 있었다. 그래서 실제 디자인 프로세스 중에 자바FX로 개발된 프로토타입을 사용하면서 그것에 대한 feedback을 가지고 디자인을 고쳐나갈 수 있었다. 또한 자바FX가 제공하는 개발 방식을 통해서 디자이너와 개발자들이 쉽고 효율적으로 작업이 가능하였다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
- 웹브라우저에서 사용가능한 Medal Wheel Application&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
자바FX를 통해서 기존에 단순한 메달 통계뿐만 아니라 지역, 경제, 인구 정보까지 조합해서 데이터를 쉽게 비교해 볼 수 있도록 만들 수 있었고 자바FX를 통해서 복잡한 웹 네비게이션이 없이도 한자리에서 자료들을 쉽게 볼 수 있도록 구현하였다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
- 웹브라우저 밖에서 사용가능한 Results Widget&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
Result Widget은 클릭 한번으로 데스트탑으로 다운로드 받을 수 있으며 웹브라우저를 띄울 필요도 없이 그날의 중요 일정과 결과를 한눈에 볼 수 있도록 자바FX로 구현된 위젯이다. Java Web Start 기술을 사용할 경우 자바FX가 브라우저 내에서도 동작하지만 브라우저 없이 데스크톱에서 사용이 가능하다. 참고로 자바FX는 웹브라우저내에서 실행되는 자바FX어플을 끌어다가 바로 데스트탑으로 실행할 수 있도록 옮길 수 있는 기능을 제일 먼저 제공하였다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
올림픽에 사용된 자바FX관련 자세한 내용은&amp;nbsp;&lt;a href=&quot;http://javafx.com/wintergames&quot; target=&quot;_blank&quot; title=&quot;[http://javafx.com/wintergames]로 이동합니다.&quot; style=&quot;color: rgb(0, 102, 204) !important; text-decoration: none !important; border-bottom-width: 1px; border-bottom-style: dashed; border-bottom-color: rgb(0, 102, 204); &quot;&gt;http://javafx.com/wintergames&lt;/a&gt;에 링크된 비디오와 백서를 참조하기 바란다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
아주 큰 성과는 아니지만 한동안 전세계인의 관심 속에 있었던 올림픽 홈페이지를 통해서 자바FX가 사용되므로 그래도 비교적 안정적인 성공적인 성공 스토리를 만들었다는 생각이 든다. 앞으로도 더 좋은 성공 케이스를 통해서 자바FX가 상용프로젝트에도 적합하다는 것을 더 많이 증명해 나갈 수 있으면 좋을 것 같다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
<category>Whipped Cream</category>
<category>javafx</category>
<category>ria</category>
<category>동계올림픽</category>
<category>벤쿠버</category>
<category>자바FX</category>
<author>javafxkor</author>
<guid>http://javba.tistory.com/13</guid>
<comments>http://javba.tistory.com/13#entry13comment</comments>
<pubDate>Wed, 03 Mar 2010 20:40:31 +0900</pubDate>
</item>
<item>
<title>Java Inside - Sun SPOT</title>
<link>http://javba.tistory.com/12</link>
<description>오늘 소개하고자 하는 기기는 일반 사용자들은 평생 만져보기 힘든 아주 특이한 장치이다. 특이한 기기를 좋아하는 geek이거나 소프트웨어 공학 관련 학교에서 이 기기를 운좋게 교육용으로 사용한다면 만져볼 수 있을라나?&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.sunspotworld.com/&quot; id=&quot;nmwm&quot; title=&quot;Sun SPOT&quot;&gt;Sun SPOT&lt;/a&gt;이라고 불리는 이 기기는 일반 사용자를 위한 것이 아닌 실험용 소프트웨어 연구/개발 및 취미로 흥미로운 소프트웨어를 개발하는 열렬 개발자를 위한 제품이다. Sun Lab에서 개발한 이 장치의 생김새는 아래와 같다.&lt;br /&gt;
&lt;br /&gt;
&lt;div id=&quot;qgbh&quot; style=&quot;text-align: center;&quot;&gt;
&lt;div id=&quot;izjc&quot; style=&quot;text-align: center;&quot;&gt;
&lt;img src=&quot;https://docs.google.com/File?id=dg6cj9qt_65ggxhxcf8_b&quot; style=&quot;height: 275px; width: 266px;&quot;&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
(From http://www.sunspotworld.com)&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
위 사진에서 검은색 박스가 Sun SPOT 기기이다. 확 땡기는 외모는 확실히 아니다. ^^ 하지만, H/W 사양을 살펴보면 꽤 흥미롭다. &lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;180Mhz의 ARM9 CPU&lt;/li&gt;
&lt;li&gt;512KB RAM&lt;/li&gt;
&lt;li&gt;4MB Flash Memory&lt;/li&gt;
&lt;/ul&gt;
음... 아직까지는 그리 흥미롭지 못하다. 하지만 진짜는 지금부터.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;USB&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;2.4Ghz IEEE 802.15.4 radio 그리고 안테나&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Accelerometer - iPhone에 쓰이는 것과 유사한 방향/기울기 등의 정보를 얻는 센서&lt;/li&gt;
&lt;li&gt;밝기 감지 센서&lt;/li&gt;
&lt;li&gt;온도 감지 센서&lt;/li&gt;
&lt;li&gt;8개의 3 색상 LED&lt;/li&gt;
&lt;li&gt;6개의 아날로그 입력&lt;/li&gt;
&lt;li&gt;5개의 &lt;a href=&quot;http://en.wikipedia.org/wiki/General_Purpose_Input/Output&quot; id=&quot;u4g9&quot; title=&quot;GPIO&quot;&gt;GPIO&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;4개의 고전류 출력 핀&lt;/li&gt;
&lt;/ul&gt;
꽤나 흥미로운 센서 및 입출력 H/W들이 달려있다. 이를 이용하기 위한 소프트웨어 플랫폼은 어떨까? 역시 흥미롭게도 Sun SPOT에는 운영체제 대신 &lt;a href=&quot;http://research.sun.com/projects/squawk/squawk-rjvm.html&quot; id=&quot;tmql&quot; title=&quot;Squark라고 하는 Java Virtual Machine&quot;&gt;Squark라고 하는 Java Virtual Machine&lt;/a&gt;이 탑재되어 있다. 이 VM을 이용하여 MIDP 라이브러리 및 Sun SPOT의 H/W를 직접 사용할 수 있는 라이브러리를 제공한다.&lt;br /&gt;
즉, 이 장치를 이용하면 Java application을 작성하여 여러 센서 및 네트워킹을 활용한 임베디드 어플리케이션을 개발할 수 있다는 것이다. 어떤 활용 예를 생각해 볼 수 있을까? &lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;일단 센서가 있으므로 이를 이용하여 외부 환경의 변경을 감지하는 소프트웨어가 개발 가능하다&lt;/li&gt;
&lt;li&gt;센서의 변경에 따른 외부 장치를 제어하기 위해서는 GPIO와 LED가 있으므로 이를 조절하는 소프트웨어를 개발하여 외부 기기를 제어할 수 있다&lt;/li&gt;
&lt;li&gt;네트워킹이 가능하므로 센서로 받은 데이터를 외부 컴퓨터로 전송 가능하다&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
이와 같은 다양한 센서 및 H/W 제어 프로그램을 Java 언어로 개발가능한 것이 바로 Sun SPOT의 매력이라고 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
학
계에서 학생들에게 이런 장비로 수업을 가르쳐준다면 정말 멋지지 않을까? Sun SPOT이 가진 H/W에 대한 기본적인 이해를
위해 간단한 전자공학 내용을 가르치고 이를 활용한 소프트웨어를 개발하기 위해 Java 언어를 배우며 직접 실험 프로젝트로
소프트웨어 및 하드웨어를 개발해보는 것이다. 실제로 미국에서는 Sun SPOT을 활용하여 수업을 하는 학교들이 있다. &lt;br /&gt;
&lt;br /&gt;
Sun
SPOT 개발 킷은 온라인에서 구매가 가능하며 가격은 약 80만원 정도이다. 이 개발 킷에는 2개의 Sun SPOT 기기와
네트워킹을 위한 base station, 개발 SDK CD 등이 포함되어 있다. 좀 비싼가격이긴 하지만 여러분의 학교에서
구매하여 실습 장비로 제공한다면 충분히 돈 가치를 할 수 있는 장치이지 않을까?&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;참고 자료&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=tv5ZaN9tSck&quot; id=&quot;k56_&quot; title=&quot;Sun SPOT에 대한 소개 동영상&quot;&gt;Sun SPOT에 대한 소개 동영상&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.sunspotworld.com/docs/Red/javadoc/&quot; id=&quot;i7by&quot; title=&quot;Sun SPOT Java SDK 문서&quot;&gt;Sun SPOT Java SDK 문서&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://developers.sun.com/learning/javaoneonline/j1sessn.jsp?sessn=TS-6495&amp;amp;yr=2008&amp;amp;track=javame&quot; id=&quot;vdhp&quot; title=&quot;JavaOne 2008 Sun SPOT 세션&quot;&gt;JavaOne 2008 Sun SPOT 세션&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
<category>Whipped Cream</category>
<category>Squark JVM</category>
<category>Sun SPOT</category>
<author>wonkim</author>
<guid>http://javba.tistory.com/12</guid>
<comments>http://javba.tistory.com/12#entry12comment</comments>
<pubDate>Fri, 26 Feb 2010 21:33:43 +0900</pubDate>
</item>
<item>
<title>Oracle Java + Qualcomm Brew MP</title>
<link>http://javba.tistory.com/11</link>
<description>먼저 &lt;a title=&quot;[http://www.prnewswire.com/news-releases/qualcomm-and-oracle-pre-integrate-oracles-sun-java-wireless-client-on-brew-mobile-platform-operating-system-84369452.html]로 이동합니다.&quot; target=&quot;_blank&quot; href=&quot;http://www.prnewswire.com/news-releases/qualcomm-and-oracle-pre-integrate-oracles-sun-java-wireless-client-on-brew-mobile-platform-operating-system-84369452.html&quot;&gt;Press Release 기사&lt;/a&gt;를 읽어보자.&lt;br /&gt;
&lt;br /&gt;
위 기사에 따르면 Qualcomm의 Brew MP에 Oracle의 Sun Java Wireless Client를 미리 개발된 형태로 제공한다고 한다. 이 뉴스에는 어떤 의미가 담겨있을까?&lt;br /&gt;
&lt;br /&gt;

&lt;img src=&quot;http://java.sun.com/javame/solutions/brewappmgr.gif&quot;&gt;

&lt;br /&gt;
&amp;lt;Sun Java Wireless Client for Brew MP from &lt;a title=&quot;[http://java.sun.com/]로 이동합니다.&quot; target=&quot;_blank&quot; href=&quot;http://java.sun.com/&quot;&gt;java.sun.com&lt;/a&gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Brew MP와 Java ME 소프트웨어를 사용해서 단말기를 개발하는 OEM 회사의 입장에서 보면 Java ME를 탑재하기 위해 필요한 시간, 노력, 비용을 단축시킬 수 있는 장점이 있을 것이다.&lt;br /&gt;
&lt;br /&gt;
이 디바이스를 구매하는 Carrier 입장에서는 Brew MP위에 올린 Java ME가 거의 동일한 구현을 가지고 있을 것이므로 자신의 신규 사업 서비스를 디자인 할 때 디바이스 별 서로 다른 spec이라던가 fragmentation 이슈를 덜 고민해도 된다.&lt;br /&gt;
&lt;br /&gt;
Content 개발자는 Brew MP SDK 에서 실행되는 Java ME 에뮬레이터를 사용하면 실제 디바이스에서 동작하는 것과 큰 차이가 없을 것이므로 디바이스에 배포 시 발생할 수 있는 문제점을 최소화 시킬 수 있을 것이다.&lt;br /&gt;
&lt;br /&gt;
사용자 입장에서는 위의 모든 장점에 힘입어 좀 더 quality있는 컨텐츠를 더 싼 비용으로 즐길 수 있지 않을까 생각해본다.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;참고 자료&lt;/span&gt;&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot;&gt;
&lt;li&gt;&lt;a title=&quot;[https://brewmobileplatform.qualcomm.com/devnet/index.jsp]로 이동합니다.&quot; target=&quot;_blank&quot; href=&quot;https://brewmobileplatform.qualcomm.com/devnet/index.jsp&quot;&gt;Qualcomm의 Brew MP SDK&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;[http://java.sun.com/javame/solutions/]로 이동합니다.&quot; target=&quot;_blank&quot; href=&quot;http://java.sun.com/javame/solutions/&quot;&gt;Oracle의 Sun Java Wireless Client&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
<category>Whipped Cream</category>
<category>brew</category>
<category>Qualcomm</category>
<author>wonkim</author>
<guid>http://javba.tistory.com/11</guid>
<comments>http://javba.tistory.com/11#entry11comment</comments>
<pubDate>Wed, 17 Feb 2010 19:00:51 +0900</pubDate>
</item>
</channel>
</rss>