08 개방형 플랫폼 - 이클립스
이클립스 Eclipse 프로젝트
1. 이클립스 Eclipse 의 소개
이클립스 프로젝트
이클립스에 대해 알아보도록 하겠습니다. 이클립스란 높은 수준의 통합 도구를 개발할 수 있는 플랫폼을 제공하기 위한 오픈소스 소프트웨어 개발 프로젝트입니다. 누구나 사용할 수 있는 개방형 사물인터넷/사물통신 플랫폼이며, 다양한 OS 플랫폼에서 사용 가능하고, 개발도구와 실행환경이 모두 제공됩니다. 초기에는 자바를 비롯한 다양한 언어를 지원하는 프로그래밍 통합 개발 환경을 목적으로 시작되었으나, 현재는 OSGi를 도입하여, 범용 응용 소프트웨어 플랫폼으로 진화하였습니다.
OSGi란, Open Service Gateway initiative로, 간단히 말해 번들로 이루어진 프레임워크를 뜻합니다.
이클립스 웹페이지를 살펴볼까요? 이클립스 웹 페이지에서는 프로그램에 대한 다운로드를 제공하고, 관련 프로젝트 사이트, 협업 워킹 그룹을 소개하고 있습니다. 이들은 이클립스 프로젝트의 임무를 ‘이클립스 도구를 필요로 하는 단체와 사용자들이 이클립스 기술을 접하면서 이를 발전, 이용하도록 도모하는 것’으로 정의하고, 산업 플랫폼으로서의 비전을 실천하고 있습니다.
그중에서도 사물인터넷 이클립스 프로젝트는 누구나 사용할 수 있는 개방형 사물인터넷/사물 통신 플랫폼을 목표로, 사물인터넷 응용을 가능하게 하는 서비스와 확장 가능한 런타임을 제공하고 있습니다.
이클립스 Eclipse 의 특징과 주요 기능을 살펴보도록 하겠습니다. 자바 프로그래밍 개발이 용이하며, 플러그인을 통해 C나 C++(CDT 플러그인), PHP, HTML 등 여러 언어의 개발이 가능합니다. 그 밖의 언어들을 위한 많은 공개/상용 플러그인이 개발되고 있고, 단순한 구문 강조는 이클립스 Colorer, 컬러 에디터 등의 플러그인을 통해 거의 대부분의 언어/파일 형식을 사용할 수 있습니다. 또한, 훌륭한 버전 관리 시스템 클라이언트의 기능을 수행하며 강력한 파일 비교 유틸리티까지 수행합니다. 자바 기반으로 가상머신 위에서 어떤 플랫폼에서든 실행 가능하고, 다양한 플러그인을 통한 확장이 가능합니다. 특히 자바에 대해 강력한 리팩토링 기능을 제공하는 특징이 있습니다.
2. 통합 개발 환경
이클립스의 가장 큰 장점은 플러그인을 통해 여러 가지 다양한 언어를 사용할 수 있다는 점입니다. 이전의 임베디드 시스템은 C언어와 같은 저수준 언어를 사용하였지만 이클립스는 ‘루아’같은 고급언어를 사용하여 생산성을 높이고, 쉽게 접근할 수 있도록 하는 전략을 취하고 있습니다. 이클립스 Eclipse는 이런 언어를 사용하여 개발할 수 있는 통합 개발 환경을 제공하고 있습니다.
통합 개발 환경, 즉 IDE는 Integrated Development Environment의 약자로, 코딩, 디버그, 컴파일, 배포 등 프로그램 개발에 관련된 모든 작업을 하나의 프로그램 안에서 처리하는 환경을 제공하는 소프트웨어입니다. 종래의 소프트웨어 개발에서는 컴파일러, 텍스트 편집기, 디버거 등을 따로 사용하였으나, 이러한 프로그램들을 하나로 묶어 대화형 인터페이스를 제공한 것이 통합 개발 환경입니다. 최근의 통합 개발 환경은 그래픽 사용자 인터페이스(GUI) 응용 프로그램 개발용 고속 개발 도구가 많이 등장하였습니다.
이클립스의 다양한 프로젝트 중, 코네키(Koneki)는 이클립스 IDE를 확장한 것으로, 루아와 같은 언어를 사용하여 개발할 수 있는 통합 개발 환경 프로젝트입니다. 개발자들을 위한 시뮬레이션, 테스트 및 M2M 응용 프로그램을 배포하여 M2M 솔루션 개발자를 위한 도구를 제공하고 있습니다.
3. 서비스 프로젝트
이클립스 서비스 프로젝트에 대해 알아보겠습니다. 이클립트 프로젝트에서는 스카다와 스마트홈을 위한 서비스를 지원합니다.
스카다는 Supervisory Control And Data Acquisition의 앞글자를 딴 것으로 감시 제어 및 데이터 취득을 뜻합니다. 일반적으로 산업 제어 시스템 즉, 산업 공정/기반 시설/설비를 바탕으로 한 작업공정을 감시하고 제어하는 컴퓨터 시스템을 말합니다.
참고로 산업 제어 시스템이란, 산업공정, 기반시설 공정, 설비 공정을 뜻합니다. 우선 산업 공정은 제조, 생산, 발전, 가공, 제련과정 등에 필요한 작업 절차를 의미하며, 연속/집단/반복/분산 방식으로 운용될 수 있습니다. 기반 시설 공정은 공공기관이나 사기업에 의해 이루어지는 물 처리와 분배, 폐수의 수거 및 처리, 기름이나 가스의 파이프라인, 송전 및 배전, 풍력발전소, 방공 및 민방위 시스템, 대규모 통신 시스템 등에 필요한 공정을 의미합니다. 설비 공정은 역시 공공기관이나 사기업에 의해 이루어지는 건축, 공항, 조선, 우주정거장 사업 등에 사용되는 작업공정을 의미합니다. 여기에서는 공조 설비, 진입로, 에너지 소모 등을 감시하고 제어합니다.
스카다 시스템의 구성요소입니다.
인간-기계 인터페이스는 HMI로 Human-Machine Interface입니다. HMI는 기계 제어에 사용되는 데이터를 인간에게 친숙한 형태로 변환시켜줍니다.
감시(컴퓨터) 시스템은 프로세스와 관련된 자료를 수집하고 하드웨어 제어를 위한 명령을 수행합니다.
원격 단말기는 RTU는 Remote Terminal Unit으로 센서와 연결되어 디지털 데이터로 상호 변환 및 전달을 합니다.
프로그래머블 로직 컨트롤러 PLC는 Programmable Logic Controller는 현장 배치 기계로서, 경제적, 다목적으로 사용 가능합니다.
통신 시설은 제어 시스템, 원격 단말기 등이 서로 통신할 수 있게 해줍니다.
이클립스 스마트홈 Eclipse SmartHome에서는 스마트 홈을 위한 유연한 프레임워크, 사물인터넷에 대한 인터페이스 및 도구를 제공하고 있습니다. 이클립스 스마트홈 Eclipse Smart Home 은 자바, OSGi 기반 임베디드 디바이스, Open Home Automation Bus에서 출발하고 하드웨어와 프로토콜을 더해 독립적인 오픈소스 공동체로 성장합니다. 자동화, 규칙 기반, 스크립트 언어, 시간과 이벤트 트리거, 알림, TTS 기능이 포함됩니다. 이클립스 스마트홈 Eclipse Smart Home 프로젝트는 스마트홈에 대한 다양한 노력들을, API에 대한 표준을 중심으로 오픈 소스 공동체가 주도하여 통합하자는 취지의 프로젝트입니다. 자사의 제품을 내세워 이해관계에 치우치는 기업보다는 비영리 단체인 이클립스 재단이 이런 일에 적합하다는 생각으로 추진하는 것입니다.
4. 사물인터넷 게이트웨이 프레임워크 프로젝트
사물인터넷 게이트웨이 프레임워크 프로젝트를 살펴보도록 하겠습니다. 먼저, 게이트웨이란 종류가 다른 네트워크 간의 통로의 역할을 하는 장치로 의료, 물류, 공정제어 등 모든 응용에는 게이트웨이 Gateway가 필요합니다. 말하자면, 인터넷 서버, 스마트폰, PC, 사람과 사물을 연결하여 주는 창구입니다. 게이트웨이 Gateway를 만드는 기술은 오픈되어 있고, 누구나 만들 수 있습니다. 복잡한 언어뿐 아니라 비주얼 베이직처럼 진입 장벽이 낮은 간단한 도구를 이용하여 구축할 수도 있습니다.
게이트웨이 Gateway는 사물인터넷과 기존의 인터넷을 연결하는 기능을 가지므로 사물인터넷에 있어서 중요한 역할을 하는 디바이스입니다. 이 디바이스에 대한 개방형 프레임워크 오픈 소스 프로젝트가 미히니와 쿠라입니다. 이 프레임워크의 주요 기능에는 디바이스 관리와 API나 프로토콜로 사물의 기능을 인터넷, 혹은 애플리케이션에 전달하는 일을 합니다. 애플리케이션 수준에서 사물을 대리하는 역할을 하는 프레임워크로 사물인터넷 생태계에서 중요하게 다뤄집니다.
미히니(Mihini) 프로젝트는 루아 언어를 기반으로 효율적인 통신 프로토콜이 구현된 사물인터넷 게이트웨이입니다.
https://www.youtube.com/watch?v=e40MbCYinlw
쿠라(Kura) 프로젝트란,
M2M 서비스 게이트웨이를 위한 OSGi 기반 응용 프로그램 프레임 워크를 말합니다. 쿠라 프로젝트는 OSGi 서비스 형태로 사물인터넷 게이트웨이가 요구하는 데이터, 클라우드, 입출력 서비스를 제공합니다.
이클립스 사물인터넷 게이트웨이는 라즈베리 파이 같은 개방형 하드웨어에 리눅스와 자바와 같은 가상머신 위에서 돌아가는 OSGi 런타임으로 구축한 것으로 이것을 쿠라 프로젝트라 합니다.
서비스는 번들의 형태로 제공되는데, 이것은 OSGi 용어로 원격서비스를 하는 자바 객체를 뜻합니다.
OSGi는Open Service Gateway initiative의 약자로, 자바 기반의 동적 모듈 시스템, 원격 응용 배포 및 배치 서비스를 지원하며, 번들로 구성됩니다. 다시 말해, OSGi는 한 개의 번들 또는 여러 개의 번들로 이루어진 애플리케이션 자체를 언제든지 동적으로 프레임워크 상에 설치, 실행, 업데이트, 중단, 제거하는 것을 가능하게 하는 매우 유연한 라이프 사이클 모델을 지원하는 프레임워크라고 할 수 있습니다.
아래의 그림은 OSGi의 구조를 표현한 것입니다. OSGi는 자바 가상 머신 기반하에서
작동하며, 자바 가상 머신은 이질적인 임베디드 OS와 임베디드 CPU에서 오는 차이점들에 대한 완충 역할을 수행합니다. OSGi 서비스는 모두 번들이라 불리우는 물리적 묶음에 포함되는데, 복수개의 OSGi 서비스가 하나의 번들 Bundle 에 포함될 수도 있으며, 번들은 배포와 관리의 기본 단위를 형성합니다.
번들 Bundle은 OSGi환경에서 기본컴포넌트로 선언과 생명주기 관리, 서비스 레지스트리 등으로 구성된 자바 객체입니다. 기능은 강력하나 무거운 미들웨어라고 볼 수 있습니다.
다음 그림은 번들 Bundle의 구조를 이미지로 나타낸 것입니다. 실행환경은 번들 Bundle이 수행될 수 있는 환경을 말하며, 서비스 레지스트리는 서비스를 등록하고 찾을 수 있도록 지원합니다. 라이프 사이클, 즉 생명주기 관리는 번들이 어떻게 동적으로 설치되고 관리될 수 있는지를 정의하며, 모듈은 OSGi의 근간이 됩니다.
번들 Bundle 의 특징을 살펴보면, 배포 가능한 모듈이며, Jar파일 형태로 배포/실행됩니다. 하나의 번들에는 0개 이상의 서비스가 등록되며, 등록된 다른 번들 Bundle 의 서비스를 검색하여 찾고, 사용합니다. 이러한 프레임워크 자체가 바로 시스템 번들이 되는 것입니다.
다음 그림은 OSGi 프레임워크를 나타낸 것입니다. 번들을 통해 서비스가 제공되는 것을 알 수 있습니다.
OSGi의 특징은 바이트코드와 가상머신 기술을 이용하여 코드 호환성을 보장하는 자바 플랫폼 위에서, 각 애플리케이션들이 번들이라 불리는 작고 재사용 가능한 컴포넌트로부터 조립될 수 있도록 도와줍니다. 번들은 OSGi에서 이야기하는 각각의 컴포넌트 또는 애플리케이션을 가리키는 단위를 의미합니다. OSGi는 자바 가상 머신 위에서 돌아가는 하나의 프레임워크 Framework이며, 사용자가 개발한 프로그램들은 번들 형태로 선언되며 OSGi 내부에서 실행되는 특징을 가집니다.
OSGi는 동적 언어, 즉 서비스
지향 프로그래밍 기법으로 생산성과 복잡도의 관계에서 구조적 프로그래밍에 비하여 생산성이 높아지는 강점을 가집니다. 따라서 생산성 관점에서 새로운 동적 언어, 새로운 서비스 지향 프로그래밍 가능한 도구를 사용하는 것이 사물인터넷 도구에 적합하므로 새로운 기술과 언어를 배우고 적용하여야 할 필요가 있습니다.
이클립스 실습
1. 자바 언어 개발환경과 런타임 설치하기
이클립스 실습
자바 언어 개발환경과 런타임 설치 방법을 알아보도록 하겠습니다. 이클립스는 자바 환경이 필요하므로 시스템에 자바 런타임을 설치하여야 합니다.
자바 웹 페이지에 접속하여 무료 자바 다운로드 버튼을 누르고 최종 사용자 라이센스에 동의하면 설치 파일을 얻을 수 있습니다.
해당 부분을 클릭해 보세요.
다운로드 된 설치 파일을 실행합니다. 설치 버튼을 클릭해 보세요. 자바가 설치되는 것을 확인할 수 있습니다.
성공적으로 설치되면 완료창이 생기고 닫기 버튼을 누르면 설치가 종료됩니다.
2. 이클립스 통합 개발 환경 설치하기
이클립스 통합 개발 환경을 설치해 보도록 하겠습니다.
이클립스 웹 페이지에서 자신의 OS에 맞는 버전을 다운로드 합니다.
다운로드 버튼을 클릭하면, 이클립스 실행파일들이 다운로드 됩니다. 압축파일이 다운로드 폴더에 있는 것을 확인할 수 있습니다.
파일의 압축을 풀면, 실행 가능한 이클립스 파일이 있는 폴더가 생성됩니다.
파일을 클릭하여 이클립스를 실행해 보세요. 이클립스 로고 화면이 뜨고 작업공간을 선택하는 다이얼로그 창이 뜹니다.
다음으로, 작업 폴더를 선택하고 확인 버튼을 클릭합니다. 환영 페이지와 함께 이클립스가 실행되었습니다.
3. 리액티브 블록(Reactive Blocks) 설치하기
리액티브 블록(Reactive Blocks)을 설치해보도록 하겠습니다. Help 메뉴에서 Eclipse Marketplace를 선택하면 새로운 창이 뜹니다.
Find에 “reactive”를 입력하면, 목록에 리액티브 블록(Reactive Blocks)이 나타나는데, Install 버튼을 클릭하여
설치합니다.
다음과 같은 창이 뜨면, Confirm을 클릭하여 다음 단계로 넘어갑니다.
라이센스 창이 뜨면 동의에 체크하고 설치를 완료합니다.
설치가 완료된 후 이클립스를 다시 실행시키면 리액티브 블록이 설치된 것을 확인할 수 있습니다.
리액티브 블록을 선택하면 리엑티브 블록 개발 환경을 볼 수 있습니다.
4. 리액티브 블록(Reactive Blocks) 예제 실행하기
리액티브 블록(Reactive Blocks)의 예제를 실행해 보도록 하겠습니다.
먼저, 이클립스에서 리액티브 블록(Reactive Blocks)을 실행합니다. 동영상을 재생하면 간단한 응용을 작성하는 방법을 볼 수 있습니다.
Import Building Blocks를 클릭하고, 첫 번째 실습 예제를 선택한 후, 확인을 누릅니다. 목록에서 예제를 선택한 후 다음 버튼을 클릭합니다.
라이센스에 동의하고 종료 버튼을 클릭합니다.
Finish 버튼을 클릭해 보세요.
예제의 소스를 임포트한 결과를 확인할 수 있습니다. 화면의 예제는 예제들 중에 가장 간단한 응용의 소스 파일로, 주기적인 타이머의 트리거가 있을 때마다 value 값을 증가시키는 것입니다.
좌측의 프로젝트 소스를 선택하면 Project메뉴에 Build Project를 실행할 수 있습니다.
그러면, 그림으로 표현된 응용을 자바로 된 소스로 전환하는 프로젝트가 생성됩니다.
생성된 자바 프로젝트를 실행합니다. 다음은 결과 화면으로 타이머가 value를 1씩 증가시키는 것을 볼 수 있습니다.
다시 말해, 리액티브 블록(Reactive Blocks)은 다이어그램을 자바 코드로 생성해 주는 도구입니다.
이클립스 프로젝트 생성하기
Eclipse Project
X클릭하기
File 클릭하기
New 클릭하기
Java Project 클릭하기
Project name에 프로젝트 이름 입력하기
Finish 클릭하기
프로젝트 확인하기
이클립스 파운데이션이 2014년 2월로 10주년을 맞았습니다. 이클립스 파운데이션은 이클립스 자바 IDE, 마이린(Mylyn) 작업 중심 인터페이스를 포함한 여러 가지 주요 개발자 기술을 이끌고 있습니다. 그동안 수백만 건의 다운로드 횟수를 기록했고 수많은 상용 제품의 기반이 된 여러 가지 프로젝트를 출범하고 이끌었습니다.
IT에 큰 영향을 미친 5가지 주요 이클립스 프로젝트를 살펴보도록 하겠습니다. 이클립스의 이사인 마이크 밀린코비치는 이클립스 프로젝트의 조상 격인 자바 개발 도구가 개발자들의 마음속에 이클립스라는 단어를 새기는 계기가 됐다고 말했습니다. 자바 개발 도구에는 2001년에 데뷔한 이클립스 자바 IDE가 있습니다. 기능으로는 디버깅 지원, 편집기, JDT UI가 있습니다. 플러그인은 메이븐(Maven) 프로젝트 관리 도구, 깃(Git) 소프트웨어 버전 제어 시스템과 같은 기술을 지원합니다.
2004년 6월에 발표된 에퀴녹스는
이클립스 플랫폼을 위한 코어 런타임이자 OSGi 사양의 레퍼런스 구현으로, 자바를 위한 모듈성 프레임워크와 애플리케이션을 위한 가벼운 컨테이너를 제공합니다. 이클립스에 따르면 "에퀴녹스의 목표는 최상급 OSGi 커뮤니티가 되어 이클립스의 비전을 발전시켜 나가는 것"이라고 합니다. 에퀴녹스는 웹스피어 애플리케이션 서버의 프로 파일로서 서버가 애플리케이션이 필요로 하는 기능만 프로비저닝할 수 있게 해주는 IBM 웹스피어 리버티(WebSphere Liberty)에 사용되었습니다. 밀린코비치는 에퀴녹스가 임베디드 시스템, 그리고 수많은 기기를 연결하고 제어하는 빠른 속도로 발전 중인 개념인 '사물 인터넷' 분야에서 유용해진 만큼
앞으로가 더욱 유망할 것으로 기대하고 있습니다.
임베디드 애플리케이션 개발 분야에서 인기 있는 CDT(C/C++ Development Tooling)는 C와 C++ 개발자를 위한 IDE와 툴셋 역할을 합니다. QNX와 같은 실시간 플랫폼이 CDT를 활용하고 있습니다. CDT는 프로젝트 생성과 관리 빌드, 비주얼 디버깅, 코드 편집 및 기타 개발 기능을 지원합니다. 이클립스에 따르면 구글이 이 프로젝트에서 중요한 역할을 했다고 전해집니다.
마지막으로, 2005년부터 시작된 마이린(Mylyn)은 이클립스에서 개발 작업을 체계화하기 위한 작업 중심 인터페이스를 제공하며, 정보 과부하 방지와 멀티태스킹 간소화를 목표로 합니다. 밀린코비치는
"마이린은 작업을 이클립스의 제1 요소로 만들고 버그질라(Bugzilla), 트랙(Trac), JIRA와 같은 리포지토리를 위한 리치/오프라인 편집을 통합한다”고 말했습니다. 마이린은 개발자가 현재 수중의 작업에 집중하도록 하고 IDE에 소셜 작업 관리 기능을 추가하고 코딩에 따라 자동으로 컨텍스트를 추적함으로써 요구 사항을 충족했습니다.
'사물인터넷' 카테고리의 다른 글
09 개방형 API - REST (2) | 2016.01.29 |
---|---|
09 개방형 플랫폼 - 모비우스 (2) | 2016.01.29 |
07 개방형 플랫폼 (1) | 2016.01.27 |
06 센서, 엑추레이터, 네트워크 (0) | 2016.01.26 |
05 스마트 카 (0) | 2016.01.26 |