当前位置:首页 » 编程软件 » java动态编译代码阿里

java动态编译代码阿里

发布时间: 2022-07-11 00:26:17

❶ 怎么动态编译java源文件

(Write once, run anywhere)” 的目标。Java类文件中包含的字节代码可以被不同平台上的JVM所使用。Java字节代码不仅可以以文件形式存在于磁盘上,也可以通过网络方式来下载,还可以只存在于内存中。JVM中的类加载器会负责从包含字节代码的字节数组(byte[])中定义出Java类。在某些情况下,可能会需要动态的生成 Java字节代码,或是对已有的Java字节代码进行修改。这个时候就需要用到本文中将要介绍的相关技术。首先介绍一下如何动态编译Java源文件。
动态编译Java源文件
在一般情况下,开发人员都是在程序运行之前就编写完成了全部的Java源代码并且成功编译。对有些应用来说,Java源代码的内容在运行时刻才能确定。这个时候就需要动态编译源代码来生成Java字节代码,再由JVM来加载执行。典型的场景是很多算法竞赛的在线评测系统(如PKU JudgeOnline),允许用户上传Java代码,由系统在后台编译、运行并进行判定。在动态编译Java源文件时,使用的做法是直接在程序中调用Java编译器。
JSR 199引入了Java编译器API。如果使用JDK 6的话,可以通过此API来动态编译Java代码。比如下面的代码用来动态编译最简单的Hello World类。该Java类的代码是保存在一个字符串中的。
publicclassCompilerTest{
publicstaticvoidmain(String[]args)throwsException{
Stringsource="publicclassMain{publicstaticvoidmain(String[]args){System.out.println(\"HelloWorld!\");}}";
JavaCompilercompiler=ToolProvider.getSystemJavaCompiler();
=compiler.getStandardFileManager(null,null,null);
=newCompilerTest.StringSourceJavaObject("Main",source);
Iterable<extendsJavaFileObject>fileObjects=Arrays.asList(sourceObject);
CompilationTasktask=compiler.getTask(null,fileManager,null,null,null,fileObjects);
booleanresult=task.call();
if(result){

❷ JAVA的主要用途是哪个方面

1、Android应用

许多的 Android应用都是Java程序员开发者开发。虽然 Android运用了不同的JVM以及不同的封装方式,但是代码还是用Java语言所编写。相当一部分的手机中都支持JAVA游戏,这就使很多非编程人员都认识了JAVA。

2、在金融业应用的服务器程序

Java在金融服务业的应用非常广泛,很多第三方交易系统、银行、金融机构都选择用Java开发,因为相对而言,Java较安全 。大型跨国投资银行用Java来编写前台和后台的电子交易系统,结算和确认系统,数据处理项目以及其他项目。

3、网站

Java 在电子商务领域以及网站开发领域占据了一定的席位。开发人员可以运用许多不同的框架来创建web项目,SpringMVC,Struts2.0以及frameworks。

4、嵌入式领域

Java在嵌入式领域发展空间很大。在这个平台上,只需130KB就能够使用Java技术(在智能卡或者传感器上)。

5、大数据技术

Hadoop以及其他大数据处理技术很多都是用Java,例如Apache的基于Java的HBase和Accumulo以及 ElasticSearchas。

6、高频交易的空间

Java平台提高了这个平台的特性和即使编译,他同时也能够像 C++ 一样传递数据。正是由于这个原因,Java成为的程序员编写交易平台的语言,因为虽然性能不比C++,但开发人员可以避开安全性,可移植性和可维护性等问题。

7、科学应用

Java在科学应用中是很好选择,包括自然语言处理。最主要的原因是因为Java比C++或者其他语言相对其安全性、便携性、可维护性以及其他高级语言的并发性更好。

(2)java动态编译代码阿里扩展阅读:

java的用途已经数不胜数,举不胜举,拥有着无可比拟的能力,另外在节省时间和开发费用方面也十分可观,程序员可以借助java语言,自由的使用现有的硬件和软件系统平台,因为java是独立于任何平台的。具体应用领域总结如下:

第 1 个领域、桌面应用系统开发;

第 2 个领域、嵌入式系统开发;

第 3 个领域、电子商务系统开发;

第 4 个领域、企业级应用开发;

第 5 个领域、交互式系统开发;

第 6 个领域、多媒体系统开发;

第 7 个领域、分布式系统开发;

第 8 个领域、Web应用系统开发。

网络-Java

❸ 页面上有个textarea,在里面写java代码,然后如何动态编译执行这段java代码

后台获取这段代码之后,将其自动补全成一个java类。
然后将其用io生成为 .java文本文件
之后调用
Runtime.getRuntime().exec("x:/javac.exe xx.java ...") 编译
最后使用反射或者代理调用这个类文件得到结果

❹ 在java代码中实现动态编译java文件

importjavax.tools.*;
importjava.io.*;
/**
*@authorhardneedl
*/
finalpublicclassMyCompile{

/**
*@paramargs命令行参数只有1个,即待编译的源代码文件的绝对路径
*@throwsFileNotFoundException
*/
publicstaticvoidmain(String...args)throwsFileNotFoundException{

JavaCompilercompiler=ToolProvider.getSystemJavaCompiler();
intr=compiler.run(null,null,null,args[0]);
System.out.println(r==0?"成功":"失败");
}

}

❺ Java代码的静态编译和动态编译中的问题是什么

Java代码正常是静态编译成字节码,由对应平台的JVM加载执行,静态编译无法动态扩展功能。动态编译有两种方式实现:

  1. 源码编译,需要调用Java Compiler,程序需要运行于JDK(而不是JRE)之上。

  2. 动态字节码生成技术(如CGLib、ASM)创建类。

动态编译可以简化代码,增强类功能,但也带来了代码复杂度,线上不易维护。

❻ Java动态生成代码

可以的,我说说大概思路,很简单,你自己具体实现吧,把代码写给你没意义的:
1.将你这段字符串输出到一个文件里,用Java类文件的方式命名。
2.调用外部javac命令将该文件编译。
3.用类加载器(ClassLoad)动态加载新的class文件并用Class.forName()注册该类,然后就可以正常使用了。
上面的每一步都能在中找到实现方法,自己发挥吧。

❼ java动态编译这个方法是不是过时了

首先,我帮你查了一下,找到一篇http://www.cnblogs.com/fangwenyu/archive/2011/10/12/2209051.html,你看看是不是跟你情况类似

其次,用ToolProvider不如直接用com.sun.tools.javac.Main.compile,你查查这个,一般动态执行java代码的时候,网上的例子都是拿这个方法做的

❽ 怎样动态执行一段JAVA代码

首先你可以使用输入输出流(或者你说的可能是要用反射得到程序结果来解析)解析做出*.Java文件。

然后可以使用runtime调用Dos下的java编译命令编译取得class文件。

然后使用classloader,反射等组合执行生成的class文件。

❾ java动态编译jar找不到

~/usr/share/java/mysql-connector-java.jar

找不到MYSQL的戏,就是说明上面的路径不对。。。。。。。。。

❿ java怎么利用动态编译求四则运算式的结果贴代码的最后注释一下,免得我看不懂,求高手大神来回答

这种东西都不需要动态编译,你用javax.script.ScriptEngine这玩意就可以了

具体代码
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("javascript");
System.out.println(engine.eval("1+2*3+4^2-(2-8*0.12)+1-2^1/2+5/12-0.12/0.21"));

热点内容
安卓如何可以看见被撤回的消息 发布:2025-02-08 23:19:17 浏览:797
火影忍者竞技场脚本 发布:2025-02-08 23:10:18 浏览:934
英国访问学者签证费用 发布:2025-02-08 23:04:46 浏览:926
洛奇合成脚本 发布:2025-02-08 22:57:04 浏览:141
linux文件软链接 发布:2025-02-08 22:35:48 浏览:773
iphone6s缓存怎么清理 发布:2025-02-08 22:33:17 浏览:928
数据库系统设计的步骤 发布:2025-02-08 22:11:19 浏览:44
processc语言 发布:2025-02-08 22:11:15 浏览:537
国产车配置为什么这么便宜 发布:2025-02-08 22:09:52 浏览:481
服务器为什么需要专线 发布:2025-02-08 22:07:27 浏览:872