Java ME Embedded 8 Early Access 2 Release
작년 자바원에 발표된 Java ME Embedded Early Access 버전에 이어, Java ME Embedded 8 Early Access 2가 릴리즈 되었습니다.
이번에 릴리즈된 Early Access 2의 가장 큰 특징은 Raspberry Pi 이외에, Qualcomm IoT 디바이스 용으로도 같이 릴리즈 되었습니다.
현재 지원되는 HW는 아래와 같습니다.
- Raspberry Pi Model B (ARM11/Linux)
- Qualcomm IoE (ARM9/Brew MP)
- Windows (via Java ME SDK)
각 binary와 document를 받을 수 있는 링크는 아래와 같습니다.
- Binary Download
http://www.oracle.com/technetwork/java/javame/javamobile/download/sdk/index.html
- Java ME SDK 8 Early Access 2
- Documentation
http://docs.oracle.com/javame/embedded/embedded.html
Java ME Embedded 8
Java ME Embedded 8을 간단히 소개하자면, Oracle이 작은 Embedded Device를 위해 만든 Platform이고, 3.2, 3.3, 3.4를 거쳐, version 8으로 발전하였습니다.
3.4에서 8으로 version numbering의 큰 변화를 준 것은, 바로 이 버전이 올해 예정되어 있는 Java SE 8과 같은 연결선 상에 있기 때문입니다.
기존의 Java ME Embedded 3.x의 Language나 API가 SUN Microsystems 시절의 Java SE 1.3을 기본으로 하고 있다면, Java ME Embedded 8의 경우, Language나 API 등 여러 측면에서 Java SE 8을 기반으로 새롭게 구성이 되어 있습니다.
다시 말하면, 기존에는 Java SE 와 Java ME 간의 code 호환성이 떨어졌기 때문에, 서로 간의 라이브러리 교환이 어려웠다면, 지금은 완벽하지는 않지만, 많은 code들이 Java SE와 ME 구분 없이 사용 가능할 것으로 보고 있습니다.
Java ME Embedded에 대해서는 앞선 blog에서 이미 설명을 하였기 때문에, 이번에는 ME Embedded 8 만의 특징을 다루어 보기로 하겠습니다.
우선 Java ME Embedded는 크게 CLDC 8(Connected Limited Device Configuration) 과 MEEP 8(ME Embedded Profile)로 나뉩니다.
CLDC의 경우, Java ME Embedded의 심장, 자동차로 말하면 엔진에 해당하는 부분이고, MEEP는 기타 Embedded 환경에 맞추어 필요한 부가 기능이라고 보면 되겠습니다.
이런 기본 구조 위에, 아래 그림과 같이 여러 기능을 제공하는 API들을 제공해 줍니다.
Shared Library & Service Provider
Java ME Embedded 8 에서 가장 눈에 띄는 기능은 Shared Library와 Service Provider 모델입니다.
기존 Java ME App의 경우, 자신의 Application Package를 벗어나 다른 Java Library를 동적으로 로딩하거나 참조하는 것이 불가능하였지만, Shared Library를 통해 이제 Library를 다운로드 받아서 사용하고, 다른 Application과 공유하는 것이 가능해졌습니다.
그리고, Service Provider 모델을 통해, 추상화된 API의 Service를 통해서, 여러 Service Provider들로부터 서로 다른 구현이 된 라이브러리들을 선택할 수 있는 구조를 가지게 되었습니다.
이 두 가지 기능을 통해서, Application의 부분 업데이트 및 library 공유 등이 가능해졌습니다.
GCF 8
CLDC 8의 경우, GCF (Generic Connection Framework)의 업그레이드가 눈에 띈다.
아래는 CLDC 8에서 지원하는 Connection API들 입니다.
- SecureServerConnection
- SecureDatagramConnection
- ModemConnection
- UDPMulticastConnection
- CommConnection
- HttpConnection
- HttpsConnection
- SecureConnection
- ServerSocketConnection
- SocketConnection
- UDPDatagramConnection
다른 GCF의 추가된 기능들을 정리해 보면 다음과 같다
- IPv6
- UDP Multicast
- TLS protocol enhancements
- DTLS protocol support for TLS over UDP
- Network Utilities like ping
- Modem Connection
- Connection options/parameters support
- Access Point
다양한 Network API들과 보안 관련된 부분이 보완되었다.
MEEP 8
MEEP 8의 가장 큰 특징은 다양한 device의 footprint에 맞추기 위해, 3개의 profile set으로 구분이 되었다는 것이다.
각 profile별로 요구되는 메모리 사이즈도 다르고, 포함되는 기능들도 다르기 때문에, 각 디바이스 제조사들이 자신에게 주어진 디바이스 환경과 기능에 맞추어 선택할 수 있는 폭이 넓어졌다.
각 profile의 footprint와 기능들은 아래 그림을 참조하시길 바란다.
이외에, 디바이스 환경에 맞는 여러 API들이 option으로 선택 가능해 졌고, 아래 API들을 나열해 보았다.
- Javax.microedition.swm — software management
- Javax.microedition.cellular — cellular network information
- Javax.microedition.event
- Javax.microedition.power — power management
- Javax.microedition.io — GCF based io
- Javax.microedition.lui — line based ui
- Javax.microedition.key — device key input
- Javax.microedition.media — audio support
- Javax.microedition.rms — data store
Security
앞으로 IoT가 활성화되면, 누구나가 걱정하는 것이 바로 보안문제일 것입니다.
Java ME Embedded 8의 경우, 특히 보안에 대해 많이 고민하고, Application 설치부터 동작 및 통신에까지 높은 보안 환경을 제공하고 있습니다.
아래는 ME 8의 Application 설치과정을 도식화한 것입니다.
Authentication Provider, Security Policy Provider들이 Application 설치과정에서 안전한 설치를 돕습니다.
Java ME 8의 보안과 관련된 기능들을 아래 간단히 나열해 보면 아래와 같습니다.
- Trust Model
- Runtime Security
- Security Services — Advanced Cryptography and PKI, TLS 1.2 support
좀 더 자세한 내용을 확인을 원하시는 분은 아래 Terrence Barr의 동영상과 Slide 링크가 있으니 참조하시기 바랍니다.