기본 콘텐츠로 건너뛰기

7월, 2010의 게시물 표시

Java: JDK 7의 새로운 기능 - Java외 언어 지원

앞 블로그 글에서 살펴본 JDK 7의 새로운 기능 중 Java 외 다른 개발 언어 지원 기능에 대해 좀 더 알아보자.

Java Virtual Machine은 사실 Java 언어와는 아무런 연관이 없다. Java Virtual Machine 스팩 문서Introduction을 보면 아래와 같은 문장이 나온다.

The Java virtual machine knows nothing of the Java programming language, only of a particular binary format, the class file format. A class file contains Java virtual machine instructions (or bytecodes) and a symbol table, as well as other ancillary information.

즉, JVM은 Java 언어에 대해서는 아무것도 모르며 단지, byte 코드와 기타 정보를 가진 class 파일 포맷에 대해서만 알고 있다는 것이다. Java 언어가 아니라도 Java Virtual Machine 스팩 문서에서 정의한 클래스 포맷과 byte 코드 명령어 규칙을 따르기만 하면 JVM에서 실행할 수 있다.
JRuby - Java로 구현한 RubyJython - Java로 구현한 PythonGroovy - JVM에서 실행되는 새로운 동적 스크립트 언어Rhino - Java로 구현한 JavaScriptJavaFX - Oracle이 RIA를 위해 새로 만든 언어Mirah - Ruby와 유사한 문법의 정적 타입 언어
이미 위와 같이 다양한 개발 언어들을 Java Virtual Machine에서 실행할 수 있다. 왜 이처럼 여러 개발 언어들을 JVM에서 실행하게끔 새로 구현하는 것일까? 몇 가지 이유가 있을 수 있다.

Java가 비록 전 세계적으로 가장 많은 개발자를 거느린 훌륭한 개발 언어임은 틀림없지만 RubyPython과 같이 새롭게 떠오르고 있는 동적 언어를 사용하길 원하는 개발…

Java: Oracle에서의 Java, MySQL = 더 밝은 미래?

cnet에 흥미로운 기사가 실려 소개한다.
(이 글에 사용된 모든 이미지는 Jaspersoft가 제공한 리포트에서 발췌한 것임을 밝힌다.)

Jaspersoft가 13만 명의 개발자를 대상으로 한 조사 결과 "Oracle 체제하에서의 Java와 MySQL에 대해 더 긍정적인 미래를 기대한다"는 결과가 나왔다. (Jaspersoft의 원본 리포트)

2010년 4월에 행해진 이 조사에서 응답자의 3/4 이상이 지금보다 더 혹은 같은 수준으로 MySQL을 계속 사용할 것이라 답하였고 또한, Oracle이 MySQL을 더욱 좋은 제품으로 발전시킬 것으로 믿는다고 하였다.


Java에 대해서는 거의 모든 응답자가 앞으로 같은 수준으로 혹은 더 많이 사용할 것이라 답하였다. 이는 여전히 개발자들이 Java를 발전 가능성이 큰 개발환경으로 인식하고 있음을 보여주는 것이라 하겠다.


Oracle이 MySQL을 위해 별도의 전담팀을 조직하였으며 Oracle 수석 아키텍트인 Edward Screven이 이 팀을 이끈다고 한다. Oracle이 MySQL에 대한 투자를 확대하여 더 좋은 제품으로 발전시키고 또한, 이를 이용하여 MySQL에 대한 수익을 3억 달러 이상 올릴 것으로 기대하고 있다고 이 리포트는 전하고 있다.

조사 결과만 놓고 보자면 일단은 Oracle이 Java와 MySQL이라는 오픈 소스 생태계에 매우 중요한 두 가지 자원을 확보한 것에 대해 개발자들이 좋은 시선으로 보고 있으며 더 밝은 미래가 놓여 있다고 믿는 것으로 보인다.

참고자료:
Report: Java and MySQL doing fine under Oracle - cnet news

Java: 잘 만든 Swing UI 애플리케이션

인터넷을 뒤지다 잘 만든 Swing 애플리케이션이 있어 블로그에 소개하려 한다.
아래 동영상은 Palantir사의 블로그에서 가져온 것이다. 배경 음악이 좀 소란스러우니 볼륨을 낮추고 보시길.

(주의: 동영상 로딩 타임이 길다고 불평하시는 분들이 많다. 좀 참고 기다리시길...)


Palantir은 공공, 금융 분야의 데이터를 분석하여 보기 좋고 이해하기 쉽게 영상화하는 프로그램을 만든다고 한다. 위 동영상에 보이는 모든 UI를 Java의 Swing을 이용하였다고 하니 Java가 클라이언트 프로그램 개발에는 별로라는 것은 개발자 하기 나름이 아닌가 싶다.

Java Swing을 이용하면 Windows (XP, Vista, 7 ...)에서, Mac 운영체제도 그리고 Linux에서도 동작하는 프로그램을 개발할 수 있으니 얼마나 좋은가? 아참. Solaris에서도 ... :)

참고자료:
Java: Swing Libraries & Thread Safety - Stackoverflow

Java: JDK 7이 제공할 예정인 새로운 기능들 (overview)

내년(?) 발표를 앞둔 JDK 7의 새로운 기능 중 몇 가지 관심 있는 것들만 정리해보도록 하겠다. (Open JDK 웹페이지에 있는 내용을 기준으로 참고자료들을 추가하였다.)



1. G1 Garbage First Collector
서버 측 JVM 에서 주로 사용되던 CMS (Concurrent Mark-Sweep) collector를 대신 할 새로운 방식의 collector. 기존 방법보다 GC에 의한 pause time을 줄이고 JVM 성능에 대한 예측을 더 정확하게 할 수 있도록 한다. 이 기능은 실험적으로 Java SE 6 u14 버전에 포함되었다.
JDK 7의 새로운 기능 - G1 가비지 콜렉터 - My Blog Garbage Collection Related ... - My Blog Introduction to G1 Collector - OracleThe Garbage First Garbage Collector - JavaOneJava HotSpot Garbage Collection - OracleG1 paper - Oracle Labs2. Java외의 다른 언어 지원 (invokeDynamic)
이미 Java VM 에서 실행되는 여러 개발언어가 있다. JDK 7은 Java 언어 외 다른 개발언어도 Java 언어와 거의 같은 성능으로 Java VM 에서 수행될 수 있도록 한다.
JDK 7의 새로운 기능 - Java외 언어 지원 - My Blog
Support for Dynamically Typed Languages in the JVM - OracleToward a Renaissance VM - JavaOne 3. Java 프로그래밍 언어 사용을 편리하게 (Project Coin)
JDK 7은 Java 프로그래밍 언어에 코딩을 편하게 하는 기능들을 제공한다.
Project Coin: The Final Five (or So) 4. Lambda (Closure) 지원
요즘 사용하는 대부분의 desktop, laptop 컴퓨터는 이미 멀티 코어 CPU가 기본으로…

빌드한 환경에서 Android Emulator 실행

다시 한번 빌드한 Froyo 버전의 에뮬레이터를 실행하기 위해서 아래처럼 한다.
export ANDROID_PRODUCT_OUT=~/mydroid/out/target/product/generic~/mydroid/out에서 ./host/linux-x86/bin/emulator 실행에뮬레이터가 실행되었다. 이제 Dalvik VM을 디버깅하는 데 필요한 도구들을 실행해보야 하겠다. 우선, DDMS (Dalvik Debug Monitor Server)를 실행해보자.

Android를 빌드한 out/host/linux-x86/bin을 보면 ddms란 실행 가능한 파일이 있다. ddms를 실행하기 위해서는 swt.jar가 위치한 경로를 ANDROID_SWT 환경 변수에 설정해 두어야 한다.
export ANDROID_SWT=~/mydroid/out/host/linux-x86/framework~/mydroid/out/host/linux-x86/bin에서 ddms를 실행(참고: swt.jar?)

SWT (Standard Widget Toolkit)는 IBM이 개발한 GUI 라이브러리이다. Java에서 기본적으로 제공하는 AWT나 Swing과는 달리 JNI를 이용하여 플랫폼이 제공하는 Native UI를 이용하도록 구현하여 성능이 좋고 L&F도 플랫폼과 거의 유사하다고 한다. Eclipse와 같은 개발 IDE도 SWT 라이브러리를 이용하여 개발되었다.

잘 실행된 경우의 화면 모습이다. 앞으로 Dalvik VM을 디버깅하기 위해 DDMS 사용법을 살펴보고 차근차근 정리해보도록 하겠다.


참고자료:
Usining Eclipse - GoogleUsing the Dalvik Debug Monitor - GoogleStandard Widget Toolkit - Wikipedia

Mobile Developer Economics - Java ME 기준으로 정리

이 글은 Vision Mobile이 제공한 "Mobile Developer Economics" 자료를 기준으로 개인적인 의견을 추가한 것이다.


2010년 기준 모바일 소프트웨어 개발자가 선택한 가장 인기 있는 개발 플랫폼은 Android로 보인다. (400명 정도의 모바일 S/W 개발자 대상 설문 조사 결과)

지난 10년간 가장 영향력이 있었던 Symbian이나 Java ME는 신흥 주자인 iPhone과 Android에 자리를 내주고 3, 4위에 머물고 있다.

하지만, 실제 시장 사항을 보면 개발자의 선호도와는 조금 다른 측면을 알 수 있다.


위 도표에서 볼 수 있듯이 install base가 가장 많은 플랫폼은 Java ME이다. 또한, install base 대비 응용 프로그램의 개수 역시 상대적으로 매우 적다. iPhone은 이와 반대로 install base 대비 응용 프로그램의 개수가 너무 많아 보인다.


아이러니하게도 개발자에게 모바일 플랫폼을 선택하는 가장 중요한 이유를 고르라고 하면 위와 같이 얼마나 시장에 널리 퍼져 있는가를 꼽는다. 이는 자신들이 선호하는 개발 환경으로 꼽은 iPhone과 Android의 현재 시장 지배력을 볼 때 상반되는 결과라 할 수 있다.

Java ME가 성공을 거둘 수 있는 좋은 환경처럼 보이는데 개발자에게 외면을 당하고 있는 이유는 무엇일까? 많은 개발자가 아래와 같은 문제점을 지적하고 있다.

"The only developers who thought that the grass is greener on the other side of the
fence were Java ME developers, of whom only a fraction believed in the future of
cross platform apps. One could say that the vast majority of Java ME developers have
lost faith in the write-once-run-anywhere v…

Java for Business란?

Oracle이 무료로 제공하는 Java SDK 혹은 Runtime을 사용하고 있다면 공짜라 말은 못하겠지만 가끔 이런 게 필요한데 라고 생각해 볼 수 있을 것이다.
우리 회사에서 계속 사용 중인 Java Old 버전에 대한 bug fix patch를 (빨리!) 제공최신 버전의 Java에 제공된 보안 patch를 지금 사용하고 있는 old 버전 Java에도 적용
뭔가 Java 내부에서 문제가 생기는 것 같은데 안을 들여다볼 수 없는 답답함Java의 성능을 tuning 하면 우리 코드가 훨씬 잘 돌 것 같은데 하는 기대물론, Java는 무료로 사용하고 있으니 Oracle에 이런 문제를 해결해달라고 요청할 수도 없다.

이런 분(회사)를 위한 해결책이 있으니 바로 Java For Business이다. 자세한 내용은 아래 참고 자료를 보시기 바란다.

참고자료:
White Paper of Java for Business - Oracle
Java For Business web site - Oracle

다시 한번 Android 소스 빌드

벌써 2010년도 절반이 지나가고 7월이다. 이제 석사 논문 준비를 본격적으로 해야 할 시기가 왔다. 스마트폰 관련 토픽을 두고 iPhone, Android 중 어떤 것을 주제로 할까 고민하다 결국 오픈소스라는 장점이 있는 Android 관련 논문을 쓰기로 맘먹었다. (사족: 논문 작성에 참고하려고 "Overview of the IBM Java Just-in-Time Compiler"를 읽고 있다.)

Dalvik VM에 대한 검토 및 관련 논문 작성을 위해 다시 한번 Android 소스를 빌드해보려고 한다. 일전에 해보았던 Mac OS X에서 빌드 하는 건 시간을 더 소모할 것 같아 VMWare를 깔고 Ubuntu 10.04 LTS 운영체제를 설치하였다. 빌드에 대한 내용은 이미 Google 사이트에 잘 정리되어 있지만 내가 조금이라도 고생한 부분을 정리해 보고자 한다.

Google의 "안드로이드 소스 얻는 법" 글을 읽으면 리눅스 빌드 환경을 위한 프로그램 설치 과정이 잘 설명되어 있다. 내가 사용하려는 Froyo 버전은 Java 1.5 버전을 요구한. 최신 Ubuntu를 설치 후 JDK 5 버전을 설치하는데 조금 수고가 필요한데 아래와 같이 해결할 수 있다.
/etc/apt 디렉터리에 있는 sources.lst 파일을 root 권한으로 편집할 수 있도록 연다.이 파일의 가장 아랫부분에 "deb http://us.archive.ubuntu.com/ubuntu/ dapper main restricted universe multiverse"라는 줄을 추가하고 저장한다.sudo apt-get update를 실행한다.sudo apt-get install sun-java5-jdk를 실행한다.Froyo 버전의 소스를 얻기 위해서 아래와 같이 repo를 수행하면 된다.
repo init -u git://android.git.kernel.org/platform/manifest.git -b froyorepo syncGoogl…