首先介绍一下自己,计算机水本,考研与我无缘。之前在帝都某公司算法部实习,公司算大公司吧,然而个人爱好偏开发,大二的时候写个一个app,主要是用各种框架。
JNI 简介JNI (Java Native Interface英文缩写),译为Java本地接口。是Java众多开发技术中的一门技术,意在利用本地代码,为Java程序提供更高效、更灵活的拓展。尽管Java一贯以其良好的跨平台性而著称,但真正的跨平台非C/C++莫属,因为当前世上90%的系统都是基于C/C++编写的。同时,Java的跨平台是以牺牲效率换来对多种平台的兼容性,因而JNI就是这种跨平台的主流实现方式之一。
总之,JNI是一门技术,是Java 与C/C++ 沟通的一门技术。首先,来回顾下AndroID的系统架构图。
我们来简单介绍下每一层的作用。
linux层linux 内核由于AndroID 系统是基础linux 内核构建的,所以linux是AndroID系统的基础。事实上,AndroID 的硬件驱动、进程管理、内存管理、网络管理都是在这一层。
硬件抽象层硬件抽象层(HarDWare Abstraction Layer缩写),硬件抽象层主要为上层提供标准显示界面,并向更高级别的 Java API 框架提供显示设备硬件功能。HAL 包含多个库模块,其中每个模块都为特定类型的硬件组件实现一个界面,例如相机或蓝牙模块。当框架 API 要求访问设备硬件时,AndroID 系统将为该硬件组件加载对应的库模块。
系统运行库和运行环境层AndroID RuntimeAndroID 5.0(API 21)之前,使用的是Dalvik虚拟机,之后被ART所取代。ART是AndroID *** 作系统的运行环境,通过运行虚拟机来执行dex文件。其中,dex文件是专为安卓设计的的字节码格式,AndroID打包和运行的就是dex文件,而AndroID toolchain(一种编译工具)可以将Java代码编译为dex字节码格式,转化过程如下图。
如上所示,Jack就是一种编译工具链,可以将Java 源代码编译为 DEX 字节码,使其可在 AndroID 平台上运行。
原生C/C++ 库很多核心 AndroID 系统组件和服务都是使用C 和 C++ 编写的,为了方便开发者调用这些原生库功能,AndroID的Framework提供了调用相应的API。例如,您可以通过 AndroID 框架的 Java OpenGL API 访问 OpenGL ES,以支持在应用中绘制和 *** 作 2D 和 3D 图形。
应用程序框架层AndroID平台最常用的组件和服务都在这一层,是每个AndroID开发者必须熟悉和掌握的一层,是应用开发的基础。
Application层AndroID系统App,如电子邮件、短信、日历、互联网浏览和联系人等系统应用。我们可以像调用Java API Framework层一样直接调用系统的App。
更多学习和讨论,欢迎加入我们的知识星球!
点击这里加入我们吧!
群内有许多来自一线的技术大牛,也有在小厂或外包公司奋斗的码农,我们致力打造一个平等,高质量的AndroID交流圈子,不一定能短期就让每个人的技术突飞猛进,但从长远来说,眼光,格局,长远发展的方向才是最重要的。
圈子,不一定能短期就让每个人的技术突飞猛进,但从长远来说,眼光,格局,长远发展的方向才是最重要的。
这里有2000+小伙伴,让你的学习不寂寞~·
总结以上是内存溢出为你收集整理的查漏补缺!抖音四面被拒,再战头条终获offer,经典好文全部内容,希望文章能够帮你解决查漏补缺!抖音四面被拒,再战头条终获offer,经典好文所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)