标签: java-7

MiGLayout是否会包含在Java 7中?

到目前为止我所能找到的是这个(开放的)Sun bug/RFE条目,获得426 506票:

http://bugs.sun.com/view_bug.do?bug_id=6530906

它在RFE列表中位居第三.

很多人都表示它将被包含在Java 7中......但是有没有人有关于是否包含MiGLayout的任何明确信息?


回答

嗯,似乎Chad有一个观点 - 它不在任何地方的官方列表上,时间肯定会消失,所以除非发生重大事件,否则可以说MiGLayout显然不会包含在Java 7中,尽管有426票来自社区.太糟糕了.

java miglayout java-7

11
推荐指数
1
解决办法
1576
查看次数

任何人都可以简单地描述3个闭包提案与Java当前状态之间的差异吗?

我正在阅读将在Java 7中出现的闭包.

我有点困惑,因为一方面有很多很好的文章描述了新的java闭包.但另一方面,有3种不同的规格,有些文章只是过时了,因为描述的不是最新的提案.

因此,如果有人从一开始就跟踪java闭包的进度,那么请在很短的时间内描述所有3个提案及其当前状态.

关于闭包的另一件事是,是否只存在一个开发线或正在开发不同的版本(例如,来自Sun,来自Google,来自Apache等的闭包)?

java closures specifications java-7

11
推荐指数
1
解决办法
412
查看次数

IntelliJ,Maven和Java 7

所以我在IntelliJ 10.5中打开了一个现有项目作为maven项目.我首先将JDK 7添加到我的SDK列表中以试用这些功能.但是由于某种原因,我的mvn命令会失败,所以我将maven runner切换回1.6.但我得到一个奇怪的错误,其中一些maven命令仍在使用Java 7运行.

在Maven Projects视图中,当我右键单击模块中的生命周期并选择Run Maven Build时,一切正常,但是当我选择Run"clean"时,它仍然使用1.7 JDK.我已从列表中删除了JDK 7,现在我收到一条错误消息,说它无法找到JRE'1.7'.

老实说,我不知道如何解决这个问题,但如果有人有任何建议会很好.

java maven-2 intellij-idea java-7

11
推荐指数
1
解决办法
1万
查看次数

为什么菱形运算符不能在Java 7中的addAll()调用中工作?

给出了泛型教程中的这个例子.

List<String> list = new ArrayList<>();
list.add("A");

// The following statement should fail since addAll expects
// Collection<? extends String>

list.addAll(new ArrayList<>());
Run Code Online (Sandbox Code Playgroud)

为什么最后一行不能编译,它似乎应该编译.第一行使用非常相似的构造并编译没有问题.

请详细解释.

java generics diamond-operator java-7

11
推荐指数
2
解决办法
1万
查看次数

Java OutOfMemory异常:加载zip文件时出现mmap错误

我使用JVM参数在生产环境(rhel 5.2 x64,oracle jre 1.7_05,tomcat 7.0.28)上运行我的应用程序:

-Xms8192m -Xmx8192m -XX:MaxPermSize=1024m 
-Doracle.net.tns_admin=/var/ora_net -XX:ReservedCodeCacheSize=512m -XX:+AggressiveOpts -XX:+UseFastAccessorMethods 
-XX:+UseStringCache -XX:+OptimizeStringConcat -XX:+UseCompressedOops -XX:+UseG1GC -Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=9026 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
Run Code Online (Sandbox Code Playgroud)

经过几次,我有像这样的堆栈跟踪:

Java HotSpot(TM) 64-Bit Server VM warning: Attempt to deallocate stack guard pages failed.
Java HotSpot(TM) 64-Bit Server VM warning: Attempt to allocate stack guard pages failed.
mmap failed for CEN and END part of zip file
[...]
Caused by: java.lang.OutOfMemoryError: null
    at java.util.zip.ZipFile.$$YJP$$open(Native Method) ~[na:1.7.0_05]
    at java.util.zip.ZipFile.open(Unknown Source) ~[na:1.7.0_05]
    at java.util.zip.ZipFile.<init>(Unknown Source) ~[na:1.7.0_05]
    at java.util.zip.ZipFile.<init>(Unknown Source) ~[na:1.7.0_05]
    at …
Run Code Online (Sandbox Code Playgroud)

java mmap out-of-memory java-7

11
推荐指数
1
解决办法
1万
查看次数

关于Java-7中的签名多态方法

据我所知,随着Java 7中MethodHandle的引入,引入了编译器生成的方法重载.

MethodHandle的javadoc状态(我已经修剪了示例):

以下是一些用法示例:

Object x, y; String s; int i;
mh = ...
// (Ljava/lang/String;CC)Ljava/lang/String;
// (String, char, char) -> String
s = (String) mh.invokeExact("daddy",'d','n');

// (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
// (Object, Object, Object) -> Object
x = mh.invokeExact((Object)1, (Object)2, (Object)3);

// (Ljava/util/List;)I
// (List) -> int
i = (int) mh.invokeExact(java.util.Arrays.asList(1,2,3));

// (Ljava/io/PrintStream;Ljava/lang/String;)V
// (PrintStream, String) -> void
mh.invokeExact(System.out, "Hello, world.");
Run Code Online (Sandbox Code Playgroud)

上述每个调用都会生成一个invokevirtual指令,其名称为invoke,注释中指示的类型描述符.参数类型直接取自实际参数,而返回类型取自立即应用于调用的强制转换.这个演员可能是一个原始人.如果缺少,则如果在使用返回值的上下文中发生调用,则类型默认为Object.如果调用作为语句发生,则转换是不可能的,并且没有返回类型; 电话无效.

实际上,invokeExact和friends的行为就好像每个可能的参数组合和返回类型都有重载.

我听说MethodHandles正在为Java 8中的功能做准备,比如lambdas.(我知道它们对脚本语言已经很有用了.)

[/介绍]

那么,是否有更多这些编译器生成的重载隐藏在Java中?是否有提示将来会有更多这些提示(例如,使用扩展方法)?为什么首先需要它?仅速度?它如何帮助lambdas(我认为lambdas会编译成一个匿名的内部类)?

简而言之,理由是什么; 为什么它们(生成的重载)现在和将来都有用?

更新:我在这里称之为编译器生成的重载,Oracle人称之为签名多态.

java-7 java-8 methodhandle

11
推荐指数
1
解决办法
2079
查看次数

com.sun.tools.attach.AttachNotSupportedException:无法打开套接字文件:目标进程未响应或未加载HotSpot VM

我AttachNotSupportedException 在linux(ubuntu 64bit)上运行jmockit测试时得到的.Java版本是1.7.0_51.这个JDK来自Oracle.使用ant运行测试(可能不相关)

查看堆栈跟踪.

[junit] 
[junit] java.lang.RuntimeException: com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded
[junit]     at mockit.internal.startup.JDK6AgentLoader.getVirtualMachineImplementationFromEmbeddedOnes(JDK6AgentLoader.java:89)
[junit]     at mockit.internal.startup.JDK6AgentLoader.loadAgent(JDK6AgentLoader.java:54)
[junit]     at mockit.internal.startup.AgentInitialization.initializeAccordingToJDKVersion(AgentInitialization.java:21)
[junit]     at mockit.internal.startup.Startup.initializeIfNeeded(Startup.java:136)
[junit]     at mockit.internal.startup.Startup.initializeIfPossible(Startup.java:169)
[junit]     at junit.framework.TestResult.<clinit>(TestResult.java:15)
[junit]     at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:356)
[junit]     at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1165)
[junit]     at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:1016)
[junit] Caused by: com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded
[junit]     at sun.tools.attach.LinuxVirtualMachine.<init>(LinuxVirtualMachine.java:106)
[junit]     at mockit.internal.startup.JDK6AgentLoader.getVirtualMachineImplementationFromEmbeddedOnes(JDK6AgentLoader.java:79)
[junit]     ... 8 more
[junit] Exception …
Run Code Online (Sandbox Code Playgroud)

linux jmockit java-7

11
推荐指数
3
解决办法
1万
查看次数

为什么Java中的多捕获功能要求异常是最终的?

关于添加到Java 7 的多捕获功能的Oracle文档声明该catch子句中的异常参数是隐式的final.

我的问题是:这种限制有什么意义?因为我似乎无法找到它带来的一个重要改进.将引用对象标记为final仅保护引用本身不被修改,而不是它引用的对象,并且永远不会禁止创建另一个引用并以任何他们想要的方式修改它.

关于SO的一个有点相关的问题讨论了为什么修改catch子句中的异常引用不是最明智的事情,但它涉及到该子句的任何使用catch,而不仅仅是它的多捕获形式.那么为什么Java会为多重捕获制造一个例外,并以特殊的方式对待它?

谢谢!

java exception java-7 multi-catch

11
推荐指数
1
解决办法
695
查看次数

Objects.compare()方法的目的是什么?

Java 7引入了Objects包含" null-safe或null-tolerant"方法的类,包括compare(T, T, Comparator<T>).但我什么时候会用

Objects.compare(left, right, comparator);
Run Code Online (Sandbox Code Playgroud)

简单地打电话

comparator.compare(left, right);
Run Code Online (Sandbox Code Playgroud)

?

Objects.compare只有null-safe如果comparator也是如此,为什么我会包装比较调用?首先检查对象标识的优化似乎应该在比较器本身中完成.我能看到的行为中唯一真正的区别在于comparator.compare(left, right)抛出一个NullPointerException如果所有的comparator,left而且right是null,而Objects.compare不是; 这似乎并不是一个重要的考虑因素,可以保证新的标准库方法.

我错过了一些明显的东西吗?

java java-7

11
推荐指数
1
解决办法
532
查看次数

Java 8性能VS. Java 7

我正在通过JNI使用C++库开发一个成像处理Java 7u80应用程序.

由于我愿意与Java 8u60 并行执行流,我刚刚切换到JDK 8并重新启动了我的所有单元测试.

Java 8u60 Overall duration: **35'408 [ms]**
Java 7u80 Overall duration: **29'581 [ms]**

在我看来,Java 7比Java 8快17%(相同的代码,代码级别分别为7和8).

  1. 我想知道这样的结果是否特定于我的应用程序,或者其他人是否已经注意到将Java 7的性能降级为8?
  2. 是否在代码中进行了特殊的优化以获得最佳的Java 8?

如果不能做任何事情,我宁愿用Java 7而不是8来实现多线程代码,以保持我已经拥有的Java 7性能.

java multithreading java-7 java-8

11
推荐指数
1
解决办法
5274
查看次数