赵翔鹏的Blog Xiangpeng's Thinkpad

14十二/060

Java6的一些新特征和例子代码

  • Web service更容易写了

看下面的代码,感觉跟C#很像。

1 package hello; 2 import javax.jws.WebService; 3 4 @WebService 5 public class CircleFunctions { 6 public double getArea(double r) { 7 return java.lang.Math.PI * (r * r); 8 }
除了@WebService,Java 6也支持@WebMethod。
调用web service是这样的:
public static void main(String[] args) {
    try { // Call Web Service Operation
        ws.CircleFunctionsService service =
        new ws.CircleFunctionsService();
        ws.CircleFunctions port = service.getCircleFunctionsPort();
        // TODO initialize WS operation arguments here
        double arg0 = 3.0;
        // TODO process result here
        double result = port.getArea(arg0);
        System.out.println("Result = "+result);
    } catch (Exception ex) {
    }
}

其中ws这个package可以由IDE从给定的wsdl文件自动生成。

  • 运行期编译Java源代码

以前要编译Java源码必需用javac.exe,如果想在运行时动态生成两个类,只能先System.exec调用javac,然后用 ClassLoader从硬盘上读取生成的.class文件载入类。这个过程因为要读写硬盘所以非常慢。现在可以直接用API调用javac了。

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager manager = compiler.getStandardFileManager(null, null, null);
Iterable compilationUnits = manager.getJavaFileObjects(new File("MyClass.java"));
compiler.getTask(null, manager, null, null, null, compilationUnits).call();
manager.close();
  • 内置脚本支持

以前觉得djava是个好东西,现在java6内置了脚本支持,也允许脚本跟java之间的交互。看起来djava快要完全退休了。借用sun公司的一句广告:Perhaps You ThougHt yOu couldN't program with a scripting language and Java togetheR. Which will yoU Be trYing ?

jsEngine.put("namesListKey", namesList);
System.out.println("Executing in script environment...");
try {
    jsEngine.eval("var x;" +
    "var names = namesListKey.toArray();" +
    "for(x in names) {" +
    " println(names[x]);" +
    "}" +
    "namesListKey.add(\"Dana\");");
} catch (ScriptException ex) {
    ex.printStackTrace();
}
System.out.println("Executing in Java environment...");
for (String name: namesList) {
    System.out.println(name);
} 
  • 其它

还有很多新特性,比如更好的桌面效果,可以对内存做分析如memory dump,等等,可以参考
http://java.sun.com/javase/6/
http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/beta2.html

评论 (0) 引用 (0)

还没有评论.


Leave a comment

(required)

还没有引用.