对于java程序员来说,java语言的好处和优点,我想不用我说了,大家自然会说出很多一套套的。但虽然我们作为java程序员,但我们不得不承认java语言也有一些它本身的缺点。比如在性能、和底层打交道方面都有它的缺点。所以java就提供了一些本地接口,他主要的作用就是提供一个标准的方式让java程序通过虚拟机与原生代码进行交互,这也就是我们平常常说的java本地接口(JNI——java native Interface)。它使得在 Java 虚拟机(VM) 内部运行的Java 代码能够与用其它编程语言(如 C、C++ 和汇编语言)编写的应用程序和库进行互操作。JNI 最重要的好处是它没有对底层 Java 虚拟机的实现施加任何限制。因此,Java虚拟机厂商可以在不影响虚拟机其它部分的情况下添加对JNI 的支持。程序员只需编写一种版本的本地应用程序或库,就能够与所有支持JNI 的Java 虚拟机协同工作。我们来看一下为什么要与原生代码进行交互:

一:提高应用程序性能。我们知道java对于c/c++、汇编语言来说,显得比较“高级”。其实这里的高级就是简化了程序员的工作。很多底层的东西都让java虚拟机做了。但毕竟相对于直接访问底层来讲,java多了一步虚拟机的过程,所以在性能上比着这些原生语

Java基础学习总结(79)——Java本地接口JNI详解相关推荐

  1. java基础学习总结一(java语言发展历史、jdk的下载安装以及配置环境变量)

    最近一段时间计划复习一下java基础知识,使用的视频课程是尚学堂高淇老师的,上课过程中的心得体会 直接总结一下,方便以后复习. 一:计算机语言的发展 1:机器语言,最原始的语言,主要有"01 ...

  2. 【Java 基础】JDK API Documentation 教程使用详解

    文章目录 一.JDK API是什么 二.获取文档 三.文档查看教程 1.大纲 2.目录结构查看 3.包查看 4.类查看 5.详细使用信息 相关 一.JDK API是什么   API(Applicati ...

  3. Java基础学习笔记三 Java基础语法

    Scanner类 Scanner类属于引用数据类型,先了解下引用数据类型. 引用数据类型的使用 与定义基本数据类型变量不同,引用数据类型的变量定义及赋值有一个相对固定的步骤或格式. 数据类型 变量名 ...

  4. Java基础学习总结(50)——Java事务处理总结

    一.什么是Java事务 通常的观念认为,事务仅与数据库相关. 事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性(isol ...

  5. java中哪些可以私有化_《Java基础学习笔记》JAVA修饰符之私有化(Private)

    1,什么是private修饰符? private是权限修饰符,用于修饰类中的成员(成员变量,成员函数). private修饰后的成员只在本类中有效. /* 例: * 将age私有化以后,类以外即使建立 ...

  6. 《Java基础学习笔记》JAVA面向对象之封装

    1,封装,是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. 2,好外:        a)将变化隔离.        b)便于使用.        c)提高重用性.        d)提高安全性 ...

  7. Java 基础【08】.class getClass () forName() 详解

    类名.class是Class对象的句柄,每个被加载的类,在jvm中都会有一个Class对象与之相对应. 如果要创建新的对象,直接使用Class对象的局部class.forName就可以了,不需要用ne ...

  8. Java基础篇:四种代码块详解

    所谓代码块,就是用大括号{}将多行代码封装在一起,形成一个独立的数据体,用于实现特定的算法.一般来说,代码块是不能单独运行的,它必须有运行主体.在Java中代码块主要分为四种:普通代码块.静态代码块. ...

  9. Java Web学习(三)数据加密方式详解

    本文借鉴:chengbinbbs,FKNIGHT0X,Central-Perk(特此感谢!) 对称加密 定义:加密和解密使用相同密钥的算法. 常见的有DES.3DES.AES.PBE等加密算法,这几种 ...

最新文章

  1. Delphi 调用VC的DLL
  2. Tensorflow基础-mnist数据集
  3. C-#数据库方面好书
  4. 结合大学四年经验,带你揭秘高效自学Java的方法和路线(从认识、方法、反馈3个角度出发)
  5. Python基础day06【匿名函数lambda、列表生成式、集合set、文件读写】
  6. Unity3D的Time.timeScale
  7. jersey客户端_每个客户使用Jersey处理的Cookie
  8. 数据结构之图的应用:最短路径(Dijkstra、Floyd)
  9. 高等组合学笔记(九): 球盒模型的十二模式,分拆的生成函数
  10. json.loads解码字符串时出错:JSONDecodeError: Invalid \escape: line 1 column 2687 (char 2686)
  11. Scanner、String(java基础知识十二)
  12. Paip. DDBS 分布式 数据库系统 attilax总结C0G
  13. 测试技术-兼容性测试
  14. 加号和减号在一起怎么读_加号和减号
  15. Leetcode总结之Union Find
  16. linux引导过程与服务控制
  17. 基于全球价值链的电子商务整合创新问题研究[ 转]
  18. 解决Rancher2.5x版本突然无法使用(K3S证书过期大BUG)
  19. 三级分销如何合规分账?
  20. 【Unity Shaders】最简单的顶点/片元着色器3

热门文章

  1. 窃取发送到服务器的任何信息,担心信息泄密?MIUI 11测试“空信息授权”,保护你的隐私...
  2. 手机服务器共享信息,手机云共享服务器
  3. c#和python同一主机直接udp_Python 第十一章:面向对象编程(上)!(系列发布)...
  4. 怎样查一个文件被复制了几次_复制拷贝文件不怕再出错,一个超级好用的小工具,支持多线程工作...
  5. databus mysql搭建_databus bootstrap 部署
  6. osip和mysql_osip2和eXosip2协议
  7. php 添加失败是什么原因,安装zblog提示“创建c_option.php失败”的原因和解决办法...
  8. linux是不是显示不了中文版,Linux为什么OpenOffice下不能显示中文
  9. Win10配置MinGW教程
  10. html 图片移动动画,HTML5移动端图片左右切换动画DEMO演示