본문 바로가기
공부/소프트웨어설계실험

JNI & SQLite

by 맑은청이 2020. 6. 23.
728x90
반응형

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 내에 포함되어 있음

Android 에서의 JNI

JNI 활용

  - Java Program 에서 c 기반의 Library 를 사용하고 싶은 경우

  - C Program 에서 Java Class Library를 사용하고 싶은 경우

  - 빠른 처리 속도를 위한 프로그램

  - 하드웨어 제어 

  - 기존 C/C++ 프로그램 재사용

 

JNI 타입

Cygwin 이란?

 - MS window 에서 리눅스와 유사하게 동작하도록 한 에뮬레이터

 - 유닉스에서 사용되는 셀,명령어를 윈도우에서 소스 코드로부터 컴파일 할 수 있도록 환경 제공

 - 이걸로 컴파일 된 exe 파일은 cygwin.dll 파일로 실행가능

 

 

Cygwin 필요한 이유

 - 안드로이드는 Linux kernel 기반

 - 안드로이드에서 사용되는 java 는 기존 Native Code 에 비해 성능이 떨어져 C/C++ 로 개발할 수 있게 해주는 Native Development Kit 제공

 

 - 윈도우에서 NDK 프로그래밍 하기 위해 필요(허나 android NDK r5 부터 자체적으로 설치함)

 

 

JNIClass.java 만들기

 

 

 

 


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로 출력하기 위한 클래스 

728x90
반응형

'공부 > 소프트웨어설계실험' 카테고리의 다른 글

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