java的代码谁负责执行 java代码都要写在什么中( 三 )


下面介绍一个例子,是关于如何在Java里面做四则运算 , 比如求出来(3+4)*7-10的值 。一般的做法是分析输入的运算表达式,自己来模拟计算过程 。考虑到括号的存在和运算符的优先级等问题 , 这样的计算过程会比较复杂,而且容易出错 。另外一种做法是可以用JSR 223引入的脚本语言支持,直接把输入的表达式当做JavaScript或是JavaFX脚本来执行,得到结果 。下面的代码使用的做法是动态生成Java源代码并编译,接着加载Java类来执行并获取结果 。这种做法完全使用Java来实现 。
01private static double calculate(String expr) throws CalculationException{
02String className = "CalculatorMain";
03String methodName = "calculate";
04String source = "public class " + className
05+ " { public static double " + methodName + "() { return " + expr +"; } }";
06//省略动态编译Java源代码的相关代码,参见上一节
07boolean result = task.call();
08if (result) {
09ClassLoader loader = Calculator.class.getClassLoader();
10try {
11Class? clazz = loader.loadClass(className);
12Method method = clazz.getMethod(methodName, new Class?[] {});
13Object value = https://www.04ip.com/post/method.invoke(null, new Object[] {});
14return (Double) value;
【java的代码谁负责执行 java代码都要写在什么中】15} catch (Exception e) {
16throw new CalculationException("内部错误 。");
17}
18} else {
19throw new CalculationException("错误的表达式 。");
20}
21}
上面的代码给出了使用动态生成的Java字节代码的基本模式 , 即通过类加载器来加载字节代码,创建Java类的对象的实例,再通过Java反射API来调用对象中的方法 。
Java字节代码增强
Java 字节代码增强指的是在Java字节代码生成之后,对其进行修改,增强其功能 。这种做法相当于对应用程序的二进制文件进行修改 。在很多Java框架中都可以见到这种实现方式 。Java字节代码增强通常与Java源文件中的注解(annotation)一块使用 。注解在Java源代码中声明了需要增强的行为及相关的元数据 , 由框架在运行时刻完成对字节代码的增强 。Java字节代码增强应用的场景比较多,一般都集中在减少冗余代码和对开发人员屏蔽底层的实现细节上 。用过JavaBeans的人可能对其中那些必须添加的getter/setter方法感到很繁琐,并且难以维护 。而通过字节代码增强 , 开发人员只需要声明Bean中的属性即可 , getter/setter方法可以通过修改字节代码来自动添加 。用过JPA的人 , 在调试程序的时候 , 会发现实体类中被添加了一些额外的 域和方法 。这些域和方法是在运行时刻由JPA的实现动态添加的 。字节代码增强在面向方面编程(AOP)的一些实现中也有使用 。
jsp页面上的java代码块 是在浏览器本地执行还是在服务器端执行?凡是使用到了java中的语言部分,一般都是在服务器端执行,解析后返回客户端形成标准的html
java的代码谁负责执行的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java代码都要写在什么中、java的代码谁负责执行的信息别忘了在本站进行查找喔 。