Page 1


기초 이론부터 응용 사례까지 모두 배우는

사물 인터넷을 위한 자바

사물인터넷을위한자바_책.indb 1

2016-02-17 오후 4:17:30


머리말

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


머리말

여러 전자부품을 사용해 보면서 간략한 제어 기기를 만들어 볼 것이며, 4장에서는 CoAP과 MQTT 인터넷 프로토콜을 통해 사물과 사람, 사물과 사물 간에 상호 연 동하는 방법을 구현해볼 것이다. 이 책의 예제는 jot, client, webclient라는 3개의 프로젝트로 구성돼 있다. jot 프 로젝트는 3장과 4장의 내용과 관련된 예제에 해당한다. client 프로젝트는 4장에 서 만드는 라즈베리 파이 예제와 상호 연동하는 예제다. webclient 프로젝트에는 4장의 MQTT 예제 가운데 웹소켓을 사용한 사용자 인터페이스에 대한 예제다. 마지막으로 이 책을 쓰는 동안 아이디어가 생각나도록 지혜를 주신 하나님께 감사 드리며 옆에서 위로하며 많은 도움을 준 아내 홍영미와 아들 선이에게 고마운 마 음을 전한다. 그리고 책이 나올 수 있는 기회를 주고 많은 도움과 격려를 해주신 위키북스의 박찬규 대표님께 감사의 인사를 드린다.

5

사물인터넷을위한자바_책.indb 5

2016-02-17 오후 4:17:31


목 차

01 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

29

사물인터넷과의 만남

6

사물인터넷을위한자바_책.indb 6

2016-02-17 오후 4:17:31


목 차

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

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

개발 환경 만들기

39

오픈소스 하드웨어 플랫폼

39

아두이노

39

라즈베리 파이

40

비글보드

41

자바의 라즈베리 파이 지원

42

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

42

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

43

다운로드

43

압축 풀기

43

디렉터리 구조

44

환경변수 설정

45

자바 SE 임베디드 패키징

46

jrecreate 명령어

46

7

사물인터넷을위한자바_책.indb 7

2016-02-17 오후 4:17:31


목 차

도움말 옵션(--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


목 차

03 사물 만들기

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

Device I/O 설치

97

소스코드 다운로드

97

자바 SE 임베디드에 설치

98

Device IO를 호스트 PC에 복사

99

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

100

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

101

Hello World(LED 깜박이기)

101

Device I/O 살펴보기

107

Device I/O 아키텍처

107

Device I/O API

108

3-3 GPIO 다루기

109

7 세그먼트 표시하기

110

버튼 입력 받기

119

푸시 버튼의 이벤트 수신

123

이벤트 모델

124

9

사물인터넷을위한자바_책.indb 9

2016-02-17 오후 4:17:31


목 차

3-4 아날로그 입출력

129

SPI 통신

129

라즈베리 파이의 SPI 활성화

130

MCP 49X1 소개

134

MCP 4911을 이용한 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


목 차

04 사물과 대화하기

AO(Analog Output) 관제점

186

관제점 관리자

189

명령어 처리기

192

UART CLI 만들기

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

Hello CoAP

214

CoAP 서버 구현

214

HelloWorld CoAP 클라이언트 구현

216

HelloWorld CoAP 실행

219

비동기 호출

221

리소스 감시

223

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

224

감시 CoAP 클라이언트

226

감시 실행

228

11

사물인터넷을위한자바_책.indb 11

2016-02-17 오후 4:17:31


목 차

리소스 탐색

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

Hello MQTT

260

라이브러리 추가

260

전송 클라이언트(Publisher)

260

수신 클라이언트(Subscriber)

266

실행

269

12

사물인터넷을위한자바_책.indb 12

2016-02-17 오후 4:17:31


목 차

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

270

토픽 정의

271

에코 클라이언트

272

전송 클라이언트

277

에코 실행

282

자동 제어 서버의 MQTT CLI 만들기

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

13

사물인터넷을위한자바_책.indb 13

2016-02-17 오후 4:17:31


01 사물인터넷과의 만남

현재 글로벌 IT 벤처 지원 중 가장 활성화돼 있는 분야는 사물인터넷(Internet Of Things, IoT)이다. 사물인터넷이 최근 몇 년간 차세대 블루오션으로 각광받기 시작해 현재 기술과 비즈니스로 우위를 차지하기 위해 수많은 IT 업체들과 국가들이 경쟁하고 있다. 우리나라도 이러한 흐름에 맞춰 미래창조과학부의 정보통신전략위원회에서 ‘사물인터넷 기본 계획’을 확정해 사물인터넷 서비스 및 제품의 창출과 혁신을 주도할 전문기업을 육성하겠다고 발표하고 정부부처와 유관기관, 기업이 함께 출자해 ‘IoT글로벌협의체’을 구성해 IoT혁신센터를 중심으로 사물인터넷에 대한 창업부터 전문 중소기업 육성 지원까지 공격적으로 추진하고 있다. 그럼 사물인터넷이 무엇이길래 이렇게 관심을 가지고 공격적인 투자와 R&D 지원을 추진하는지 살펴보자.

1-1 사물인터넷 소개 사물인터넷이란? 사물인터넷의 정의는 1999년 MIT Auto-ID 센터장인 케빈 애시톤(Kevin Ashton)이 제안한 이후로 계속 발전되고 있다. 위키피디아에서는 사물에 센서와 통신 기능을 내포해 인터넷에 연결하는 기술로 정의하고 있지만 아직 공인된 정의는 없는 상태다. 그러나 사물인터넷을 말할 때 다음과 같은 공통된 기준은 있다. 1. 사물을 전자부품을 이용해 사람처럼 느끼게 한다. 2. 인터넷을 통해 데이터에 접근 및 수집이 가능해야 한다.

사물인터넷을위한자바_책.indb 14

2016-02-17 오후 4:17:32


01. 사물인터넷과의 만남

15

3. 서로 다른 공급업체의 제품 간에 연동돼야 한다. 4. 사물의 데이터를 통해 사람에게 서비스를 제공한다.

사물인터넷에 대한 이해를 돕기 위해 다음 시나리오를 예로 들어보자. 일과를 마치고 퇴근해서 집에 도착할 때 키에 내장된 원격제어기가 출입문에 설치된 도어락과 통신해 인증 후 출입문 이 열린다. 출입문을 열고 들어오는 순간 센서에 의해 감지되어 실내의 불이 켜지고 온습도조절장치는 내려가 있는 온 도와 습도가 가장 쾌적한 온도와 습도로 자동으로 설정되고 에어컨 혹은 보일러에는 온도 메시지를, 가습기에는 습도 메시지를 전송한다. 온도 메시지를 수신한 에어컨과 보일러는 지속적으로 온도조절장치의 현재 온도를 수신해 당신이 원하는 온도가 될 때까지 동작하며, 가습기 또한 같은 방법으로 동작한다. 온습도조절장치는 설정된 온도가 되면 메시 지를 전송하고 에어컨 혹은 보일러는 동작을 멈춘다. 또한 설정된 습도에 도달하면 가습기는 멈춘다. 그 후 쾌적한 환 경이 유지되도록 서로 조화를 이루면서 동작한다.

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

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

유사 기술 사물인터넷 이전에도 이와 유사한 개념의 기술이 있었다. 먼저 유비쿼터스(Ubiquitous)에 대해 알아보자. 유비쿼터스는 라틴어의 ‘ubique’를 어원으로 하는 ‘동시에 어디에나 존재하는,

사물인터넷을위한자바_책.indb 15

2016-02-17 오후 4:17:32


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


01. 사물인터넷과의 만남

기술 명칭

영문 명칭

제안자

비고

유비쿼터스

Ubiquitous

마크와이저

통신망 접속에 초점

퍼베이시브 컴퓨팅

Pervasive Computing

IBM

임베디드 시스템과 e-비즈니스의 연결

사물지능통신

M2M

17

인터넷 영역이 아님 사물 간의 통신 사물에 IT 기술을 적용

사물인터넷

IoT

사람과 사물의 통신 서비스 중심 개발

만물인터넷

EoT

Cisco

산업인터넷

Industrial Internet

GE

사물의 부품 단위까지 IT 기술을 적용 사람과 사물 부품의 통신 산업분야의 기기에 IT 기술을 적용 사람과 산업시설의 통신 산업 관리 서비스 중심 개발

표 1-1 유사 기술 비교

사물의 의인화 사물인터넷에서 핵심은 사물을 사람과 지능적으로 대화할 수 있는 존재로 만드는 것이다. 이를 위해 사물에 센서(Sensor)를 부착해 사람처럼 느끼고 인터넷에 연결해 사람과 대화할 수 있는 능력을 부여하고 액추에이터(Actuator)를 이용해 동작시킨다.

대화 감지

통신 행동

센서

액추에이터

그림 1-2 사물의 의인화

사물인터넷을위한자바_책.indb 17

2016-02-17 오후 4:17:32


18

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

센서 센서는 온도, 습도, 조도(빛), 압력, 음파(소리), 움직임 등 환경의 변화를 알아낼 수 있는 전자 부품으로서 사물이 사람의 오감과 같이 느낄 수 있게 한다. 센서는 각종 기계 및 전자기기(부품)을 반도체와 기계 기술을 융합해 마이크로미터 단위의 초소형 단위로 소형화하는 기술인 미세전자기계시스템(Micro Electro Mechanical System, MEMS)의 일부로서 반도체 공정과 같은 방식의 감광막프로세스(Lithography Process)를 이용해 만들어진다. 센서의 값을 제공하는 방식에 따라 저항 센서, 전류 센서, 전압 센서로 구분된다. 저항 센서는 환경의 변화에 따라 저항 값이 변경되는 방식으로 센서에 일정한 전류를 보내 계산된 전압을 입력받는다. 전류 센서는 전류의 값이 변경되는 센서로 작은 값의 저항을 사용해 계산된 전압을 입력받는다. 마지막으로 전압 센서는 압력과 같은 환경의 변화에 따라 전압을 발생시킨다.

Cds 광센서

초음파 거리 센서

가스 센서

적외선 인체 감지 센서

물수위 측정 센서

온습도 센서

수분 감지 센서

공기압 센서

그림 1-3 센서의 종류

통신 사물은 사람에게 데이터를 전달하거나 사람의 의도를 전달받기 위해 무선 통신 기술을 활용한다. 사물의 생명을 유지시키기 위해서는 배터리와 같은 전원 장치를 사용하며, 무선 통신은 반드시 언제나 접근이 가능하면서도 최소 1.5년에서 10년까지 배터리가 유지될 수 있도록 저전력으로 동작해야 한다.

사물인터넷을위한자바_책.indb 18

2016-02-17 오후 4:17:32


19

01. 사물인터넷과의 만남

무선 통신에서 토폴로지를 구성할 때 사용하는 기술인 메시 네트워크(Mesh Network)는 일반적으로 사용하는 중앙집중형인 인터넷 망과 달리 기기 간에 직접 연결되고 기기 내에 라우터 기능이 있어 마치 이어달리기 선수처럼 신호를 전달할 수 있는 네트워크 망이다. 보통 전송 거리는 10m~100m 사이로, 같은 공간 내의 사물끼리 통신하는 데 사용한다. 대표적인 메시 네트워크 프로토콜로는 지웨이브(ZWave), 지그비(ZigBee) 등이 있다. 사물인터넷의 경우 사물을 직접 IP로 통신하는 인터넷 망에 연결시키기 위한 기술이 개발 중이다. 그중 대표적인 기술이 6LowPAN이다. 6LowPAN은 인터넷의 운영, 관리, 개발에 대해 협의하고 표준을 정하는 IETF(국제 인터넷 표준화 기구)의 워킹 그룹으로서, 센서 네트워크 상에 인터넷 프로토콜을 사용하는 저전력 무선 사설 네트워크의 표준화(IEEE 802.15.4)를 진행하고 있다. 6LowPAN의 6은 IPv6를 나타내고 Low는 저전력, PAN은 사설 네트워크를 의미한다. IPv6는 IPv4의 인터넷 주소 고갈이라는 한계를 극복하기 위해 IP 주소의 길이를 32비트에서 128비트로 확장시키고 데이터를 담을 수 있는 패킷의 크기도 확장시킨 차세대 인터넷 프로토콜이다. IPv4 Header 0

4

8 IHL

Version

12

16

20

Flags

31

Fragment Offset Header Checksum

Protocol

Time to Live

28

Total Length

Type of Service

Identification

24

Source Address Destination Address

IPv6 Header 0 Version

4

8 Traffic Class

12

16

20

24

28

32

Flow Label

36

40

Payload Length

44

48

52 Next Header

56

60

63

Hop Limit

Source Address

Destination Address

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

최근에는 블루투스(Bluetooth) 4.0이 각광받고 있다. 블루투스 4.0은 이전의 제한된 데이터 통신을 저전력 상태에서 좀 더 간편하고 효율적으로 하기 위해 업그레이드된 근거리 통신 네트워크다.

사물인터넷을위한자바_책.indb 19

2016-02-17 오후 4:17:32


20

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

블루투스 4.0에서 저전력 무선 통신 기능을 따로 BLE(Bluetooth Low Energy)라고 부르기도 한다. 블루투스 4.0은 현재 판매되고 있는 아이폰과 안드로이드폰에서 지원하고 있기 때문에 BLE를 지원하는 기기와 통신할 수 있어 비콘(Beacon) 같은 사물인터넷 서비스에 큰 파급 효과를 가지고 있다.

그림 1-5 iBeacon의 활용도

액추에이터 액추에이터는 어떤 기계적 시스템을 움직이거나 제어하는 데 쓰이는 기계 장치로서 주로 전기나 유압, 압축 공기 등을 이용한다. 즉, 전기, 유압, 기압 등의 형태로 된 에너지원으로 작동하며, 이 에너지를 어떠한 종류의 움직임으로 변환하는 장치다. 이 가운데 전기를 이용하는 액추에이터를 모터(Motor)라고 한다. 모터는 흔히 알고 있는 플레밍의 왼손 법칙이 적용된 것으로, 자기장 속을 흐르는 전류에는 자기력이 있으며 자기력은 전류와 직각 방향으로 작용한다. 모터는 자기력에 의해 회전운동의 힘을 얻어 구동되는 기계를 말한다. 모터의 종류로는 DC 모터, AC 모터, 스테핑(Stepping) 모터 등이 있다. 그림 1-6 전기 모터의 종류(출처: 위키피디아)

사물인터넷을위한자바_책.indb 20

2016-02-17 오후 4:17:33


01. 사물인터넷과의 만남

21

서보 모터(Servo Motor)는 이러한 모터와 명령에 의한 제어가 가능한 구동 시스템이 합쳐진 것이다. 일반적으로 카메라, DVD, 프린터, 공작 기계에서 정확한 위치와 속도에 따라 구동시킬 때 사용된다. 서보 모터의 구동 시스템은 모터와 모터의 위치와 속도를 제어하기 위한 회로, 제어 구동 소프트웨어로 이뤄진다.

그림 1-7 서보 모터

임베디드 시스템 사물을 IT 기술과 접목시켜 의인화할 때 임베디드 시스템에 대한 이해는 아주 중요하기 때문에 이번 절에서 간략히 설명하겠다.

임베디드 시스템이란? 임베디드 시스템은 실시간으로 특수 목적에 대한 기능을 제공하기 위해 하드웨어와 소프트웨어가 내장된 전자 제어 시스템을 말한다. 단순히 회로만 있는 것이 아니라 마이크로프로세서와 마이크로프로세서를 운영해서 기능을 수행하는 프로그램인 펌웨어가 포함된 구조다. 현재는 좀 더 기능이 다재화되어 고성능 CPU와 운영체제 그리고 프로그램이 포함돼 있다. 오늘날 임베디드 시스템의 활용 범위를 살펴보면 자동차, 항공, 군사장비, 의료장비, 공장제어 등 산업용에서부터 스마트폰, 보안 카메라, 도어락, 냉장고, TV 등의 생활용품에 이르기까지 광범위하게 사용되고 있다. 사물인터넷에서는 사물에 대한 데이터를 수집하고 제어하며 외부 환경과 연결해 부가 서비스를 제공하는 플랫폼이 된다.

사물인터넷을위한자바_책.indb 21

2016-02-17 오후 4:17:33


22

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

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

임베디드 시스템의 종류 임베디드 시스템은 그래픽 사용자 인터페이스를 위한 입출력 장치의 유무에 따라 헤드풀(Headful)과 헤드리스(Headless)로 구분할 수 있다. 헤드풀 임베디드 시스템은 ATM, 셋톱박스(Set-top box), 키오스크와 같이 출력 장치와 터치 스크린 혹은 키보드 등의 입력 장치를 가지고 있는 시스템으로 사용자의 의도를 입력받아 원하는 결과를 출력한다. 헤드리스 임베디드 시스템은 사용자 인터페이스를 위한 입출력 장치가 없으며, 온도, 습도, 가속도 등의 환경 변화를 감지하는 센서를 통한 데이터 입력과 이에 따른 액추에이터 동작 및 알람과 같은 이벤트를 발생시킨다. 보통 사물인터넷에서 사물은 헤드리스 임베디드 시스템으로 구현될 것이다.

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

사물인터넷을위한자바_책.indb 22

2016-02-17 오후 4:17:33


01. 사물인터넷과의 만남

23

사물인터넷 동향 사물인터넷은 전국시대와 같이 주도권을 갖기 위한 경쟁이 치열한 시장이다. 그동안 대형 IT 회사와 제조사들이 중심이 되어 각종 플랫폼이 나타났으며, 플랫폼을 중심으로 선택된 협력업체의 제품만이 통합되는 폐쇄적 특성을 띠고 있다. 이러한 특성은 자칫 사물인터넷 시장을 엉망으로 만들어 과거 홈 네트워킹 시장과 같이 최악의 시나리오로 이어질 수도 있지만 이를 극복하기 위해 현재는 개방적인 표준화 작업이 한창 진행 중이다. 그러나 개방적 표준화 작업의 이면에는 이를 주도하는 기업, 특히 시스코나 퀄컴과 같은 기업들은 네트워크 장비 혹은 프로세스 칩과 같이 자사 제품의 시장 확장을 위한 속내를 감추고 있다.

스레드 그룹(Thread Group) 구글은 2014년 1월 13일 네스트랩스(Nest Labs, 이하 네스트) 인수를 발표한 이후 네스트의 기술을 바탕으로 스레드 그룹을 설립했다. 스레드그룹은 6LowPAN 기반의 통신 프로토콜인 스레드를 정의했다. 이 프로토콜은 네스트 제품에서 사용하고 있으며, 대표 제품으로 온도조절장치인 서모스탯(Thermostat)이 있다. 스레드 그룹에는 삼성전자, ARM 홀딩스, 프리스케일 반도체, 실리콘랩스 등이 참여하고 있으며, 협력사들이 만든 제품이 스레드 네트워크에 통합될 수 있는지 검증하는 인증 프로그램을 갖추고 있다. 현재 스레드는 구글의 안드로이드와 통합돼 있지 않지만 조만간 통합될 것이라 예상한다.

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

사물인터넷을위한자바_책.indb 23

2016-02-17 오후 4:17:33


24

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

올신 얼라이언스 퀄컴은 올조인(AllJoyn) 플랫폼을 개발해 2013년 리눅스 재단에 기증하며 올신 얼라이언스(AllSeen Alliance, 이하 올신)를 설립했다. 올신에는 시스코, 마이크로소프트, LG, HTC 등 많은 회원사들이 참여하고 있다. 올조인은 같은 AP 내의 WiFi 기반으로 P2P 통신을 이용해 사물들을 통합할 수 있는 오픈소스 플랫폼이다. 올조인은 쉽게 애플리케이션을 개발할 수 있게 여러 운영체제에서 개발을 지원하는 자바 혹은 C 기반의 SDK를 제공한다. 그러나 현재 협력사들이 퀄컴에 대한 불신을 드러내고 있다. 특히 소스를 기증받은 리눅스 재단은 현재 올신보다는 오픈 인터커넥트 컨소시엄에 더 협력적이다. 올조인 기본 애플리케이션

올조인 Thin 애플리케이션

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

올조인 Thin 프레임워크

올조인 기본 Core 라이브러리

올조인 Thin Core 라이브러리

올조인 라우터 Non-임베디드 OS (안드로이드, iOS, 윈도우, 맥 OS X, 리눅스)

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

그림 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


01. 사물인터넷과의 만남

25

IIC는 사물인터넷 기술을 에너지, 헬스케어, 공공시설 등의 산업 분야에 적용하기 위한 프레임워크와 테스트베드를 개발하고 있다. 요소

기능

센서와 액추에이터

정보 처리 상호 운용

Edge Aggregation, 분석 및 제어

보안

기기 관리

관리 효율성

데이터 서비스

Connectivity

애플리케이션 및 통합

소프트웨어 개발 인프라

비즈니스 시스템들

물리적 시스템들

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

국제 인터넷 표준화 기구 국제 인터넷 표준화 기구(Internet Engineering Task Force; IETF, 이하 IETF)는 인터넷의 운영, 관리, 개발에 대해 협의하고 프로토콜과 구조적인 사안에 대한 쟁점을 해결하기 위한 인터넷 표준화 기구로서 미국 정부의 후원으로 성장하다가 1990년대 초부터 미국 정부에서 벗어나 독자적인 연구 단체로 자리매김했다. IETF는 사물인터넷의 제한적 환경에서 효율적으로 개체 간 통신이 될 수 있게 물리적 계층부터 애플리케이션 계층까지의 프로토콜을 표준화하거나 진행 중이다. 현재 사물인터넷에서 각광받고 있는 CoAP은 IETF의 CoRE 워킹그룹에서 표준화한 프로토콜이다. 레이어(Layer)

표준 프로토콜

애플리케이션

CoAP

트랜스포트

UDP/DTLS

네트워크

6LowPAN

데이터링크

IEEE 802.15.4

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

사물인터넷을위한자바_책.indb 25

2016-02-17 오후 4:17:33


26

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

블루투스 SIG 블루투스 SIG(Bluetooth SIG)는 컴퓨팅 환경에서 근거리 무선 통신인 블루투스를 표준화하고 이를 이용한 애플리케이션 개발 및 마케팅을 진행하는 단체로서 1998년에 결성됐다. 블루투스 제품에 대한 적합성을 검증하고 인증하며, 블루투스 기술의 확산을 위해 각종 프로그램을 진행하고 있다. 블루투스 스펙 정의는 4.2까지 진행했으며, 특히 4.0에서 발표한 BLE(Bluetooth Low Energy)는 사물인터넷 환경에서 적합한 기술이다.

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

심박 모니터, 웨어러블 시계, 창문 및 현관 보안 센서, 자동차 키 체인

Bluetooth Classic

Bluetooth Low Energy

그림 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


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


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 기반의 객체 모델 및 클라이언트/서버 구조로 표준화한 기기 관리 프로토콜이다. 다양한 프로토콜 기반의 사물인터넷 기기와 결합해 효율적인 원격 관리를 할 수 있게 지원한다.

IEEE 802.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


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


30

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

통신

전송

연결

CoAP

MQTT

IPv4

IEEE 802.15.4

XMPP

AMQP

DDS

IPv6

Bluetooth / BLE

ZigBee

LWM2M

6LowPAN

ANT

NFC

그림 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


01. 사물인터넷과의 만남

Java Card

Java Embedded Suite

Business App.

Java SE Embedded

Event Processing

Java EE

Java ME Embedded

Java SE Embedded

Java SE

Berkeley DB

Berkeley DB

Oracle DB

Device

Gateway

Network Cloud

31

Data Center Platform

그림 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


32

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

GCF GCF(Generic Connection Framework)는 자바 SE의 네트워크, IO API가 임베디드 시스템과 같은 환경에서 실행되기에는 오버헤드가 큼에 따라 경량으로 정의된 프레임워크다. GCF에서 제공한 API로는 IPv6, UDP 멀티캐스트, TLS, DTLS 등의 네트워크 프로토콜을 지원하는 javax.microedtion.io와 인증 및 보안을 위한 javax.microedtion.pki가 있다.

MEEP 8 MEEP(Micro Edition Embedded Profile) 8은 CLDC 8 기반 애플리케이션의 실행을 위한 프로파일로서, 서비스 중심의 애플리케이션에 대한 설정, 배치, 보안, 멀티 태스크, 관리 기능을 제공한다. 컴포넌트

설명

소프트웨어 프로비저닝

애플리케이션과 라이브러리들을 플랫폼에 설치하고 의존성을 관리

소프트웨어 관리

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

병렬 컴퓨팅(MVM)

여러 애플리케이션 간의 격리된 병렬 실행 환경을 제공

내부 애플리케이션 통신(IMC)

애플리케이션 간의 동기적인 데이터 교환

이벤트

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

서비스 제공/소비 패턴

서비스 공유, 찾기, 연결 지원

공유 라이브러리(LIBlet)

애플리케이션의 공통 코드

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

Device I/O API 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


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


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


01. 사물인터넷과의 만남

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

Full JRE

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

(48MB)

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

Compact 3

35

(20MB)

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

Compact 2

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

(15MB)

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

Compact 1

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

(10.4MB)

비트맵 이미지를 그리는 등의 작업은 수행할 수 있다. Client JVM과 자바 실행 환경을 구성하면 약 48MB 크기를 차지한다. 그림 1-18 자바 SE 임베디드 프로파일

Compact 1

Compact 2

Compact 3

Full JRE

Core (java.lang.*)

Compact 1

Compact 2

Beans

Networking

JDBC

Security (+ kerberos, acl, sasl)

JNI

Date, Time

RMI

JMX

JAX-WS

Logging

XML JAXP

XML JAXP (+ crypto)

Preferences

JAR

Management

Accessibility

Internationalization

Instrumentation

IDL

Extension Mechanism

RMI-IIOP

Security

CORBA

Ref Objects

Print Service

Input/Output (NIO)

Sound

Concurrency

Swing

ZIP

Java 2D

JNDI

AWT

Scripting

Drag and Drop

Serialization

Input Methods

Regular Expressions

Image I/O

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

사물인터넷을위한자바_책.indb 35

2016-02-17 오후 4:17: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


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

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

Read more
Read more
Similar to
Popular now
Just for you