javaone

JavaOne 2013最近于9月22日至9月26日在旧金山举行。庆祝活动于周日开始,Oracle员工Peter Utzschneider , Nandini Ramani和Cameron Purdy进行了战略主题演讲 。

JUG的数量同比增长了10%。

Java的未来

Ramani讨论了Java的现状以及Java有几种不同的SDK:Java SE 7,CDC 1.1(基于SE 1.4.2),CLDC(基于SE 1.3)和Java ME,仅举几例。 过去,这些实现非常适合其特定的垂直市场,但是多年来,每种实现都有所不同,并且变得越来越孤立。 使用Java 8,将有一个紧凑的配置文件代替CDC。

ME和SE之间的API将相似,并且该语言将支持这两种语言中的所有功能。 Java 8将带来平台统一:代码可移植性,API的通用性,通用工具-从SE嵌入式到使用Java EE进行服务器端开发。 将来,将只有一种Java开发人员。

java 流打开azure blob文件 java on azure_java

平台策略的其他基石包括:同步版本(现已提供Java 8 Early Access)以及与合作伙伴(ARM,Freescale,Qualcomm)合作,使Java成为芯片组的一等公民。 8月,Oracle启动了Java Platform Integrator Program,以轻松移植和扩展Java Embedded。

Java EE 7于去年夏天发布,这是一个重要的里程碑,考虑到最近两次JavaOne大会上都在讨论它。 Purdy提到EE 7中强调了三个领域:开发人员生产力,满足企业需求和HTML5。

java 流打开azure blob文件 java on azure_java_02

两年前,当Java EE 7发布时,主要主题是云。 现在,EE 7具有许多易于使用的云部署功能,包括安全性增强,默认资源,模式生成,用于RESTful服务的客户端API和用于多租户应用程序的JSF外观。 最后,Cameron宣布Project Avatar现在是开源的。 Avatar与Node.js相似,但在JVM上运行。

Java 8是革命性的,Java又回来了

会议的主要话题是Java 8, Mark Reinhold在他的技术主题演讲中对此进行了举例说明。 Java 8包含许多新功能,包括新的日期和时间API( JSR 310 ),Nashorn JavaScript引擎,类型注释( JSR 308 ),压缩配置文件和项目Lambda( JSR 335 )。

Lambda是编程模型的最大单一升级。 曾经 它甚至比泛型更大。 自Java诞生以来,这是我们第一次对虚拟机,语言和库进行精心协调的协同进化。 但是结果仍然感觉像Java。 -马克·莱因霍尔德

Oracle公司Java语言架构师Brian Goetz继续展示了lambda如何删除许多样板,只是为了代表简单的想法。 在使用lambda之前,开发人员通常使用差的“牛肉与面包比率”来表达想法,并且通常使用内部类。 Goetz显示了以下示例:

Collection<Person> people = …;

    Iterator<Person> ip = people.iterator();
    while (ip.hasNext()) {
        Person p = ip.next();
        if (p.getAge() > 18) {
            ip.remove();
        }
    }

为了抽象化这个想法,开发人员可以将测试重写为谓词,并按以下方式编写:

Collections.removeAll(people,
                          new Predicate<Person>() {
                              public boolean test(Person p) {
                                  return p.getAge() > 18;
                              }
                          });

使用lambda,它要简单得多:

Collections.removeAll(people, p -> p.getAge() > 18);

Lambda不仅是一种更好的语法,而且还使用invokedynamic来产生更紧凑的字节码,从而提高性能。 为了证明该语言及其API已得到改进,Goetz讨论了新的流API以及如何使用它对集合执行批量操作。 例如:

int highestWeight = people.stream()
    	                      .filter(p -> p.getGender() == MALE)
    	                      .mapToInt(p -> p.getWeight())
    	                      .max();

这提供了语法,性能和抽象,并且您还获得了并行性。 Java 7添加了新的Fork / Join框架进行分解,但是它的API仍然使它变得困难。 使用Java 8,您只需更改一行即可,将stream()更改为parallelStream() :

int highestWeight = people.parallelStream()
    	                      .filter(p -> p.getGender() == MALE)
    	                      .mapToInt(p -> p.getWeight())
    	                      .max();

要了解有关Lambda项目的更多信息,请参见http://openjdk.java.net/projects/lambda或下载Java 8 。

NetBeans 7.4

NetBeans工程总监John Ceccarelli进行了Chess Game演示,演示了如何编辑HTML5应用程序(用Knockout.js编写)。 他演示了如何调整NetBeans中的属性(类似于您在Firebug或Chrome开发者工具中所做的操作),并使这些属性立即反映在浏览器中,而无需重新加载。 它看起来与IntelliJ IDEA的LiveEdit插件非常相似。

去年,NetBeans推出了Project Easel,该项目旨在向NetBeans添加高级HTML5支持。 Ceccarelli提到社区的React是“嘿,太好了,但是我们希望在EE项目中使用它。” 好消息是NetBeans 7.4 RC1在JavaOne之前发布,它包括对HTML5,Java EE,Java Web和Maven Web项目的支持。

除了实时编辑HTML和CSS,NetBeans 7.4还包括对Angular,jQuery和Knockout.jsJavaScript框架支持。 这意味着代码编辑器会知道您的所有DOM ID以及JavaScript中的模型名称。 NetBeans 7.4全部关于移动Web和移动混合(通过Cordova 3.0支持)。 有趣的是,除桌面浏览器外,如何在移动设备上使用其实时编辑功能。 可以从netbeans.org下载最新的候选版本。

用于上述演示的Chess Server是使用Java EE 7编写的,并已部署在GlassFish 4上。该应用程序具有五个不同的模块:Chess Endpoint,玩家注册,Chess Engine,Chess Game Manager和Persistence Manager。

java 流打开azure blob文件 java on azure_人工智能_03

Chess Server使用许多新的Java EE技术,包括:WebSockets,批处理,EJB,JPA,JAX-RS 2.0。 客户端和服务器之间的所有通信都是通过JSON完成的。 GlassFish团队的成员Santiago Pericas-Geertsen显示了一些代码,这些代码说明了使用Java EE 7设置WebSocket端点非常容易:

@ServerEndpoint(value = "/chessserver",
                    encoders = MessageEncoder.class,
                    decoders = MessageDecoder.class);
    public class ChessServerEndpoint {

        @Inject private GameCatalog catalog;

        @OnMessage
        public Message onMessage(String message, Session session) {
            return message.processMe(this);
        }
        ...
    }

与该端点通信的客户端API非常相似,并且易于实现。

Oracle技术主题演讲中展示的最后一项技术创新是DukePad。 DukePad是基于Raspberry Pi和JavaSE 8 Embedded的自己动手做的家用平板电脑。 他们发现CPU性能不是很好:Raspberry Pi CPU的速度几乎与Pentium II一样快,比Samsung Galaxy S4慢14倍,比Intel Core i7处理器慢94-100倍。 但是,GPU相当不错,比奔腾II(1996年)快400倍。

OpenJFX的大多数组件都是开源的,包括iOS和Android原型。 演示者提到其论坛非常健康,并且已经收到了许多来自用户的错误报告。 他们还收到了大量社区捐款。 JavaSE 8中包含JavaFX。

对于Java 9及更高版本,Oracle采取了许多措施。 主要的是基于GPU的Java,Reification(摆脱了泛型的擦除),JNI 2.0,内存高效的数据结构以及使用Jigsaw构建模块化平台的方法。

Java社区

Java社区主题演讲由Oracle产品管理高级总监Donald Smith揭开序幕。 他带领许多不同的人上台谈论启发性的Java技术最终用户案例。

Tori Wieldt讨论了“ Raspberry Pi挑战”以及如何有25位开发人员参与并完成了7个项目。 Heart of Glass(通过Google Glass实时监控心率)和MTAAS(“怪物卡车即服务”)是此活动中成功的两个项目。 还宣布Oracle已经与Raspberry Pi基金会签署了OEM协议。 他们将开始在其某些图像中包含Java SE,因此Java将被立即提供!

社区主题演讲中其他值得注意的公告包括: Square已成为OpenJDK的成员, Devoxx4Kids正在寻找JUG领导人和家长在自己的城市举办研讨会。 当然,Aditya Gupta的演示如何成为Minecraft黑客是其中的亮点之一。 它也是主题演讲中使用的首批Eclipse演示之一。 他让猪飞起来,爆炸创造了更多爆炸,并在父亲阿伦·古普塔 ( Arun Gupta )和《我的世界》( Minecraft Forge)的帮助下学习了大部分爆炸。

Oracle学院得到了Alison Derbenwick Miller的提及。 它为K-12学生以及大学提供课程。 去年,它为250万学生提供了教育,并提供学生工作坊,教师发展和认证折扣。

在社区主题演讲的教育部分之后,展示了许多机器人演示。 詹姆士·高斯林(James Gosling)甚至还作为嘉宾出场,谈论他的工作。

Java回归的证明

该策略和技术主题演讲有助于解释Java为什么会回归。 Java 8希望通过减少样板代码使再次用Java编程变得有趣,并且Java EE 7中有许多API应该使构建现代应用程序变得容易。 最近的一些文章中有进一步的证明:

  • 连线的Java的第二次来临:遗物重返规则网
  • Dobb博士的“ 如果Java快死了,那肯定看起来很健康”

如果您今年没有机会参加JavaOne,则可以将其添加到明年的日历中。 如果不是出于技术内容,请进行网络连接。 Oracle鉴赏活动免费提供Maroon 5和Black Keys提供的美食,啤酒和音乐。 各方回来了,展览厅里到处都是。

最重要的是,开发人员社区的热情似乎和以往一样强大。

翻译自:

javaone