「java导入rhino」java导入map包

博主:adminadmin 2022-11-28 18:10:08 60

本篇文章给大家谈谈java导入rhino,以及java导入map包对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

有人知道java中 rhino怎么支持javascript的DOM操作吗~~~~ 非常急啊啊啊啊

DOM是html里面的DOM。

rhino里面没有这个DOM,你操作什么?

或者说,在rhino里面,根本没有dom这个东西,你没有操作的目标。

java nashorm怎么用

从JDK 6开始,Java就已经捆绑了JavaScript引擎,该引擎基于Mozilla的Rhino。该特性允许开发人员将JavaScript代码嵌入到Java中,甚至从嵌入的JavaScript中调用Java。此外,它还提供了使用jrunscript从命令行运行JavaScript的能力。如果不需要非常好的性能,并且可以接受ECMAScript 3有限的功能集的话,那它相当不错了。

从JDK 8开始,Nashorn取代Rhino成为Java的嵌入式JavaScript引擎。Nashorn完全支持ECMAScript 5.1规范以及一些扩展。它使用基于JSR 292的新语言特性,其中包含在JDK 7中引入的invokedynamic,将JavaScript编译成Java字节码。

与先前的Rhino实现相比,这带来了2到10倍的性能提升,虽然它仍然比Chrome和Node.js中的V8引擎要差一些。如果你对实现细节感兴趣,那么可以看看这些来自2013 JVM语言峰会的幻灯片。

相关厂商内容

滴滴出行iOS客户端架构演进之路!

微信客户端如何应对弱网络!

函数式编程中的Swift与Swift中的函数式编程!

AWS Webinar 5月24日在线课堂|利用AWS Lambda创建应用

国际范 最前沿 不容错过的容器技术盛会

相关赞助商

GMTC全球移动技术大会2016年6月24日-25日,北京,点击了解详情!

由于Nashorn随JDK 8而来,它还增加了简洁的函数式接口支持。接下来,我们很快就会看到更多细节。

让我们从一个小例子开始。首先,你可能需要安装JDK 8和NetBeans、IntelliJ IDEA或者Eclipse。对于集成JavaScript开发,它们都至少提供了基本的支持。让我们创建一个简单的Java项目,其中包含下面两个示例文件,并运行它:

(点击图片可以查看大图)

在第12行,我们使用引擎的“eval”方法对任意JavaScript代码求值。在本示例中,我们只是加载了上面的JavaScript文件并对其求值。你可能会发现那个“print”并不熟悉。它不是JavaScript的内建函数,而是Nashorn提供的,它还提供了其它方便的、在脚本环境中大有用武之地的函数。你也可以将 “hello world”的打印代码直接嵌入到传递给“eval”方法的字符串,但将JavaScript放在它自己的文件中为其开启了全新的工具世界。

Eclipse目前还没有对Nashorn提供专门的支持,不过,通过JavaScript开发工具(JSDT)项目,它已经支持JavaScript的基本工具和编辑。

(点击图片可以查看大图)

IntelliJ IDEA 13.1(社区版和旗舰版)提供了出色的JavaScript和Nashorn支持。它有一个全功能的调试器,甚至允许在Java和JavaScript之间保持重构同步,因此举例来说,如果你重命名一个被JavaScript引用的Java类,或者重命名一个用于Java源代码中的JavaScript文件,那么该IDE将跨语言修改相应的引用。

下面是一个例子,展示如何调试从Java调用的JavaScript(请注意,NetBeans也提供了JavaScript调试器,如下截图所示):

(点击图片可以查看大图)

你可能会说,工具看上去不错,而且新实现修复了性能以及一致性问题,但我为什么应该用它呢?一个原因是一般的脚本编写。有时候,能够直接插入任何类型的字符串,并任由它被解释,会很方便。有时候,没有碍事的编译器,或者不用为静态类型担心,可能也是不错的。或者,你可能对Node.js编程模型感兴趣,它也可以和Java一起使用,在本文的末尾我们会看到。另外,还有个情况不得不提一下,与Java相比,使用JavaScript进行JavaFX开发会快很多。

Shell脚本

Nashorn引擎可以使用jjs命令从命令行调用。你可以不带任何参数调用它,这会将你带入一个交互模式,或者你可以传递一个希望执行的JavaScript文件名,或者你可以用它作为shell脚本的替代,像这样:

#!/usr/bin/env jjs

var name = $ARG[0];

print(name ? "Hello, ${name}!" : "Hello, world!");

向jjs传递程序参数,需要加“—”前缀。因此举例来说,你可以这样调用:

./hello-script.js – Joe

如果没有“—”前缀,参数会被解释为文件名。

向Java传递数据或者从Java传出数据

正如上文所说的那样,你可以从Java代码直接调用JavaScript;只需获取一个引擎对象并调用它的“eval”方法。你可以将数据作为字符串显式传递……

ScriptEngineManager scriptEngineManager =

new ScriptEngineManager();

ScriptEngine nashorn =

scriptEngineManager.getEngineByName("nashorn");

String name = "Olli";

nashorn.eval("print('" + name + "')");

……或者你可以在Java中传递绑定,它们是可以从JavaScript引擎内部访问的全局变量:

int valueIn = 10;

SimpleBindings simpleBindings = new SimpleBindings();

simpleBindings.put("globalValue", valueIn);

nashorn.eval("print (globalValue)", simpleBindings);

JavaScript eval的求值结果将会从引擎的“eval”方法返回:

Integer result = (Integer) nashorn.eval("1 + 2");

assert(result == 3);

在Nashorn中使用Java类

前面已经提到,Nashorn最强大的功能之一源于在JavaScript中调用Java类。你不仅能够访问类并创建实例,你还可以继承他们,调用他们的静态方法,几乎可以做任何你能在Java中做的事。

作为一个例子,让我们看下来龙去脉。JavaScript没有任何语言特性是面向并发的,所有常见的运行时环境都是单线程的,或者至少没有任何共享状态。有趣的是,在Nashorn环境中,JavaScript确实可以并发运行,并且有共享状态,就像在Java中一样:

// 访问Java类Thread

var Thread = Java.type("java.lang.Thread");

// 带有run方法的子类

var MyThread = Java.extend(Thread, {

run: function() {

print("Run in separate thread");

}

});

var th = new MyThread();

th.start();

th.join();

请注意,从Nashorn访问类的规范做法是使用Java.type,并且可以使用Java.extend扩展一个类。

令人高兴的函数式

从各方面来说,随着JDK 8的发布,Java——至少在某种程度上——已经变成一种函数式语言。开发人员可以在集合上使用高阶函数,比如,遍历所有的元素。高阶函数是把另一个函数当作参数的函数,它可以用这个函数参数做些有意义的事情。请看下面Java中高阶函数的示例:

ListInteger list = Arrays.asList(3, 4, 1, 2);

list.forEach(new Consumer() {

@Override

public void accept(Object o) {

System.out.println(o);

}

});

对于这个例子,我们的传统实现方式是使用一个“外部”循环遍历元素,但现在,我们没有那样做,而是将一个“Consumer”函数传递给了“forEach”操作,一个高阶的“内部循环”操作会将集合中的每个元素一个一个地传递给Consumer的“accept”方法并执行它。

如上所述,对于这样的高阶函数,函数式语言的做法是接收一个函数参数,而不是一个对象。虽然在传统上讲,传递函数引用本身超出了Java的范围,但现在,JDK 8有一些语法糖,使它可以使用Lambda表达式(又称为“闭包”)来实现那种表示方式。例如:

ListInteger list = Arrays.asList(3, 4, 1, 2);

list.forEach(el - System.out.println(el));

在这种情况下,“forEach”的参数是这样一个函数引用的形式。这是可行的,因为Customer是一个函数式接口(有时称为“单一抽象方法(Single Abstract Method)”类型或“SAM”)。

那么,我们为什么要在讨论Nashorn时谈论Lambda表达式呢?因为在JavaScript中,开发人员也可以这样编写代码,而在这种情况下,Nashorn可以特别好地缩小Java和JavaScript之间的差距。尤其是,它甚至允许开发人员将纯JavaScript函数作为函数式接口(SAM类型)的实现来传递。

让我们来看一些纯JavaScript代码,它们与上述Java代码实现一样的功能。注意,在JavaScript中没有内置的列表类型,只有数组;不过这些数组的大小是动态分配的,而且有与Java列表类似的方法。因此,在这个例子中,我们调用一个JavaScript数组的“for Each”方法:

var jsArray = [4,1,3,2];

jsArray.forEach(function(el) { print(el) } );

如何讲数据点导入rhino中,生成曲线

没办法,RHINO参数化建模很弱.手动画点连线吧.

你说的这个CAD也无法实现.

如果需要用公式做曲线,我推荐你用CAXA,有一个命令,是输入方程或者公式直接出曲线.

椭圆齿轮的积分公式都可以出曲线的,很强大.

Rhino 和 Nashorn 到底怎么运行

嗯这个问题得剥开几层说。其实很容易理解。这里我们先忽略JVM是用什么语言实现的。要详细考察这个问题可以去看另一个回答:Java 平台中的 JVM 和 .Net 平台下的 CLR 分别是用什么语言写的? - RednaxelaFX 的回答 ( 语法分析器 Parser ) - [ 抽象语法树(AST) ast ] - ( Rhino内部表现形式生成器 IRFactory ) - [ Rhino内部表现形式 ScriptNode ] - ( Rhino字节码生成器 CodeGenerator ) - [ Rhino字节码 Icode ] - ( Rhino解释器 Interpreter ) - [ 运行结果 ]这里说的Rhino字节码是Rhino内部用来表示JavaScript程序语义的一套字节码,跟JVM所支持的Java字节码没关系。当优化级别为0~9时,Rhino使用一个用Java写的编译器将JavaScript编译为Java字节码;生成出来的Java字节码交由JVM直接执行。至于底下的JVM是解释执行Java字节码,还是将Java字节码编译为机器码再执行,Rhino并不关心。此时,Rhino的工作流程简单说是:[ JavaScript源码 ] - ( 语法分析器 Parser ) - [ 抽象语法树(AST) ast ] - ( Rhino内部表现形式生成器 IRFactory ) - [ Rhino内部表现形式 ScriptNode ] - ( 可选优化 Optimizer ) - ( Java字节码生成器 Codegen ) - [ Java Class文件(包含Java字节码) ] - JVM加载和执行生成的字节码 - [ 运行结果 ]这种以编译的方式模式执行JavaScript,跟一个Java源码编译器(例如javac)把Java源码编译为Class文件然后交由JVM执行,过程是类似的。只不过Rhino做的优化不够多而且JavaScript的语义也远比Java动态,所以此时Rhino上运行JavaScript的性能仍然无法跟Java的性能比。顺带一提,Sun/Oracle JDK6 / OpenJDK6中自带的Rhino是经过裁剪的,去掉了Mozilla Rhino中的部分功能。其中一个被去掉的功能就是Rhino的编译模式。这意味着JDK6自带的Rhino只能用解释模式运行。而Oracle JDK7 / OpenJDK7放宽了这一限制,当有SecurityManager时只能用解释模式,否则可以配置"rhino.opt.level"系统属性来设置Rhino的优化级别;默认仍然是用解释模式(优化级别默认为-1)。pile()开始看:[ JavaScript源码 ] - ( 语法分析器 Parser ) - [ 抽象语法树(AST) ir ] - ( 编译优化 Compiler ) - [ 优化后的AST + Java Class文件(包含Java字节码) ] - JVM加载和执行生成的字节码 - [ 运行结果 ]中间这个“编译优化”通过CompilationPhase来组织。最基本的工作流程可以从Compiler.CompilationPhases.COMPILE_ALL来看。它包含一系列CompilationPhase:CONSTANT_FOLDING_PHASELOWERING_PHASETRANSFORM_BUILTINS_PHASESPLITTING_PHASEPROGRAM_POINT_PHASESERIALIZE_SPLIT_PHASESYMBOL_ASSIGNMENT_PHASESCOPE_DEPTH_COMPUTATION_PHASEOPTIMISTIC_TYPE_ASSIGNMENT_PHASELOCAL_VARIABLE_TYPE_CALCULATION_PHASEBYTECODE_GENERATION_PHASEINSTALL_PHASE我在ADC2013做过一次关于Nashorn的演讲:博客收集帖Rhino 和 Nashorn 到底怎么运行

cad图形如何导入到rhino中

1、第一步,首先打开犀牛软件。

2、第二步,找到文件---导入这项,点击导入。

3、第三步,在弹出的导入菜单中将文件类型选择为CAD格式(*dwg)。

4、第四步,找到你要导入的CAD图,然后选择打开。

5、第五步,弹出的导入选项一般默认即可,看一下单位是否与导入图纸一致,没有问题点确定即可。

6、第六步,此时就能看到CAD图已经导入到犀牛界面了。选择旋转按钮看一下你导入的图。

7、第七步,选择文件--保存。导入进来后你就可以进行相关操作了,例如建曲面、放样等相关操作了。

8、完成效果图。

关于java导入rhino和java导入map包的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-28,除非注明,否则均为首码项目网原创文章,转载请注明出处。