javanashorm的简单介绍

博主:adminadmin 2022-11-22 14:30:06 107

今天给各位分享javanashorm的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java有哪些简洁的ORM框架

java流行的框架这个就太多了,并且每天都在更新迭代,从一下几方面总结。

1、整合数据库的orm框架:Mybatis(batis)、Hibernate、Jpa、Jdo等

2、缓存以及分布式缓存:Ecache、Memcached、Redis等

3、web框架:WebWok、Struts2、SpringMvc等

4、远程调用的相关的服务框架:dubbo、webService等

4、其他大大小小,在各领域发挥的有很多,如日志处理Log4J、sj4j,xml处理dom4j等等数不胜数。

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) } );

java里orm的三个框架叫什么

orm并不是指的三个框架,orm翻译过来叫对象关系映射,涉及到对象和数据库表的映射的所有框架都是orm框架,这一类框架主要用于将对象持久化到数据库,比如hibernate框架就是orm框架,

javanashorm的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、javanashorm的信息别忘了在本站进行查找喔。

The End

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