在JavaOne 2016主题演讲开场,来自Oracle的Java产品管理负责人Sharat Chander指出Java盛行于个人和工作的日常生活各个领域,无论是大数据、物联网甚至是云端!他给观众展示了一下Oracle学院,这可以让年轻的Java开发者获取相关知识、相互交流并参与到Java社区中。
他谈及了一个名为go.java的Oracle的补充倡议,旨在激励下一代开发者继续学习。Oracle同时为Java开发人员启动了一个新的开发者门户——Oracle Developer Gateway(https://developer.oracle.com/index.html)。
接下来Intel软件与服务团队副总裁Michael Greene上台,他主要围绕“Java使智慧、互联的世界成为可能”展开。Greene将一个成长周期描述为智能设备驱动数据向云端迁移,最终改变企业本身的过程。
他鼓励企业挖掘这个Java所提供的端到端的机会,并举例Intel是如何通过在OpenJDK上的合作帮助Java变得更简单、高效、易扩展。他之后将讲台让给来自Cern(欧洲核子研究组织)的Benjamin Wolff,Wolff介绍了Cern运行在JDK上的大规模控制和监测设备及ERP系统。
之后来自Twitter的工程副总裁Nandini Ramani上台加入Greene的演讲。Ramani透露了Twitter无法应对在2010世界杯期间所产生的数据流量,以及他们如何做出工程上的决策,从单独的Ruby-on-Rail工程迁移到运行在Linux上基于OpenJDK的Java、Scala微服务架构。在最近的2014世界杯期间,Twitter得以轻松处理3500万微博。
接下来Databricks首席架构师兼联合创始人Raynold Xin谈论了Apache Spark。Spark应用的范围涉及从商业智能到机器学习(人工智能)以及实时数据分析。Xin表示,JVM首先需要通过增强矢量优化来改进数值计算,这其中Panama项目将扮演一个重要角色。其次,JVM需要暴露低层次的硬件特性。
之后Oracle开发副总裁Georges Saab上台并介绍了南卡罗莱纳大学研究教授Anita Sengupta博士。Sengupta博士向观众深入介绍了诸多探测器在火星的研究成果,包括最新的好奇号火星车。她着重强调了火星和地球的异同,并谈论了他们在系统开发和测试中所付出的工程上的努力。
Sengupta博士之后通过一个可视化演示,展示了真实的着陆流程以及真实着陆及计算模型的着陆后分析。她论述了火星上不同的信息收集系统,如光谱感应器、气象感应器、生命形式探测仪。Sengupta博士预言未来探索性科技的研究会将人类送往火星,她想知道人们是否会欢迎这样的探索并在新的世界定居。
接下来Saab回到讲台,带领观众回顾了过去,然后论述了Java的成长及其中的哲学。(见下图)
Saab谈及需要满足开发者的效率要求,之后他宣布Oracle JDK很快将发布在Docker上。之后Mazda的IT解决方案部门员工经理Masahiro Yoshioka和Wavefront联合创始人兼首席架构师Clement Pang介绍了他们的成功案例。Saab恳请观众升级到Java 8,许多尝鲜者和开发人员已经下载了Java SE 9。之后他邀请Oracle Java平台组首席架构师Mark Reinhold上台。
Reinhold从广受期待的Java 9开始,让观众一睹所有将要包含的JDK增强提案(JEP)。他谈及新的JShell交互式命令行(在InfoQ最近的新闻中已有介绍:https://www.infoq.com/news/2016/09/JavaOne-2016-Keynote-JShell)。Reinhold之后说到Jigsaw项目,这个项目为当前的一体化的平台定义了一个标准的模块化系统。模块化系统拥有可伸缩、易用、易兼容的特性。该模块化系统设计的原理内部提供了强大的封装和可靠的配置。之后他展示了使用JShell的例子:
Reinhold在讨论完JShell控制台后,拿出下图介绍了72个Java标准模块。
他同时确认现存的代码可以毫无障碍地在上面运行。总体来说,如果应用只是使用Java SE类库,就可以毫无问题地运行在Java 9上。但内部API出于安全和集成的原因有所封装,所以应用如果对这些内部API有依赖那么可能会遇到问题。
Reinhold表示,JDK将与JLink一起构建,他也展示了如何使用JLink来制作小型JDK:
之后Reinhold邀请Oracle的Java语言架构师Brian Goetz上台,谈论了Java 10以及之后的发展。Goetz讨论了样板代码(boilerplate code),以及如何将它们从简单的领域类(domain classes)中移除。他同时谈到了将类型推断(type inference)范围扩展到局部变量。Reinhold就Valhalla和Panama这些大项目询问了Goetz。InfoQ已在对JavaOne 2015主题演讲的报道中对它们有所介绍。
此次主题演讲由Oracle云应用基金会副总裁Anil Gaur压轴。想要了解更多Gaur的演讲,请参考InfoQ的相关报道(Java 20年,以后将往哪儿走?)。
随着企业规模扩张和业务量的急剧增加,作为系统核心的数据库相关开发也会经历一个由单一团队发展为多团队;由单机扩张到集群;由单数据库发展为多数据库;由采用单一数据库产品到多种数据库产品并存的过程。
伴随这一过程的是如何管理数据库扩展,如何规范数据库访问,如何保护数据库投资,如何应对访问量增加,如何预防安全问题等一系列挑战。
作为国内在线旅游行业的翘楚,携程也曾经面对同样困扰。为了应对这些挑战,实现企业10倍速发展,携程开发了具有自己特色的数据库访问框架Ctrip DAL。
Ctrip DAL支持流行的分库分表操作,支持Java和C#,支持MySQL和MSSqlServer。使用该框架可以在有效地保护企业已有数据库投资的同时,迅速,可靠地为企业提供数据库访问层的横向扩展能力。
整个框架包括代码生成器和客户端。工作模式是使用代码生成器在线生成代码,通过DAL客户端完成数据库操作。生成器具有丰富的向导指引,操作简单清晰,既可以批量生成标准DAO,也可以在方法级别定制数据库访问。客户端则可以简单地通过标准的maven方式添加依赖。
Ctrip DAL与一般数据库框架最大的不同是从企业跨部门的角度,统一管理数据库相关资源。通过部署代码生成器,企业可以做到有效的管理全公司的DAL开发团队,明确数据库归属和定制数据库访问。
通过代码生成器生成的标准DAO代码与客户端配合使用,可以大幅提高工作效率,保证代码质量。解决了业内常见的伴随业务成长而带来的系统维护困难,开发效率低下,代码风格五花八门,代码质量参差不齐等痛点问题。
为了适应不同公司的实际情况,DAL定义了丰富的扩展接口,覆盖了从数据源管理,数据库映射,连接串读取到自定义访问方式等等方方面面的功能。同时为了方便系统监控还内置了系统状态,日志和统计模块。
Ctrip DAL由携程技术中心框架部DAL团队开发,历经3年不断打磨,在长期的实际使用中吸收了大量用户反馈。目前携程超过117个独立DAL团队通过代码生成器管理数据库和创建DAO。2000多个应用在使用DAL框架,占携程所有数据库应用总数超过90%。
本次开源的产品包括代码生成器和Java客户端,C#客户端也将近期开源。DAL各个组件的安装和使用都有详细的文档说明,开箱即用。
通过开源携程自身使用DAL框架,携程希望在满足自身需求的同时,服务于广大企业,并继续为中国方兴未艾的开源运动出点力。
Ceylon 1.3发布,支持构建Android应用等特性
Ceylon是RedHat针对JVM的强静态类型语言,目前达到了1.3版本。在1.2版本发布一年之后,Ceylon 1.3会是一个主发布版本,它带来的特性包括对Android的支持、npm集成以及针对IntelliJ IDEA和Android Studio的一个插件,除此之外,还有新的语言特性和增强。
Ceylon能够编译成JavaScript,它很早就支持创建针对iOS和Android的混合(hybrid)应用,例如使用Apache Cordova。新的Ceylon 1.3能够稳定支持Android原生应用的构建,这项特性在今年早些时候的夜间构建版本中首次对外公开。
与此相关的,Ceylon 1.3引入了一个针对Android Studio和IntelliJ IDEA的新插件,这个插件与使用Eclipse进行开发时,所提供的支持是相对应的。这个新的插件包含了对上下文补全、重构、源码导航以及在线文档集成的支持。
其他有趣的新特性还有npm集成,通过它能够很容易地从npm中导入模块并将模块发布到npm之中,另外它还支持通过一个CLI插件使用WildFly Swarm开发微服务。
在语言方面,Ceylon 1.3带来了匿名函数参数的解构赋值(destructuring)功能,除此之外,还有CorrespondenceMutator和Collection.combinations,以及对Java APT处理器的实验性支持,它还关闭了330多个issue。
Ceylon 1.3向后兼容Ceylon 1.2.2,并不需要重新编译或变更依赖。
Ceylon是针对Java和JavaScript虚拟机的静态类型编程语言。它提供了一个流程敏感(flow-sensitive)的静态类型系统,在这里由某个变量推断出的类型随着控制流语句的转换,可能会发生变更,它还包含一些其他的高级特性,比如optionals、union和intersection类型以及具体化泛型(reified generics)等等。
▽
延展阅读(点击标题):
喜欢我们的会点赞,爱我们的会分享!