36

사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

  • View
    238

  • Download
    15

Embed Size (px)

DESCRIPTION

양성일 지음 | 임베디드 & 모바일 시리즈_031 | ISBN: 9791158390280 | 28,000원

Citation preview

Page 1: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는
Page 2: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

기초 이론부터

응용 사례까지 모두 배우는

사물 인터넷을 위한 자바

사물인터넷을위한자바_책.indb 1 2016-02-17 오후 4:17:30

Page 3: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

2000년 이후로 홈 네트워크라는 키워드가 IT 업계에 이슈가 되어 많은 벤더들이

서로 연합하며 UPnP, Jini, HAVi, OSGi 등 수많은 프로토콜과 스펙을 개발자들

에게 내놨지만 시장의 활성화에 실패하고 점차 기억에서 잊혀지고 있는 순간 사물

인터넷이 나타났다.

지금은 포털, TV 등의 매체를 통해 거의 매일 사물인터넷이 거론되고 있으며, IT

종사자가 아닌 일반인들도 사물인터넷이라는 단어를 알고 있을 정도로 많이 익숙

해진 개념이다. 그리고 오픈 하드웨어 플랫폼을 통해 자신이 원하는 것을 즐겁게

만들어내는 메이커들이 등장했고 사물인터넷과 관련된 지식 기반 창업자들도 늘

어나며 새로운 생태계가 조성되고 있다.

이에 저자는 그간 자바 프로그래머로 살아오며 쌓은 지식을 바탕으로 20여년간 IT

의 흐름을 주도한 자바가 사물인터넷을 위해 무엇을 하고 있고, 어떤 솔루션을 제

시하고 있는지에 대해 자바 혹은 임베디드 개발자들에게 알리고 싶은 생각에 이

책을 기획하게 됐다.

이 책의 내용은 총 4장으로 구성돼 있다. 1장은 사물인터넷 업계의 현황과 각종 프

로토콜에 대해 간략히 설명하고 특히 오라클이 사물인터넷을 위해 자바를 어떻게

개선했는지를 소개한다. 2장에서는 자바 8 SE 임베디드를 이용해 임베디드 시스

템에서 자바 실행 환경을 설치하는 방법과 개발 환경을 구축하는 방법을 설명한

다. 3장과 4장에서는 본격적으로 간략한 자동제어 프로젝트를 진행하면서 사물인

터넷 개발 방법을 살펴본다. 3장에서는 라즈베리 파이와 Device I/O API를 통해

4

머리말

사물인터넷을위한자바_책.indb 4 2016-02-17 오후 4:17:31

Page 4: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

여러 전자부품을 사용해 보면서 간략한 제어 기기를 만들어 볼 것이며, 4장에서는

CoAP과 MQTT 인터넷 프로토콜을 통해 사물과 사람, 사물과 사물 간에 상호 연

동하는 방법을 구현해볼 것이다.

이 책의 예제는 jot, client, webclient라는 3개의 프로젝트로 구성돼 있다. jot 프

로젝트는 3장과 4장의 내용과 관련된 예제에 해당한다. client 프로젝트는 4장에

서 만드는 라즈베리 파이 예제와 상호 연동하는 예제다. webclient 프로젝트에는

4장의 MQTT 예제 가운데 웹소켓을 사용한 사용자 인터페이스에 대한 예제다.

마지막으로 이 책을 쓰는 동안 아이디어가 생각나도록 지혜를 주신 하나님께 감사

드리며 옆에서 위로하며 많은 도움을 준 아내 홍영미와 아들 선이에게 고마운 마

음을 전한다. 그리고 책이 나올 수 있는 기회를 주고 많은 도움과 격려를 해주신

위키북스의 박찬규 대표님께 감사의 인사를 드린다.

5

머리말

사물인터넷을위한자바_책.indb 5 2016-02-17 오후 4:17:31

Page 5: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

1-1 사물인터넷 소개 14

사물인터넷이란? 14

유사 기술 15

사물의 의인화 17

센서 18

통신 18

액추에이터 20

임베디드시스템 21

임베디드 시스템이란? 21

임베디드 시스템의 종류 22

사물인터넷동향 23

스레드 그룹(Thread Group) 23

올신 얼라이언스 24

오픈 인터커넥트 컨소시엄 24

산업 인터넷 컨소시엄 24

국제 인터넷 표준화 기구 25

블루투스 SIG 26

사물인터넷프로토콜소개 26

6LowPAN 26

DTLS 27

CoAP 27

MQTT 27

XMPP 27

AMQP 28

DDS 28

LWM2M 28

IEEE 802.15.4 28

NFC 28

ANT 29

ZigBee 29

블루투스 29

BLE 296

목 차

사물인터넷과의 만남

01

사물인터넷을위한자바_책.indb 6 2016-02-17 오후 4:17:31

Page 6: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

1-2 자바 임베디드 30

자바ME임베디드 31

GCF 32

MEEP 8 32

Device I/O API 32

자바SE임베디드 33

자바 가상 머신 34

자바 SE 임베디드 프로파일 34

자바임베디드스위트 36

그밖의자바임베디드솔루션 36

임베디드를 위한 이벤트 프로세싱 36

자바 카드 36

안드로이드 37

2-1 오픈소스 하드웨어 플랫폼 39

오픈소스하드웨어플랫폼 39

아두이노 39

라즈베리 파이 40

비글보드 41

자바의라즈베리파이지원 42

2-2 라즈베리 파이에 자바 설치하기 42

호스트컴퓨터에자바SE임베디드설치 43

다운로드 43

압축 풀기 43

디렉터리 구조 44

환경변수 설정 45

자바SE임베디드패키징 46

jrecreate 명령어 46

7

목 차

개발 환경 만들기

02

사물인터넷을위한자바_책.indb 7 2016-02-17 오후 4:17:31

Page 7: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

도움말 옵션(--help, -h) 46

디렉터리 지정 옵션(--dest, -d) 47

자바 가상 머신 옵션(-vm) 47

프로파일 옵션(--profile, -p) 48

확장 옵션(--extension, -x) 49

디버그 옵션(--debug, -g) 51

그 밖의 옵션 54

자바실행환경만들기 55

예제 설명 및 라이브러리 선택 55

프로파일 선택 57

자바 실행 환경 만들기 59

네트워크설정및자바실행환경구성 60

라즈베리 파이의 고정 IP 설정 60

라즈베리 파이의 SSH 활성화 62

PUTTY 설치 63

WinSCP 설치 65

자바 실행 환경 설치 67

2-3 개발 환경 구축 68

통합개발환경설치 68

넷빈즈 설치 68

자바 실행 환경 설정 71

애플리케이션개발및디버깅 75

프로젝트 생성 및 코드 작성 75

실행 및 디버깅 81

8

목 차

사물인터넷을위한자바_책.indb 8 2016-02-17 오후 4:17:31

Page 8: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

3-1 준비하기 84

하드웨어플랫폼 84

자동 제어 84

사물 만들기 84

라즈베리 파이 85

ARM 86

GPIO 87

전자부품 91

전압과 전류 91

저항 91

LED(Light Emitting Diode) 95

브레드보드 95

점퍼선 96

3-2 Device I/O 97

DeviceI/O설치 97

소스코드 다운로드 97

자바 SE 임베디드에 설치 98

Device IO를 호스트 PC에 복사 99

Device IO 라이브러리를 클래스 경로에 추가 100

Device IO 설정 파일 자동 복사 설정 101

Hello World(LED 깜박이기) 101

DeviceI/O살펴보기 107

Device I/O 아키텍처 107

Device I/O API 108

3-3 GPIO 다루기 109

7세그먼트표시하기 110

버튼입력받기 119

푸시버튼의이벤트수신 123

이벤트 모델 124

9

목 차

사물 만들기

03

사물인터넷을위한자바_책.indb 9 2016-02-17 오후 4:17:31

Page 9: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

3-4 아날로그 입출력 129

SPI통신 129

라즈베리파이의SPI활성화 130

MCP49X1소개 134

MCP4911을이용한LED밝기조정 135

MCP3002소개 141

가변저항값읽기 144

폴링 149

3-5 UART 통신 153

UART 153

라즈베리파이의UART설정변경 154

아두이노통신 155

UART 연결 155

아두이노 스케치 개발 156

에코 클라이언트 개발 158

PC와의연결 163

USB 시리얼 케이블 163

드라이버 설치 163

USB 시리얼 케이블 연결 165

에코 서버 개발 166

예제 실행 169

3-6 단순한 자동 제어 만들기 172

회로도 172

관제점관리자 173

관제점 173

DI(Digital Input) 관제점 176

DO(Digital Output) 관제점 179

AI(Analog Input) 관제점 182

10

목 차

사물인터넷을위한자바_책.indb 10 2016-02-17 오후 4:17:31

Page 10: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

AO(Analog Output) 관제점 186

관제점 관리자 189

명령어 처리기 192

UARTCLI만들기 198

UART 콘솔 198

프로그램 실행 201

4-1 CoAP을 이용해 대화하기 206

CoAP란? 206

CoAP 구조 206

사물과 대화하기 206

CaAP 메시지 207

CoAP 요청과 응답 208

CoAP의 URI 209

CoAP 메서드 209

Californium 210

Californium 클래스 211

넷빈즈 프로젝트에 Californium 라이브러리 추가 212

클라이언트 프로젝트 생성 213

HelloCoAP 214

CoAP 서버 구현 214

HelloWorld CoAP 클라이언트 구현 216

HelloWorld CoAP 실행 219

비동기호출 221

리소스감시 223

CoAP 서버 예제에 감시 기능 지원 추가 224

감시 CoAP 클라이언트 226

감시 실행 228

11

목 차

사물과대화하기

04

사물인터넷을위한자바_책.indb 11 2016-02-17 오후 4:17:31

Page 11: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

12

리소스탐색 228

리소스 탐색 클라이언트 229

탐색 실행 232

자동제어CoAP서버만들기 232

JSONP 232

관제점 리소스 234

관제점 CoAP 서버 240

CoAP 서버 실행 241

CoAP 테스트를 위한 Copper 242

Copper 설치 242

자동제어 CoAP 서버 실행 244

Copper를 통한 자동 제어 실행 245

4-2 MQTT 비동기 메시징 시스템 활용 250

MQTT란? 250

MQTT 네트워크 구조 250

통신을 위한 단계 251

토픽 252

필터링 253

QoS 및 보안 254

ActiveMQ 255

ActiveMQ 설치 256

MQTT 활성화 256

ActiveMQ 실행 257

Paho 258

Paho 클래스 258

HelloMQTT 260

라이브러리 추가 260

전송 클라이언트(Publisher) 260

수신 클라이언트(Subscriber) 266

실행 269

목 차

사물인터넷을위한자바_책.indb 12 2016-02-17 오후 4:17:31

Page 12: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

13

토픽필터링을이용한전송자구분 270

토픽 정의 271

에코 클라이언트 272

전송 클라이언트 277

에코 실행 282

자동제어서버의MQTTCLI만들기 283

MQTT 명령어 처리기 283

MQTT 콘솔 292

빅데이터 처리기 297

MQTT CLI 실행 300

JMS와의연동 302

ActiveMQ의 JMS 활성화 302

JMS와 MQTT 간 토픽 및 메시지 매핑 302

JMS 콘솔 304

프로그램 실행 310

HTML5의웹소켓을이용한연동 311

ActiveMQ의 웹 소켓 지원 312

Paho 자바스크립트 파일 다운로드 312

웹소켓을 이용한 Paho 자바스크립트 클래스 312

웹 콘솔 사용자 인터페이스 314

AngularJS 314

웹 클라이언트 프로젝트 생성 315

뷰(View) 317

컨트롤러(Controller) 322

구글 크롬 설치 328

프로그램 실행 328

목 차

사물인터넷을위한자바_책.indb 13 2016-02-17 오후 4:17:31

Page 13: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

현재 글로벌 IT 벤처 지원 중 가장 활성화돼 있는 분야는 사물인터넷(Internet Of Things, IoT)이다.

사물인터넷이 최근 몇 년간 차세대 블루오션으로 각광받기 시작해 현재 기술과 비즈니스로 우위를

차지하기 위해 수많은 IT 업체들과 국가들이 경쟁하고 있다. 우리나라도 이러한 흐름에 맞춰

미래창조과학부의 정보통신전략위원회에서 ‘사물인터넷 기본 계획’을 확정해 사물인터넷 서비스

및 제품의 창출과 혁신을 주도할 전문기업을 육성하겠다고 발표하고 정부부처와 유관기관, 기업이

함께 출자해 ‘IoT글로벌협의체’을 구성해 IoT혁신센터를 중심으로 사물인터넷에 대한 창업부터 전문

중소기업 육성 지원까지 공격적으로 추진하고 있다.

그럼 사물인터넷이 무엇이길래 이렇게 관심을 가지고 공격적인 투자와 R&D 지원을 추진하는지

살펴보자.

1-1 사물인터넷 소개

사물인터넷이란?

사물인터넷의 정의는 1999년 MIT Auto-ID 센터장인 케빈 애시톤(Kevin Ashton)이 제안한 이후로

계속 발전되고 있다. 위키피디아에서는 사물에 센서와 통신 기능을 내포해 인터넷에 연결하는 기술로

정의하고 있지만 아직 공인된 정의는 없는 상태다. 그러나 사물인터넷을 말할 때 다음과 같은 공통된

기준은 있다.

1. 사물을 전자부품을 이용해 사람처럼 느끼게 한다.

2. 인터넷을 통해 데이터에 접근 및 수집이 가능해야 한다.

사물인터넷과의 만남

01

사물인터넷을위한자바_책.indb 14 2016-02-17 오후 4:17:32

Page 14: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

01. 사물인터넷과의 만남 15

3. 서로 다른 공급업체의 제품 간에 연동돼야 한다.

4. 사물의 데이터를 통해 사람에게 서비스를 제공한다.

사물인터넷에 대한 이해를 돕기 위해 다음 시나리오를 예로 들어보자.

일과를 마치고 퇴근해서 집에 도착할 때 키에 내장된 원격제어기가 출입문에 설치된 도어락과 통신해 인증 후 출입문

이 열린다. 출입문을 열고 들어오는 순간 센서에 의해 감지되어 실내의 불이 켜지고 온습도조절장치는 내려가 있는 온

도와 습도가 가장 쾌적한 온도와 습도로 자동으로 설정되고 에어컨 혹은 보일러에는 온도 메시지를, 가습기에는 습도

메시지를 전송한다. 온도 메시지를 수신한 에어컨과 보일러는 지속적으로 온도조절장치의 현재 온도를 수신해 당신이

원하는 온도가 될 때까지 동작하며, 가습기 또한 같은 방법으로 동작한다. 온습도조절장치는 설정된 온도가 되면 메시

지를 전송하고 에어컨 혹은 보일러는 동작을 멈춘다. 또한 설정된 습도에 도달하면 가습기는 멈춘다. 그 후 쾌적한 환

경이 유지되도록 서로 조화를 이루면서 동작한다.

그림1-1사물인터넷(출처: 오라클)

이처럼 모든 사물이 통신을 통해 서로 유기적으로 조화를 이루게 하는 기술을 사물인터넷이라고 할 수

있다.

유사기술

사물인터넷 이전에도 이와 유사한 개념의 기술이 있었다. 먼저 유비쿼터스(Ubiquitous)에

대해 알아보자. 유비쿼터스는 라틴어의 ‘ubique’를 어원으로 하는 ‘동시에 어디에나 존재하는,

사물인터넷을위한자바_책.indb 15 2016-02-17 오후 4:17:32

Page 15: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

16 사물인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

편재하는’이라는 사전적 의미를 지닌 단어로서 언제 어디서나 정보통신망에 접속해 정보통신 서비스를

활용할 수 있는 환경을 의미한다. 유비쿼터스는 언제 어디서나 접속 가능한 정보통신망이 핵심이다.

이에 따라 지그비(ZigBee), RFID, 모바일 IP와 같은 무선 통신 기술을 중심으로 발전했다.

그다음으로 살펴볼 유사 기술은 퍼베이시브 컴퓨팅(Pervasive Computing)이다. 사전적 의미를 보면

‘널리 퍼지고 스며드는 컴퓨팅’이며, IBM에서 내놓은 개념이다. 즉, 개인 컴퓨터에 의한 컴퓨팅 기능이

다른 종류의 기기에도 널리 퍼져 네트워크를 통해 무수한 기기들이 연결되어 언제 어디서든 정보망에

접근할 수 있고 e-비즈니스까지 수행할 수 있는 컴퓨팅 환경을 말한다. 퍼베이시브 컴퓨팅은 IBM이

주도해서인지 서버 시스템, 미들웨어, 디바이스 소프트웨어, 반도체 내에 내장되는 요소 기술 개발 및

솔루션을 중심으로 발전했다.

다음은 사물지능통신(Machine To Machine, M2M)이다. 사물지능통신은 사물인터넷과 함께

혼용되는 단어인데, 그 개념을 살펴보면 ‘사람과 사물’, ‘사물과 사물’ 간에 정보망을 통해 지능적인

서비스를 언제 어디서나 실시간으로 이용할 수 있는 기술로 가스-전기-수도 등의 원격 검침, 스마트

가전 제품 등에 활용되고 있다. 사물인터넷과 거의 유사한 개념이지만 사물인터넷이 거시적이라면

사물지능통신은 사물의 관점에서 본 미시적인 기술이라고 할 수 있다. 지금은 사물인터넷으로

통칭하지만 초창기에는 개발자들은 주로 사물지능통신이라는 표현을, 마케터들은 사물인터넷이라는

표현을 사용했다.

지금까지 살펴본 기술들이 사물인터넷 이전에 나온 기술이라면 이후에 나온 기술들도 있다.

대표적으로 만물인터넷(Internet Of Everything, IoE)이 있다. 만물인터넷은 시스코(Cisco)에서

내놓은 기술로서 사물인터넷이 자동차, TV 등 기기에서만 정보망에 접속할 수 있었던 반면 자동차

내부에 있는 엔진, 타이어와 같은 부품과 길에 있는 보도블록과 같은 공공시설에 이르기까지 모든 부속

사물까지 정보망에 접속해 사람과 만물, 그리고 만물 간에 유기적 조화를 이룰 수 있다는 개념이다.

만물인터넷에는 시스코의 네트워크 장비를 많이 판매하고 싶은 욕구가 많이 내포돼 있다.

마지막으로 살펴볼 기술은 산업인터넷(Industrial Internet)이다. 산업인터넷은 GE(General

Motors)에서 내놓은 개념으로서 산업혁명에 빗대어 이름을 붙인 것이다. 모든 기기에 인공지능과

통신매개체가 내장되어 상호 통신이 가능해져 산업 혁명이 증기기관 엔진을 통해 기술적 혁신을

이뤘다면 산업인터넷은 네트워크를 통해 스마트 혁신을 이룬다는 개념이다. 이를 위해 GE는

프레딕스(Predix)라는 소프트웨어 플랫폼을 발표해 누구나 빠르게 산업인터넷용 애플리케이션을

개발할 수 있도록 지원하는 서비스 세트를 제공하고 있다.

사물인터넷을위한자바_책.indb 16 2016-02-17 오후 4:17:32

Page 16: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

01. 사물인터넷과의 만남 17

기술 명칭 영문 명칭 제안자 비고

유비쿼터스 Ubiquitous 마크와이저 통신망 접속에 초점

퍼베이시브 컴퓨팅 Pervasive Computing IBM 임베디드 시스템과 e-비즈니스의 연결

사물지능통신 M2M인터넷 영역이 아님

사물 간의 통신

사물인터넷 IoT

사물에 IT 기술을 적용

사람과 사물의 통신

서비스 중심 개발

만물인터넷 EoT Cisco사물의 부품 단위까지 IT 기술을 적용

사람과 사물 부품의 통신

산업인터넷 Industrial Internet GE

산업분야의 기기에 IT 기술을 적용

사람과 산업시설의 통신

산업 관리 서비스 중심 개발

표1-1유사 기술 비교

사물의의인화

사물인터넷에서 핵심은 사물을 사람과 지능적으로 대화할 수 있는 존재로 만드는 것이다. 이를 위해

사물에 센서(Sensor)를 부착해 사람처럼 느끼고 인터넷에 연결해 사람과 대화할 수 있는 능력을

부여하고 액추에이터(Actuator)를 이용해 동작시킨다.

통신

센서 액추에이터감지 행동

대화

그림1-2사물의 의인화

사물인터넷을위한자바_책.indb 17 2016-02-17 오후 4:17:32

Page 17: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

18 사물인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

센서

센서는 온도, 습도, 조도(빛), 압력, 음파(소리), 움직임 등 환경의 변화를 알아낼 수 있는 전자

부품으로서 사물이 사람의 오감과 같이 느낄 수 있게 한다. 센서는 각종 기계 및 전자기기(부품)을

반도체와 기계 기술을 융합해 마이크로미터 단위의 초소형 단위로 소형화하는 기술인

미세전자기계시스템(Micro Electro Mechanical System, MEMS)의 일부로서 반도체 공정과 같은

방식의 감광막프로세스(Lithography Process)를 이용해 만들어진다.

센서의 값을 제공하는 방식에 따라 저항 센서, 전류 센서, 전압 센서로 구분된다. 저항 센서는 환경의

변화에 따라 저항 값이 변경되는 방식으로 센서에 일정한 전류를 보내 계산된 전압을 입력받는다. 전류

센서는 전류의 값이 변경되는 센서로 작은 값의 저항을 사용해 계산된 전압을 입력받는다. 마지막으로

전압 센서는 압력과 같은 환경의 변화에 따라 전압을 발생시킨다.

Cds 광센서 초음파 거리 센서 가스 센서

온습도 센서 적외선 인체감지 센서

물수위 측정 센서

수분 감지 센서 공기압 센서

그림1-3센서의 종류

통신

사물은 사람에게 데이터를 전달하거나 사람의 의도를 전달받기 위해 무선 통신 기술을 활용한다.

사물의 생명을 유지시키기 위해서는 배터리와 같은 전원 장치를 사용하며, 무선 통신은 반드시 언제나

접근이 가능하면서도 최소 1.5년에서 10년까지 배터리가 유지될 수 있도록 저전력으로 동작해야 한다.

사물인터넷을위한자바_책.indb 18 2016-02-17 오후 4:17:32

Page 18: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

01. 사물인터넷과의 만남 19

무선 통신에서 토폴로지를 구성할 때 사용하는 기술인 메시 네트워크(Mesh Network)는 일반적으로

사용하는 중앙집중형인 인터넷 망과 달리 기기 간에 직접 연결되고 기기 내에 라우터 기능이 있어 마치

이어달리기 선수처럼 신호를 전달할 수 있는 네트워크 망이다. 보통 전송 거리는 10m~100m 사이로,

같은 공간 내의 사물끼리 통신하는 데 사용한다. 대표적인 메시 네트워크 프로토콜로는 지웨이브(Z-

Wave), 지그비(ZigBee) 등이 있다.

사물인터넷의 경우 사물을 직접 IP로 통신하는 인터넷 망에 연결시키기 위한 기술이 개발 중이다. 그중

대표적인 기술이 6LowPAN이다. 6LowPAN은 인터넷의 운영, 관리, 개발에 대해 협의하고 표준을

정하는 IETF(국제 인터넷 표준화 기구)의 워킹 그룹으로서, 센서 네트워크 상에 인터넷 프로토콜을

사용하는 저전력 무선 사설 네트워크의 표준화(IEEE 802.15.4)를 진행하고 있다. 6LowPAN의 6은

IPv6를 나타내고 Low는 저전력, PAN은 사설 네트워크를 의미한다. IPv6는 IPv4의 인터넷 주소

고갈이라는 한계를 극복하기 위해 IP 주소의 길이를 32비트에서 128비트로 확장시키고 데이터를 담을

수 있는 패킷의 크기도 확장시킨 차세대 인터넷 프로토콜이다.

IPv4 Header

Version

TimetoLive Protocol

SourceAddress

DestinationAddress

TypeofService TotalLengthIHL

Identification Flags FragmentOffset

HeaderChecksum

312824201612840

0 4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 63

Version TrafficClass PayloadLength NextHeader HopLimitFlowLabel

SourceAddress

DestinationAddress

IPv6 Header

그림1-4IPv4와 IPv6 헤더 비교(출처: 시스코)

최근에는 블루투스(Bluetooth) 4.0이 각광받고 있다. 블루투스 4.0은 이전의 제한된 데이터 통신을

저전력 상태에서 좀 더 간편하고 효율적으로 하기 위해 업그레이드된 근거리 통신 네트워크다.

사물인터넷을위한자바_책.indb 19 2016-02-17 오후 4:17:32

Page 19: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

20 사물인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

블루투스 4.0에서 저전력 무선 통신 기능을 따로 BLE(Bluetooth Low Energy)라고 부르기도

한다. 블루투스 4.0은 현재 판매되고 있는 아이폰과 안드로이드폰에서 지원하고 있기 때문에 BLE를

지원하는 기기와 통신할 수 있어 비콘(Beacon) 같은 사물인터넷 서비스에 큰 파급 효과를 가지고

있다.

그림1-5iBeacon의 활용도

액추에이터

액추에이터는 어떤 기계적 시스템을 움직이거나 제어하는 데 쓰이는 기계 장치로서 주로 전기나 유압,

압축 공기 등을 이용한다. 즉, 전기, 유압, 기압 등의 형태로 된 에너지원으로 작동하며, 이 에너지를

어떠한 종류의 움직임으로 변환하는 장치다. 이 가운데 전기를

이용하는 액추에이터를 모터(Motor)라고 한다.

모터는 흔히 알고 있는 플레밍의 왼손 법칙이 적용된 것으로,

자기장 속을 흐르는 전류에는 자기력이 있으며 자기력은 전류와

직각 방향으로 작용한다. 모터는 자기력에 의해 회전운동의 힘을

얻어 구동되는 기계를 말한다. 모터의 종류로는 DC 모터, AC 모터,

스테핑(Stepping) 모터 등이 있다.

그림1-6전기 모터의 종류(출처: 위키피디아)

사물인터넷을위한자바_책.indb 20 2016-02-17 오후 4:17:33

Page 20: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

01. 사물인터넷과의 만남 21

서보 모터(Servo Motor)는 이러한 모터와 명령에 의한

제어가 가능한 구동 시스템이 합쳐진 것이다. 일반적으로

카메라, DVD, 프린터, 공작 기계에서 정확한 위치와

속도에 따라 구동시킬 때 사용된다. 서보 모터의 구동

시스템은 모터와 모터의 위치와 속도를 제어하기 위한

회로, 제어 구동 소프트웨어로 이뤄진다.

임베디드시스템

사물을 IT 기술과 접목시켜 의인화할 때 임베디드 시스템에 대한 이해는 아주 중요하기 때문에 이번

절에서 간략히 설명하겠다.

임베디드시스템이란?

임베디드 시스템은 실시간으로 특수 목적에 대한 기능을 제공하기 위해 하드웨어와 소프트웨어가

내장된 전자 제어 시스템을 말한다. 단순히 회로만 있는 것이 아니라 마이크로프로세서와

마이크로프로세서를 운영해서 기능을 수행하는 프로그램인 펌웨어가 포함된 구조다. 현재는 좀 더

기능이 다재화되어 고성능 CPU와 운영체제 그리고 프로그램이 포함돼 있다.

오늘날 임베디드 시스템의 활용 범위를 살펴보면 자동차, 항공, 군사장비, 의료장비, 공장제어 등

산업용에서부터 스마트폰, 보안 카메라, 도어락, 냉장고, TV 등의 생활용품에 이르기까지 광범위하게

사용되고 있다. 사물인터넷에서는 사물에 대한 데이터를 수집하고 제어하며 외부 환경과 연결해 부가

서비스를 제공하는 플랫폼이 된다.

그림1-7서보 모터

사물인터넷을위한자바_책.indb 21 2016-02-17 오후 4:17:33

Page 21: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

22 사물인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

그림1-8임베디드 시스템의 활용 예(홈패드, 스마트 미터기, 자판기, 온도조절장치, ATM, 공조 제어기, 식물공장, 로봇청소기, 자동차)

임베디드시스템의종류

임베디드 시스템은 그래픽 사용자 인터페이스를 위한 입출력 장치의 유무에 따라 헤드풀(Headful)과

헤드리스(Headless)로 구분할 수 있다. 헤드풀 임베디드 시스템은 ATM, 셋톱박스(Set-top box),

키오스크와 같이 출력 장치와 터치 스크린 혹은 키보드 등의 입력 장치를 가지고 있는 시스템으로

사용자의 의도를 입력받아 원하는

결과를 출력한다. 헤드리스 임베디드

시스템은 사용자 인터페이스를 위한

입출력 장치가 없으며, 온도, 습도,

가속도 등의 환경 변화를 감지하는

센서를 통한 데이터 입력과 이에

따른 액추에이터 동작 및 알람과

같은 이벤트를 발생시킨다. 보통

사물인터넷에서 사물은 헤드리스

임베디드 시스템으로 구현될 것이다.

그림1-9헤드풀 임베디드 시스템의 예: 키오스크(Kiosk)

사물인터넷을위한자바_책.indb 22 2016-02-17 오후 4:17:33

Page 22: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

01. 사물인터넷과의 만남 23

사물인터넷동향

사물인터넷은 전국시대와 같이 주도권을 갖기 위한 경쟁이 치열한 시장이다. 그동안 대형 IT 회사와

제조사들이 중심이 되어 각종 플랫폼이 나타났으며, 플랫폼을 중심으로 선택된 협력업체의 제품만이

통합되는 폐쇄적 특성을 띠고 있다. 이러한 특성은 자칫 사물인터넷 시장을 엉망으로 만들어 과거 홈

네트워킹 시장과 같이 최악의 시나리오로 이어질 수도 있지만 이를 극복하기 위해 현재는 개방적인

표준화 작업이 한창 진행 중이다. 그러나 개방적 표준화 작업의 이면에는 이를 주도하는 기업, 특히

시스코나 퀄컴과 같은 기업들은 네트워크 장비 혹은 프로세스 칩과 같이 자사 제품의 시장 확장을 위한

속내를 감추고 있다.

스레드그룹(ThreadGroup)

구글은 2014년 1월 13일 네스트랩스(Nest Labs, 이하 네스트) 인수를 발표한 이후 네스트의 기술을

바탕으로 스레드 그룹을 설립했다. 스레드그룹은 6LowPAN 기반의 통신 프로토콜인 스레드를

정의했다. 이 프로토콜은 네스트 제품에서 사용하고 있으며, 대표 제품으로 온도조절장치인

서모스탯(Thermostat)이 있다.

스레드 그룹에는 삼성전자, ARM 홀딩스, 프리스케일 반도체, 실리콘랩스 등이 참여하고 있으며,

협력사들이 만든 제품이 스레드 네트워크에 통합될 수 있는지 검증하는 인증 프로그램을 갖추고 있다.

현재 스레드는 구글의 안드로이드와 통합돼 있지 않지만 조만간 통합될 것이라 예상한다.

그림1-10 스레드 프로토콜 스택(출처: 스레드)

사물인터넷을위한자바_책.indb 23 2016-02-17 오후 4:17:33

Page 23: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

24 사물인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

올신얼라이언스

퀄컴은 올조인(AllJoyn) 플랫폼을 개발해 2013년 리눅스 재단에 기증하며 올신 얼라이언스(AllSeen

Alliance, 이하 올신)를 설립했다. 올신에는 시스코, 마이크로소프트, LG, HTC 등 많은 회원사들이

참여하고 있다. 올조인은 같은 AP 내의 WiFi 기반으로 P2P 통신을 이용해 사물들을 통합할 수 있는

오픈소스 플랫폼이다. 올조인은 쉽게 애플리케이션을 개발할 수 있게 여러 운영체제에서 개발을

지원하는 자바 혹은 C 기반의 SDK를 제공한다. 그러나 현재 협력사들이 퀄컴에 대한 불신을 드러내고

있다. 특히 소스를 기증받은 리눅스 재단은 현재 올신보다는 오픈 인터커넥트 컨소시엄에 더 협력적이다.

Non-임베디드 OS(안드로이드, iOS, 윈도우, 맥

OS X, 리눅스)

RTOS, 임베디드 OS(아두이노, ThreadX 등)

올조인 라우터

올조인 기본Core 라이브러리

올조인 기본서비스 프레임워크

올조인 Thin Core라이브러리

올조인 Thin프레임워크

올조인 기본 애플리케이션 올조인 Thin 애플리케이션

그림1-11 올조인 스택

오픈인터커넥트컨소시엄

오픈 인터커넥트 컨소시엄(Open Interconnect Consortium; OIC, 이하 OIC)은 인텔이 주도하고

있으며, 오픈소스 공동체와의 협업이 잘 이뤄지고 있는 표준화 단체다. 애트멜(Atmel), 델, 브로드콤,

삼성, 윈드리버 등이 회원사로 있으며, 리눅스 재단도 올신보다 OIC에 더욱 협력적인 모습을 보인다.

최근(2015년 12월 23일) 코어 프레임워크, 보안, 스마트 홈 장치, 리소스 유형, 원격 접근이 포함된

1.0을 발표했고, UPnP 포럼과 통합했다.

산업인터넷컨소시엄

산업 인터넷 컨소시엄(Industrial Internet Consortium; IIC, 이하 IIC)은 프레딕스 플랫폼을

개발하며 산업인터넷을 전파하고 있는 GE가 중심이 되어 인텔, 시스코, AT&T, IBM이 설립했다.

사물인터넷을위한자바_책.indb 24 2016-02-17 오후 4:17:33

Page 24: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

01. 사물인터넷과의 만남 25

IIC는 사물인터넷 기술을 에너지, 헬스케어, 공공시설 등의 산업 분야에 적용하기 위한 프레임워크와

테스트베드를 개발하고 있다.

물리적 시스템들

센서와 액추에이터

Edge Aggregation, 분석 및 제어

기기 관리

데이터 서비스

애플리케이션 및 통합

비즈니스 시스템들

소프트웨어개발인프라

Conn

ectivi

ty

관리효율성

보안

정보처리상호운용

요소 기능

그림1-12 IIC 산업 인터넷 아키텍처

국제인터넷표준화기구

국제 인터넷 표준화 기구(Internet Engineering Task Force; IETF, 이하 IETF)는 인터넷의

운영, 관리, 개발에 대해 협의하고 프로토콜과 구조적인 사안에 대한 쟁점을 해결하기 위한 인터넷

표준화 기구로서 미국 정부의 후원으로 성장하다가 1990년대 초부터 미국 정부에서 벗어나 독자적인

연구 단체로 자리매김했다. IETF는 사물인터넷의 제한적 환경에서 효율적으로 개체 간 통신이 될

수 있게 물리적 계층부터 애플리케이션 계층까지의 프로토콜을 표준화하거나 진행 중이다. 현재

사물인터넷에서 각광받고 있는 CoAP은 IETF의 CoRE 워킹그룹에서 표준화한 프로토콜이다.

IEEE 802.15.4

6LowPAN

UDP/DTLS

CoAP애플리케이션

트랜스포트

네트워크

데이터링크

레이어(Layer) 표준 프로토콜

그림1-13 IETF 사물인터넷의 표준 프로토콜 스택

사물인터넷을위한자바_책.indb 25 2016-02-17 오후 4:17:33

Page 25: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

26 사물인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

블루투스SIG

블루투스 SIG(Bluetooth SIG)는 컴퓨팅 환경에서 근거리 무선 통신인 블루투스를 표준화하고 이를

이용한 애플리케이션 개발 및 마케팅을 진행하는 단체로서 1998년에 결성됐다. 블루투스 제품에 대한

적합성을 검증하고 인증하며, 블루투스 기술의 확산을 위해 각종 프로그램을 진행하고 있다.

블루투스 스펙 정의는 4.2까지 진행했으며, 특히 4.0에서 발표한 BLE(Bluetooth Low Energy)는

사물인터넷 환경에서 적합한 기술이다.

Bluetooth Classic Bluetooth Low Energy

전화기, 태블릿, PC, TV, 셋톱박스, 게임 콘솔

심박 모니터, 웨어러블 시계,

창문 및 현관 보안 센서,자동차 키 체인

그림1-14 블루투스 기기 유형에 따른 브랜드

사물인터넷프로토콜소개

이 책의 주제는 사물인터넷 기반 애플리케이션 개발이므로 앞서 소개한 IETF의 CoAP 프로토콜과

페이스북의 메신저를 통해 유명해진 후 사물인터넷의 메시징 전송 프로토콜로 각광받는 MQTT에

대해 설명하고 있다. 그리고 스마트폰을 통한 활용도가 높은 BLE에 대해 설명하고 있다. 그러나

사물인터넷에서는 이 밖에도 많은 프로토콜이 공개되고 있다. 이번 장에서는 사물인터넷의 전체적인

상황을 파악하는 데 도움될 수 있게 사물인터넷 분야에 해당하는 프로토콜들을 간략하게 살펴보겠다.

6LowPAN

6LowPAN은 앞서 설명한 바와 같이 저전력 무선 근거리 네트워크의 표준화를 위한 IETF 산하 워킹

그룹이다. 6LowPAN은 지그비에서 사용하는 IEEE 802.15.4를 기반으로 IPv6을 지원하는 네트워크

계층을 정의하고 있다. 2.4GHz 주파수 영역에서 250kbps 전송 속도로 동작한다.

사물인터넷을위한자바_책.indb 26 2016-02-17 오후 4:17:33

Page 26: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

01. 사물인터넷과의 만남 27

DTLS

DTLS(Datagram Transport Layer Security)는 데이터그램 프로토콜에서 보안 기능을 제공하는

프로토콜로서 통신 중 도청, 간섭, 위조 방지를 위해 TCP/IP 통신에서 사용하는 TLS(Transport Layer

Security) 프로토콜을 바탕으로 동등한 안정성을 제공하도록 설계돼 있다. CoAP 통신 시 보안을 위해

사용할 수 있다.

CoAP

CoAP(Constrained Application Protocol)은 인터넷 자원이 제한된 기기를 위한 UDP 기반의

애플리케이션 계층 프로토콜로서 RESTful 형식을 참조해 IETF에서 설계했다. 멀티캐스트를 지원하고

오버헤드가 매우 적으며 단순하다는 특징이 있다. 그리고 RESTful 형식을 따라 설계됐지만 RESTful

통신을 하는 것은 아니다. 그러나 RESTful 형식을 따르고, CoAP-HTTP Proxy 표준안에 따라

CoAP의 리소스(Resource)를 RESTful 호출로 자원에 접근할 수 있게 지원한다.

MQTT

MQTT(Message Queuing Telemetry Transport)는 아주 작은 publish/subscribe(이하

pub/sub) 메시지 패턴의 연결 프로토콜로서 페이스북의 메신저에서 사용되면서 널리 알려졌다.

사물인터넷에서 경량의 패킷으로 사물과 사람, 시스템과 사물 혹은 사물과 사물 간에 메시지를

전송하기 위한 프로토콜로 사용할 수 있다. 2014년 11월에 e-비즈니스와 웹 서비스 표준화 단체인

OASIS(Organization for the Advancement of Structured Information Standard) 컨소시엄의

표준으로 채택됐기 때문에 사물인터넷과 엔터프라이즈 통합의 표준이 될 것이다.

XMPP

XMPP(Extensible Messaging and Presence Protocol)는 ICQ, 야후! 메신저 등과 같은 인스턴트

메신저(Instant Messenger, 이하 IM)가 태동할 때 시작된 XML 기반의 오픈소스 IM 프로토콜이다.

XMPP는 다중 사용자 채팅, 음성, 화상 통화를 지원하며, 경량 미들웨어와 라우팅 프로그램도

공개하고 있다. XMPP는 사물인터넷에서 프로토콜을 사물들 간 혹은 사람과 사물 간 비동기 메시지

통신으로 활용할 수 있게 XMPP-IoT를 정의했다.

사물인터넷을위한자바_책.indb 27 2016-02-17 오후 4:17:34

Page 27: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

28 사물인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

AMQP

AMQP(Advanced Message Queuing Protocol)는 메시지 기반의 미들웨어를 위한 애플리케이션

층의 개방형 메시지 프로토콜이다. 이전의 비동기 메시지 서비스를 제공하는 MQ 프로토콜들이 대부분

플랫폼 종속적이라는 단점을 극복하고자 비용/기술/시간적인 측면에서 효율적인 이기종간 메시지

교환 방법을 제시한다.

DDS

DDS(Data-Distribution Service for Real-Time Systems)는 결정적으로 실시간 요소가 필요한

임베디드 시스템에서 비동기 통신을 통해 데이터를 교환할 수 있는 미들웨어 프로토콜로서 CORBA와

UML 표준으로 유명한 OMG(Object Management Group)에서 표준화했다. 특히 DDS는 빠른

대응이 필요한 국방 무기체계 연동을 위한 미들웨어로 각광받고 있다.

LWM2M

LWM2M(Lightweight M2M)은 경량 기기 관리를 위해 Open Mobile Alliance(OMA)에서 CoAP

기반의 객체 모델 및 클라이언트/서버 구조로 표준화한 기기 관리 프로토콜이다. 다양한 프로토콜

기반의 사물인터넷 기기와 결합해 효율적인 원격 관리를 할 수 있게 지원한다.

IEEE802.15.4

IEEE 802.15.4는 저속 무선 네트워크에서의 미디어 접근 제어를 위한 물리적 계층 프로토콜로서 IEEE

802.15 워킹 그룹에서 표준화했다. ZigBee, 6LowPAN 등의 무선 통신 프로토콜의 기반이 되고 있다.

NFC

NFC(Near Field Communication)는 RFID 기술 중 접촉식 무선 통신을 위한 프로토콜로서 보통

4cm 이내의 거리에서의 통신을 지원한다. 보통 결제나 출입통제용으로 사용했으나 사물인터넷에서는

센서와 근거리에서 데이터를 교환하는 데 활용될 전망이다.

사물인터넷을위한자바_책.indb 28 2016-02-17 오후 4:17:34

Page 28: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

01. 사물인터넷과의 만남 29

ANT

ANT는 저전력으로 무선 네트워크 상에서 센서 간 데이터를 교환하기 위한 기술 중 하나로서 잦은

충전이 필요 없는 모바일 기기에 적용되고 있는 기술이다. 현재는 헬스케어 기기와 스포츠 센터의

휘트니스 제품, 자전거 등에서 활용되고 있다. 2.4GHz에서 여러 형태의 네트워크 토폴로지를

구성해서 통신할 수 있게 지원한다.

ZigBee

ZigBee는 ANT와 마찬가지로 소형 저전력으로 무선 개인 통신망을 구성해 통신하기 위한 근거리

무선 네트워크 프로토콜로서 IEEE 802.15.4를 기반으로 이어달리기와 같이 각 노드가 라우팅 기능을

내재해 데이터가 교환될 수 있는 메시 네트워크를 지원한다. 출력 강도와 환경에 따라 전송 거리가 10

~ 100미터에 이르며, 홈 오토메이션 등에서 활용되고 있다.

블루투스

블루투스(Bluetooth)는 1994년 에릭슨이 최초로 개발한 근거리 무선 통신을 위한 산업 표준으로,

블루투스 SIG에서 표준화하고 있으며 IEEE 802.15.1이라고도 불린다. 2.4GHz 주파수 대역을

사용하고, 컴퓨팅 환경에서 마우스, 키보드 등의 주변기기에 적용되어 사용되며, 스마트폰을 중심으로

한 모바일 환경에서 대부분의 스마트폰 운영체제에서 지원하므로 기술 생태계가 가장 견고한

프로토콜이다.

BLE

BLE(Bluetooth Low Energy)는 블루투스 4.0 이후 스펙의 한 부분으로 노키아에서 개발한 저전력

무선통신을 위한 Wibree 기술을 블루투스 SIG에서 흡수하며 탄생했다. 전력 소모가 적고 블루투스의

페어링이 아닌 스캐닝 방식으로 연결할 수 있으며, 경량의 데이터를 다자간에 교환할 수 있다.

대부분의 스마트폰에서 블루투스 4.0 이후 버전을 지원하므로 사람의 접근 감지를 통한 부가 서비스

개발이 용이하며, 이미 애플의 iBeacon에 적용되기도 하는 등 다른 프로토콜에 비해 빠르게 생활

밀착형 서비스에 활용되고 있다.

사물인터넷을위한자바_책.indb 29 2016-02-17 오후 4:17:34

Page 29: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

30 사물인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

IEEE 802.15.4

통신

전송

연결 Bluetooth/ BLE

ZigBee ANT

IPv4 IPv6 6LowPAN

NFC

CoAP MQTT XMPP AMQP DDS LWM2M

그림1-15 사물인터넷 프로토콜의 분류

1-2 자바 임베디드

지금까지 사물인터넷과 임베디드, 그리고 사물인터넷과 연관된 프로토콜에 대해 살펴봤다. 지금부터

사물인터넷에서 자바가 어떤 역할을 할 수 있는지, 그리고 이를 위해 자바 플랫폼이 어떤 것을

지원하는지 하나씩 살펴보자.

오라클(Oracle)은 자사의 강점인 엔터프라이즈 시장의 주도권을 잡기 위해 썬(Sun Microsystems)을

인수함으로써 자바의 벤더가 됐다. 그러나 엔터프라이즈 시장의 안정화, 자바 발전과 관련된 오라클에

대한 불신, 스마트폰 시장에 대한 늦은 대처로 오라클은 자바에 대한 영향력을 제대로 발휘하지 못하고

있다. 오라클은 이러한 상황을 돌파하기 위해 자바 8 이후에는 사물인터넷 시장에서 공격적으로

대응하기 위해 J2ME의 개선뿐 아니라 J2SE 버전의 임베디드 지원을 위해 노력했다. 그 결과, 2014년

3월 자바 8을 발표하며 임베디드 시스템의 CPU로 주로 채택되고 있는 ARM에 적합한 J2SE 실행

환경인 자바 SE 임베디드를 발표했고, J2ME 플랫폼 기능도 피처폰이나 PDA와 같은 모바일 기기보다

사물인터넷에 맞게 개선했다.

자바 임베디드 제품군에는 앞에서 설명한 헤드풀 임베디드 시스템을 위한 Java SE Embedded,

헤드리스 임베디드 시스템을 위한 Java ME, Java SE Embedded 환경에서의 RESTful 기반 웹

서비스를 지원하는 Java Embedded Suit, 그리고 신용카드 등에 적용할 수 있는 Java Card가 있다.

사물인터넷을위한자바_책.indb 30 2016-02-17 오후 4:17:34

Page 30: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

01. 사물인터넷과의 만남 31

Device Gateway Network Cloud Data Center Platform

Java ME Embedded

Berkeley DB

Java SE Embedded

Java Card

Berkeley DB

Java SE Embedded

Event Processing

Java Embedded Suite

Oracle DB

Java SE

Java EE

Business App.

그림1-16 사물인터넷을 위한 자바 플랫폼

자바ME임베디드

자바 ME(Micro Edition)는 2G 시대 핸드폰에서 각광받았던 플랫폼이다. 그 밖에도 셋톱박스,

프린터, 게이트웨이 등에 자바를 통한 임베디드 서비스를 개발할 수 있게 지원했다. 그러나 3G 시대

이후, 구글의 안드로이드와 애플의 아이폰에 의한 시장의 변화로 쇠퇴했다. 이에 오라클은 기존

네트워크 연결과 사용자 인터페이스가 필요한 임베디드 시스템을 위한 CDC(Connected Device

Configuration)와 센서 게이트웨어, 컨트롤러와 같은 임베디드 시스템을 위한 CLDC(Connected

Limited Device Configuration)로 구분되던 자바 ME에서 CDC의 기능을 대부분 자바 SE

임베디드로 포함시키고, 일부 CDC와 CLDC를 통합한 하나의 플랫폼으로 개선했다.

자바 ME 8 버전은 CLDC 8과 MEEP 8, Device I/O API로 구성된다. CLDC 8은 CLDC 1.1과의

호환성을 유지하며, Generic Connection Framework(GCF)뿐만 아니라 어셜션(Assertion),

제네릭(Generic), 열거형(Enumeration), 정적 임포트(static import), 어노테이션(Annotation) 등

자바 언어의 특징과 Service Provider, NIO와 같은 API를 지원하고 있다.

참고로 Java ME는 경량이라는 환경적 제약 때문에 Java SE 8의 특징 중 리플렉션(Reflection),

직렬화(Serialization), 람다식(Lambda expression), JNI, 사용자 정의 클래스로더(ClassLoader),

런타임 어노테이션(Runtime annotation), 스레드 그룹과 데몬 스레드, 병렬 유틸리티를 지원하지

않으며, 수학(Math) API, 보안(Security) API, 컬렉션(Collection) API 등은 제한적으로 지원되고

있다.

사물인터넷을위한자바_책.indb 31 2016-02-17 오후 4:17:34

Page 31: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

32 사물인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

GCF

GCF(Generic Connection Framework)는 자바 SE의 네트워크, IO API가 임베디드 시스템과

같은 환경에서 실행되기에는 오버헤드가 큼에 따라 경량으로 정의된 프레임워크다. GCF에서

제공한 API로는 IPv6, UDP 멀티캐스트, TLS, DTLS 등의 네트워크 프로토콜을 지원하는

javax.microedtion.io와 인증 및 보안을 위한 javax.microedtion.pki가 있다.

MEEP8

MEEP(Micro Edition Embedded Profile) 8은 CLDC 8 기반 애플리케이션의 실행을 위한

프로파일로서, 서비스 중심의 애플리케이션에 대한 설정, 배치, 보안, 멀티 태스크, 관리 기능을

제공한다.

컴포넌트 설명

소프트웨어 프로비저닝 애플리케이션과 라이브러리들을 플랫폼에 설치하고 의존성을 관리

소프트웨어 관리 소프트웨어 컴포넌트의 생명주기 관리

병렬 컴퓨팅(MVM) 여러 애플리케이션 간의 격리된 병렬 실행 환경을 제공

내부 애플리케이션 통신(IMC) 애플리케이션 간의 동기적인 데이터 교환

이벤트 시스템 간의 비동기적 이벤트 송수신

서비스 제공/소비 패턴 서비스 공유, 찾기, 연결 지원

공유 라이브러리(LIBlet) 애플리케이션의 공통 코드

표1-2MEEP 8에서 제공되는 컴포넌트

DeviceI/OAPI

Device I/O API는 어떠한 네이티브 코드도 필요 없이 오직 자바만을 이용해 센서, 액추에이터,

컨버터 등 하드웨어 요소에 대한 접근을 돕는다. 임베디드 기기에서 사용하는 일반적인 I/O 통신

모듈인 GPIO, 전자 부품 간의 통신을 위한 I2C와 SPI, 다른 임베디드 기기 간의 통신을 위한 UART/

AT 명령어 등 임베디드 프로그램에 필요한 기능에 대해 인터페이스와 클래스를 정의하고 있다. 현재

Device I/O API는 자바 ME 임베디드에만 포함돼 있지만 조만간 자바 SE 임베디드에도 포함될

것이다.

사물인터넷을위한자바_책.indb 32 2016-02-17 오후 4:17:34

Page 32: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

01. 사물인터넷과의 만남 33

자바SE임베디드

자바 SE(Standard Edition) 임베디드는 헤드풀 임베디드 시스템을 위한 자바 플랫폼으로서 수십

MB의 메모리가 탑재돼 있고 그래픽 사용자 인터페이스를 제공하는 기기에 적합하다. 자바 SE

임베디드는 약간의 제한 요소는 있지만 대부분의 자바 SE 버전의 API와 기능을 제공하고 있어

데스크톱 환경에서 실행되는 자바 애플리케이션도 수정할 필요 없이 실행할 수 있도록 지원한다.

자바 SE 임베디드는 용도에 맞게 자바 가상 머신과 API들을 선택할 수 있는 jrecreate 명령어를

제공한다. 그러므로 데스크톱에서 임베디드 애플리케이션을 테스트 및 검증한 후 실행에 필요한

기능만 선택해 대상 기기에 자바 실행 환경과 애플리케이션을 설치할 수 있다.

|참고| 임베디드 애플리케이션과 라이브러리들이 어떤 표준 API와 의존 관계에 있는지 확인하려면 JDK(Java

Development Kit)의 jdeps 명령어를 사용하면 된다. 이에 대해서는 2장에서 살펴본다.

그림1-17 jrecreate를 이용한 사용자 정의 자바 실행 환경(출처: 오라클)

사물인터넷을위한자바_책.indb 33 2016-02-17 오후 4:17:34

Page 33: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

34 사물인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

자바가상머신

자바 SE 임베디드에서 제공하는 자바 가상 머신으로는 Minimal JVM, Client JVM, Server JVM이

있다. 기본적으로 애플리케이션과 라이브러리를 로딩하고 검증한 후 실행하는 기능을 공통적으로

제공하지만 바이트코드 컴파일, 가비지 컬렉션에 의한 메모리 관리에 차이가 있다.

Minimal JVM은 최소한의 메모리 환경에서 동작할 수 있게 설계돼 있다. 하나의 시리얼 가비지

컬렉터만 있으며, JMX, 메모리 관리 등과 같이 자바 SE에서 제공하는 어떠한 서비스 유틸리티 기능도

포함돼 있지 않다. 그리고 실행 시 사용할 수 있는 실행 옵션도 지원하지 않는다.

Client JVM은 일반적으로 사용하는 자바 가상 머신으로, 애플리케이션이 빠르게 동작하기 위한

컴파일 기능을 제공한다. 그리고 메모리 관리를 위한 서비스 유틸리티, 디버깅, 가비지 컬렉션 옵션

등을 지원한다.

Server JVM은 Client JVM과 기능적으로 동일하지만 좀 더 긴 시간 동안 동작하는 애플리케이션에

적합한 자바 가상 머신이다. 처음 애플리케이션을 실행할 때는 Client JVM에 비해 느리지만 실행되는

동안 네이티브에 최적화된 코드를 생성하므로 결국엔 빠른 서비스를 제공할 수 있도록 지원한다. 단,

Server JVM은 모든 하드웨어 플랫폼을 지원하지 않고 현재 ARMv7 아키텍처 hard float과 i586만

지원한다.

자바SE임베디드프로파일

자바 SE 임베디드는 Compact1, Compact2, Comapct3, Full JRE라는 4가지 프로파일로 구분할 수

있다. 각 프로파일은 제한적인 컴퓨팅 자원에 맞게 선택적으로 사용할 수 있게 API와 기능이 구성돼

있다.

Compact1은 최소한의 공간만 제공하는 기기에 적합한 프로파일로서 과거 J2ME의 CDC Foundation

프로파일과 호환되며, 로깅을 비롯해 자바스크립트를 포함한 스크립트 언어를 지원한다. 그리고

Minimal VM과 함께 자바 실행 환경을 구성하면 약 10.4MB 크기를 차지한다.

Compact2는 Compact1의 패키지를 포함하며 RMI, JAXP, JDBC 패키지와 최소한의 보안 패키지가

추가된 프로파일이다. Minimal VM과 함께 자바 실행 환경을 구성하면 약 15MB 크기를 차지한다.

사물인터넷을위한자바_책.indb 34 2016-02-17 오후 4:17:35

Page 34: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

01. 사물인터넷과의 만남 35

Compact3은 Compact2의 패키지들을 포함하며 모니터링, JMX,

컴파일러 API, 보안 패키지가 포함된 프로파일이다. Compact3은

Minimal JVM과는 동작하지 않는다. Client JVM과 자바 실행

환경을 구성하면 약 20MB 크기를 차지한다.

Full JRE는 웹 서비스, Corba, Swing 등 모든 자바 SE 클래스가

포함돼 있다. 만약 헤드리스 임베디드 시스템에서 Swing의 GUI

윈도우를 생성할 경우 예외가 발생하지만 프린팅과 메모리에

비트맵 이미지를 그리는 등의 작업은 수행할 수 있다. Client

JVM과 자바 실행 환경을 구성하면 약 48MB 크기를 차지한다.

Compact 1 Compact 2 Compact 3 Full JRE

Core (java.lang.*)

Networking

Date, Time

Logging

JAR

Internationalization

Extension Mechanism

Security

Ref Objects

Input/Output (NIO)

Concurrency

ZIP

JNDI

Scripting

Serialization

Regular Expressions

Collections

Reflection

Versioning

Override Mechanism

Compact 1

JDBC

RMI

XML JAXP

Compact 2

Security (+ kerberos, acl, sasl)

JMX

XML JAXP (+ crypto)

Management

Instrumentation

Beans

JNI

JAX-WS

Preferences

Accessibility

IDL

RMI-IIOP

CORBA

Print Service

Sound

Swing

Java 2D

AWT

Drag and Drop

Input Methods

Image I/O

표1-3자바 SE 임베디드 프로파일별 구성 요소

Full JRE(48MB)

Compact 3(20MB)

Compact 2(15MB)

Compact 1(10.4MB)

그림1-18 자바 SE 임베디드 프로파일

사물인터넷을위한자바_책.indb 35 2016-02-17 오후 4:17:35

Page 35: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

36 사물인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는

자바임베디드스위트

자바 임베디드 스위트(Java Embedded Suite)는 임베디드 기기에서 실행되는 자바 SE 임베디드

실행 환경, 자바 DB, 글래스피시(Glassfish) 서버, 저지(Jersey) 웹 서비스 프레임워크가 패키징된

임베디드 솔루션이다.

자바 임베디드 스위트에 포함된 자바 실행 환경은 아직 자바 SE 임베디드 7 버전을 사용하고 있으며,

자바 SE 임베디드 7에는 메모리를 많이 사용하는 Swing이나 AWT 등의 그래픽 인터페이스와 자바

8에서 소개한 프로파일들은 지원하지 않는다.

자바 DB는 임베디드 관계형 데이터베이스인 아파치 더비(Derby)가 포함돼 있다. 네트워크를 통한

JDBC 연결은 지원하지 않으며, 단지 로컬 연결만 지원되는 임베디드 JDBC 드라이버를 제공한다.

글래스피시는 오픈소스 웹 애플리케이션 서버인 글래스피시 웹 프로파일에서 일부 기능만 발췌해

임베디드 환경에 맞게 경량화한 것으로서 서블릿(Servlet) 3.0을 지원한다.

저지는 JAX-RS(JSR311)을 구현한 RESTful 웹 서비스 프레임워크다. 저지는 글래시피시와 자바 SE

임베디드에 포함돼 있는 경량 웹 서버(com.sun.httpserver.HttpSever)에서 실행된다.

그밖의자바임베디드솔루션

임베디드를위한이벤트프로세싱

이벤트 프로세싱(Event Processing)은 오라클의 클라우드 플랫폼인 오라클 퓨전 미들웨어(Oracle

Fusion Middleware)에 포함돼 있는 이벤트 중심 애플리케이션 플랫폼으로서 이를 자바 임베디드

스위트 같은 임베디드 환경에서도 실행될 수 있게 경량화했다.

이벤트 프로세싱은 실시간으로 센서를 통한 환경 정보나 자동차, 모바일 기기와 같은 이동형 기기의

위치 정보를 이벤트로 표현되는 데이터로 표현해 오라클 퓨전 미들웨어 상의 애플리케이션과 함께

비동기 방식으로 송수신할 수 있게 지원한다.

자바카드

자바 카드(Java Card)는 스마트 카드와 아주 제한적인 메모리만을 지원하는 기기에서 경량

애플리케이션을 실행할 수 있는 자바 솔루션이다. 일반적으로 보안 카드나 은행의 직불카드,

신용카드용으로 사용된다.

사물인터넷을위한자바_책.indb 36 2016-02-17 오후 4:17:35

Page 36: 사물 인터넷을 위한 자바: 기초 이론부터 응용 사례까지 모두 배우는