JNI의 개념
▷JVM(Java Virtual Machine)
- Java 바이트 코드를 실행하기 위한 가상 머신
- 이론적으로는 플랫폼이나 OS 및 CPU 와 독립적으로 동작
- Interpreter 나 JIT Compile 방식의 실행
- Stack 기반의 구조
- C에서처럼 포인트 연산 불가
▷Java Program 실행 구조
- C,C++ 등 타 프로그램은 운영체제 상에서 실행
- Java 는 OS가 JVM 실행 후 JVM 상에서 실행
- 타 프로그램 보다 느림
▷JNI(Java Native Interface)
- Java 이외의 Native Code 로 만들어진 Module 및 Library 를 JVM 상의 Java Code에 상호작용 할 수 있도록 정의된 Interface
- JVM 이 OS 상의 여러 동작이 작동하기 위해 Local System을 호출 할 수 있도록 함
- JVM 내에 포함되어 있음
▷JNI 활용
- Java Program 에서 c 기반의 Library 를 사용하고 싶은 경우
- C Program 에서 Java Class Library를 사용하고 싶은 경우
- 빠른 처리 속도를 위한 프로그램
- 하드웨어 제어
- 기존 C/C++ 프로그램 재사용
▷Cygwin 이란?
- MS window 에서 리눅스와 유사하게 동작하도록 한 에뮬레이터
- 유닉스에서 사용되는 셀,명령어를 윈도우에서 소스 코드로부터 컴파일 할 수 있도록 환경 제공
- 이걸로 컴파일 된 exe 파일은 cygwin.dll 파일로 실행가능
▷Cygwin 필요한 이유
- 안드로이드는 Linux kernel 기반
- 안드로이드에서 사용되는 java 는 기존 Native Code 에 비해 성능이 떨어져 C/C++ 로 개발할 수 있게 해주는 Native Development Kit 제공
- 윈도우에서 NDK 프로그래밍 하기 위해 필요(허나 android NDK r5 부터 자체적으로 설치함)
SQLite
▷데이터 베이스(DB:Database)
- 여러 데이터를 구조화하여 저장하여 검색 및 공유가 용이하도록 함
▷데이터 베이스 관리 시스템(DBMS : Database Management System)
- 사용자의 요구에 따라 정보 생성, DB 관리해주는 SW
- 기존 파일 시스템에서 데이터의 종속성 및 중복성 문제 해결
▷SQL(Structured Query Language)
- DB를 이용 하기 위한 DBMS 와의 통신 수단 언어
- 데이터 정의어(DDL : Data Definition Language) 및 데이터 조작어(DML : Data Manipulation Language) 포함
- DB 에 대한 질의 기능
▷SQL 특징
- DBMS 일종
- 용량 적지만 안정적
- 응용 프로그램 내부적으로 주로 사용
- C언어로 작성 되어서 처리 속도 빠름
▷SQLiteOpenHelper
- DB 관리를 유용하게 하기 위해 안드로이드에서 제공하는 클래스
- DB 객체를 생성 및 여는 역할 (DB 객체 생성하는 방법은 본 클래스가 알아서 판단 신경 안 쓰지 않아도 됨)
▷SQLiteOpenHelper 관련 Methods
- onCreate()
- onUpgrade()
- getReadableDatabase()
- getWritableDatabase()
- close()
▷Cursor
- DB의 검색 결과에서 접근할 위치를 가리키기 위한 클래스
- 검색 결과가 매우 많을 경우, Cursor 를 통해 임의의 행을 접근하여 데이터를 읽을 수 있음
▷SimpleCursorAdapter
-Cursor 를 Adapter 에 연동하여 List View로 출력하기 위한 클래스
'공부 > 소프트웨어설계실험' 카테고리의 다른 글
JSON & XML & AJAX (0) | 2020.06.25 |
---|---|
Hybrid App (0) | 2020.06.23 |
Intent&Service (0) | 2020.06.22 |
Android 개요 및 Android View&Layout&Activity 정리 (0) | 2020.06.22 |