days to_days_Java2Days 2012:Java EE
days to_days
Java2Days会议是东欧的主要活动,目的是介绍Java开发的最新趋势。 今年,该活动于10月25日至26日在保加利亚的索非亚举行。 我在那里,并有机会与一些来自SAP的同事一起品尝了一些最新的Java,云和移动内容,这些内容已直接发送到我的家乡城市。
我已经连续第二年访问此活动。 今年,它更大了,其中包括“免费技术培训”等新内容。 还有一场竞赛(开放至11月11日),其中涉及一些很酷的编程问题。
在这篇博客文章中,我想分享一些我参加的会议的简短摘要,这些笔记是基于我的笔记以及后来我做的一些其他研究得出的。
- JavaEE.Next(): Reza Rahman 撰写的Java EE 7、8和Beyond
- 使用GlassFish,Grizzly和JSR 356构建HTML5 / WebSocket应用程序 ,作者Reza Rahman
- Reza Rahman撰写的Java EE 6域驱动设计
JavaEE.Next():Java EE 7、8及更高版本
在会议开幕式上,Oracle的Java EE / GlassFish传播者Reza Rahman介绍了即将于明年三月/四月发布的即将发布的第七版Java EE的主要变化,以及对Java的一瞥。 EE8。我们了解到对Java EE 8的支持已推迟到Java EE 8,并且对各种更改进行了概述,例如对JMS,WebSocket和HTML 5支持的全面检查,用于JSON处理的标准API,下一版JAX-RS,缓存API等。
JMS 2.0
新版本的Java消息服务(JMS)当前正在作为JSR 343开发,它对将近5年前发布的现有JMS 1.1进行了一些重大改进。 它引入了新的消息传递功能,例如批处理传递和传递延迟,以及对JMS API的一些更改,以使其更易于使用,例如新的批注和依赖项注入。 使用新的API,发送消息实际上涉及注入上下文,查找队列,最后是单个方法调用,并动态创建所有需要的对象:
@Inject
private JMSContext context;@Resource(mappedName = "jms/inboundQueue")
private Queue inboundQueue;public void sendMessage(String payload) {context.createProducer().send(inboundQueue, payload);
}
另请参见JMS 2.0早期草案 。
WebSocket的Java API
用于WebSocket的Java API( JSR 356 )是Java EE 7首次引入的新规范。它具有针对WebSocket的服务器端API和客户端API,具有两种编程风格和声明性风格。 有关更多信息,请参见下面有关此主题的专门会议的摘要。
JSON处理的Java API
JSON处理的Java API( JSR 353 )也是一个新规范,它具有解析,生成,转换和查询JSON内容的功能。 它同时具有对象模型和流API,类似于XML世界中的DOM和StAX。 将来,类似于JAXB ,还将有将JSON绑定到Java对象的方法,但是目前,这仍然不属于此JSR的范围。 另请参阅JSON-P:JSON处理的Java API 。
JAX-RS 2.0
下一版的RESTful Web服务Java API(JAX-RS)的主要新增功能是标准的客户端API,以及新功能,例如消息过滤器和处理程序,实体拦截器,异步处理,超媒体支持和通用配置。 另请参见JAX-RS 2.0早期草案解释 。
Java缓存API
Java缓存API( JSR 107 )已经失去了近10年的历史,并且最终将成为Java EE的一部分。 它引入了标准API和注释,用于从缓存中存储和检索对象。 该API非常简单,例如,将客户对象放入缓存中将涉及类似于以下内容的代码:
public class CustomerDao {@CachePut(cacheName = "customers")public void addCustomer(@CacheKeyParam int cid, @CacheValue Customer customer) {...}
}
其他Java EE 7功能
- JPA 2.1添加了内置模式生成,包括索引,对存储过程的支持以及其他增强功能。
- JTA 1.2引入了对EJB外部声明式事务的支持以及@
TransactionScoped
注释。 - JSF 2.2引入了更好HTML5支持,包括JSF页面中HTML5孤岛以及将HTML5输入类型绑定到JSF Bean,以及其他注释,例如
@FlowScoped
和@ViewScoped
,CDI对齐等。 - Java EE的批处理是一个新规范,它引入了一个基于作业的批处理API,该作业包括多个步骤,每个步骤都涉及读取,处理和写入项目。 除了实现接口之外,可以将读取,处理和写入项目的方法简单地标注为
@ReadItem
,@ProcessItem
和@WriteItem
- Bean Validation 1.1引入了方法约束和可注入工件。
Java EE 8
预计JavaEE的第8版将于Java EE 7于2015年发布2年。它将重点关注以下领域:
- 云,PaaS,多租户
- 基于拼图的模块化
- 更好HTML5支持
- 更多CDI和EJB对齐
- NoSQL(?)
摘要
在45分钟内确实吞没了很多信息,但发言人在传达这些信息方面做得很好。 看来Java EE 7将是该系列的坚实补充,而Java EE 8将具有更多主要功能。
本次会议的幻灯片可在此处获得 。 您可以通过下载GlassFish 4试用这些新功能。 要保持最新状态,您可以关注The Aquarium博客。
使用GlassFish,Grizzly和JSR 356构建HTML5 / WebSocket应用程序
实际上,这是最后一次会议,Reza Rahman在会议上介绍了即将到来的Java EE 7的一个非常有趣的部分,即对WebSocket的支持。
WebSocket入门
通过半双工HTTP协议进行双向通信一直是一个挑战。 已经引入了服务器推送的功能,例如轮询,长轮询或AJAX,但它们复杂,效率低下且浪费。
相比之下, WebSocket通过单个TCP套接字提供双向全双工通信通道。 但是,与纯TCP不同,所有通信都是通过标准HTTP端口(例如80)完成的,这使其可以在使用防火墙阻止非标准Internet连接的环境中工作。 它最初是作为HTML 5的一部分提出的。
W3C定义了一个非常简单的WebSocket JavaScript API和一个WebSocket协议 。 该协议定义了“握手”和“框架”,其中握手定义了如何将普通的HTTP连接升级为WebSocket连接,而框架则定义了消息的有线格式。 API定义了用于打开和关闭连接以及以各种方式发送消息的方法。 当前所有主要浏览器都支持它。
WebSocket的Java API
Java EE 7通过用于WebSocket的Java API( JSR 356 )引入了WebSocket支持。 该参考实现称为Tyrus,它是GlassFish 4的一部分。该规范定义了两种不同的API风格–针对客户端和服务器的基于接口的编程和基于注释的声明。
声明性API过于简单,对开发人员完全隐藏了WebSocket内部。 以最简单的形式,可以如下定义WebSocket端点:
@WebSocketEndpoint("/hello")
public class HelloBean {@WebSocketMessagepublic String sayHello(String name) {return "Hello " + name;}
}
有以下注释:
@WebSocketEndpoint
是一个类级别的批注,它声明一个POJO来接受WebSocket消息。 在此批注中指定了接受消息的路径。 可选地,它也可以指定解码器,编码器和子协议。@WebSocketMessage
是方法级别的注释,用于端点接收消息时调用的方法。 从此方法返回的值将发送回另一端。@WebSocketOpen
和@WebSocketClose
是用于拦截连接打开和关闭事件的方法级注释。@WebSocketError
是用于在对话过程中拦截错误的方法级注释。@WebSocketParam
是作为参数传递的路径段的参数级注释。
摘要
WebSocket似乎确实是当前使用的服务器推送方法的更好替代方案,因此很高兴JavaEE即将推出对此的支持。
本次会议的幻灯片可在此处获得 。 Slideshare也提供了类似的演示文稿, 用Java构建HTML5 WebSocket应用程序 。
Java EE 6的域驱动设计
Reza Rahman举行的第三次Java EE会议着重于域驱动设计(DDD) 。 这是一种通过将实现与不断发展的模型相连接来开发软件的方法。 它的前提是将项目的主要精力放在核心领域和领域逻辑上,并基于领域模型进行设计。 这个词最早是由埃里克·埃文斯(Eric Evans)在他的同名书中创造的。 DDD强调返回面向对象的分析和设计,并逐渐取代J2EE Blue Prints最初流行的传统体系结构而逐渐流行。 会议的目的是通过将Java EE 6的核心概念映射到Java EE规范,并提供一个全面的代码示例,来演示如何使用Java EE 6实现DDD。
核心概念
- 领域 :知识领域(本体论),影响或活动。
- 模型 :描述领域选择方面的抽象系统,可用于解决与该领域相关的问题。
- 无处不在的语言 :一种围绕领域模型构造的语言,所有团队成员都在使用。
- 上下文 :单词或陈述出现的设置,用于确定其含义。
建筑模块
下图是域驱动设计的“规范图像”。
- 实体 :不是由其属性定义的对象,而是由连续性线程及其标识定义的对象。
- 值对象 :包含属性但没有概念标识的对象。
- 聚合 :由根实体(也称为聚合根)绑定在一起的对象的集合。
- 服务 :当操作在概念上不属于任何对象时。
- 存储库 :用于检索域对象的方法应委托给专门的存储库对象。
- Factory :用于创建域对象的方法应委托给专门的Factory对象。
维护模型完整性(策略性DDD)
层数
用户界面:显示用户信息并接收输入。
- 应用程序 :薄层以协调应用程序活动。 此层中没有业务逻辑或业务对象状态。
- 域 :所有业务对象及其状态都位于此处。 域层中的对象应该不关心显示或持久保存自身。
- 基础结构 :处理诸如持久性之类的内务处理任务的对象。
将DDD映射到Java EE
DDD概念/层 | Java EE概念 |
---|---|
语境 | 包装,模块化 |
UI层 | JSF,Servlet |
服务,应用层 | EJB,CDI |
实体,价值对象,存储库 | JPA(实体),CDI |
基础设施层 | JPA(实体管理器API),JMS |
样品申请
在此期间进行演示的示例应用程序是SourceForge已提供的DDD示例的改进 。 这是一个运输跟踪器应用程序。 该应用程序的包装结构清楚地揭示了上述不同的层。 经过翻新的DDD示例应用程序将作为java.net项目很快发布。 在此之前,您可以下载并使用现有的DDD示例,该示例是使用Maven构建的,可以在嵌入式Jetty中运行,当然也可以导入Eclipse以进行更深入的了解。
摘要
我发现DDD非常有趣,尽管起初有点难以理解。 Reza详细解释了所有内容,但是这缩短了演示和显示示例应用程序代码的时间。 我和我的同事对示例中的业务逻辑是在Domain层类本身中捕获的,而没有任何幕墙控制器的事实感到很感兴趣。 最初,这对我来说似乎是一种不寻常的方法,但尽管如此,其次却是很合理的。
本次会议的幻灯片可在此处获得。 会议后研究DDD时,我发现了以下有趣的资源:
- 快速域驱动设计 ,一个简短,易读的摘要以及DDD基础知识简介。
- JavaWorld(2009)中的文章, 使用Java EE 6进行域驱动的设计 。
- 域驱动设计社区 。
参考: Java2Days 2012:来自我们的JCG合作伙伴 Stoyan Rachev的Java EE ,位于Stoyan Rachev的Blog博客上。
翻译自: https://www.javacodegeeks.com/2012/11/java2days-2012-java-ee.html
days to_days
days to_days_Java2Days 2012:Java EE相关推荐
- Java2Days 2012:Java EE
Java2Days会议是东欧的主要活动,目的是介绍Java开发的最新趋势. 今年,该活动于10月25日至26日在保加利亚的索非亚举行. 我在那里,并有机会与一些SAP的同事一起品尝了一些最新的Java ...
- Java EE 6 VS Spring 3:Java EE杀死了Spring? 没门!
介绍 几天前,我在听Java Spotlight Podcast的第85集 . 在这次演讲中, Bert Ertman和Paul Bakker讨论了从Spring迁移到Java EE的问题. 基本上, ...
- Java EE 6 VS Spring 3:Java EE已经杀死了Spring? 没门!
介绍 几天前,我在听Java Spotlight Podcast的插曲85 . 在这次演讲中, Bert Ertman和Paul Bakker讨论了从Spring迁移到Java EE. 基本上,在他们 ...
- Devoxx 2012:Java 8 Lambda和并行性,第1部分
总览 Devoxx是世界上最大的独立于供应商的Java会议,于11月12日至16日在比利时的Atwerp举行. 今年规模更大了,来自40个不同国家的3400名与会者. 和去年一样 ,我和来自SAP的一 ...
- InfoQ观点:Java EE的未来
作为InfoQ下一年编辑关注点审核工作的一部分,我们挑选了Java作为深入探讨的主题.我们借用了Geoffrey Moore在他的经典书籍<跨越鸿沟>里的所描述的模型,这个模型贴切地概括了 ...
- Java EE重命名为Jakarta EE:Java EE Guardians与Oracle的分歧
\ 看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料! \ \\ 由于对Oracle不热心回应Java社区反馈感到失望,Java EE Guardians于今 ...
- java ee 值范围_一篇文章带你读懂: Java EE
原标题:一篇文章带你读懂: Java EE 点击上图,查看教学大纲 何为 Java EE Java EE是一个标准中间件体系结构 不要被名称"Java PlatformEnterprise ...
- 小白科普:Java EE vs J2EE vs Jakarta EE
作者 | Rodrigo Graciano 编译 | Panson https://www.baeldung.com/java-enterprise-evolution 1. 引言 听说过 Java ...
- java nosql_使用NoSQL实现实体服务–第4部分:Java EE
java nosql 现在,我已经准备好了一个框架式的合同优先型Web服务,并使用Ektorp和CouchDB创建了一个数据访问层 ,是时候将它们连接到一个可以正常工作的实体服务中了 . 为此,我将使 ...
最新文章
- Docker 学习资源整理
- Numpy:利用Numpy库建立可视化输入的二次函数数据点集np.linspace+np.random.shuffle+np.random.normal
- python主线程执行_Python队列 – 最多运行n个线程
- 浏览器卡怎么办_【十全十美】宽带断线、wifi连不上怎么办?自助排障帮到你!...
- 【TL】【编码】瞬间移动-百度之星初赛(Astar Round2B)1003-2016.05.22
- 经典机器学习系列(八)【支持向量机】
- Mac和PC在工作中管理的对比(5)
- 《深入浅出WPF》——事件学习
- 关于微博的发表框计数规则及jq实现
- html banner图片滚动,jQuery实现的网站banner图片无缝轮播效果完整实例
- 麦田的守望者背景与分析
- 软件压力测试图片60张,看图测压力,你抗压么?
- 【C++】---日期计算器
- 【Android源码面试宝典】MMKV从使用到原理分析(一)
- Ps抠图之魔棒简易使用
- Android行业薪资现状,月薪2万属于低收入!
- app界面设计字体规范
- sinx的导数是多少
- 量子笔记:量子计算 toy python implementation from scratch
- Java map按照值降序排列
热门文章
- JavaFX之TableView的TableRow
- (十)IDEA添加mybatis-mapp.xml文件
- Springmvc中提交from之后不跳转不进控制器
- MySQL建表,DML,DDL,约束,外键策略
- 2016蓝桥杯省赛---java---B---7(剪邮票)
- vue 多页面多模块分模块打包 分插件安装_Vue渲染方式
- JAVA代码实现按列表中元素的时间字段排序
- Spring Boot进阶之Web进阶 代码推送的github上面去
- java速学_5分钟快速入门Java,不看真的可惜了
- MySQL导入冲突保留两者_面试被问MySQL 主从复制,怎么破?