기본 콘텐츠로 건너뛰기

2010의 게시물 표시

Java Inside: Cinterion Wireless Module

Cinterion이 제공하는 Wireless Module에는 Java ME (CLDC + IMP-NG)가 들어가 있다고 합니다. 내용을 들어보면 요즘 많이 회자되는
M2MSmart GridHealthcareAutomotive등의 분야에 Cinterion의 Wireless Module + Java ME가 최적의 technology이다라고 말하고 있네요.
JSR-228 IMP-NG는 MIDPv2에서 UI 기능을 제거하고 M2M 장치에서 필요로하는 네트워킹, 보안, RMS 등의 기능만 제공하는 라이브러리로 생각하시면 되겠습니다.
참고자료: http://www.cinterion.com/home.htmlJSR-228 IMP-NG
지금까지 정리해본 Java Inside 장치들. Amazon의 Kindle eBook 리더Blu-ray Disc에 사용되는 BD-J교육용으로 사용하기 좋은 Sun SPOT스마트 볼펜 - Livescribe PulseVoIP 전화기 - Cisco 7975 VoIP PhoneJADS and Audi Sheeva Plug-in Computer

개인적인 근황

12월 초까지 대학원 석사 논문 주제인 Android Dalvik VM의 JIT 컴파일러에 대해 살펴보고 글을 정리하느라 바쁘게 지냈습니다. 덕분에 블로그 쓸 시간이 없어 업데이트가 뜸했네요.
논문을 마치며 계획하였던 목표를 완전히 달성하지 못해 아쉼움도 남지만 그래도 Dalvik의 JIT 컴파일러 구현 내부에 대해 살펴보고 얄팍하나마 이해를 할 수 있게 되어 즐거운 경험이었습니다.

이제 논문도 일단락 되어 Java SE 7 및 OpenJDK 기술 관련하여 공을 들일 예정입니다. 기회가 되면 Dalvik 논문을 작성하면서 얻은 지식도 블로그를 통해 공유해보고 싶네요.

다음 주에는 중국 베이징에서 열리는 JavaOne 2010 Beijing에 참석차 출장을 갑니다. 미국 JavaOne 때 처럼 현장 분위기를 블로그를 통해 공유하도록 하겠습니다.

Java 업데이트 - 2010년 12월 9일

이번 주 부터 새로 소개된 Java 기술 자료 및 뉴스를 블로그에 링크로 정리해보도록 하겠습니다. 목표는 1주 단위로 업데이트하려고 합니다.

Java Web Services: The State of web service securityWeb Service Stack들의 보안을 비교하는 글 GAE storage with Bigtabel, Blobstore, and Google StorageGoogle App Engine이 제공하는 데이터 저장소를 어떻게 활용할 수 있는지 소개하는 글 .NET vs Java.NET과 Java EE를 비교 JCP Approves JSRs for Java SE 7, Java SE 8, Project Coin and LambdaJCP가 Java SE 7과 Java SE 8에 대한 JSR을 Approve하였다.

LG Optimus 7 and 7Q 소개 영상

오랫만에 가볍게 동영상 하나 소개해보렵니다. LG가 출시한 Windows Phone 7 기반의 Optimus 7 and 7Q 소개 동영상입니다. 영상을 보니 7Q는 쿼티 자판을 지원하네요.
사운드가 박진감(?) 넘치니 회사에서 보시려면 볼륨을 줄여주세요. 한국에는 언제쯤 출시되려나요?



Galaxy S 광고를 보면서도 비슷한 생각이 들었는데요 이 광고 역시도 반 이상은 MS의 Windows Phone 7 운영체제를 소개하는 광고로 보이네요. MS가 돈 좀 지원해주나...

Java: Java SE 7과 Java SE 8을 위한 JSR submission

Oracle이 Java SE 7과 Java SE 8을 위한 JSR을 JCP에 제출하였다. 아래 JCP 웹페이지에서 가져온 내용을 살펴보도록 하자. Review Ballot은 2주 안에 끝날 예정이다.
Java SE 7을 위한 JSR-336은 2011년 7월에 Final Release가 계획되어 있고 JSR-337은 2012년 10월로 계획되어 있다.

334Small Enhancements to the JavaTM Programming LanguageDescription:
A successor to JSR 201 to enhance the Java programming language with an assortment of small changes to improve productivity. Changes must be simultaneously small in specification, implementation, and testing.Spec Lead:
Joe Darcy, Oracle


335Lambda Expressions for the JavaTM Programming LanguageDescription:
Extend the Java language to support compact lambda expressions (closures), as well as related language and library features to enable the Java SE APIs to use lambda expressions effectively.Spec Lead:
Brian Goetz, Oracle

336JavaTM SE 7 Release ContentsDescription:
The Umbrella JSR for the seventh edition of the Java SE PlatformSpec Lead:
Mark Reinhold, Oracle

337JavaTM SE 8 Release ContentsDescription:
The Umbrella JSR for the e…

Java: Apple과 Oracle Mac OS X용 Java 개발에 협력하기로 발표!

Mac을 사용하는 Java 개발자들에게 정말 좋은 소식입니다. 얼마전 Apple이 Mac OS X에서 더는 Java 버전 갱신을 지원하지 않을 것이라 발표하여 Mac을 사용하는 Java 개발자들이 걱정하였는데요 (저도 그 중 하나입니다만) 오늘 발표로 이런 걱정은 일소하게 되었습니다.


Oracle and Apple Announce OpenJDK Project for Mac OS X - InfoQ

"Apple will contribute most of the key components, tools and technology required for a Java SE 7 implementation on Mac OS X, including a 32-bit and 64-bit HotSpot-based Java virtual machine, class libraries, a networking stack and the foundation for a new graphical client. OpenJDK will make Apple’s Java technology available to open source developers so they can access and contribute to the effort."

Apple이 발표한 위 press release 내용에 따르면 Apple은 Mac OS X용 Java SE 7을 개발하는 데 필요한 Virtual Machine, 클래스 라이브러리, 네트워킹 스택, Mac OS를 위한 새로운 그래픽 클라이언트 등의 코드를 제공하고 이를 Open JDK 프로젝트에서 오픈소스 프로젝트로 진행할 것임을 밝혔습니다.

+
Java SE 6 버전은 계속 Mac OS X 운영체제에 기본적으로 탑재될 것이고 최신 Java 버전은 Oracle에 의해 배포되는 형식을 취할 것으로 보입니다.

이로써 개인 컴퓨터의 주축을 이루는 3대 플랫폼 - Windows, Linux, Mac OS X - 에 모두 Oracle이 주도하는 …

Java Inside: SheevaPlug Computer와 Java SE for Embedded

http://www.theregister.co.uk/2010/11/11/diy_zero_energy_home_server/

재미있는 기사를 찾아 링크를 걸어본다. 위 기사는 SheevaPlug라는 Plug Computer를 이용하여 리눅스 서버와 Java SE for Embedded를 탑재, 전력사용량을 최소화한 웹서버 시스템을 구축한 사례에 대해 이야기 하고 있다.


서버 팜을 운영하는 회사들이 이러한 기술을 도입하여 전력사용량을 줄여 이익을 극대화하는 한편 환경보호에도 앞장설 수 있다면 좋지않을까?

ARM은 자신들의 강점인 저전력 프로세스 기술을 서버 시장에서도 활용할 것으로 보인다. 앞으로 인텔과 서버 시장에서의 대결구도가 재미있을 것 같다.

참고로 지난 10월에 Oracle에서 Java SE for Embedded v6 u21 버전이 새로 출시되었다. ARMv5, v6, v7 아키텍쳐를 지원하며 PowerPC 아키텍쳐도 지원한다. 운영체제는 리눅스와 Windows XP Embedded를 지원한다.

참고:
ARM, 마벨 아마다 XP로 서버 시장 본격 진출Marvell debuts ARM server chipA Note On Setting Up the SheevaPlug Linux Plug Computer

Java Inside: Audi의 무인 자동차 프로젝트와 JADS에 대한 소개

Java가 사용된 embedded device를 소개하는 Java Inside 시리즈. 한동안 뜸했는데 좋은 소스를 찾아 오랫만에 글을 올린다.

오늘 찾은 내용은 Audi가 Java RTS를 이용하여 Stanford 대학과 무인 자동차 프로젝트를 연구 중이라는 내용이다.

Audi bringing Autonomous Audi TTS Pikes Peak technology project to SEMA show

위 기사의 내용을 보면 Audi가 몇년간 진행하였던 무인 자동차 기술을 2010년 11월 2일 부터 5일까지 라스베가스에서 열리는 SEMA 쇼에서 선보이다고 한다. 무엇보다 개인적으로 흥미로운 점은 Java RTS 기술을 활용하여 자동차의 가장 중요한 안전에 관련된 알고리즘을 구현하였다는 것이다.

또한가지 흥미로운 제품으로 광고나 각종 정보를 LCD TV를 통해 보여주는 Digital Signage 제품을 Java 서버와 클라이언트를 이용하여 구현한 JADS Digital Signage이다. 이 제품은 영국의 University of Kent 전자공학과에서 공지사항을 손쉽게 전달하기 위해 시작한 학내 프로젝트에서 발전하였다.

Google의 App Engine을 이용하여 서버측 관리 프로그램을 제공하고 web 프로그램을 통해 digital signage에 출력될 내용을 변경하면 클라이언트에 있는 Java Application을 통해 바로 수정된 내용을 화면에 출력하는 형태의 시스템이다.

(JADS Digital Signage의 화면 예제)
http://www.jads.co.uk/digital-signage/demo-screen에 접속하여 자신의 PC에서 직접 데모를 확인할 수 있다.

iOS: WWDC 2010 세션 정리 - LLVM 관련

요즘 틈틈이 보고 있는 WWDC 2010 세션 비디오에 대해 정리해두고자 한다.

LLVM (Low Level Virtual Machine)은 iOS, MacOS 소프트웨어를 개발하기 위해 사용하던 GCC 컴파일러를 대치하기 위해 Apple이 오픈소스 프로젝트로 진행하고 있는 컴파일러 시스템이다.

LLVM 컴파일러 시스템은 컴파일러를 개발하기 위해 필요한 core library를 제공하며 이 core library를 이용하여 Clang이라는 Objective-C, Objective-C++, C, C++ 컴파일러를 구현한다.  또한, LLVM, Clang을 이용하여 LLDB라는 디버거로 기존 GDB를 대치한다.

다음은 LLVM 컴파일러를 활용했을 때의 주요 장점들이다.
컴파일한 코드의 성능을 향상시킨다. 예를 들어, OpenSSL을 LLVM으로 컴파일하면 기존 GCC 대비 약 30%의 성능이 향상된다. 빌드 시간을 단축한다. WWDC 2010 세션에 보여준 결과로는 릴리즈 빌드의 경우 20%~60% 시간을 단축한다. 디버그 빌드의 경우에는 심지어 3배 이상 빠른 빌드 시간을 보여준다고 한다.정확한 에러 메시지를 보여준다. 아무리 봐도 알듯 말듯한 에러 정보가 아닌 정확히 어떤 문제이고 어떻게 고쳐야하는지 알려준다.Static Analysis 기능을 제공하여 코드의 논리적인 오류까지 알려준다.Memory 사용량을 30% 정도 줄였다.(예: LLVM 컴파일러가 제공하는 에러 메시지와 GCC가 제공하는 메시지 차이)
$ gcc-4.2 -fsyntax-only t.c t.c:7: error: invalid operands to binary + (have 'int' and 'struct A') $ clang -fsyntax-only t.c t.c:7:39: error: invalid operands to binary expression ('int' and 'struct A') return y + fun…

2010년 3Q 휴대폰 시장 점유율 - IDC 자료

ZDNet 기사에서 가져온 자료입니다. 노키아, LG가 수세이고 삼성과 Apple이 1, 3위 자리를 넘보고 있군요. 물론, Apple이 3위 자리를 차지하려면 아직 4% 이상 gap이 있지만요... RIM도 Apple과의 경쟁이 힘겨워 보이네요.

UPDATE:
가트너가 발표한 자료도 함께 올려봅니다. 순위는 같지만 점유율에서는 차이를 보이는군요. 특히, 상위 3 업체의 점유율은 모두 떨어진 것으로 보이며 Apple, RIM, HTC와 같은 스마트폰 업체들의 점유율이 한결같이 상승한 것을 보여주고 있습니다.

참고자료:
애플, 세계 휴대전화 시장에서 4위로 올라서휴대폰 ‘빅3’ 희비쌍곡선…노키아 ‘흐림’·삼성 ‘활짝’·LG ‘울상’Apple iPhone leafrogs BlackBerry in smart phone rankings2010년 2Q 휴대폰 시장 점유율 - 가트너

iOS: iPhone용 계산기 프로그램 만들어보기

이 내용은 Stanford 대학에서 제공한 "Developing Apps for iOS"의 강의 내용을 참고하여 작성한 것임을 밝힌다.

2012/2/22 - Xcode 4.3 (iOS 5.0) 기준으로 업데이트!

Stanford의 강의 내용이 좋지만 영어의 장벽때문에 좌절하고 있을 개발자 분들에게 약간이나마 도움이 되었으면 하는 마음과 내 스스로 정리한다는 차원에서 해당 강좌를 듣고 내용을 정리해보고자 한다. 이 강의는 iTunes University에서 "Developing Apps for iOS"로 직접 검색하여 "Building a simple calculator"라는 제목의 동영상을 통해 볼 수 있다.

원래 이 Stanford 강의의 목적은 기본적인 iOS 프로그램 개발과 MVC 구조에 대한 이해를 돕는 것이다. 아직 기초 단계의 강의라 메모리 해지 등에 대해서는 신경쓰지 않고 진행한다.

1. Xcode에서 새로운 프로젝트 생성
Xcode를 구동한 후 iOS의 Single view application으로 Calc라는 이름의 새로운 프로젝트를 만들자. (Storyboards는 사용하지 않는다.)

2. MVC에서 M에 해당하는 Model 소스를 추가
좌측의 Calc 폴더에서 context menu를 뛰우고 New File...을 선택한다. New File 다이얼로그에서 Objectiv-C class를 선택하고 이름을 CalcBrain이라고 하자. CalcBrain.h와 CalcBrain.m 파일이 생성된다. (.m 파일은 .c 로 생각하면 된다.) CalcBrain은 계산기 구현에 필요한 model을 담당할 파일들이다.

3. CalcBrain.h에 instance variable과 instance method를 선언
계산기 model에 필요한 데이터와 동작을 header 파일에 선언한다.
#import <Foundation/Foundation.h> @interface CalcBrain : NSO…

Java: 쓸만한 Java 라이브러리 목록

Java로 프로그램을 개발하다 어! 이건 어떻게 짜지라는 의문이 생길 때 한번쯤 참고할 만한 라이브러리들을 찾아보고자 한다. 앞으로 찾아서 계속 리스트에 추가할 예정. 시간이 허락하면 정말 관심가는 라이브러리는 좀 더 파보고 블로그에 정리해두도록 하자!

이 글을 보시는 분들 중 자신이 사용해본 혹은 알고계신 Java 라이브러리 댓글로 추천 부탁드립니다.

Google Data Java Client구글 서비스를 이용한 프로그램을 작성할 수 있다Google Guava 콜랙션 등 Google의 기본 Java 라이브러리JavaMail APISMTP, POP, IMAP등 이메일 프로그램을 개발할 수 있다 Flying SaucerXHTML, CSS등을 rendering하는 API ITextPDF 문서를 처리하기 위한 API Java OpenAL OpenAL의 Java binding API. 3D 사운드 구현Java OpenGLOpenGL의 Java binding API. 3D 그래픽 구현 Java OpenCLOpenCL의 Java binding API. GPU의 power를 Java에서 활용JMonkey3D 그래픽 API Lucene정보 처리를 위한 indexing, search 라이브러리Apache POI MS Office 문서 처리를 위한 라이브러리 Java Media Framework멀티미디어 처리를 위한 라이브러리 JUnit자동화된 Unit 테스트를 위한 라이브러리 OpenDSDirectory Service를 위한 라이브러리 JiBXXML binding to Java. Java 객체를 XML로 XML에서 Java 객체를 생성LombokJava POJO 코드 작성 시 지루하게 반복되는 코드 패턴을 annotation을 사용하여 제거해주는 도구

Java: IBM joins OpenJDK 에 관련된 뉴스들...

원문: http://www.infoq.com/news/2010/10/ibm-joins-openjdk

Oracle이 Java 생태계를 발전시키기 위해 손발 걷고 뛰고 있음이 확실해보인다. IBM이 Apache Harmony 프로젝트에서 손떼고 Oracle의 OpenJDK 프로젝트를 지원한다고 밝혔다.

아래 참고 기사들을 살펴보면 Java에 대한 불확실성이 걷히고 더 많은 발전을 할 것임을 확신하는 것과 더불어 Google Android 진영이 직면한 위기(?)에 대해 이야기하고 있다.

참고:
오라클-IBM, 자바 공동 개발한다. - ZDNet Korea오라클-IBM 자바 협력, 구글 안드로이드 어찌하오리까? - ZDNet Korea IBM backs Oracle against Apache and Google's Android - Register IBM and Oracle vs. Android? Good luck with that - ZDNet Blog Oracle-IBM pact cuts Android off at the knees - InfoWorld An Unexpected Pleasure - Life at Eclipse Blog IBM joining OpenJDK: repeat after me "pragmatic" ... - Sacha's WeblogGoogle 실시간 검색 for IBM + OpenJDK Oracle outlines plans for Java Platform - Oracle OpenJDK 빌드 환경 셋업 - My Blog

Who is really winning the smartphone race?

Gizmodo에 재미있는 기사가 있어서 그대로 그림만 옮겨와 봅니다.

이 그림의 Samsung, LG의 market share growth 부분은 smart phone만 포함한 것인가요? 그렇지는 않은 듯... 원문 기사를 참고하세요.

Android: gdb를 이용한 Dalvik VM 디버깅

Dalvik VM 혹은 Android의 시스템 일부를 수정하다 보면 GDB를 이용하여 디버깅이 필요한 경우가 있다. 이 글에서는 Dalvik VM의 내부를 수정한 경우를 가정하여 GDB로 어떻게 디버깅이 가능한지 (간단히) 정리해보도록 하겠다.

1. Dalvik VM 코드 수정 및 빌드
Dalvik의 인터프리터 성능을 향상시키기 위해 ARMv5용 코드를 수정한다고 가정하자. 관련 코드는 Dalvik의 vm/mterp/armv5te에 있는 header, footer 소스를 수정하거나 혹은 mterp/out 폴더에 있는 InterpAsm-armv5te.S를 수정하면 될 것이다. (mterp의 전반적인 구조에 대해서는 mterp의 README.txt 파일을 참고하도록 하자.)

수정한 Dalvik VM을 에뮬레이터 환경으로 빌드하는 방법은 내가 작성한 예전 블로그 글을 참고하시기 바란다. 또한, 빌드한 system image를 Android SDK에 엮어서 사용하기 위한 방법은 이 글을 참고하시길 바란다.


2. 테스트를 위한 Android 프로그램 실행
Android SDK와 Eclipse가 설치되어 있다면 내가 수정한 Dalvik VM 코드가 정상적으로 동작하는지 확인하기 위해 간단한 예제 Android 프로그램을 작성하여 에뮬레이터에서 실행해보자. 이 과정을 수행하기 전에 1번의 과정(Dalvik 수정/빌드 및 빌드한 system image를 Android SDK에 복사하는 과정)을 마쳐두어야 한다.


3. adb shell을 이용하여 GDB server 구동
에뮬레이터에서 실행되고 있는 Android 프로그램에 GDB를 연결하여 Dalvik VM을 디버깅하기 위해서는 우선 에뮬레이터에서 GDB server를 구동해주어야 한다.
android sdk의 tools 폴더에 있는 adb로 adb shell을 실행한다. (adb에 대한 자세한 설명은 Google 문서를 참고하시길) adb shell에서 내가 작성한 예제 프로그램의 pid를 확인하기 위해 ps 명령어를 실행한다…

Java: OpenJDK 빌드 환경 셋업

JavaOne 2010에서 Oracle은 OpenJDK 프로젝트를 계속적으로 지원할 것을 천명하였다. OpenJDK는 Java SE SDK의 오픈소스 프로젝트로 앞으로 출시될 JDK 7도 OpenJDK 프로젝트를 통해 개발이 이루어지고 있다.

OpenJDK 프로젝트를 이용하여 새로이 나올 JDK 버전의 기능을 미리 확인해 볼수도 있고 내부 코드의 구현 방법을 살펴보면서 Java 프로그래밍 능력을 향상시키는 기회로 삼을 수도 있을 것이다. 더 나아가 Java 발전에 직접 기여하는 뜻깊은 일을 해볼 수 있을지도 모른다.

이 글에서는 OpenJDK를 Windows XP 환경에서 빌드하는 방법에 대해 설명해보고자 한다.

1. Tools
Windows에서 OpenJDK를 빌드하기 위해서 Cygwin이 필요하다. Cygwin 설치 시 다음과 같은 package들을 설치하도록 한다.
binutils - GNU assembler, linker, binary utilitiesmake - GNU makem4 - UNIX macro processor (GNU version)cpio - Manage archive of filesawk - Text processing languagefile - File type checkzip - zip utilityunzip - unzip utilityprocps - Get free and used memory space of systemmercurial 만일 cygwin의 make 버전이 3.81이라면 3.78 ~ 3.80 사이의 버전을 사용하여야 한다. make -v로 3.81 버전으로 판명되면 여기서 make.exe를 다운로드 받아 cygwin/bin 폴더의 make.exe를 대치하여 사용한다.

OpenJDK workspace를 clone하기 위해서는 Mercurial에 Forest라는 extension이 필요하다.
hg clone http://bitbucket.org/pmezard/hgforest-crew 위와 같은 명령을 cygwin shel…

JavaOne 2010 마지막 날

오늘은 Garbage Collection Myth Buster라는 세션을 들었습니다.

GC 개발자인 John Coomer와 Tony Prinfezis가 주거니 받거니 만담하듯이 세션을 진행하였는데요 GC가 malloc/free보다 느리냐? GC는 만병통치약이냐? GC에서 finalizer를 왜 객체 소멸할때 바로 부르지 못하지 등등의 질문을 던지고 의문을 해결해가며 JVM GC에 대해 이해하는 형식의 세션이었습니다. (이 내용도 나중에 다시한번 보고 정리해 볼 가치가 있어보입니다.)

오전에 Java Keynote가 하나 더 있었는데 어제의 숙취때문에 듣지 못하고 말았군요. 한국에 돌아가서 비디오로 봐야할 것 같습니다.

저녁에는 Oracle America Consultant팀과 이탈리아 레스토랑에서 회식(?)을 하였습니다. 미국 친구들은 첨 봐도 참 친화력들이 좋아서 편하게 어울릴 수 있어 좋습니다. :)

이제 슬슬 짐싸고 떠날 채비를 해야겠네요. 내년을 기약하며 이만.


위 사진은 오라클 행사가 열리고 있는 Moscone Center 근처의 Yerba Buena Garden입니다. 편안한 분위기 매우 좋습니다.

제가 이전에 작성했던 GC 관련 블로그 참고하세요.

JavaOne 2010에서 얻은 Java에 대한 계획 정리

JavaOne 2010에서 발표된 Java의 발전 방향에 대해 간단히 정리해보도록 하자.

1. Java SE의 발전 방향
기존 서버 시장뿐 아니라 클라이언트 환경에서도 다른 개발 도구의 도움 필요 없이 Java만으로 최고의 UI를 개발할 수 있도록 하겠다는 것이 주된 주제로 보인다.

이를 위해 JavaFX API를 이용 2D, 3D, Animation등 화려한 UI를 개발할 수 있도록 한다고 하며 특히, 최적의 성능을 보여주기 위해 Windows, Linux, Mac등 플랫폼이 제공하는 native graphic 시스템에 tight하게 integration한다.

또한, HTML5와 유기적으로 연동된 UI를 개발할 수 있도록 한다는데 HTML, CSS, JScript등으로 Java 프로그램의 UI를 구성할 수 있게 하려는 것으로 보인다.

이외에도 개발자의 생산성을 향상시키기 위해 JDK7에서 Project Coin이라는 이름으로 Java 언어자체에 새로운 기능들을 추가하며 Oracle이 보유하고 있는 JRockit JVM의 몇몇 좋은 기능들을 Sun의 HotSpot VM에 통합하여 하나의 통합된 JVM을 제공할 것으로 보인다.

2. Java ME의 발전 방향
JavaOne 키노트에서 잠깐 Java ME.Next를 언급하였는데 현재 1.4 버전에 머무르고 있는 Java ME VM을 Java SE와 동일한 1.6 (or 1.7) 버전으로 맞추고 모바일 환경에 필요한 추가적인 API를 제공할 것이라고 한다. Java SE와 마찬가지로 Java + Web에 대해 강조를 하였다.

3. Java EE의 발전 방향
추후 정리해보도록 하자.

JavaOne 2010 + Oracle OpenWorld 2010 Day 3/4

3, 4일째 저녁 마다 아는 분들과 술한잔 하느라 업데이트를 못했습니다.
제가 개인적으로 관심있는 세션을 들은 내용이라 별로 흥미롭지도 않을 것 같습니다.

3일째 아침에는 AT&T에서 발표한 Monetize Mobile Applications라는 세션을 들었습니다. AT&T가 정리한 모바일 어플리케이션 판매에 대한 통계치를 보여주었는데 앱 개발자 및 판매자들에게 꽤 흥미로운 내용이었습니다. 특히, AT&T는 2011년 부터 전체 휴대폰 판매량의 30% 이상이 QMP (Qwerty Message Phone)이 될 것이라고 예상하더군요. 즉, 스마트폰 보다는 일반 사람들에게 꼭 필요한 기능들 - 메시징, 로케이션, Qwerty 키 ... - 를 갖춘 형태의 Feature Phone이 점점 많이 팔릴 것으로 예상하였습니다. 또한, BlackBerry Torch 디바이스를 부각시키려고 노력하는 모습이 보였습니다. Mobile Java 개발자라면 이 디바이스에 꼭 관심을 가져야 한다고 하더군요.

오후에는 Mark Reinhold가 발표한 Jigsaw에 대한 세션을 들었습니다. Java의 JAR hell 문제를 해결하기 위해 어떻게 module을 사용하는지 관련 툴과 구조에 대하여 설명하였습니다.

Mark Reinhold가 Java의 Chief Architect라 그런지 정말 많은 사람들이 참석했습니다. 저는 자리가 없어 뒤에 서서 들었습니다. :(

4일째 아침에는 한국 썬에서 일하고 있는 2분의 발표를 들었습니다. 한국 썬의 서병국 차장님은 JSR-290과 JSR-177을 이용하여 모바일 폰에서 SSL client authentication을 수행하여 모바일 뱅킹을 하는 방법에 대한 디자인 제안을 하는 세션이었습니다. 꽤 많은 분들이 참석하여 질문도 많이했습니다. (같은 회사 동료로서 뿌듯하더군요)


그 다음 세션으로 역시 한국 썬에서 PM으로 일하고 계신 이재휴 차장님의 발표를 들었습니다. Qualcomm Brew MP에 OJWC (Oracle …

JavaOne 2010 + Oracle OpenWorld 2010 Day 2

오늘의 하이라이트는 JavaOne 2010 키노트였습니다. 먼저 Intel 에서 Xeon 프로세서에 대한 업데이트와 어떻게 Java에 최적화한 성능을 제공하는지에 대해 설명하였고 그 뒤를 이어 Oracle의 토마스 쿠리언이 Java에 대한 전체 Roadmap을 설명하였습니다.


JDK 7에 대한 로드맵, Java Client의 향상된 UI, Java Server, Java Mobile 순서로 각각 분야별로 앞으로의 청사진을 보여주었습니다. 이 중 특히나 인상 깊었던 부분은 JavaFX / Java Runtime을 이용한 클라이언트 UI 데모였습니다. 전체 비디오 영상을 재생하다가 비디오 영상을 수백개의 작은 조각으로 쪼개서 입체적인 공 형태로 만들어서 계속 재생을 하고 이 공이 사다리 같은 경사면을 굴러내려가는 데모에서는 개발자들의 열렬한 환호를 받았습니다. 특히, 모든 JavaFX UI 컨트롤의 소스를 오픈한다는 좋은 소식도 있네요.

Java Client 부분은 특히, HTML5와의 연동을 강조하였습니다. 앞으로 Java가 Web 기술과 밀접하게 연동될 것임을 이야기하였습니다.
Java Server 분야에서는 최신 GlassFish 버전에서 향상된 기능에 대해 설명하였습니다. 인상 깊었던 내용은 REST API를 구현하기 위해 별도의 HTTP 코딩 필요 없이 Java Annotation을 이용하여 확 몸집을 줄인 코드를 작성할 수 있는 것을 보여주는 데모였습니다.

Java Mobile 분야에서는 현재 Java가 탑재된 각종 디바이스에 대한 설명을 보여주고 (제가 그동안 블로그에 썼던 모든 디바이스가 다 선보였습니다.) 향후 Java Mobile Next라고 하는 새로운 비전에 대해 설명하였습니다. Java Client와 마찬가지로 Web 기술과의 연동을 강조하였고 기존 JSR 표준이 아닌 휴대폰 기기의 장점을 최대한 살릴 수 있는 API 확장에 대하여 이야기하였습니다.

세션 마지막에는 미국의 스케이트 영웅(?) 안톤 오노 선수가 등장해서 머 자기 자랑을 좀 …

JavaOne + Oracle OpenWorld 2010 현장 스케치 Day 1

센프란시스코에서 9월 19일 부터 9월 23일 까지 열리는 JavaOne + Oracle OpenWorld 2010에 참가하기 위해 미국에 왔습니다.


오늘(9/19)은 본격적인 기술 세션전에 Oracle의 Larry 회장님의 Keynote 세션이 있었습니다. BMW + Oracle Racing에서 우승한 비디오 상영에 이어 Oracle의 소프트웨어와 Sun의 하드웨어가 만나 Clouding Serivce 시장을 겨냥한 Exalogic 제품을 발표하였습니다. Exalogic은 Sun의 H/W 장비에 Cloud 서비스를 위한 Oracle의 S/W 솔루션 - Java VM, WebLogic, Coherence, Linux or Solaris 등을 한번에 탑재하여 configuration의 복잡성을 줄이고 저렴한 비용에 최대의 성능을 제공할 수 있는 솔루션입니다. Larry 회장님의 말씀으로는 Exalogic 단 2대로 현재 Facebook의 모든 traffice을 처리할 수 있는 수준이라고 합니다.

기존 JavaOne과 달리 Moscone Center에서는 주로 Oracle OpenWorld 행사가 열리고 주변 Hilton, Nikko, Parc 55 호텔에서 The Zone이란 이름으로 JavaOne과 Oracle Developer Conference가 개최됩니다.

현재 San Francisco Downtown 주변과 Soma 주변은 온통 Oracle의 붉은 깃발과 Java의 푸른 깃발로 넘실 거리고 있습니다. 내일 부터는 JavaOne 2010 세션에 참석하고 들은 내용 위주로 정리해보도록 하겠습니다.

Tip
1) SFO 공항에서 Union Square로 진입하는 방법 - 10$짜리 Bart 표를 구매하여 Platform 3에서 Bart 기차를 탑승. Powell Street Station에 내리면 된다.

2) Union Square 주변 먹을 만한 식당
- Sanraku라고 하는 일식집이 좋다.
- The Morton's Stake House도 좋은…

Android: Tip - How to use my own build Android with SDK emulator?

자신이 직접 Dalvik을 수정하거나 혹은 dx와 같은 tool을 수정한 후 이를 Android SDK와 Eclipse에서 사용하고 싶다면 다음과 같이 할 수 있다.
Dalvik을 수정한 경우 - 자신이 빌드한 out/target/product/generic/ 에 있는 system.img 파일로 android sdk 폴더에 있는 platforms/android-8/images/ 폴더에 있는 system.img 파일을 덮어씌운다. (android-8 폴더는 자신이 사용하는 Android SDK 버전에 따라 달라질 수 있다.)dx를 수정한 경우 - 자신이 빌드한 out/host/linux-x86/framework/ 에 있는 dx.jar 파일로 android sdk 폴더에 있는 platforms/android-8/tools/lib/ 폴더에 있는 dx.jar 파일을 덮어씌운다.위 과정을 수행한 후에는 Eclipse를 종료 후 다시 시작해야 변경된 시스템 이미지와 dx tool을 사용할 수 있다.

어플 개발을 하는 경우에는 별로 쓸데없는 정보이지만 OEM 회사에서 Dalvik을 입맛에 맞게 변경하는 경우 에뮬레이터에서 테스트를 해보아야 한다면 유용한 정보일 듯 싶어 정리해둔다.

참고:
다시 한번 Android 소스 빌드

오라클 JDK 7 계획 수정?

Mark Reinhold의 블로그에 소개된 글을 보면 분명 JDK v7.0에 대한 계획이 수정될 것으로 보인다.

Re-thinking JDK 7

그의 글에 따르면 그동안 오라클 합병 과정 동안 지연되었던 일정 때문에 기존 JDK 7에 계획하였던 모든 기능을 지원하려면 2012년은 되어야 JDK 7을 출시할 수 있다고 한다. 너무 늦은 출시 때문에 Java의 발전 모멘텀이 약해질 수 있으므로 기존 JDK 7에서 계획되었던 기능을 축소하고 아래와 같은 새로운 출시 일정을 제안하고 있다.

Plan A:JDK 7 (as currently defined)Mid 2012Plan B:JDK 7 (minus Lambda, Jigsaw, and part of Coin)Mid 2011
JDK 8 (Lambda, Jigsaw, the rest of Coin, ++)Late 2012




위 계획에서 오라클의 선택은 Plan B 란다. Lambda, Jigsaw, Coin의 일부 기능 등등을 제거한 JDK 7을 내년 중반에 출시하고 나머지 기능 + Alpha를 2012년에 JDK 8으로 출시한다는 계획이다.

그렇다면, JDK 7에 새로이 추가되는 기능에는 정확히 어떤 것들이 있다는 것일까? 해당 블로그의 커멘트를 보면 아래와 같은 기능들이 추가될 예정이라고 한다.

- invokedynamic and method handles for other language support
- nio.2 (asynchronous I/O and much better file/directory support)
- parallel classloading
- from Project Coin:
- 6860965: Support for binary literals (e.g. 2 can be written 0b10)
- 6860965: Support for underscored literals (e.g. 123456 can be written 123_456)
- 6827009: Support for strings in s…

Apple의 Touch Gesture에 대한 특허 소송 승소 소식

Apple wins patent for citically important iOS swipe-to-scroll gesture
http://reviews.cnet.com/8301-19512_7-20015237-233.html Android 진영 만의 문제가 아닌 것 같다. 요즘 나오는 대부분의 Touch UI 휴대폰에 스크롤링을 위한 제스쳐는 iPhone의 그것을 따르고 있는데 어떻게 되는 것일까?

물론, 지금은 HTC에 제기한 소송일 뿐이지만 Samsung, LGE 등의 국내 업체에도 불똥이 튈수도 있는 사항. 과연 Apple과 맞교환할 수 있는 가치의 특허를 얼마나 보유하고 있는지가 관건일 듯.

Android 진영은 Apple의 특허 소송에 이어 Oracle의 Java에 대한 특허 소송까지 줄줄이 악재가 겹치고 있다. 또다른 회사에서 걸고 넘어질 문제점이 아직 남아있을지도 모를 일.

Apple의 Hobby Project 새로운 Apple TV

9월 1일에 있었던 Apple Special Event에서 스티브잡스가 스스로 취미 프로젝트라 명명한 Apple TV의 다음 버전을 공개하였다.
애플, 스마트 TV도 주도권 노린다. 가격 낮추고 쓰기 쉽게 차세대 "애플 TV" 성공할까?
 내 이전 블로그 글에서도 피력한 바와 같이 Apple이 스마트 TV를 개발한다면 분명 Google이나 타 가전 업체들이 취하고 있는 방향과는 다른 길을 걸을 것이라고 예상하였다.

이번 Apple Special Event에서 밝혀진 것처럼 분명 스티브는 타 회사와는 다른 세그먼트의 스마트 TV에 집중하고 있다. 왜 이 길이 타 업체에 비해 더 똑똑하다고 느껴질까?
TV는 TV다. 전 블로그 글에서도 주장했다시피 TV는 TV다. 영화나 드라마와 같은 컨텐츠를 쉽게 즐길 수 있게 하는 것이 가장 중심에 있어야 한다. 특히, quality가 있는 컨텐츠를 공급하는 것이 중요하다. 마냥 대량의 공짜 컨텐츠를 제공한다고 해서 의미가 있어 보이지 않는다.Apple은 자사의 제품간 확실한 세그먼트를 나누고 있다. 전화기는 iPhone, 모든 손안의 fun은 iPod Touch, 집에서 손쉽게 인터넷을 즐기기 위해서는 iPad, 정말 advanced user는 iMac, 가족과의 영화 감상은 Apple TV. 서로 짜임새 있게 제품의 세그먼트가 나누어져 특정 소비자의 욕구를 충족시키기 위한 역할을 충실히 하고 있다.가격 - TV 소비자는 가격에 민감한 사람들이다. Rent를 하건 구매를 하건 컨텐츠의 가격이 적당해야 한다. 디바이스 자체 가격도 수긍할 수준이어야 하는데 이번 $99 가격은 정말 누구나 쉽게 구매할 수 있는 가격대로 보인다. 어떻게 보면 앞으로 Apple TV와 연결하는 HDTV는 화면 크고, 화질 좋고, 사운드 빵빵하면 그 외의 것은 괜히 가격만 올리는 역할을 하게 될지도 모르겠다. (그렇담 삼성 or LG 패널을 사용한 그냥 아무런 기능 없는 중국산 TV도 현명한 소비자의 선택 리스트에 오를지도...)여전히 …

2010년 2Q 휴대폰 시장 점유율 - 가트너

2010년 2Q 휴대폰 시장은 전체적으로 13.8% 성장하였다고 가트너가 발표하였다. 하지만, 심화된 경쟁으로 인해 단가는 낮아졌다고 한다.

(가트너가 발표한 2010년 2Q 휴대폰 제조사 별 점유율. 천대 기준)
Company 2Q10  Units 2Q10 Market Share (%) 2Q09  Units 2Q09 Market Share (%) Nokia 111,473.8 34.2 105,413.4 36.8 Samsung 65,328.2 20.1 55,430.1 19.3 LG 29,366.7 9.0 30,497.0 10.7 Research In Motion 11,228.8 3.4 7,678.9 2.7 Sony Ericsson 11,008.5 3.4 13,574.3 4.7 Motorola 9,109.4 2.8 15,947.8 5.6 Apple 8,743.0 2.7 5,434.7 1.9 HTC 5,908.8 1.8 2,471.0 0.9 ZTE 5,545.8 1.7 3,697.9 1.3 G’Five 5,208.6 1.6 NA NA Others 62,635.2 19.30 45,977.2 16.1 Total 325,556.8 100.0 286,122.3 100.0
기존 순서대로 Nokia, Samsung, LG가 각각 1,2,3위를 차지하였고 그 뒤를 Sony Ericsson, Motorola를 제치고 RIM이 4위를 차지하였다. Apple이 근소한 차이로 Motorola의 뒤를 바짝 따르고 있다. 이제는 휴대폰 업계 Big5가 Nokia, Samsung, LGE, RIM, Sony가 되겠다. (안녕~ Motorola ...)

Nokia, LG는 2009년 2Q 대비 약간씩 점유율이 줄어드는 모습을 보였고 Samsung, RIM, Apple, HTC등이 점유율을 높였다. 대부분 스마트폰 관련된 업체가 강세임을 알 수 있다.

Samsung의 경우 2010년 3Q에 Windows Phone 7 출시가 예상되고 있고 RIM의 경우는 새로운 BlackBerry OS 6.0에 기반한 터치폰인 Torch 출시에 관심이 쏠리고 있다.

(가트너가 발표한 2010년 2Q 스마트폰 운영체제 점유율)

2010년 8월 14일 현재 IT 기업의 규모

오라클과 구글의 소송 소식을 접하고 현재 주요 IT 기업들의 몸집이 서로 누가 더 큰지 궁굼하여 Yahoo Finance에서 Market Cap을 살펴보았다.
Apple - 227 billion $Microsoft - 211 billion $IBM - 161 billion $ Google - 155 billion $Cisco - 121 billion $ Oracle - 113 billion $Intel - 106 billion $HP - 94 billion $삼성전자 - 90 조원 <== 삼성전자는 한 이정도 위치이겠군요. Verizon - 84 billion $ Nokia - 32 billion $ Dell - 23 billion $.... LG전자 - 14조원 <== 중간에 다른 업체들이 많을테니 14위는 아닙니다. 음... IT 기업의 4위, 6위 업체의 대결이라. 세기의 대결이라 할만하다.

참고로 이 소송의 핵심에 서있는 Java(TM)가 (여전히) 시장 지배력 1위의 개발 언어임을 TIOBE index를 통해 확인해보자.

Android: Oracle이 제기한 Google Android에 대한 소송

NOTE - 이 글에 작성한 내용은 이미 언론에 공개되어 있는 내용을 근거로 하여 정리한 개인적인 의견입니다. 회사의 의견이나 회사의 비밀 정보는 전혀 없음을 알립니다.

8월 12일 미국 NORTHERN DISTRICT OF CALIFORNIA의 지방 법원에 Oracle이 Google을 상대로 특허와 저작권을 침해하였다고 Case No. pa-1418106으로 소송을 제기하였다.

이미 많은 뉴스에 기본적인 소송 내용을 소개하고 있으니 아래 링크에서 간단히 확인을 해보시기 바란다.
오라클, 특허침해 혐의로 구글 제소오라클, 구글 안드로이드 특허침해 소송안드로이드, 특허소송 휘말렸다 - ZDNet 이 글에서는 pa-1418106에서 구글이 침해하였다고 주장한 오라클이 보유한 7개의 특허를 정리해보려고 한다. 다시 한번 말하지만 아래 내용은 회사 내부 정보와는 전혀 관계 없고 미국 특허청이 제공한 public한 특허 문서를 보고 개인적으로 정리해본 내용이다.

- 실제 특허의 내용과 내가 이해한 내용이 차이가 있을 수 있음을 미리 알린다. -

1. No. 6,125,447
특허명: "Protection Domains To Provide Security In A Computer System"

2. No. 6,192,476
특허명: "Controlling Access To A Resource"

위 1,2 번 특허 모두 permission에 기반한 보안 처리에 대한 특허 내용으로 보인다. 모두 Li Gong이 제안한 특허.

3. No. 5,966,702
특허명: "Method And Apparatus For Preprocessing And Packaging Class Files"

복수 개의 클래스 파일에 중복된 데이터를 전처리 과정에 의해 중복을 합치고 제거하는 처리에 대한 특허 내용인 것 같다. Nedim Fresko가 제안한 특허.

4. No. 7,426,720
특허명: "System And Method For…

Java: 실시간 처리를 위한 Java Real-Time System 소개

Real-Time System이란? 아주 빠른 속도로 처리되는 시스템을 의미하는 것일까?

아니다! Real-Time System이란 빠른 속도로 처리되는 것이 아니고 정해진 시간에 정확히 동작을 수행하는 시스템을 의미한다.

Nasa에서 개발한 로켓의 추진 제어 장치 소프트웨어를 개발한다고 상상해보자. 로켓이 대기권에 진입하기 정확히 59초 전에 자세 제어 추진을 1.6초 수행하여 각도를 15도 변경해야한다.
이처럼 정확한 시간에 정해진 dealine동안 정해진 만큼 동작을 수행하도록 구현하는 시스템을 실시간 시스템이라 볼 수 있다. (위와 같은 동작이 더 빨리 수행된다고 아무런 득 될게 없다. 로켓을 고철로 재활용하기 위한 목적이라면 모를까)

Real-Time System은 정확도에 대한 에러를 어느 정도 감수 할 수 있는지에 따라 Hard Real-Time 과 Soft Real-Time 으로 구분한다. 앞에서 예를 든 로켓 같은 경우는 Hard Real-Time의 경우이고 Soft Real-Time은 약간의 오차 정도는 허용할 수 있는 시스템이다.

Java로 Real-Time을?

정확한 동작을 필요로 하는 Hard Real-Time System에 Java를 이용한 소프트웨어 개발이 가능할까? 일반적인 Java라면 아마 불가능할 것이다. 로켓을 제어하는 순간에 가비지 콜렉션이 하필 시작되거나 혹은 서로 다른 Java 쓰레드간에 스케줄링이 되어 시간차가 발생할 수 있다.

하지만, Java를 만든 Java의 아버지들은 이런 극도의 정확성을 요구하는 곳에서도 Java가 사용되기를 바라마지 않았던 것 같다. JCP (Java Community Process)가 만들어지고 가장 먼전 제안된 1번 JSR (Java Specification Request)가 바로 Real-Time Java이니 말이다.

Real-Time Java는 Real-Time System에서 Java를 사용하기 어렵게하는 근원적인 문제점 - 가비지 콜렉션, 스케줄링 - 등을 해결하고 또한, Real-…

Java: Java for Game? Java가 Game 개발에 어울릴까?

Java가 기업용 서버 소프트웨어 개발에 활발하게 쓰이는 것과 달리 일반 응용프로그램 분야에서는 별로 대접을 받지 못하는 현실을 개선하려면 어떤 분야부터 손보면 좋을까?
로딩타임, 성능, 사용자 인터페이스 등 Java를 이용한 클라이언트 프로그램을 개발하지 않는 이유들은 개발자 별로 서로 다를 것이다. 하지만, 이런 단점에도 불구하고 점점 복잡해지는 소프트웨어를 더 쉽게 다양한 환경에서 동작하도록 만들기 위해서는 Java만큼 이미 성숙한 해결책도 없지 않은가?
클라이언트 개발을 활성화하기 위해 Java를 게임 개발에 활용할 수 있도록 지원하면 어떨까? 역시, 사용자가 직접 쓰는 응용프로그램 중에는 게임이 가장 시장이 큰 분야이니 말이다. 그렇다면, 현재 게임 개발에 Java가 어느 정도 사용되고 있고 미래에 더 활성화 될 가능성은 있을 것인가?
이런 의문점을 가지고 "Java + Game"에 대해 조사해보기로 했다.
1. Java로 개발한 게임들
우선, Java로 개발한 게임들에 대해 살펴보자.
Oracle의 Java in Action 웹페이지를 보면 Java를 이용한 3D MMORPG RuneScape에 대한 설명이 있다. 가입자가 1억 3000만명이 넘는다고 하다. 실제 게임을 설치해서 실행해보니 WOW같은 화려한 그래픽에는 못미치치만 잘만든 Role Playing 게임이다

Puppy Games에서 개발한 Revenge of the Titans 게임도 눈여겨 볼 만하다. 이 회사는 작고 손쉽게 즐길 수 있는 게임을 개발하는데 모든 게임을 Java로 만든다. Revenge of the Titans는 Starcraft와 같은 전략 게임으로 너무 머리쓰지 않고 즐길 수 있는 게임이며 그래픽도 신선하다.

개발이 진행 중인 것으로 보이는 Urban Galaxy라는 게임도 재미있을 것 같다. SF 영화를 보면 자주 등장하는 미래의 빌딩 숲을 날아다니는 자동차로 전투도 치르고 무역도 하며 캐릭터를 키우는 게임으로 보인다. 아래에서 데모 동영상을 볼 수 …