CN110716715A - 一种应用程序开发方法、装置、设备及介质 - Google Patents
一种应用程序开发方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN110716715A CN110716715A CN201910995041.1A CN201910995041A CN110716715A CN 110716715 A CN110716715 A CN 110716715A CN 201910995041 A CN201910995041 A CN 201910995041A CN 110716715 A CN110716715 A CN 110716715A
- Authority
- CN
- China
- Prior art keywords
- source code
- annotation
- java
- compiling
- program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 73
- 238000004806 packaging method and process Methods 0.000 claims abstract description 15
- 238000004458 analytical method Methods 0.000 claims abstract description 9
- 238000011161 development Methods 0.000 claims description 40
- 230000006870 function Effects 0.000 claims description 31
- 230000008569 process Effects 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 11
- 238000012545 processing Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000005236 sound signal Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000013506 data mapping Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000010079 rubber tapping Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000010897 surface acoustic wave method Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本申请公开了一种应用程序开发方法,包括:获取待编译的Java源码文件,所述Java源码文件包括源码程序和源码注解,通过Java源码编译器对所述Java源码文件中的源码程序进行编译,并通过注解解析器对所述Java源码文件中的源码注解进行编译,将针对所述Java源码文件编译所得的语法树编译成可执行的字节码,将所述可执行的字节码打包生成应用程序。其在运行期间直接运行字节码,一方面通过注解解决了编码效率低下的问题,另一方面通过在编译阶段编译所述注解生成字节码,使得运行期间直接运行字节码,避免了解析注解导致运行效率降低的问题。本申请还公开了对应的装置、设备及介质。
Description
技术领域
本申请涉及应用开发技术领域,尤其涉及一种应用程序开发方法、装置、设备及计算机可读存储介质。
背景技术
Java是一门面向对象编程语言,由于Java语言具有简单性、面向对象、分布式、安全性、可移植性等特点,Java语言已经作为面向对象程序语言的应用代表,基于Java语言可以编写桌面应用程序、Web应用程序、分布式系统和嵌入系统应用程序等。
如今通用的应用开发技术是硬编码方式,其主要是由开发工程师手动编码所有的对象操作源码,例如定义对象,创建对象,从数据库获取对应表的数据,然后进行对象赋值,编码完成之后将源码编译成字节码,再将字节码打包成应用程序完成开发,如此应用程序在运行时直接执行对应源码编译后的字节码。
在实际编码过程中,开发工程师常常需要针对例如对象定义、对象拷贝以及数据库获取数据集转换成Java对象等情景,投入大量的时间重复一些固定的编码方式,导致开发效率较低,更重要的是,在重复一些固定的编码方式时一般仅需要改变字段名称、类型或者个数等,这种细微改变更容易出现漏改或者改错的情况,最终导致程序异常。
发明内容
本申请提供了一种应用程序开发方法,其在使用大量人工编码的地方通过注解进行描述,在编译源码程序时,并通过注解解析器自动对源码进行编译生成字节码,使得运行期间直接运行字节码,如此既解决编码效率低下的问题,又避免了在运行期间解析注解导致的运行效率降低。本申请还提供了对应的装置、设备及介质。
本申请第一方面提供了一种应用程序开发方法,所述方法包括:
获取待编译的Java源码文件,所述Java源码文件包括源码程序和源码注解;
通过Java源码编译器对所述Java源码文件中的源码程序进行编译,并通过注解解析器对所述Java源码文件中的源码注解进行编译;
将针对所述Java源码文件编译所得的语法树编译成可执行的字节码;
将所述可执行的字节码打包生成应用程序。
本申请第二方面提供了一种应用程序开发装置,包括:
获取模块,用于获取待编译的Java源码文件,所述Java源码文件包括源码程序和源码注解;
第一编译模块,用于通过Java源码编译器对所述Java源码文件中的源码程序进行编译,并通过注解解析器对所述Java源码文件中的源码注解进行编译;
第二编译模块,用于将针对所述Java源码文件编译所得的语法树编译成可执行的字节码;
打包模块,用于将所述可执行的字节码打包生成应用程序。
可选的,所述Java源码文件为数据库应用的源码文件;
所述Java源码文件中的每条源码注解包括注解标识及参数标识;
则所述第一编译模块,具体用于:通过注解解析器根据所述Java源码文件中的每条源码注解的注解标识,确定解析策略,基于所确定的解析策略和源码注解的参数标识将注解解析成源码,再编译成语法树。
可选的,所述Java源码文件中的源码注解用于描述对数据库对象进行指定操作,所述源码注解包括注解标识以及基于预定义的标准数据格式表中设定的Java对象的字段名称;
其中,所述预定义的标准数据格式表中包括各种字段对应的字段名称、字段类型以及字段默认值三者对应的关系;
则所述第一编译模块,具体用于在调用注解解析器对所述Java源码文件中的源码注解进行编译时,根据注解中的Java对象的字段名称,从所述预定义的标准数据格式表中获取目标字段类型和目标字段默认值,根据所述目标字段类型和目标字段默认值生成对象定义源码,再编译成语法树。
可选的,当所述Java源码文件中的源码注解包括第一注解类型标识和数据来源标识时;所述第一注解类型标识表示从数据库获取数据并赋值给对象的操作;则所述第一编译模块,具体用于:
通过Java源码编译器按照顺序对所述Java源码文件中的源码进行编译;
当编译至所述Java源码文件中的所述源码注解时,调用注解解析器解析所述源码注解,将函数的入参作为数据库表查询条件,拼接出结构化查询语言SQL语句,根据函数的返回类型创建对应的对象,并根据预配置的数据库连接参数生成数据库连接语句以及数据库执行语句,并将从数据库获取到的数据赋值给所创建的对象。
可选的,所述第一编译模块,具体用于:
通过Eclipse平台的源码编译器编译所述Java源码文件中的源码程序;
当编译至所述Java源码文件中的源码注解时,调用外部的注解解析器对所述Java源文件中的源码注解进行解析。
可选的,所述装置还包括:
逻辑适配模块,用于通过代理程序以修改字节码的方式更改原始Eclipse平台的源码编译器的编译逻辑,将编码逻辑修改为在在编译过程中增加调用注解解析器针对注解进行解析的功能。
本申请第三方面提供了一种设备,所述设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行本申请第一方面所述的应用程序开发方法。
本申请第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,所述计算机程序用于执行本申请第一方面所述的应用程序开发方法。
本申请第五方面提供了一种包括指令的计算机程序产品,当其在计算机上运行时,使得所述计算机执行本申请第一方面所述的应用程序开发方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请实施例中提供了一种应用程序开发方法,在进行应用程序开发时,将需要使用大量人工编码的地方通过注解进行描述,在编译阶段,获取源码文件,该Java源码文件包括源码程序和源码注解,通过Java源码编译器对所述Java源码文件中的源码程序进行编译,并通过注解解析器对所述Java源码文件中的源码注解进行编译,将针对所述Java源码文件编译所得的语法树编译成可执行的字节码,将所述可执行的字节码打包生成应用程序,运行期间直接运行字节码,一方面通过注解解决了编码效率低下的问题,另一方面通过在编译阶段编译所述注解生成字节码,使得运行期间直接运行字节码,避免了解析注解导致运行效率降低的问题。
附图说明
图1为本申请实施例中应用程序开发方法的场景架构图;
图2为本申请实施例中应用程序开发方法的流程图;
图3为本申请实施例中应用程序开发方法的流程图;
图4为本申请实施例中应用程序开发装置的一个结构示意图;
图5为本申请实施例中服务器的一个结构示意图;
图6为本申请实施例中终端的一个结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
针对目前需要由开发工程师人工投入大量的时间重复一些固定的编码方式,导致开发效率较低的问题,本申请提供了一种基于注解的应用程序开发方法,其通过在使用大量人工编码的地方通过注解进行描述,在编译源码程序时,并通过注解解析器自动对源码进行编译生成字节码,使得运行期间直接运行字节码,如此既解决编码效率低下的问题,又避免了在运行期间解析注解导致的运行效率降低。
可以理解,本申请提供的应用程序开发方法可以应用于任意具有数据处理能力的处理设备,该处理设备可以是终端,如台式机desktop或者笔记本电脑等等,该处理设备也可以是服务器。上述处理设备可以独立实现本申请的应用程序开发方法,也可以通过协作的方式实现应用程序开发方法。
其中,应用程序开发方法可以以计算机程序的形式存储于处理设备中,处理设备通过执行上述计算机程序实现本申请的应用程序开发方法。其中,计算机程序可以是独立的计算机程序,也可以是集成于其他程序之上的功能模块、插件或者小程序。
在实际应用时,本申请提供的应用程序开发方法可以但不限于应用于如图1所示的应用环境中。
如图1所示,服务器120和终端110通过网络130连接,开发人员通过终端110编写源码程序,并在需要大量人工编码的地方通过注解进行描述,然后将源码程序和源码注解作为Java源码文件上传至服务器120,服务器120通过Java源码编译器对所述Java源码文件中的源码程序进行编译,并通过注解解析器对所述Java源码文件中的源码注解进行编译,然后将针对所述Java源码文件编译所得的语法树编译成可执行的字节码,将所述可执行的字节码打包生成应用程序。
需要说明的是,上述过程也可以由终端独立实现,为了方便描述,下文均以终端作为示例进行说明。
为了使得本申请的技术方案更加清楚、易于理解,下面将结合附图,对本申请实施例提供的应用程序开发方法的各个步骤进行详细说明。
参见图2所示的应用程序开发方法的流程图,该方法包括:
S201:获取待编译的Java源码文件。
所述Java源码文件包括源码程序和源码注解。其中,源码程序是指在进行应用开发时编写的源代码部分;源码注解是指源码文件中注解部分。
例如,在进行应用开发时,尤其是数据库应用开发,存在大量的对象操作情况,如对象定义、对象拷贝以及数据库获取数据集转换成对象等,关于这部分可以采用源码注解来实现,其他部分可以采用源代码部分来实现。
具体地,在数据库应用系统中,一般存在一张用户信息表,在进行应用开发时,需要在程序中定义一个用户对象,在数据库中定义一种用户表,应用程序在进行用户表的增加、删除、修改或者查询等操作时,需要将数据库中的用户表的信息映射成应用程序中的用户对象,大量类似的单表操作以及表对象的定义与映射操作需要开发工程师编写大量重复固定的源代码,为此,本申请采用注解方式,即在对象上通过一条注解来标识对象操作,避免大量重复编码操作,提高编码效率。
其中,注解Annotation是Java提供的一种源程序中的元素关联任何信息和任何元数据的途径和方法,Annotation实质上是一个接口,程序可以通过反射来获取指定元素的Annotation对象,然后通过Annotation对象获取注解里面的元数据。
需要说明的是,本实施例是以Java编程语言作为示例进行说明的,也即该源码程序和源码注解是以Java编程语言编写得到的,在本申请实施例其他可能的实现方式中,源码程序和源码注解也可以是其他编程语言开发得到的。
S202:通过Java源码编译器对所述Java源码文件中的源码程序进行编译,并通过注解解析器对所述Java源码文件中的源码注解进行编译。
具体地,终端通过Java源码编译器对Java源码文件中的源码程序进行编译,并通过在注解解析器在源码文件编译阶段即对Java源码文件中的源码注解进行编译。
其中,Java源码编译器包括Java原生编译器,也可以包括其他用于编译Java源码文件的编译器,如eclipse、Apache Maven Compiler Plugin等等;注解解析器也称作注解处理器,其可以是已有的注解解析器,也可以是自定义的注解解析器,注解解析器可以通过注解处理器类库实现,该类库具体可以是java.lang.reflect.AnnotatedElement。
当采用eclipse开发源码文件时,终端可以通过eclipse平台的源码编译器编译所述Java源码文件中的源码程序,当编译至所述Java源码文件中的源码注解时,调用外部的注解解析器对所述Java源文件中的源码注解进行解析。
为了快速开发,终端可以采用与eclipse集成的方案,由于Eclipse编译与java原生编译方式生成的语法树结构有些差异,此时可以增加一个代理程序,通过代理程序以修改字节码的方式重写eclipse平台的源码编译器的编译逻辑,将编译逻辑修改为在编译过程中增加调用注解解析器针对注解进行解析的功能。在具体实现时,eclipse编译完成后,终端增加调用自定义注解解析器的功能。
S203:将针对所述Java源码文件编译所得的语法树编译成可执行的字节码。
具体地,java源码编译过程中,终端会将java源码解析成内部的语法树,然后将语法树生成可执行的字节码,与此同时,自动将注解解析成源码并编译成字节码。
其具体实现过程如下:
1、在java源码文件解析成语法树过程中,插入自定义的注解解析器;
2、Java编译时顺序扫描源码文件将其解析成语法树;
3、解析过程中如果扫描到自定义的注解,调用自定义的注解解析器;
4、根据自定义的注解解析器将自定义的注解解析成符合java规范的语法树;
5、Java编译器将最终的完成语法树编译成可执行的字节码。
在采用eclipse编译时,开发人员在eclipse中编写完源代码后通过eclipse自动编译功能,自动触发源代码编译,完成eclipse本身对源码的编译,然后调用自定义的注解解析器,根据该注解解析器将自定义的注解解析成符合eclipse要求的语法树,然后通过eclipse将最终的语法树编译成可执行的字节码。
S204:将所述可执行的字节码打包生成应用程序。
在实际应用时,终端可以利用打包工具将生成的可执行的字节码打包,生成应用程序。以Java作为示例,打包工具具体可以包括Jar Jar Links、NativeJ或者Managed JarFramework等等,通过上述工具,可以将可执行的字节码文件打包生成可执行的应用程序。
由上可知,本申请实施例提供了一种应用程序开发方法,在进行应用程序开发时,将需要使用大量人工编码的地方通过注解进行描述,在编译阶段,获取源码文件,该Java源码文件包括源码程序和源码注解,通过Java源码编译器对所述Java源码文件中的源码程序进行编译,并通过注解解析器对所述Java源码文件中的源码注解进行编译,将针对所述Java源码文件编译所得的语法树编译成可执行的字节码,将所述可执行的字节码打包生成应用程序,运行期间直接运行字节码,一方面通过注解解决了编码效率低下的问题,另一方面通过在编译阶段编译所述注解生成字节码,使得运行期间直接运行字节码,避免了解析注解导致运行效率降低的问题。
为了便于理解,接下来以Java源码文件为数据库应用的源码文件作为示例,对本申请提供的应用程序开发方法进行介绍。
参见图2所示的应用程序开发方法的流程图,如图2所示,该方法包括如下步骤:
第一步:工程师通过开发平台如eclipse编写源码程序,并对源码程序进行注解得到源码文件。
第二步:编译源码程序,并在扫描到注解时通过注解解析器解析注解生成语法树,基于该语法树生成可执行的字节码。
针对Java源码文件,该文件中的每条源码注解包括注解标识及参数标识。如此,终端可以通过注解解析器根据所述Java源码文件中的每条源码注解的注解标识,确定解析策略,基于所确定的解析策略和源码注解的参数标识将注解解析成源码,然后再编译成语法树。
进一步地,当Java源码文件中的源码注解用于描述对数据库对象进行指定操作,其中,该指定操作可以是定义、拷贝、转换等,则所述源码注解包括注解标识以及基于预定义的标准数据格式表中设定的Java对象的字段名称,其中,预定义的标准数据格式表中包括各种字段对应的字段名称、字段类型以及字段默认值三者对应的关系。
数据库表中的字段来自该标准数据格式表,字段名称的命名风格可以采用下划线的风格,该风格更加符合数据库的字段描述风格,例如,"first_name","last_name",具体定义格式可以是普通文本、xml文件或者属性文件,以程序可以解析出字段名称以及对应的字段类型和字段默认值即可。
基于此,在调用注解解析器对所述Java源码文件中的源码注解进行编译时,可以根据注解中的Java对象的字段名称,从所述预定义的标准数据格式表中获取目标字段类型和目标字段默认值,根据所述目标字段类型和目标字段默认值生成对象定义源码,再编译成语法树。
以指定操作为对象定义为例进行说明。在进行对象时,只需要在对象定义前描述该对象所需要使用到的字段,该字段同样来自标准数据格式表,在对象编译时,根据标准数据格式表中该字段所对应的字段类型,自动定义成对象的内部成员变量,成员变量命令时可以根据java风格自动将下划线转换成驼峰风格,例如"first_name"会自动转换成"firstName",同时生成字段对应的get和set函数,以及根据字段重写toString函数;如果是需要进行序列化的对象,会默认继承java的序列化接口,并重写equals与hashCode函数。
在本实施例中,在定义对象后,还可以在程序的配置文件中配置数据库的连接操作信息。然后在数据库操作函数上,根据注解自动完成对象创建、SQL语句组装、数据库数据获取以及数据库数据赋值到对象的过程。
在实际应用时,当所述Java源码文件中的源码注解包括第一注解类型标识和数据来源标识时,第一注解类型标识表示从数据库获取数据并赋值给对象的操作,则可以通过Java源码编译器按照顺序对所述Java源码文件中的源码进行编译,当编译至所述Java源码文件中的所述源码注解时,调用注解解析器解析所述源码注解,将函数的入参作为数据库表查询条件,拼接出结构化查询语言SQL语句,根据函数的返回类型创建对应的对象,并根据预配置的数据库连接参数生成数据库连接语句以及数据库执行语句,并将从数据库获取到的数据赋值给所创建的对象。
需要说明的是,标准数据格式表的存在有效地解决了数据库命名与java程序命名风格的不统一,导致在数据映射上的需要做大量的手工编码映射工作的问题,同时也大大降低了手工映射字段过程中的错误率,有效提升程序的正确性。
第三步:利用打包工具将可执行的字节码打包生成集成应用程序。
第四步:运行集成应用程序,执行字节码。
为了方便理解,下面结合一数据库的具体示例对本申请的应用程序开发方法进行说明。
假设应用系统中有一张用户表,该用户表包括有用户编号、用户姓、用户名等字段,则本申请的执行流程如下:
第一步:定义对象。
其中,对象只需要描述所需要使用到的字段名称即可。根据标准数据格式表中定义的字段类型以及字段默认值,在编译时,自动将其生成对象定义源码,并将源码编译成字节码文件,在解析字段时,根据命名风格自动将下划线方式转换成java标准的驼峰命令,例如"first_name"会自动转换成
"firstName":
@JRESField(fields={"id","first_name","last_name"})
public class User{
}
第二步:通过注解描述完成从数据库获取数据并赋值给对象的操作。
此处的SQL语句不需要是完成的SQL语句,如果是获取所有字段,可以只需要指定具体表名即可;编译时,自动解析注解,并将函数的入参(此处为id)作为数据库表查询条件,自动拼接出完成的SQL语句,根据函数的返回类型(此处为User)自动创建对应的对象示例,然后根据程序中配置的数据库连接参数自动生成数据库连接语句以及数据库执行语句,最后将获取到的数据赋值给创建的对象。以下为其代码表示:
@JRESSelect(tableName="users")
public User getUserById(Integer id);
该方法将对象的定义与操作都使用简单的注解标识,并且在编译期间自动将注解解析成真实的源码并一同编译到字节码文件中,程序运行时直接运行编译后的字节码,大大提高了开发工程师的编码效率,同时保证程序运行的最高效率。
以上为本申请实施例提供的应用程序开发方法的一些具体实现方式,基于此,本申请还提供了对应的装置,下面将从功能模块化的角度对其进行介绍。
参见图4所示的应用程序开发装置的结构示意图,该装置400包括:
获取模块410,用于获取待编译的Java源码文件,所述Java源码文件包括源码程序和源码注解;
第一编译模块420,用于通过Java源码编译器对所述Java源码文件中的源码程序进行编译,并通过注解解析器对所述Java源码文件中的源码注解进行编译;
第二编译模块430,用于将针对所述Java源码文件编译所得的语法树编译成可执行的字节码;
打包模块440,用于将所述可执行的字节码打包生成应用程序。
可选的,所述Java源码文件为数据库应用的源码文件;
所述Java源码文件中的每条源码注解包括注解标识及参数标识;
则所述第一编译模块420,具体用于:通过注解解析器根据所述Java源码文件中的每条源码注解的注解标识,确定解析策略,基于所确定的解析策略和源码注解的参数标识将注解解析成源码,再编译成语法树。
可选的,所述Java源码文件中的源码注解用于描述对数据库对象进行指定操作,所述源码注解包括注解标识以及基于预定义的标准数据格式表中设定的Java对象的字段名称;
其中,所述预定义的标准数据格式表中包括各种字段对应的字段名称、字段类型以及字段默认值三者对应的关系;
则所述第一编译模块420,具体用于在调用注解解析器对所述Java源码文件中的源码注解进行编译时,根据注解中的Java对象的字段名称,从所述预定义的标准数据格式表中获取目标字段类型和目标字段默认值,根据所述目标字段类型和目标字段默认值生成对象定义源码,再编译成语法树。
可选的,当所述Java源码文件中的源码注解包括第一注解类型标识和数据来源标识时;所述第一注解类型标识表示从数据库获取数据并赋值给对象的操作;则所述第一编译模块420,具体用于:
通过Java源码编译器按照顺序对所述Java源码文件中的源码进行编译;
当编译至所述Java源码文件中的所述源码注解时,调用注解解析器解析所述源码注解,将函数的入参作为数据库表查询条件,拼接出结构化查询语言SQL语句,根据函数的返回类型创建对应的对象,并根据预配置的数据库连接参数生成数据库连接语句以及数据库执行语句,并将从数据库获取到的数据赋值给所创建的对象。
可选的,所述第一编译模块420,具体用于:
通过Eclipse平台的源码编译器编译所述Java源码文件中的源码程序;
当编译至所述Java源码文件中的源码注解时,调用外部的注解解析器对所述Java源文件中的源码注解进行解析。
可选的,所述装置400还包括:
逻辑适配模块,用于通过代理程序以修改字节码的方式更改原始Eclipse平台的源码编译器的编译逻辑,将编码逻辑修改为在在编译过程中增加调用注解解析器针对注解进行解析的功能。
本申请实施例还提供一种设备,该设备具体可以是服务器,图5是本申请实施例提供的一种服务器结构示意图,该服务器500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU)522(例如,一个或一个以上处理器)和存储器532,一个或一个以上存储应用程序542或数据544的存储介质530(例如一个或一个以上海量存储设备)。其中,存储器532和存储介质530可以是短暂存储或持久存储。存储在存储介质530的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器522可以设置为与存储介质530通信,在服务器500上执行存储介质530中的一系列指令操作。
服务器500还可以包括一个或一个以上电源526,一个或一个以上有线或无线网络接口550,一个或一个以上输入输出接口558,和/或,一个或一个以上操作系统541,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述实施例中由服务器所执行的步骤可以基于该图5所示的服务器结构。
其中,CPU 522用于执行如下步骤:
获取待编译的Java源码文件,所述Java源码文件包括源码程序和源码注解;
通过Java源码编译器对所述Java源码文件中的源码程序进行编译,并通过注解解析器对所述Java源码文件中的源码注解进行编译;
将针对所述Java源码文件编译所得的语法树编译成可执行的字节码;
将所述可执行的字节码打包生成应用程序。
可选的,CPU522还用于执行本申请实施例提供的应用程序开发方法的任意一种实现方式的步骤。
本申请实施例还提供了另一种设备,该设备具体可以是终端,该终端可以为台式机desktop、笔记本电脑等等,如图6所示,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请实施例方法部分。以终端为desktop为例:
图6示出的是与本申请实施例提供的终端相关的desktop部分结构的框图。参考图6,desktop包括:射频(英文全称:Radio Frequency,英文缩写:RF)电路610、存储器620、输入单元630、显示单元640、传感器650、音频电路660、无线保真(英文全称:wirelessfidelity,英文缩写:WiFi)模块670、处理器680、以及电源690等部件。本领域技术人员可以理解,图6中示出的desktop结构并不构成对desktop的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图6对desktop的各个构成部件进行具体的介绍:
RF电路610可用于收发信息或通话过程中,信号的接收和发送。通常,RF电路610包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(英文全称:Low NoiseAmplifier,英文缩写:LNA)、双工器等。此外,RF电路610还可以通过无线通信与网络和其他设备通信。
存储器620可用于存储软件程序以及模块,处理器680通过运行存储在存储器620的软件程序以及模块,从而执行desktop的各种功能应用以及数据处理。存储器620可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据desktop的使用所创建的数据(比如音频数据等)等。此外,存储器620可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元630可用于接收输入的数字或字符信息,以及产生与desktop的用户设置以及功能控制有关的键信号输入。具体地,输入单元630可包括触控面板631以及其他输入设备632。触控面板631,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板631上或在触控面板631附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板631可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器680,并能接收处理器680发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板631。除了触控面板631,输入单元630还可以包括其他输入设备632。具体地,其他输入设备632可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元640可用于显示由用户输入的信息或提供给用户的信息以及desktop的各种菜单。显示单元640可包括显示面板641,可选的,可以采用液晶显示器(英文全称:Liquid Crystal Display,英文缩写:LCD)、有机发光二极管(英文全称:Organic Light-Emitting Diode,英文缩写:OLED)等形式来配置显示面板641。进一步的,触控面板631可覆盖显示面板641,当触控面板631检测到在其上或附近的触摸操作后,传送给处理器680以确定触摸事件的类型,随后处理器680根据触摸事件的类型在显示面板641上提供相应的视觉输出。虽然在图6中,触控面板631与显示面板641是作为两个独立的部件来实现desktop的输入和输入功能,但是在某些实施例中,可以将触控面板631与显示面板641集成而实现desktop的输入和输出功能。
desktop还可包括至少一种传感器650,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板641的亮度,接近传感器可在desktop移动到耳边时,关闭显示面板641和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别desktop姿态的应用、振动识别相关功能(比如计步器、敲击)等;至于desktop还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路660、扬声器661,传声器662可提供用户与desktop之间的音频接口。音频电路660可将接收到的音频数据转换后的电信号,传输到扬声器661,由扬声器661转换为声音信号输出;另一方面,传声器662将收集的声音信号转换为电信号,由音频电路660接收后转换为音频数据,再将音频数据输出处理器680处理后,经RF电路610以发送给比如另一desktop,或者将音频数据输出至存储器620以便进一步处理。
WiFi属于短距离无线传输技术,desktop通过WiFi模块670可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图6示出了WiFi模块670,但是可以理解的是,其并不属于desktop的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器680是desktop的控制中心,利用各种接口和线路连接整个desktop的各个部分,通过运行或执行存储在存储器620内的软件程序和/或模块,以及调用存储在存储器620内的数据,执行desktop的各种功能和处理数据,从而对desktop进行整体监控。可选的,处理器680可包括一个或多个处理单元;优选的,处理器680可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器680中。
desktop还包括给各个部件供电的电源690(比如电池),优选的,电源可以通过电源管理系统与处理器680逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,desktop还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本申请实施例中,该终端所包括的处理器680还具有以下功能:
获取待编译的Java源码文件,所述Java源码文件包括源码程序和源码注解;
通过Java源码编译器对所述Java源码文件中的源码程序进行编译,并通过注解解析器对所述Java源码文件中的源码注解进行编译;
将针对所述Java源码文件编译所得的语法树编译成可执行的字节码;
将所述可执行的字节码打包生成应用程序。
可选的,所述处理器680还用于执行本申请的应用程序开发方法的任意一种实现方式的步骤。
本申请实施例还提供一种计算机可读存储介质,用于存储计算机程序,该计算机程序用于执行前述各个实施例所述的一种应用程序开发方法中的任意一种实施方式。
本申请实施例还提供一种包括指令的计算机程序产品,当其在计算机上运行时,使得计算机执行前述各个实施例所述的一种应用程序开发方法中的任意一种实施方式。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文全称:Read-OnlyMemory,英文缩写:ROM)、随机存取存储器(英文全称:Random Access Memory,英文缩写:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (10)
1.一种应用程序开发方法,其特征在于,包括:
获取待编译的Java源码文件,所述Java源码文件包括源码程序和源码注解;
通过Java源码编译器对所述Java源码文件中的源码程序进行编译,并通过注解解析器对所述Java源码文件中的源码注解进行编译;
将针对所述Java源码文件编译所得的语法树编译成可执行的字节码;
将所述可执行的字节码打包生成应用程序。
2.根据权利要求1所述方法,其特征在于,所述Java源码文件为数据库应用的源码文件;
所述Java源码文件中的每条源码注解包括注解标识及参数标识;
则所述通过注解解析器对所述Java源码文件中的源码注解进行编译包括:
通过注解解析器根据所述Java源码文件中的每条源码注解的注解标识,确定解析策略,基于所确定的解析策略和源码注解的参数标识将注解解析成源码,再编译成语法树。
3.根据权利要求2所述方法,其特征在于,所述Java源码文件中的源码注解用于描述对数据库对象进行指定操作,所述源码注解包括注解标识以及基于预定义的标准数据格式表中设定的Java对象的字段名称;
其中,所述预定义的标准数据格式表中包括各种字段对应的字段名称、字段类型以及字段默认值三者对应的关系;
则在调用注解解析器对所述Java源码文件中的源码注解进行编译时,根据注解中的Java对象的字段名称,从所述预定义的标准数据格式表中获取目标字段类型和目标字段默认值,根据所述目标字段类型和目标字段默认值生成对象定义源码,再编译成语法树。
4.根据权利要求2所述方法,其特征在于,当所述Java源码文件中的源码注解包括第一注解类型标识和数据来源标识时;所述第一注解类型标识表示从数据库获取数据并赋值给对象的操作;则所述通过Java源码编译器对所述Java源码文件中的源码程序进行编译,并通过注解解析器对所述Java源码文件中的源码注解进行编译,包括:
通过Java源码编译器按照顺序对所述Java源码文件中的源码进行编译;
当编译至所述Java源码文件中的所述源码注解时,调用注解解析器解析所述源码注解,将函数的入参作为数据库表查询条件,拼接出结构化查询语言SQL语句,根据函数的返回类型创建对应的对象,并根据预配置的数据库连接参数生成数据库连接语句以及数据库执行语句,并将从数据库获取到的数据赋值给所创建的对象。
5.根据权利要求1所述的方法,其特征在于,所述通过Java源码编译器对所述Java源码文件中的源码程序进行编译,并通过注解解析器对所述Java源码文件中的源码注解进行编译,包括:
通过Eclipse平台的源码编译器编译所述Java源码文件中的源码程序;
当编译至所述Java源码文件中的源码注解时,调用外部的注解解析器对所述Java源文件中的源码注解进行解析。
6.根据权利要求1所述的方法,其特征在于,在所述通过Eclipse平台的源码编译器编译所述Java源码文件中的源码程序之前,所述方法还包括:
通过代理程序以修改字节码的方式更改原始Eclipse平台的源码编译器的编译逻辑,将编译逻辑修改为在编译过程中增加调用注解解析器针对注解进行解析的功能。
7.一种应用程序开发装置,其特征在于,包括:
获取模块,用于获取待编译的Java源码文件,所述Java源码文件包括源码程序和源码注解;
第一编译模块,用于通过Java源码编译器对所述Java源码文件中的源码程序进行编译,并通过注解解析器对所述Java源码文件中的源码注解进行编译;
第二编译模块,用于将针对所述Java源码文件编译所得的语法树编译成可执行的字节码;
打包模块,用于将所述可执行的字节码打包生成应用程序。
8.一种设备,其特征在于,所述设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行权利要求1-6任一项所述的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储计算机程序,所述计算机程序用于执行权利要求1-6任一项所述的方法。
10.一种包括指令的计算机程序产品,其特征在于,当其在计算机上运行时,使得所述计算机执行权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910995041.1A CN110716715B (zh) | 2019-10-18 | 2019-10-18 | 一种应用程序开发方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910995041.1A CN110716715B (zh) | 2019-10-18 | 2019-10-18 | 一种应用程序开发方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110716715A true CN110716715A (zh) | 2020-01-21 |
CN110716715B CN110716715B (zh) | 2024-01-19 |
Family
ID=69212855
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910995041.1A Active CN110716715B (zh) | 2019-10-18 | 2019-10-18 | 一种应用程序开发方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110716715B (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111338659A (zh) * | 2020-02-28 | 2020-06-26 | 广州市百果园信息技术有限公司 | 安装包生成方法、消息管理方法、装置、设备及存储介质 |
CN111611241A (zh) * | 2020-04-29 | 2020-09-01 | 平安科技(深圳)有限公司 | 一种字典数据操作方法、装置、可读存储介质及终端设备 |
CN111796865A (zh) * | 2020-06-28 | 2020-10-20 | 北京字节跳动网络技术有限公司 | 一种字节码文件修改方法、装置、终端设备及介质 |
CN111797016A (zh) * | 2020-06-30 | 2020-10-20 | 苏州三六零智能安全科技有限公司 | 应用程序的测试方法、设备、存储介质及装置 |
CN111984243A (zh) * | 2020-08-31 | 2020-11-24 | 上海玳鸽信息技术有限公司 | 一种基于注解的通用安全检查及功能扩展方法及装置 |
CN112000572A (zh) * | 2020-08-07 | 2020-11-27 | 北京浪潮数据技术有限公司 | 一种源码扫描工具、方法、设备及介质 |
CN112114810A (zh) * | 2020-08-13 | 2020-12-22 | 浙江大搜车融资租赁有限公司 | 编译处理方法及装置 |
CN112346778A (zh) * | 2020-10-28 | 2021-02-09 | 常州微亿智造科技有限公司 | 一种Java程序编译时自动生成字节码的优化方法 |
CN113296748A (zh) * | 2020-02-21 | 2021-08-24 | 上海莉莉丝科技股份有限公司 | 数据对象与数据库的映射方法、系统、服务器及计算机可读存储介质 |
CN113391811A (zh) * | 2020-03-13 | 2021-09-14 | 北京字节跳动网络技术有限公司 | 函数编译方法、装置、电子设备及计算机可读存储介质 |
CN113448995A (zh) * | 2020-03-25 | 2021-09-28 | 北京沃东天骏信息技术有限公司 | 数据库操作方法及装置、系统、电子设备和存储介质 |
CN113722392A (zh) * | 2020-05-26 | 2021-11-30 | 北京达佳互联信息技术有限公司 | 数据同步方法和装置、数据同步系统、服务器、存储介质 |
CN113778451A (zh) * | 2020-11-17 | 2021-12-10 | 北京沃东天骏信息技术有限公司 | 文件加载方法、装置、计算机系统和计算机可读存储介质 |
WO2024148903A1 (zh) * | 2023-01-09 | 2024-07-18 | 华为云计算技术有限公司 | 源码保护的方法及装置 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030233632A1 (en) * | 2002-06-12 | 2003-12-18 | Lockheed Martin Corporation | Automatically generated client application source code using database table definitions |
US20130227446A1 (en) * | 2012-02-29 | 2013-08-29 | Avaya Inc. | Generation of a user interface from a database |
WO2014002812A1 (ja) * | 2012-06-29 | 2014-01-03 | 日本電信電話株式会社 | 端末装置及びアノテーション方法並びにコンピュータシステム及びコンピュータプログラム |
US9037614B1 (en) * | 2012-02-24 | 2015-05-19 | Amazon Technologies, Inc. | Secondary mappings to enable code changes without schema updates |
WO2015199748A1 (en) * | 2014-06-25 | 2015-12-30 | Oracle International Corporation | Rest service source code generation |
US20170185635A1 (en) * | 2015-12-29 | 2017-06-29 | Cognizant Technology Solutions India Pvt. Ltd. | Method and system for identifying and analyzing hidden data relationships in databases |
US20180267781A1 (en) * | 2017-03-20 | 2018-09-20 | Coursera Inc. | Code generation for isomorphic data fetching |
CN109375901A (zh) * | 2018-09-03 | 2019-02-22 | 平安普惠企业管理有限公司 | 接口信息管理方法、装置、计算机设备以及存储介质 |
CN109542443A (zh) * | 2017-07-27 | 2019-03-29 | 阿里巴巴集团控股有限公司 | 应用程序的编译方法及装置、计算机终端、数据处理方法 |
CN109857387A (zh) * | 2019-01-03 | 2019-06-07 | 中国银行股份有限公司 | 一种生成java类对象的方法及电子设备 |
-
2019
- 2019-10-18 CN CN201910995041.1A patent/CN110716715B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030233632A1 (en) * | 2002-06-12 | 2003-12-18 | Lockheed Martin Corporation | Automatically generated client application source code using database table definitions |
US9037614B1 (en) * | 2012-02-24 | 2015-05-19 | Amazon Technologies, Inc. | Secondary mappings to enable code changes without schema updates |
US20130227446A1 (en) * | 2012-02-29 | 2013-08-29 | Avaya Inc. | Generation of a user interface from a database |
WO2014002812A1 (ja) * | 2012-06-29 | 2014-01-03 | 日本電信電話株式会社 | 端末装置及びアノテーション方法並びにコンピュータシステム及びコンピュータプログラム |
WO2015199748A1 (en) * | 2014-06-25 | 2015-12-30 | Oracle International Corporation | Rest service source code generation |
US20170185635A1 (en) * | 2015-12-29 | 2017-06-29 | Cognizant Technology Solutions India Pvt. Ltd. | Method and system for identifying and analyzing hidden data relationships in databases |
US20180267781A1 (en) * | 2017-03-20 | 2018-09-20 | Coursera Inc. | Code generation for isomorphic data fetching |
CN109542443A (zh) * | 2017-07-27 | 2019-03-29 | 阿里巴巴集团控股有限公司 | 应用程序的编译方法及装置、计算机终端、数据处理方法 |
CN109375901A (zh) * | 2018-09-03 | 2019-02-22 | 平安普惠企业管理有限公司 | 接口信息管理方法、装置、计算机设备以及存储介质 |
CN109857387A (zh) * | 2019-01-03 | 2019-06-07 | 中国银行股份有限公司 | 一种生成java类对象的方法及电子设备 |
Non-Patent Citations (1)
Title |
---|
APICESCN: "Mybatis实现@Select等注解动态组合SQL组合", pages 144 - 147 * |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113296748A (zh) * | 2020-02-21 | 2021-08-24 | 上海莉莉丝科技股份有限公司 | 数据对象与数据库的映射方法、系统、服务器及计算机可读存储介质 |
CN111338659A (zh) * | 2020-02-28 | 2020-06-26 | 广州市百果园信息技术有限公司 | 安装包生成方法、消息管理方法、装置、设备及存储介质 |
CN113391811A (zh) * | 2020-03-13 | 2021-09-14 | 北京字节跳动网络技术有限公司 | 函数编译方法、装置、电子设备及计算机可读存储介质 |
CN113391811B (zh) * | 2020-03-13 | 2023-11-03 | 抖音视界有限公司 | 函数编译方法、装置、电子设备及计算机可读存储介质 |
CN113448995A (zh) * | 2020-03-25 | 2021-09-28 | 北京沃东天骏信息技术有限公司 | 数据库操作方法及装置、系统、电子设备和存储介质 |
CN111611241A (zh) * | 2020-04-29 | 2020-09-01 | 平安科技(深圳)有限公司 | 一种字典数据操作方法、装置、可读存储介质及终端设备 |
CN113722392A (zh) * | 2020-05-26 | 2021-11-30 | 北京达佳互联信息技术有限公司 | 数据同步方法和装置、数据同步系统、服务器、存储介质 |
CN111796865A (zh) * | 2020-06-28 | 2020-10-20 | 北京字节跳动网络技术有限公司 | 一种字节码文件修改方法、装置、终端设备及介质 |
CN111796865B (zh) * | 2020-06-28 | 2024-04-16 | 北京字节跳动网络技术有限公司 | 一种字节码文件修改方法、装置、终端设备及介质 |
CN111797016A (zh) * | 2020-06-30 | 2020-10-20 | 苏州三六零智能安全科技有限公司 | 应用程序的测试方法、设备、存储介质及装置 |
CN111797016B (zh) * | 2020-06-30 | 2022-11-04 | 苏州三六零智能安全科技有限公司 | 应用程序的测试方法、设备、存储介质及装置 |
CN112000572A (zh) * | 2020-08-07 | 2020-11-27 | 北京浪潮数据技术有限公司 | 一种源码扫描工具、方法、设备及介质 |
CN112000572B (zh) * | 2020-08-07 | 2022-06-17 | 北京浪潮数据技术有限公司 | 一种源码扫描工具、方法、设备及介质 |
CN112114810A (zh) * | 2020-08-13 | 2020-12-22 | 浙江大搜车融资租赁有限公司 | 编译处理方法及装置 |
CN111984243A (zh) * | 2020-08-31 | 2020-11-24 | 上海玳鸽信息技术有限公司 | 一种基于注解的通用安全检查及功能扩展方法及装置 |
CN112346778B (zh) * | 2020-10-28 | 2022-02-08 | 常州微亿智造科技有限公司 | 一种Java程序编译时自动生成字节码的优化方法 |
CN112346778A (zh) * | 2020-10-28 | 2021-02-09 | 常州微亿智造科技有限公司 | 一种Java程序编译时自动生成字节码的优化方法 |
CN113778451A (zh) * | 2020-11-17 | 2021-12-10 | 北京沃东天骏信息技术有限公司 | 文件加载方法、装置、计算机系统和计算机可读存储介质 |
WO2024148903A1 (zh) * | 2023-01-09 | 2024-07-18 | 华为云计算技术有限公司 | 源码保护的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110716715B (zh) | 2024-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110716715B (zh) | 一种应用程序开发方法、装置、设备及介质 | |
CN108897562B (zh) | 安装包更新方法、装置、介质以及设备 | |
CN108549538B (zh) | 一种代码检测方法、装置、存储介质及测试终端 | |
CN112052008B (zh) | 代码检查方法、装置、计算机设备及计算机可读存储介质 | |
CN112363694B (zh) | Fmu文件及求解器运行环境与工业软件的集成方法 | |
CN110990019B (zh) | 一种Java类分析方法、装置、存储介质及电子设备 | |
CN105453080A (zh) | 用于虚拟个人助理的可扩展上下文感知的自然语言交互 | |
CN111740948B (zh) | 数据包发布方法、动态更新方法、装置、设备及介质 | |
CN112363695B (zh) | Pmml文件及其运行时环境与工业软件的集成方法 | |
CN106502703B (zh) | 一种函数调用方法和装置 | |
US8255883B2 (en) | Translating late bound LINQ expressions into database queries | |
CN110058850B (zh) | 一种应用的开发方法、装置以及存储介质 | |
CN111309335B (zh) | 插件应用的编译方法、装置及计算机可读存储介质 | |
CN112882772B (zh) | 移动终端应用界面的配置方法、移动终端及存储介质 | |
CN111723002A (zh) | 一种代码调试方法、装置、电子设备及存储介质 | |
CN113835701A (zh) | 一种基于组件化的代码生成方法和装置 | |
CN112667223A (zh) | 组件配置表的生成方法、装置、电子设备及存储介质 | |
CN112527386B (zh) | 应用程序发布方法及装置 | |
CN109145598B (zh) | 脚本文件的病毒检测方法、装置、终端及存储介质 | |
CN108664389B (zh) | 一种测试方法、装置及终端 | |
CN113778515B (zh) | 确定程序包变更信息的方法和装置 | |
CN110032394A (zh) | 一种无源码文件的分析方法、装置和存储介质 | |
CN111736839A (zh) | 一种编译链接方法及装置 | |
CN116028099A (zh) | 一种安装包生成的方法及相关装置、设备和存储介质 | |
Wood et al. | Supporting robotic software migration using static analysis and model-driven engineering |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |