有 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版本是Java7

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

代码会运行得更快吗

内存使用会减少吗


共 (2) 个答案

  1. # 1 楼答案

    编译器几乎不进行任何优化,您使用的版本对性能几乎没有影响

    主要区别在于不同版本中提供的功能。Java8比Java7有更多的特性,Java7比Java5.0有更多的特性。如果要使用较新的功能,则需要较新的版本,但如果只使用较旧的版本,则会对运行时的性能产生影响

    运行代码的JVM决定了性能。一般来说,较新版本的性能更好,但是,由于是新版本,Java8可能比Java7快,也可能不比Java7快。一旦它推出一段时间,它可能会比Java7更快

  2. # 2 楼答案

    Java7意味着JDK/JRE1.7。但是,真正的名称是Java7(1.X是5之前遗留下来的旧命名约定和/或指内部版本号)

    目标版本意味着您编译字节码以遵守特定java版本的规范(支持的特性)。因此,如果您想编译将在运行Java1.6JVM的机器上运行的代码,您需要编译针对Java1.6的代码,并且您应该限制自己使用Java1.6可用的语法/选项

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

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

    更新:关于命名约定:

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

    非常有趣的是,在Java5之后,命名约定从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."

    Versions - from wikipedia

    • 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日)
    • 爪哇SE 6(2006年12月11日)
    • 爪哇SE7(2011年7月28日)
    • 爪哇SE 8(2014年3月18日)
    • JavaSE9
    • Java SE 10