2014 학년도 3-1 정보컴퓨터공학부 컴퓨터 소프트웨어 설계 및 실험. JNI 환경 구축 JNI 의 개념 JNI 사용.

Slides:



Advertisements
Similar presentations
ⓒ 2015 NHN Entertainment Corp. Django 로 만드는 초간단 블로그 시스템운영팀 김영태 개발환경 구축.
Advertisements

프로그래밍언어론 TA 윤들녁. 소개 윤들녁 연락처 : 공대 7 호관 4 층 401 호 데이터베이스 연구실 실습 후 날짜 _ 학번.zip 으로.
1 강. 안드로이드 개요 및 개발 환경 구축 - 안드로이드 개요 -JDK 설치 -Path 설정 - 이클립스 설치 -ADT, SDK 설치 Lecturer Kim Myoung-Ho Nickname 블스
Android 프로그램개발 환경. 학습 목표 ■ 교육 목표  JDK 설치  JDK 환경 설정  Eclipse 설치  Android SDK 설치  ADT Plug-in 설치  Android Virtual Device(AVD) 설치  Android 예제 프로그램.
2013학년도 3-1 정보컴퓨터공학부 컴퓨터 소프트웨어 설계 및 실험
컴퓨터와 인터넷.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
기초C언어 제1주 실습 강의 소개, C언어 개요, Cygwin/Eclipse 사용 컴퓨터시뮬레이션학과 2016년 봄학기
OpenCV 안드로이드 연동 환경설정 OpenCV-Android 를 다운 받습니다.
2. 앱 개발환경 구축 Step by Step 안드로이드 프로그래밍 쉽게 시작하는 안드로이드 4.4 앱 개발.
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
新 연구관리 프로그램 SAP 설치 안내 1. SAP GUI 7.3 설치 2전자증빙 솔루션 설치 배포 :
<<< 시스템등록정보 “하드웨어-장치관리자” 설정 >>>
Image & Video processing
코크파트너 설치 가이드 Window 7.
Power Java 제3장 이클립스 사용하기.
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 프로그래밍 언어 1-1 C 언어의 개론적 이야기 한글, 엑셀, 게임 등의 프로그램을 만들 때 사용하는 언어 ‘컴퓨터 프로그래머’라는 사람들이 제작 C 언어(C++ 포함)를 가장 많이 사용함.
Linux/UNIX Programming
J2ME Install 부산대학교 인공지능 연구실.
ANSYS17.2 Student 제품 무료 다운로드
나민영 서경대학교 컴퓨터공학과 CGVR Lab 같이만들어보자 5주차 OpenCV 설정 및 기초.
Windows 8 Ksystem G&I 설치.
Ubiquitous Computing Practice - Part I (Installation) -
임베디드 시스템 개론 크로스 플랫폼 설치 2일차 강의 자료 Embedded System Lab.
Java 기초 (Java JDK 설치 및 환경설정)
한국골프대학 종합정보시스템 Windows Vista 사용자를 위한 Component 설치안내서
한국골프대학 종합정보시스템 Windows 7 사용자를 위한 Component 설치안내서
NCS 학사운영 시스템 Guide.
4-1장. MySQL 제13장.
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
Visual Basic .NET 처음 사용하기.
제 2 장 WML 시뮬레이터 및 무선인터넷 서버 설치
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
소프트웨어 분석과 설계 Struts2 & JBOSS 설치하기
Cross Compiler 설치.
SSL-VPN 설치 및 접속 설명서.
ASP.NET AJAX 비동기 게시판 작성 2007 컴퓨터공학실험( I )
10장. 예외처리.
2장 JSP 개발 환경 설정 이장에서 배울 내용 : JSP 페이지를 작성하기 위한 개발환경을 설정하고, 웹 어플리케이션 개발을 위해 반드시 이해하여야 할 웹 어플리케이션 폴더 구조에 대해 학습한다. 또한 요청된 JSP 페이지가 어떠한 처리과정을 거쳐 응답이 이루어지는가에.
환경 : Windows7 64bit 버전 : apache-ant-1.9.7
Android studio로 Application 만들기.
정보컴퓨터공학부 컴퓨터 소프트웨어 설계 및 실험
Cross Compiler를이용한 커널 컴파일 및 포팅
Method & library.
이름 : 황 상 두 전화번호 : 이메일 : PinTool 이름 : 황 상 두 전화번호 : 이메일 :
IPython Notebook + Spark + TensorFlow on MacOS
제목소개 1. 안드로이드소개 2. 패킷캡쳐를 위한 환경 소개 3. ndk 소개 4. lipcap 5. 6.도식화 그림
Lesson 2. 기본 데이터형.
툴 설치 가이드 Formality SynopsysMentor.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
ASP.NET AJAX / AJAX Control Toolkit 응용 2008 컴퓨터공학실험( I )
자바 5.0 프로그래밍.
1. 스크립트 작성 마법사 2. NSIS 스크립트 컴파일
빌드 성공.
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
01. 개요 네트워크에 있는 컴퓨터와 그룹에 대한 NetBIOS 이름에 대응되는 IP 주소를 찾아주는 서비스
OpenCV 설정 2.21 만든이 딩딩.
DK-128 개발환경 설정 아이티즌 기술연구소
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
기초C언어 제2주 실습 프로그래밍의 개념, 프로그램 작성 과정 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
1. 인터넷 보안 옵션 레지스트리 등록 Config Setup 클릭.
발표자 : 이지연 Programming Systems Lab.
9 브라우저 객체 모델.
무선랜 사용자 설명서 (Windows Vista 사용자).
IPC 펌웨어 업그레이드 방법 안내 ** 반드시 IPC를 NVR POE 포트 연결 전에 작업 하시기 바랍니다. IPC를 NVR POE 포트에 연결 하실 경우 IP 대역폭을 마추셔야 하는 작업이 필요합니다. **
Installation Guide.
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
학부 컴퓨터공학부 교육과정 (학부) 2학년 4학년 3학년 1학년 1학기 2학기 IPP 자격과정 전공트랙
7 생성자 함수.
JAVA 프로그래밍 16장 JNLP.
Presentation transcript:

2014 학년도 3-1 정보컴퓨터공학부 컴퓨터 소프트웨어 설계 및 실험

JNI 환경 구축 JNI 의 개념 JNI 사용

Cygwin 이란 ?  Windows 에 Linux 와 유사한 환경을 제공.  두 개의 파트로 구성. 1. 실제 Linux API 기능 제공, Linux API emulation layer 로서의 역할을 하는 DLL(cygwin1.dll) 2.Linux Look & Feel 을 제공하는 툴. Cygwin 이 필요한 이유  안드로이드는 Linux 2.6 커널 기반.  공유 라이브러리 파일로.so 파일을 사용함 ( 윈도우는.dll)

강의자료 페이지에서 cygwin_setup-x86.exe 를 실행 에서 setup.exe 를 실행.

실행 후 아래 화면이 뜨면 [ 다음 (N)] 버튼을 누름. Install from Internet 버튼을 선택하시고 다음 버튼을 누름.

Root Directory 는 D:\Cygwin 으로 지정. Local Package Directory 는 D:\cygwin_package 로 지정.

Devel : 옆에 Default 를 눌러 Install 로 바꿈 Shell 항목의 mintty 줄 의 skip 을 클릭.(skip 대 신 숫자가 뜬다 )

아래 화면에서 다음 버튼을 누름. 설치 시작하고 오류 메시지 같은 게 뜨면 그냥 OK 클릭하면 됨

인스톨 완료 후 체크박스 선택 후 마침. 시작 -> 프로그램 ->cygwin->Cygwin Terminal 이 있는 걸 확인할 수 있음

JNI 를 사용하기 위해서는 NDK 를 설치. Android NDK 의 이용.  안드로이드에서 C/C++ 로 된 Native 코드를 컴파일해서 수행할 때  JNI 를 이용하여 Java class 에서 사용하고자 할 때

에서 자신의 컴퓨 터의 window bit 에 맞는 파일을 다운로드

다운로드 한 압축파일을 D:\cygwin\home\ 사용자이름 \ 안에 압축 해제.

바탕화면  내 컴퓨터  시스템 속성  고급  환경 변수 선택 사용자 변수에 ‘Path’ 가 있다면  Path 변수 선택 후 편집 (E) 버튼 클릭 없다면  새로 만들기 (N) 클릭

편집 시  변수 값의 끝에 ; 가 없다면 ; 을 입력하고 ndk 경로를 입력 후 확인. 새로 등록 시  변수 이름에 Path 를 입력하고 변수 값에 ndk 경로 입력 후 확인.

android-ndk-r9d\samples\hello-jni\jni 이동

cmd 창에 ndk-build 명령어 입력.

Hello-jni 폴더에 libs 와 obj 폴더 생성 확인.

자바가상 머신 (Java Virtual Machine)  자바 바이트코드를 실행할 수 있음.  일반적으로 인터프리터 방식으로 실행. 자바가상 머신의 특징  스택 기반.  C 와 같이 주소 값을 임의로 조작하는 포인터 연산 불가능.

Java Native Interface  자바 이외의 언어 ( 네이티브 언어 ) 로 만들어진 모듈이나 애플리케이션과 자바 클래스가 서로 상호작용 할 수 있게 정의한 인터페이스.  자바가상 머신 (JVM) 이 원시 메소드를 적재하고 수행할 수 있도록 함.  JNI 가 자바가상머신내에 포함.  자바가상 머신이 호스트 운영체제상의 입출력, 그래픽스, 네트워킹, 스 레드 같은 기능들을 작동하기 위한 로컬 시스템 호출을 수행할 수 있도록 함.

 안드로이드 프레임워크는 C/C++ 기반 모듈이 계층별로 구성.  C/C++ Layer 와 JAVA Layer 가 서 로 상호작용하면서 동작.  C/C++ 과 자바 레이어가 유기적으 로 동작하기 위해 상위 계층과 하위 계층을 연결해주는 매개체가 필요.  그 매개체가 JNI !!!!

자바 클래스에서 C 언어로 작성 된 라이브러리에 포함된 특정 함수 를 사용하고 싶은 경우. C 프로그램에서 자바 클래스 라이브러리를 사용하고 싶은 경우. C 측자바 측 JNI Functions Libraries Classes VM Exception

빠른 처리 속도를 요구하는 루틴 작성  보통 자바가 Native Code 에 비해서 느림. 따라서 빠른 처리 속도를 필요로 하는 부분 은 C/C++ 로 작성하고 이를 JNI 를 통해 자바에서 호출하는 방식으로 속도 향상을 시킬 수 있음. 하드웨어 제어  하드웨어 제어 코드를 C 로 작성한 다음 JNI 를 통해 자바 레이어와 연결. 기존 C/C++ 프로그램의 재사용  기존의 C/C++ 코드를 작성했다면 굳이 자바로 동일한 코드를 작성 할 필요 없이 JNI 를 통해 기존 코드를 활용할 수 있음.

1. C 파일과 mk 파일 생성 2. C 코드 작성 3. Mk 코드 작성 4. 자바 코드 작성 5. so 파일 생성 6. 프로그램 실행

JavaJNI(C) JNI(C, 배열 ) booleanjbooleanjbooleanArray bytejbytejbyteArray charjcharjcharArray shortjshortjshortArray intjintjintArray longjlongjlongArray floatjfloatjfloatArray doublejdoublejdoubleArray objectjobjectjObjectArray

Hello-jni.c 1.jstring 은 return 타입이고 2. 그 다음은 Java_ 패키지명 1_ 패키지명 2_ 패키지명 3_class 명 _ 메 소드명 () 3.class 명에 '_' 기호가 들어갈 경우 에러가 난다

Android.mk 1.LOCAL_MODULE : 생성 할 library 이름 2.LOCAL_SRC_FILES : 자신이 만든 c 파일 이름

MainActivity.java 1.System.loadLibrary 에 이전에 만들었던 MODULE 명 hello-jni 를 넣어준다. 2.public native String stringFromJNI() 라는 메소드가 jni 와 연결된다. 3.hello-jni 로부터 String 을 return 받아 tv 라는 TextView 로 값이 전 달된다.

cmd 창을 실행하여 현재 작성한 프로젝트 파일의 경로로 이동한다 ndk-build 라는 명령어를 입력하면 현재 프로젝트의 libs->armeabi 라는 폴더가 생 기며 폴더 안에 파일이 생성되어 있을 것이다.