JavaOne 2015 –第二十版十大收获

我们刚刚在旧金山有了JavaOne的第二十版。 这将是我自2004年以来第十二次参加不间断的系列活动。最大的教训是什么,可以揭示Java的未来。

模块化斗争

自从Java 2007首次提到模块以来,已经花费了将近9年的时间,或者说,直到2016年9月JDK 9正式发布时为止。 实际上,自从JSR 277 Java模块系统以来,已经有11年了 。 当我们考虑这一努力时,将需要十多年的活动和思考( 请参见何鸿tan的原始声明 )。 Oracle对JDK的模块化工作需要自己的传记。 马克·雷因霍尔德(Mark Reinhold)也许有一天会写这篇文章,也许是21世纪神话般的人月。 有效地重写Java令人恐惧,以至于它遵循HIGH COHESION和LOOSE COUPLING花费了近十年的时间。 除了JDK工程师以外的其他所有人都应该感到非常害怕,尤其是如果您所涉及的业务拥有庞大的Technical DEBT。 许多机构负担不起升级,重写和重新排序旧式类,程序包,更不用说模块了。 的确,对于那些在承受重压之下仍然挣扎并仍然坚持使用Classic Java(JDK 1.0至7.0)的企业而言,可维护性成本将变得天文数字化。对于Oracle,他们没有选择支付开发,设计和体系结构的全部成本。整个Java平台和社区的利益,以便在将来走向更好,更大的困境。 当我们在2016年达到JDK 9 GA时,应该向Oracle表示巨大的祝贺。

模块化与我们的未来

应用程序和JDK的模块化是新的谚语,我相信Java和实践的开发人员,设计师和架构师社区都有一个“线入砂”(又名DEMARCATION POINT或DISRUPTION LAYER),我们将在2016年通过模块化系统可以比JDK平台更快地进行更改。 如果Project Jigsaw的设计正确,则您不再需要与CORBA或IBM派生的老式java.util.Date和java.util.Calendar竞争。 从理论上讲,您应该能够替换这些模块服务,并在不需要它们时将其删除。 如果不需要Swing,则该模块可以使用,对于JavaFX和AWT(仅用于服务器部署)相同。 虽然保证了Java平台的向后兼容性,但这意味着有机会进行试验和提出新的想法。 我预计,对于招聘部门,JDK 9在2017年将成为CAMEL的绝招。 我相信没有人会想以更快的速度触碰Java SE 7或更早版本(经典Java)。 如果那里甚至有经典的Java提示,高级工程师都会查看您的工作规格并运行100英里。 您可以提供每天1000英镑的费用,为期6个月,但是认真对待这些债务的人会试图重新模块化古老的Java代码,而当下一个从事这一行业的女性开始使用现代模块化Java框架时,获得丰富的经验,领先一步,在JDK 9上构建下一个伟大的事物。另一方面,模块化并不能解决它的技术债务,技术难题。 如果您企业的关键任务软件是无懈可击的,那么除非行为发生敏捷变化,否则您将继续承受债务。 我认为,这就是Oracle JDK 9团队希望我们成为抢先体验的早期采用者,以便尽可能地测试其企业软件的原因。

增强了将Java推入云的能力

在JavaOne 2015上,有很多关于微服务和构建云企业应用程序的想法和会议讲座。 展览中有一些云供应商,例如JElastic,Red Hat,Pivotal和CloudFoundry。 Oracle发布了自己期待已久的云产品,称为Oracle Java Cloud 。 具有讽刺意味的是,他们的PaaS解决方案提供了与Oracle Coherence集群的服务器,该公司以前称为Tangasol。 Oracle的前副总裁Cameron Purdy创建了这个早期的分布式网格和缓存解决方案,实际上,他的拥护者Brian Oliver早在2007年就参加了JAVAWUG BOF 26并就Coherence进行了演讲。

Kubernetes和Docker

Arun Gupta是讨论Kubernetes (Google的Linux容器集群)的三位技术演讲者之一。 有新的术语。 荚是并置的一组Docker容器,它们共享IP和存储卷。 服务是一组Pod的单个,稳定的名称,还可以充当负载平衡。 标签名称值对已分配给容器。 在非正式的情况下,通常采用Java EE与Spring模式的LIGHTWEIGHT与HEAVYWEIGHT之间的旧应用程序服务器营销战在本次JavaOne会议上退居二线。 如果您碰巧使用Docker或Vagrant以及诸如Chef或Puppet之类的配置管理工具,您可能会吐口水,因为如果您要停止并(重新)启动通过部署从Soup到Nuts配置的虚拟机,配置文件,您不在乎WildFly服务器有多轻或有多重? 更重要的是要知道,可以使用已部署的ACME.WAR启动WildFly 8.2,并且HTTP Undertow模块已连接到秘密端口4123,该端口从外部映射到某些虚拟机上的端口80。 如果WAR文件为10MB或1MB,则您不再关心WAR文件的实际大小。

梦想微服务

黛安·马什(Dianne Marsh)关于NetFlix开发人员的讨论完全结束了。 许多人都在考虑这些想法,我怀疑很少有人在他们的组织内部拥有实际实践这些想法的业务支持,更不用说敏锐了。 微服务需要运营团队在跨职能部门(通常跨部门)工作。 在许多传统的美国和英国投资银行,其他大型商业机构,零售组织,数字设计机构中都可以找到SILO-Driven Engineering,这是对Micro服务的厌恶。 因此,请继续做梦,如果您幸运或不幸地成为其中的一部分...最好的希望根本不是微服务,但是您可以重新考虑您的MONOLITH并尝试使用COMPONENTISED APPLICATION,如果可以的话在您的企业体系结构中,您应该能够获得模块化的MONOLITH,它比(意大利面条内置的)MONOLITH更好。

Scala和Groovy

–今年,替代JVM语言的讨论较少。 我和Ted Malaska参加了Apache Spark演讲,这很有趣。 我还参加了Groovy中Cedric Champeau的“领域特定语言”演讲。

JavaFX逐步移动友好

JavaFX在台式机上像往常一样工作-令人惊讶的是,在今年的会议上,围绕JavaFX的主题没有创新,展示了新功能。 但是,由于Swing处于维护模式已经有好几年了,因此JavaFX的采用比以前更强。 Gluon正在投资对JavaFX的移动跨平台支持。 Gluon已经接管了将JavaFX应用程序移植到iOS和Android的工作。 对于台式机,JavaFX可能需要富文本编辑组件。 对于移动设备,有JavaFXPorts 。 我怀疑该软件团队的下一个巨大工作就是JavaFX 3D和媒体库的帮助。

JavaScript影响

AngularJS在客户端对JavaScript编程提供了一些支持。 在我自己的Digital Java EE 7演讲中,我演示了AngularJS案例工作者应用程序,并且在AngularBeans上还有另一个竞争性演讲,将AngularJS与JSF混合在一起。 甲骨文还宣布了自己的JavaScript扩展工具包 ,该工具包基于Knockout.js,JQuery,JQuery UI和RequireJS。 Kito Mann在Polymer网站组件上进行了演讲。 当然,对于那些有兴趣在JVM服务器端运行JavaScript的企业,也有Nashorn技术会议。

无容器构建

人们肯定对Spring Boot感兴趣,并且可能是WildFly Swarm ,正是出于与可能在微服务上出售相同的原因。 显然,最大的区别是围绕Hot JVM类重载和动态资源的技术支持。 这些扩展解决方案与应用服务器中的WAR部署投资背道而驰,这并不奇怪,尽管该规则的例外是带有Scala(和Java)的Play Framework。 诸如JetBrain的IDEA 15和Netbeans 8.1之类的IDE允许通过HOT更改进行交互式和实验性开发。 开发人员可以对Java代码进行合理的更改,更重要的是更改CSS,页面viewS和JavaScript文件,而不必重新启动应用程序。 借助Micro服务及其亲密的同伴,他们在WildFly Swarm和Spring Boot中构建了无容器构建,这种高度交互的模式(我在Bret Victor中进行频道介绍-在这里发明原理 )被取消了。 在WildFly Swarm的情况下,最大的问题是它们还没有爆炸式,可动态重载的ShrinkWrap实现,它可以允许JVM重载类和Web资源。 唯一的解决方法是用APPLE-IDIOMATIC-SPLIT-TEAMS-SECRET方法编写应用程序。 用户界面设计团队开发了一个新的前端,该前端负责按标题,标题,图形和描述显示产品列表。 服务器端团队编写远程端点服务以查询数据库。 前后团队在REST API或Web界面上达成共识,但是他们对产品本身或说明一无所知。 他们将使用模拟数据进行测试。 高管将在发布前用Apple iPhone Invisible Edition 5150以及所有相关信息,标题,标题,英雄图形,配件,描述和价格填充产品数据库。 对于苹果公司来说,这是一个很好的解决方案,因为它是一家Kool-Aid公司,对较小的团队,中小型企业甚至一人(和一人��乐队)都不利,因为通常,您需要一个完整的堆栈解决方案,您可以从头到尾完全使用它,反之亦然。无容器则非常适合RESTful端点和服务器。CodeHale的DropWizard向我们展示了如何实现这一目标。对于Java的Web前端工作还不太好(尚未)。

詹姆斯写Java

Mike Duigou的演讲James编写Java:我通过阅读James Gosling的代码[CON3563]所学到的知识 –这真是一场绝妙的演讲。 我很高兴看到此直播,因为它让我想起了不要在编码中沾沾自喜的想法。 詹姆斯·高斯林(James Gosling)绝对会继续以自己的知识来扩展自己的编码。 还有改进的空间。

Java至少还有20年的生命。 从23岁(初级工程师)到63岁(ACME / PEABODY的首席架构师和静态代码),完全有可能在Java平台上工作。 我认为这当然是可以实现的。 Java编程语言和JVM之外的其他行业实践将对该生态系统产生深远影响。 硬件将不断扩展。 JVM将不得不处理1TB RAM和垃圾回收。 确实,这是JVM工程团队的下一个增长领域。 JDK 10应该希望看到值类型来帮助进行内存分配。 在服务器方面,云仍然是新的前沿领域,因为它仍不确定蓝领Java开发人员将如何决定云的价值。

在用户体验方面,JavaFX使富客户端接口的寿命延长了。 JavaScript非常适合Web浏览器和HTML5,CSS元素,但是对于重型图形动画,声音和媒体渲染,富客户端是应用程序的必需。 毕竟,本机移动开发中可能有一个冗长的尾巴,Java和JavaFX只能位于LOCKED-IN平台两个据说不可逾越的WALL GARDENS之上。 如果Java坐着,蠕动并潜伏在那儿,那么机会就会随之而来,它每隔一段时间就会做一次,然后继续前进。 但是,将需要专业的发烧友和敏捷的小型创新创业公司来保持压力,并确保移动开发的UNIVERSALITY继续进行。 我相信这是有机会的,因为移动芯片组将在10年内成倍增长。 看看JavaFX和其他JavaScript桥接解决方案在短短几年内(更不用说20年)将我们带到何处,将会很有趣。

Java MODULE系统是巨大的机会。 它是最终的DESIGN-FOR-REPLACEMENT功能,而不是Java编程中的功能,而是Java虚拟机和JDK发行版中的功能。 我们,开发人员,设计师和建筑师是否会永远使用它? 我们将在SOLID的修改中使用它吗? 还是我们会以某种方式滥用它? 模块化可能位于标尺的两个相对端,并且比例不同:物联网和微服务分布式应用程序模块。 就硬件和软件而言,未来很难预测。 我们唯一能做的就是参与其中,并不断前进。 让我们一起享受旅程吧。

+ PP +

Arun Gupta,用于通过微服务和容器重构Java EE应用程序(CON1700)

拉斐尔·贝内维德斯(左)和安东尼·杜兰特(右)

Stephen Chin在Raspberry Pi,Oracle Demogrounds和JCP Hackergarten上焊接

徽章2015

这是给Java冠军和Googler同事Kevin Nilson的。 凯文的儿子正在JavaOne 2015的Ignite会议上讲话!

翻译自: https://www.javacodegeeks.com/2015/11/javaone-2015-the-twentieth-edition-ten-takeaways.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355460.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IOS--文件管理NSFileManager

iOS的沙盒机制。应用仅仅能訪问自己应用文件夹下的文件。iOS不像android。没有SD 卡概念。不能直接訪问图像、视频等内容。iOS应用产生的内容,如图像、文件、缓存内容等都必须存储在自己的沙盒内。默认情况下,每一个沙盒含有3个文件 夹:Docum…

linux修改文件内容_详解5种实用方法---Linux系统清空或删除大文件内容

概述有时我们在处理Linux终端中的文件时,可能要去清除文件的内容,而无需使用任何Linux命令行编辑器打开它。怎么才能实现呢?下面通过几种不同的方式教大家清空文件内容。1.通过重定向到空来清空文件内容使用shell重定向null(不存在的对象)清空…

凯撒密码c语言小写字母,凯撒密码c(c语言编程凯撒密码)

凯撒密码c(c语言编程凯撒密码)2020-05-15 13:09:51共10个回答#include#includeintmain(){charsave[10][30];inta,b,i,j;scanf("%d",&a);for(i0;i能不能说清楚一点,是加密吗?#include#include#defineMAXSIZE81intmain(){charstr[MAXSIZE];inti;intof…

Java正则表达式库基准测试– 2015年

在尝试使Java在计算机语言基准测试游戏的regexdna挑战中排名第一时,我正在研究Java正则表达式库的性能。 我可以找到的最新网站是2010年的tusker.org 。因此,我决定使用Java Microbenchmarking Harness重做测试并发布结果(破坏性警告&#xf…

C语言写程序注意,单片机C语言编程应注意的若干问题

作为一种结构化的程序设计语言,C语言的特点就是可以使你尽量少地对硬件进行操作,具有很强的功能性、结构性和可移植性,常常被优选作为单片机系统的编程语言。但是基于单片机的C语言和标准C语言有很大区别,如何结合单片机的系统资源…

Java实现将日志信息存到TXT中

在java文件操作的时候,思考将日志信息存到txt中,现在很多项目都是通过log4j来做的,同样也会用到将日志存到txt中. package FileOperation;import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.Calenda…

接口返回的类型是html页面_1.10 PhalApi 2.x 接口文档

接口文档在线接口文档PhalApi提供一些非常实用而又贴心的功能特性,其中最具特色的就是自动生成的在线可视化文档。在线接口文档主要分为两大类,分别是: 在线接口列表文档在线接口详情文档当客户端不知道有哪些接口服务,或者需要查…

jmeter数据库负载测试_JMeter:负载测试关系数据库

jmeter数据库负载测试Apache JMeter是完全使用Java编写的性能测试工具。 可以在请求/响应模型上运行的任何应用程序都可以使用JMeter进行负载测试。 关系数据库也不例外:接收sql查询,执行查询并返回执行结果。 我将向您展示使用JMeter的图形用户界面设置…

具有Couchbase,Java EE和WildFly的CRUD Java应用程序

Couchbase是一个开源的NoSQL文档数据库。 它允许访问,索引和查询JSON文档,同时利用集成的分布式缓存来实现高性能的数据访问。 开发人员可以使用不同的语言(Java,Go,.NET,Node,PHP,…

c语言10个人 三向成绩,C语言入门学习精华:这样学习C语言最有效

C语言入门学习精华:这样学习C语言最有效c语言死了吗?本材料描述了使用C语言的高级技能,并努力将您的C语言能力从“基本”提升到“高级”。然而,学习态度比学习方法要好。在正式学习之前,有一个问题是不能抱怨的。也就是…

jQuery UI全教程之一(dialog的使用教程)

jQuery UI目前的版本已经更新到了1.8.7。个人感觉和easyui相比起来,jQuery UI在界面的美观程度和可定制型更强一些。所以再次将一些jQuery UI组件的用法说明一下,方便日后查阅。也方面没接触jQuery UI的人能早日使用jQuery UI套件 (一)首先来说jQuery UI…

akka es/cqrs_在Akka中实现主从/网格计算模式

akka es/cqrs主从模式是容错和并行计算的主要示例。 模式背后的想法是将工作划分为相同的子任务,然后将其委派给从属。 这些从属节点或实例将处理工作任务,并将结果发送回主节点。 然后主节点将编译从所有从节点接收到的结果。关键是从节点仅知道如何处理…

05 HTML字符串转换成jQuery对象、绑定数据到元素上

1 要求 将一段 HTML脚本 封装成一个字符串&#xff0c;将这个字符串转换成一个jQuery对象&#xff1b;然后将这个jQuery对象添加到指定的元素中去 2 步骤 定义字符串 var str <div id"box01">hello world</div>; //定义一个字符串 利用jQuery框架将字符…

c语言求佩尔方程的解设计思路,c语言版 佩尔方程求最小正整数解及第k解(矩阵快速幂)...

佩尔方程讲解连接&#xff1a;若一个丢番图方程具有以下的形式&#xff1a;且为正整数&#xff0c;则称此方程为佩尔方程(英文&#xff1a;Pells equation 德文&#xff1a;Pellsche Gleichung) 若是完全平方数&#xff0c;则这个方程式只有解(实际上对任意的&#xff0c;都是解…

android 9.0 https 适配,如何适配 Android 9.0? 在 Android 9.0 上发生 SSL handshake timed out 异常怎么解决...

Android 9.0 开始&#xff0c;默认不允许明文传输&#xff0c;所以在建立网络连接时会使用 https 连接&#xff0c;同时进行安全认证。如果应用没有做对应处理&#xff0c;即会发生上述异常。解决方法有两种&#xff1a;一. 在应用里声明允许明文传输.1. 在应用的 res/xml 文件…

java 7.函数-递归_带有谓词的Java中的函数样式-第1部分

java 7.函数-递归您一直在听到将要席卷全球的函数式编程&#xff0c;而您仍然坚持使用普通Java&#xff1f; 不用担心&#xff0c;因为您已经可以在日常Java中添加一些功能样式。 此外&#xff0c;它很有趣&#xff0c;可以节省许多代码行并减少错误。 什么是谓词&#xff1f; …

大话oraclerac集群、高可用性、备份与恢复_数腾Oracle RAC数据库灾备解决方案

“一个系统包含很多模块&#xff0c;数据库、前端、缓存、搜索、消息队列等&#xff0c;每个模块都需要做到高可用&#xff0c;才能保证整个系统的高可用。”数据库作为现代信息社会的基石&#xff0c;几乎所有的计算机应用软件都构建于数据库系统之上&#xff0c;对于数据库而…

Android面试题Service,Android面试题-IntentService源码分析

自定义控件联网工具数据库源码分析相关面试题Activity相关面试题Service相关面试题与XMPP相关面试题与性能优化相关面试题与登录相关面试题与开发相关面试题与人事相关面试题人事面试宝典IntentService是继承于Service并处理异步请求的一个类&#xff0c;在IntentService内有一…

OpenGL中的Shader

http://blog.csdn.net/huangcanjun187/article/details/52474365 学习总结自&#xff1a;http://learnopengl.com/#!Getting-started/Hello-Triangle http://learnopengl.com/#!Getting-started/Shaders 继上篇文章中提到&#xff0c;OpenGL是为了在GPU上同时跑成千上万个程序&…

在html中金色怎么写,ps金色数值是多少?

一些常用的金色表示值&#xff1a;R255&#xff0c;G215&#xff0c;B0R205&#xff0c;G127&#xff0c;B50R166&#xff0c;G124&#xff0c;B64R217&#xff0c;G217&#xff0c;B25关于金色rgb值&#xff0c;金色就是黄色&#xff0c;但是我们看到的一些金色效果只是用颜色…