maven java 文件_关于Maven:java类文件版本之间有什么区别

在Maven的文档中是这样写的

https://maven.apache.org/plugins/maven-compiler-plugin/

"Also note that at present the default source setting is 1.5 and the

default target setting is 1.5, independently of the JDK you run Maven

with. If you want to change these defaults, you should set source and

target as described in Setting the -source and -target of the Java

Compiler."

我们使用的Java版本是Java 7。

如果我将目标settigs更改为1.7,会有什么好处?

代码运行速度会更快吗?

内存使用量会更少吗?

然后,您将能够使用Java 7及其从Java 5开始的所有改进。顺便说一句,您现在也可以使用Java 8。

Java 7表示JDK / JRE 1.7。但是,真实名称是Java 7(1.X是5之前的旧命名约定,并且/或者是指内部版本号)。

目标版本表示您编译字节码以符合特定Java版本的规范(支持的功能)。因此,如果要编译将在运行Java 1.6 JVM的计算机上运行的代码,则需要编译针对Java 1.6的代码,并且应将自己限于Java 1.6可用的语法/选项。

否则,您将获得Java最小/最大版本。内存使用情况取决于运行代码的实际JVM,以及它是服务器JVM还是标准JVM。

通常,您应该针对目标机器JVM支持的目标而不是更高目标。您的代码也不得使用在比您的定位更高的版本中引入的功能(例如1.6中的菱形运算符,因为它是1.7中引入的)。

更新:关于命名约定:

看看http://en.wikipedia.org/wiki/Java_version_history。

有趣的是,Java 5之后的命名约定实际上从1.5更改为5。

Codename Tiger. Originally numbered 1.5, which is still used as the

internal version number. The number was changed to"better reflect the

level of maturity, stability, scalability and security of the J2SE."

版本-来自维基百科:

JDK Alpha和Beta(1995)

JDK 1.0(1996年1月23日)

JDK 1.1(1997年2月19日)

J2SE 1.2(1998年12月8日)

J2SE 1.3(2000年5月8日)

J2SE 1.4(2002年2月6日)

J2SE 5.0(2004年9月30日)

Java SE 6(2006年12月11日)

Java SE 7(2011年7月28日)

Java SE 8(2014年3月18日)

Java SE 9

Java SE 10

还请记住,这仅是字节码兼容性。您仍在针对JDK7类进行编译,因此请确保在使用目标版本1.6时不要使用1.6中不可用的API(我曾经遇到过这个问题,很痛)。您将不会意识到自己做错了什么,直到有人实际尝试使用1.6 Java执行代码

@kutschkem这是真的。尽管如果您使用的是eclipse,它会根据您的规格/目标自动生成并列出错误...至少这就是我所看到的。

@kutschkem实际上,如果您想确保代码可以在Java 6上实际运行,则应使用Java 6(或至少使用指向Java 6类库的bootclasspath)对其进行编译。

编译器几乎没有优化,而您使用的版本几乎没有性能差异。

主要区别在于不同版本中提供的功能。 Java 8比Java 7具有更多功能,而Java 7具有比Java 5.0更多的功能。如果要使用较新的功能,则需要较新的版本,但如果仅使用较旧的版本,则将对运行时的性能产生影响。

运行代码的JVM决定了性能。通常,较新的版本性能更好,但是Java 8可能会更快,也可能不会比Java 7快。一旦发布了一段时间,它可能会比Java 7更快。

完全正确。在这一点上,有关"及时编译"(en.wikipedia.org/wiki/Just-in-time_compilation)的阅读很有用。它的确随JVM的变化而变化。 JIT"是在程序执行过程中-在运行时-而不是执行之前完成的编译"。

@ maythesource.com唯一完成的优化是编译时间常数内联,而AFAIK所有版本的javac都可以这样做。

是的,完全同意。所有实际的优化都在运行时进行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值