java类文件版本之间有什么区别

java类文件版本之间有什么区别,java,maven,jvm,Java,Maven,Jvm,在maven的文档中是这样写的 “还请注意,目前默认源设置为1.5,而 默认目标设置为1.5,与运行Maven的JDK无关 如果要更改这些默认值,应设置源和 目标,如设置Java的-source和-target中所述 编译器。” 我们使用的java版本是Java7 如果我将目标设置更改为1.7,会有什么好处 代码会运行得更快吗 内存使用会减少吗?Java7意味着JDK/JRE1.7。但是,真正的名称是Java7(1.X是5之前遗留下来的旧命名约定和/或指内部版本号) 目标版本意味着您编译字节码

在maven的文档中是这样写的

“还请注意,目前默认源设置为1.5,而 默认目标设置为1.5,与运行Maven的JDK无关 如果要更改这些默认值,应设置源和 目标,如设置Java的-source和-target中所述 编译器。”

我们使用的java版本是Java7

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

代码会运行得更快吗


内存使用会减少吗?

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

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

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

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

更新:关于命名约定:

看一看

非常有趣的是,在Java5之后,命名约定从1.5更改为5

代号老虎。最初编号为1.5,仍然用作 内部版本号。数字改为“更好地反映实际情况” 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日)
  • 爪哇SE 6(2006年12月11日)
  • 爪哇SE7(2011年7月28日)
  • 爪哇SE 8(2014年3月18日)
  • JavaSE9
  • Java SE 10

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

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

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

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

      更新:关于命名约定:

      看一看

      非常有趣的是,在Java5之后,命名约定从1.5更改为5

      代号老虎。最初编号为1.5,仍然用作 内部版本号。数字改为“更好地反映实际情况” 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日)
      • 爪哇SE 6(2006年12月11日)
      • 爪哇SE7(2011年7月28日)
      • 爪哇SE 8(2014年3月18日)
      • JavaSE9
      • Java SE 10

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

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


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

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

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


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

      然后您将能够使用Java 7及其自Java 5以来的所有增强功能。顺便说一句,你现在也可以使用Java8了,这样你就可以使用Java7以及自Java5以来的所有改进。顺便说一句,您现在也可以使用Java8了。请记住,这只是字节码兼容性。您仍然在针对JDK7类进行编译,因此在使用目标版本1.6时,请确保不要使用1.6中不可用的API(我曾经遇到过这个问题,它会造成伤害)。直到有人告诉你,你才意识到你做错了什么