一种前端JavaScript和本地Java应用的交互方法和装置转让专利

申请号 : CN202111000015.4

文献号 : CN113448691B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杜春鹰王平健冯文霞刘润田田苗苗王雷曹雪龙徐爱臣张璐宇单峰郭洪涛申智锐

申请人 : 天津市天房科技发展股份有限公司

摘要 :

本发明提供了一种前端JavaScript和本地Java应用的交互方法和装置,包括以下步骤:S1、自定义浏览器框架启动时进行基于Java的SPI服务注册,包括基于JSON规范的前后端交互专有协议的用于接收前端JavaScript请求的接口服务、消息封装服务和消息解析服务。本发明有益效果:一种前端JavaScript和本地Java应用的交互方法和装置有效的解决了前端JavaScript和本地Java应用交互时需要中间件的问题,当单机部署时可以极大减少系统建设成本,同时本发明提供的开发装置,降低了开发难度,提高了开发效率。

权利要求 :

1.一种前端JavaScript和本地Java应用的交互方法,其特征在于,包括以下步骤:S1、自定义浏览器框架启动时进行基于Java的SPI服务注册,包括基于JSON规范的前后端交互专有协议的用于接收前端JavaScript请求的接口服务、消息封装服务和消息解析服务;在步骤S1中进行基于Java的SPI服务注册时,包括在自定义浏览器框架内部注册本地Java应用操作,自定义浏览器框架利用Java的SPI服务发现机制进行Java应用的服务发现和管理,将本地Java应用注册到自定义浏览器框架中;

S2、前端JavaScript将用于发起请求的命令和参数按照基于JSON规范的前后端交互专有协议封装成消息体,并通过调用接口服务将封装好的消息体发送到后端;

S3、后端接收到前端JavaScript发送过来的基于JSON规范的前后端交互专有协议封装的消息体后对消息体进行解析;

S4、经过对基于JSON规范的前后端交互专有协议封装的消息体解析后,根据消息体中不同的业务关键字执行对应的业务功能;

S5、将业务功能执行后返回的结果数据通过基于JSON规范的前后端交互专有协议封装成消息体后返回给前端;

S6、前端接收到后端返回的基于JSON规范的前后端交互专有协议封装的消息体后进行解析,并把解析后的数据展示在前端页面中。

2.一种前端JavaScript和本地Java应用的交互装置,用于执行如权利要求1所述的一种前端JavaScript和本地Java应用的交互方法,其特征在于,包括自定义浏览器框架:自定义浏览器框架作为基础框架,提供本地Java应用的服务发现和管理,提供对V8引擎的集成,并统一管理以下模块:本地Java应用注册管理模块、JavaScript协议封装模块、JavaScript协议解析模块、本地Java应用模块、Java协议解析模块;

前端请求发送到后端,经Java协议解析模块,对请求消息进行解析,将符合规范要求的命令通过本地Java应用模块转发到后端对应的功能模块,执行完相应的功能后,将消息封装后返回到前端。

3.根据权利要求2所述的一种前端JavaScript和本地Java应用的交互装置,其特征在于:自定义浏览器框架通过V8引擎将JavaScript进行解析并将相关数据进行结构化处理,Java根据参数中不同的关键字,执行不同的业务函数并将结果展示到前端界面。

4.根据权利要求2所述的一种前端JavaScript和本地Java应用的交互装置,其特征在于:本地Java应用注册管理模块用于通过SPI服务发现和管理机制,提供本地应用的注册、管理功能,将本地应用注册到自定义浏览器框架,实现与自定义浏览器的调用。

说明书 :

一种前端JavaScript和本地Java应用的交互方法和装置

技术领域

[0001] 本发明属于软件开发技术领域,尤其是涉及一种前端JavaScript和本地Java应用的交互方法和装置。

背景技术

[0002] 当前的B/S交互技术,前端JavaScript如果与本地Java应用进行数据交互,必须通过中间件才能实现,这样带来的问题是当系统无法直接进行网络部署的时候,每个客户机
都需要配套的中间件,不仅经济成本高,而且开发复杂度也相应提高,浪费了大量人力物
力。

发明内容

[0003] 有鉴于此,本发明旨在提出一种前端JavaScript和本地Java应用的交互方法和装置,实现了自定义浏览器框架与本地Java应用之间的直接通讯,在无网络环境和一些必须
使用单机的特殊工作环境,无法进行网络部署时,实现了与网络环境相同的WEB浏览器界面
展示和交互能力,同时避免了部署网络应用所需的中间件,从而降低了开发难度,节省了开
发成本。
[0004] 为达到上述目的,本发明的技术方案是这样实现的:
[0005] 第一方面本方案公开了一种前端JavaScript和本地Java应用的交互方法,包括以下步骤:
[0006] S1、自定义浏览器框架启动时进行基于Java的SPI服务注册,包括基于JSON规范的前后端交互专有协议的用于接收前端JavaScript请求的接口服务、消息封装服务和消息解
析服务;
[0007] S2、前端JavaScript将用于发起请求的命令和参数按照基于JSON规范的前后端交互专有协议封装成消息体,并通过调用接口服务将封装好的消息体发送到后端;
[0008] S3、后端接收到前端JavaScript发送过来的基于JSON规范的前后端交互专有协议封装的消息体后对消息体进行解析;
[0009] S4、经过对基于JSON规范的前后端交互专有协议封装的消息体解析后,根据消息体中不同的业务关键字执行对应的业务功能;
[0010] S5、将业务功能执行后返回的结果数据通过基于JSON规范的前后端交互专有协议封装成消息体后返回给前端;
[0011] S6、前端接收到后端返回的基于JSON规范的前后端交互专有协议封装的消息体后进行解析,并把解析后的数据展示在前端页面中。
[0012] 进一步的,在步骤S1中,包括在自定义浏览器框架内部注册本地Java应用操作,自定义浏览器框架利用Java的SPI服务发现机制进行Java应用的服务发现和管理,将本地
Java应用注册到自定义浏览器框架,实现自定义浏览器框架对本地应用的功能调用,同时
通过基于JSON规范的前后端交互专有协议传递参数。
[0013] 进一步的,在步骤S2中,包括前端JavaScript与本地Java应用交互操作,前端JavaScript通过自定义浏览器框架接口调用本地Java应用,通过基于JSON规范的前后端交
互专有协议传递参数。
[0014] 进一步的,Java模块实现与框架内的JavaScript代码进行交互,该Java模块运行在Java虚拟机之上,JDK1.8提供的函数和接口可使用,在此基础上Java模块通过SPI这种特
殊的服务发现机制,在业务层使用该Java模块时,只需引用相应的jar包即可完成对底层核
心库的调用,并实现接口即可。
[0015] 第二方面本方案公开了一种前端JavaScript和本地Java应用的交互装置,用于执行一种前端JavaScript和本地Java应用的交互方法,包括自定义浏览器框架:自定义浏览
器框架作为基础框架,提供本地Java应用的服务发现和管理,提供对V8引擎的集成,并统一
管理以下模块:本地Java应用注册管理模块、JavaScript协议封装模块、JavaScript协议解
析模块、本地Java应用模块、Java协议解析模块;
[0016] 前端请求发送到后端,经Java协议解析模块,对请求消息进行解析,将符合规范要求的命令通过本地Java应用模块转发到后端对应的功能模块,执行完相应的功能后,将消
息封装后返回到前端。
[0017] 进一步的,自定义浏览器框架通过V8引擎将JavaScript进行解析并将相关数据进行结构化处理,Java根据参数中不同的关键字,执行不同的业务函数并将结果展示到前端
界面。
[0018] 进一步的,本地Java应用注册管理模块用于通过SPI服务发现和管理机制,提供本地应用的注册、管理功能,将本地应用注册到自定义浏览器框架,实现与自定义浏览器的调
用。
[0019] 相对于现有技术,本发明所述的一种前端JavaScript和本地Java应用的交互方法和装置具有以下优势:
[0020] (1)本发明所述的一种前端JavaScript和本地Java应用的交互方法和装置有效的解决了前端 JavaScript和本地Java应用交互时需要中间件的问题,当单机部署时可以极
大减少系统建设成本,同时本发明提供的开发装置,降低了开发难度,提高了开发效率;
[0021] (2)本发明所述的一种前端JavaScript和本地Java应用的交互方法和装置通过JavaScript协议封装模块,使前端开发人员通过调用统一接口完成本地调用,降低前端开
发难度;
[0022] (3)本发明所述的一种前端JavaScript和本地Java应用的交互方法和装置通过本地Java应用的封装,使本地应用开发人员通过调用统一接口完成与浏览器的交互,降低本
地应用开发难度;
[0023] (4)本发明所述的一种前端JavaScript和本地Java应用的交互方法和装置,自定义了基于JSON规范的前后端交互专有协议,将交互通信的格式统一化,简化开发复杂度,降
低通信成本,提高通信效率和开发效率;
[0024] (5)本发明所述的一种前端JavaScript和本地Java应用的交互方法和装置包括一个IDEA平台,该平台上设置有团队协作工具模块,可视化的Java和JavaScript开发环境和
组件模块,支持了在wintel环境下编译程序并运行的能力,该框架可以让应用系统脱离对
中间件的依赖,可以让应用系统在完全脱离中间件的环境中运行,并且可以实现WEB胖客户
端所具备的界面展示能力和交互能力。

附图说明

[0025] 构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0026] 图1为本发明实施例所述的本方案执行步骤示意图;
[0027] 图2为本发明实施例所述的在自定义浏览器框架内部注册本地Java应用框架示意图;
[0028] 图3为本发明实施例所述的JavaScript与本地Java应用交互的框架示意图;
[0029] 图4为本发明实施例所述的JavaScript与本地Java应用交互的装置框架示意图;
[0030] 图5为本发明实施例所述的现有技术的整体框架示意图。

具体实施方式

[0031] 需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
[0032] 下面将参考附图并结合实施例来详细说明本发明。
[0033] 如图1所示,描述了本发明涉及的步骤,具体如下:
[0034] S1、自定义浏览器框架启动时进行基于Java的SP服务注册,包括基于JSON规范的前后端交互专有协议的接收前端 JavaScript.请求的接口服务、消息封装服务和消息解析
服务;
[0035] S2、前端JavaScript将用于请求的命令和参数按照基于JSON规范的前后端交互专有协议封装成消息体,并通过调用接囗服务将封装好的消息体发送到后端;
[0036] S3、后端接收到前端 JavaScript发送来的基于JSON规范的前后端交互专有协议封装的消息体后对消息体进行解析;
[0037] S4、经过对消息体解析后,根据消息体中不同的业务关键字执行对应的业务功能;
[0038] S5、将业务功能执行后返回的结果数据通过基于JSON规范的前后端交互专有协议封装成消息体后返回给前端;
[0039] S6、前端接收到后端返回的基于JSON规范的前后端交互专有协议封装的消息体后进行解析,并把解析完的数据展示在前端页面中。
[0040] 如图2所示,提供了SPI服务发现和管理机制;
[0041] 如图3所示,将前端JavaScript的请求按照基于JSON规范的前后端交互专有协议封装为交互消息体,并发送到后端;
[0042] 如图4所示,描述了本发明提供的一种前端JavaScript和本地Java应用交互装置的整体交互图;
[0043] 如图5所示按照当前通用的B/S交互技术,前端JavaScript通过http协议或者websocket协议,只有使用中间件,才能实现与Java应用的数据交互。此方法需要依赖于中
间件,这对系统建设来说成本比较高,当系统不具备网络部署条件时,每一个客户端都需要
安装中间件,成本就是一个天文数字。
[0044] 如图1至图4所示本发明有效的解决了前端JavaScript和Java的交互需要中间件的问题,当单机部署时可以极大减少系统建设成本,同时本发明提供的开发装置,降低了开
发难度,提高了开发效率。
[0045] 根据本发明的一个方面,提供了一种前端JavaScript和本地Java应用的交互方法,包括以下步骤:
[0046] S1、自定义浏览器框架启动时进行基于Java的SPI服务注册,包括基于JSON规范的前后端交互专有协议的用于接收前端JavaScript请求的接口服务、消息封装服务和消息解
析服务;
[0047] a)开发者对接口进行具体的代码实现;
[0048] b)框架会对接口的实现进行扫描;
[0049] c)扫描到开发的接口实现则直接进行处理;
[0050] d)未扫描到则不进行业务处理。
[0051] S2、前端JavaScript将用于发起请求的命令和参数按照基于JSON规范的前后端交互专有协议封装成消息体,并通过调用接口服务将封装好的消息体发送到后端;
[0052] 将前端JavaScript的函数调用,封装为基于JSON规范的前后端交互专有协议格式的标准通信格式,具体协议格式JSON结构体示例为:
[0053] {
[0054]   "javascriptExecuteJava": {
[0055]     "cmd": "bindSetDir",
[0056]     "params": {
[0057]       "param1": "data1",
[0058]       "param2": "data2",
[0059]       "param3": "data3"
[0060]     }
[0061]   }
[0062] }
[0063] 具体协议内容如下:
[0064] javascriptExecuteJava为协议头,通过该标识告知Java此时是由Javascript转递过来的指令,需要Java根据指令执行;
[0065] cmd为协议指令部分,该部分通过传递不同的指令给Java,Java根据指令不同进行相应操作;
[0066] params为数据部分,该部分传递的为实际需要的数据,该数据和cmd指令保持一致,不同的指令对应不同的数据;
[0067] S3、后端接收到前端JavaScript发送过来的基于JSON规范的前后端交互专有协议封装的消息体后对消息体进行解析;
[0068] 结构体示例为:{
[0069]   "javascriptExecuteJava": {
[0070]     "cmd": "parse",
[0071]     "params": {
[0072]       "param1": "data1",
[0073]       "param2": "data2",
[0074]       "param3": "data3"
[0075]     }
[0076]   }
[0077] }
[0078] 本部分的执行步骤如下:
[0079] a)Java接收到消息体后,首先分析数据头是否是javascriptExecuteJava,假如是,则解析下一步指令相关的数据;
[0080] S4、经过对基于JSON规范的前后端交互专有协议封装的消息体解析后,根据消息体中不同的业务关键字执行对应的业务功能。
[0081] Java根据cmd的指令判断要执行的动作,使用不同的数据进行具体的业务处理;
[0082] S5、将业务功能执行后返回的结果数据通过基于JSON规范的前后端交互专有协议封装成消息体后返回给前端。
[0083] 将返回的数据结果转化为消息体返回给前端,结构体示例为:
[0084] {
[0085]   "result": {
[0086]     "status": "1",
[0087]     "data": {
[0088]       "param1": "data1",
[0089]       "param2": "data2",
[0090]       "param3": "data3"
[0091]     },
[0092]     "message": "1"
[0093]   }
[0094] }
[0095] 具体协议内容如下:
[0096] 假如成功,则status标识成功状态1,data将会返回相关的数据;
[0097] 假如失败,则status标识成功状态0,data将会返回相关的错误信息。
[0098] S6、前端接收到后端返回的基于JSON规范的前后端交互专有协议封装的消息体后进行解析,并把解析后的数据展示在前端的页面中;
[0099] 结构体示例为:
[0100] {
[0101]   "result": {
[0102]     "status": "1",
[0103]     "data": {
[0104]       "param4": "data4",
[0105]       "param5": "data5",
[0106]       "param6": "data6"
[0107]     },
[0108]     "message": "1"
[0109]   }
[0110] }
[0111] 具体协议内容如下:
[0112] Java通过callback.success和callback.failure两个函数将处理之后的结果告知前端Javascript,这两个函数分别代表执行成功和执行失败;
[0113] 假如成功执行,则status标识成功状态1,data将会返回相关的数据,  前端JavaScript根据需要进行后续处理;
[0114] 假如失败,则status标识成功状态0,data将会返回相关的错误信息,告知前端JavaScript错误,并给出错误提示。
[0115] 另一方面,如图4所示,本发明提供一种前端JavaScript和本地Java应用的交互装置,包括:
[0116] 1)、本地Java应用注册管理模块:本地Java应用注册管理模块是整个应用开发的基础,提供本地Java应用的服务注册、发现和管理,提供对V8引擎的集成。
[0117] 进一步的,本地Java应用注册管理模块用于通过SPI服务发现和管理机制,提供本地应用的注册、管理功能,可以将本地应用注册并实现与浏览器的调用交互。
[0118] 需要说明的是浏览器主框架即为自定义浏览器框架,包括V8引擎和本地Java应用注册管理模块;
[0119] 2)、JavaScript协议封装模块:将前端JavaScript的请求按照基于JSON规范的前后端交互专有协议封装为交互消息体,并发送到后端;
[0120] 进一步的,JavaScript协议封装模块提供前端JavaScript调用本地应用的基于JSON规范的前后端交互专有协议封装,将前端JavaScript的函数调用,封装为基于JSON规
范的前后端交互专有协议格式的标准通信格式。
[0121] 3)、Java协议解析模块:将接收到的基于JSON规范的前后端交互专有协议封装的消息体进行解析并转换为本地应用调用;
[0122] 4)、本地Java应用模块:根据对消息体中的不同参数进行业务的分发和调用;
[0123] 5)、Java协议封装模块:将本地业务执行后的结果数据按照基于JSON规范的前后端交互专有协议进行封装后返回给前端;
[0124] 6)、JavaScript协议解析模块:前端接收到按照基于JSON规范的前后端交互专有协议封装的交互消息体后,进行解析并展示在前端的页面中;
[0125] 以下为本申请涉及的英文缩略语的中文释义:
[0126] SPI:Service Provider Interface,一种服务发现机制。SPI本身并不提供任何接口,只是用于服务发现/获取。SPI将‘服务使用者’与‘服务提供者’解耦。规则约定:1)在
META‑INF/services/目录中创建以Service接口全限定名命名的文件,该文件内容为
Service接口具体实现类的全限定名,文件编码必须为UTF‑8。2)使用ServiceLoader.load
(Class class); 动态加载Service接口的实现类。
[0127] GIT:一种分布式版本控制机制。
[0128] IDEA: 全称 IntelliJ IDEA,是Java编程语言开发的集成环境,由JetBrains公司出品。IntelliJ在业界被公认为最好的Java开发工具,尤其在智能代码助手、代码自动提
示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI
设计等方面的功能可以说是超常的。IntelliJ IDEA分为Ultimate Edition 旗舰版和
Community Edition 社区版本,旗舰版可以免费试用30天,社区版本免费使用,但是功能上
对比旗舰版有所缩减。
[0129] V8引擎:使用C++开发的开源JavaScript解析器,在谷歌浏览器中使用。V8将其编译成原生机器码(IA‑32, x86‑64, ARM, or MIPS CPUs),并且使用了如内联缓存(inline 
caching)等方法来提高性能,使JavaScript运行速度媲美二进制程序。V8可以独立运行,也
可以嵌入到任何C++、Java应用程序中。项目基于BSD协议,任何组织或个人可以将其源码用
于自己的项目中。
[0130] JSON:JavaScript Object Notation,是一种轻量级的数据交换格式。它基于ECMAScript(欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本
格式来存储和表示数据。简洁和清晰的层次结构使得 JSON成为理想的数据交换语言。易于
人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
[0131] JNI:是Java Native Interface的缩写,通过使用Java本地接口书写程序,可以确保代码在不同的平台上方便移植。从Java1.1开始,JNI标准成为java平台的一部分,它允许
Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++
而设计的,但是它并不妨碍你使用其他编程语言,只要调用约定受支持就可以了。使用java
与本地已编译的代码交互,通常会丧失平台可移植性。但是,有些情况下这样做是可以接受
的,甚至是必须的。例如,使用一些旧的库,与硬件、操作系统进行交互,或者为了提高程序
的性能。JNI标准至少要保证本地代码能工作在任何Java虚拟机环境。
[0132] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件
和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这
些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专
业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不
应认为超出本发明的范围。
[0133] 在本申请所提供的几个实施例中,应该理解到,所揭露的方法和系统,可以通过其它的方式实现。例如,以上所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有
另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征
可以忽略,或不执行。上述单元可以是或者也可以不是物理上分开的,作为单元显示的部件
可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元
上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
[0134] 最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依
然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进
行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术
方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。
[0135] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。