我试图在我的使用JBoss 6.4和Java 1.7的Web应用程序中启用TLS 1.2.我-Dhttp.protocols = TLSv1.2在我的应用程序环境中,但它似乎不适合我.
我有什么办法可以启用TLS 1.2吗?
我写了一个简单的程序
context = SSLContext.getInstance("TLSv1.2");
context.init(null,null,null);
SSLContext.setDefault(context);
SSLSocketFactory factory = (SSLSocketFactory)context.getSocketFactory();
SSLSocket socket = (SSLSocket)factory.createSocket();
protocols = socket.getEnabledProtocols();
Run Code Online (Sandbox Code Playgroud)
在应用程序中运行此程序后,TLS 1.2启用.我不想运行此程序,但我想在应用程序启动期间直接启用它.有什么办法吗?
public List<String> foo1() {
List<String> retval = bar();
if (retval == null)
return Collections.emptyList();
else
return retval;
}
public List<String> foo2() {
List<String> retval = bar();
return retval == null ? Collections.emptyList() : retval;
}
Run Code Online (Sandbox Code Playgroud)
为什么foo1()编译很好而foo2()有错误?(更准确地说"类型不匹配:无法从List <capture#1-of?extends Object>转换为List <String>")
我原以为这两个函数都会编译成相同的字节码,所以一个聪明的编译器应该推断出正确的类型emptyList()...
考虑下面的代码片段,我在进行一些重构之后,在检查为什么构建服务器报告了一个破坏的构建但在我的IDE中没问题时:
List<String> text;
...
for (String text : text) {...}
Run Code Online (Sandbox Code Playgroud)
因此,相同的名称用于for-each中的String和List.
这当然不是很明智,但是在重命名之前遵循我的好意,我看到上面的代码用JDK 8编译得很好,但是给出了JDK 7的以下错误:
error: for-each not applicable to expression type
for (String text : text) {
^
required: array or java.lang.Iterable
found: String
1 error
Run Code Online (Sandbox Code Playgroud)
我知道,变化在JDK中这方面的几个部分组成 - 但有人可以见识一下为什么会出现正是这种行为?
更新: 由于我得到了一些关于不同行为的评论,这里是一个完整的示例类:
import java.util.Arrays;
import java.util.List;
public class Strange {
List<String> text = Arrays.asList("Max", "Alex", "Maria");
public static void main(String[] args) {
new Strange().doSomething("Alex");
}
public void doSomething(String name) {
for (String text : text) {
System.out.println(text.equals("Alex"));
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是编译过程和输出(Windows …
我更喜欢Java 7引入的泛型钻石语法 - 而不是从节省时间的角度来看(毕竟大多数IDE都为你填补了这一点)但仅仅因为它使代码看起来更清晰.由于这个和其他原因(主要是我正在开发一个新的软件和Java 7中的一些新API将是有用的),我很可能会切换现有的代码库来使用/需要Java 7.
然而,有一个公平的块已经编写了前钻石语法,我想始终使用钻石语法.是否有IDE快捷方式(我使用Netbeans但显然可以在任何免费的IDE中打开项目来执行任务)或其他可以自动切换现有通用代码以使用菱形语法的东西?
当cobertura支持java 7时的任何想法?
找到http://sourceforge.net/tracker/index.php?func=detail&aid=3295711&group_id=130558&atid=720018
我们更喜欢cobertura over emma和其他代码覆盖工具,看起来我们必须再次重做所有这些,现在它们都没有支持java 7.
谢谢
我听说可以在下一个Java标准中引入关闭,该标准计划在明年夏天左右发布.
这种语法是什么样的?
我在某处读到,在Java中引入闭包是一个比java中的泛型更大的变化.这是真的吗?利弊?
(到现在我们肯定知道闭包不会包含在下一个Java版本中)
要么
编辑:http://puredanger.com/tech/2009/11/18/closures-after-all/:D
edit2:重新思考JDK7:http://blogs.oracle.com/mr/entry/rethinking_jdk7
edit3:没有时间可以丢失!:http://blogs.oracle.com/mr/entry/quartet
从Java 7上的各种在线文章中我已经知道Java 7将具有如下所示的集合文字1:
List<String> fruits = [ "Apple", "Mango", "Guava" ];
Set<String> flowers = { "Rose", "Daisy", "Chrysanthemum" };
Map<Integer, String> hindiNums = { 1 : "Ek", 2 : "Do", 3 : "Teen" };
Run Code Online (Sandbox Code Playgroud)
我的问题是:
of在所有集合类中提供静态方法,可以按如下方式使用:List<String> fruits = ArrayList.of("Apple", "Mango", "Guava");
IMO看起来和文字版本一样好,而且也相当简洁.那么为什么他们必须发明一种新的语法(编辑: '新'我的意思'新的Java'.)?
List<String> fruits = [ "Apple", "Mango", "Guava" ];什么List我真的得到什么?它会是ArrayList或者LinkedList别的吗?1正如评论中所指出的,集合文字并没有为Java 7,也不是Java 8做出决定.(这是Oracle开发人员Brian Goetz 的一封电子邮件,总结了不包括此功能的基本原理;这里是提案本身.)
JDK 7的哪些功能(不包括invokedynamic,因为它不被java使用)导致新的类文件版本不符合JDK 6.它表明所有功能都可以由生成粘合代码的编译器实现.例如,switch语句中的String可以使用编译器生成的重复ifeq语句来实现.我希望能够为编译器提供-source 1.7 -target 1.6标志以符合jre 6,同时在jdk 7中使用项目硬币功能.
我知道Java 7的运行时功能不适用于Java 6,但由于没有添加新的字节代码,新的字节代码invokedynamic只与非Java语言相关,我想知道转换Java有多难7源代码(新switch语句,菱形运算符)到纯Java 6(即能够开始将源转换为Java 7而不会失去Java 6兼容性).
有什么指针吗?
我正在尝试安装Java来使用Eclipse(我按照所有说明安装了Java和Eclipse)但是我的Eclipse由于一些错误的配置而无法启动.我无法弄清楚为什么它不适合我.
Eclipse安装:
C:\eclipseC:\eclipse\eclipse.exe当我尝试使用此快捷方式运行Eclipse时,我会看到关注Eclipse启动画面一秒钟后它会消失.Eclipse根本没有启动.

JAVA安装:
C:\Program Files\Java\jdk1.7.0_10C:\Program Files\Java\jre7环境变量配置:
JAVA_HOME = C:\Program Files\Java\jdk1.7.0_10
PATH = C:\Program Files\Java\jdk1.7.0_10\bin;
Run Code Online (Sandbox Code Playgroud)
我使用控制台测试了我的Java安装并找出了这个问题,但我不知道如何修复它,我想这会导致Eclipse无法启动.
问题:
