美文网首页
★01.介绍

★01.介绍

作者: iDragonfly | 来源:发表于2017-07-03 19:41 被阅读0次

Java平台与宿主环境

  • Java平台 是一个编程环境,包括一个 Java虚拟机 和一套 Java API
  • Java虚拟机 可以使得 Java应用程序 不用考虑与 宿主环境(操作系统) 的兼容性问题,保证了 Java应用程序宿主环境(操作系统) 的隔离。
  • Java应用程序 使用 Java 编写,被编译为可以在 Java虚拟机 上运行的二进制格式,所以只要 宿主环境(操作系统) 能运行 Java虚拟机
  • 原生应用使用 C/C++ 这样的原生编程语言编写,编译成为 宿主环境(操作系统) 相关的字节码。

JNI的角色

  • JNI 是一种双向接口,既允许 Java应用程序 调用原生代码,同时也允许原生代码调用 Java 代码。
    JNI的角色

使用JNI的潜在风险

  • 使用了 JNIJava应用程序 便丢失了 可移植性
  • Java 是类型安全的,但是 C/C++ 则不是,一个原生方法的运行时错误,可能让整个程挂掉。

使用JNI的场景

  • 若不选择 JNI ,可以使用以下几种方式来允许 Java应用程序 与其他语言完成的应用程序进行通信:
    1. 可以通过TCP/IP连接或者通过其他IPC通信机制与原生应用进行通信。
    2. 可以通过JDBC连接到一个传统的数据库上。
    3. 可以使用Java IDL API等分布式对象策略的优势。
  • 上述几种方式主要利用了 进程隔离 甚至是 设备隔离 来避免了原生程序的错误传递到 Java应用程序
  • 对于以下几种场景, Java应用程序 和原生代码存在于相同进程空间是有必要的,这也是 JNI 的价值所在:
    1. 一个应用程序想使用一些 Java API 不支持文件操作,而通过另一个进程操作文件又是繁杂且低效的。
    2. 一个自身跨进程实现的应用可能导致不可接受的内存占用,尤其是当这些进程需要运行在同一台宿主机器上时候。
    3. 一个3D应用程序大多数时间都消耗在图形渲染上,你会想要将这部分渲染代码使用汇编语言实现来达到最好的性能。

相关文章

  • ★01.介绍

    Java平台与宿主环境 Java平台 是一个编程环境,包括一个 Java虚拟机 和一套 Java API 。 Ja...

  • 01. 介绍

    Node.js 介绍 1.1 为什么要学习 Node.js 企业需求具有服务端开发经验更好front-endbac...

  • 01. maven的介绍

    1. 项目中遇到的问题 1、都是同样的代码,为什么在我的机器上可以编译执行,而在他的机器上就不行?2、为什么在我的...

  • 01. css的简单介绍

    本课程为【狂神说Java】CSS3最新教程快速入门通俗易懂

  • Activity系列博客5篇

    目录介绍 01.前沿介绍 02.handleLaunchActivity 03.performLaunchActi...

  • 01. SkyWalking--介绍与安装

    01. SkyWalking 介绍与安装 1. 介绍 1. 基本信息 SkyWalking 创建于2015年,提供...

  • 01. Kafka背景及架构介绍

    Kafka是由LinkedIn开发并开源的分布式消息系统,因其分布式及高吞吐率而被广泛使用,现已与Cloudera...

  • Java Streams笔记-01.流介绍

    1. 什么是流? 流是任意长度的字节序列。字节流从应用程序经过输出流到目的地,从数据源经过输入流进入应用程序。Ja...

  • 01.视频播放器框架介绍

    视频播放器介绍文档 目录介绍 01.该视频播放器介绍 02.视频播放器功能 03.视频播放器架构说明 04.视频播...

  • 01. struts2介绍

    struts2优点 与Servlet API 耦合性低。无侵入式设计 提供了拦截器,利用拦截器可以进行AOP编程,...

网友评论

      本文标题:★01.介绍

      本文链接:https://www.haomeiwen.com/subject/nruzcxtx.html