terracotta
您能解释一下javax.cache背后的想法以及它如何适合Java生态系统吗?
javax.cache背后的简单想法是拥有用于缓存的标准API。 缓存是数据的临时存储。 高速缓存现在被广泛用于提高性能,扩大规模,并通过分布式高速缓存进行横向扩展。
该规范要求Java 6或更高版本。 尽管它将包含在Java EE 7中,但可以将其与现有的Java SE应用程序一起轻松添加到现有的Java EE 6和Spring容器中。
由JSR107定义的javax.cache软件包是对JPA的补充。 JPA是关于持久性的,而JSR107是关于可能重用的对象的临时存储的。 考虑到这一点,我们一直在确保规范与JPA 2.0中采用的方法保持一致。
您能否提供一些独特功能背后的细节?
基本概念是CacheManager,用于保存和控制一组Cache,而后者又具有缓存条目。 高速缓存条目具有键和值。
从功能上讲,可以将缓存API视为类似于具有以下附加功能的Map:
- 原子操作,类似于java.util.ConcurrentMap
- 直读缓存
- 直写式缓存
- 缓存事件监听器
- 统计
- 交易,包括所有隔离级别
- 缓存注释
- 通用缓存,其中包含定义的键和值类型
- 按引用定义存储(仅适用于堆缓存)和按值存储
您认为标准化社区的缓存有多重要?
Java社区一直以来都很珍视标准。 将一种实现转换为另一种实现的能力一直非常重要,并且是Java社区与.net之间的一个非常重要的区别。
因此,每当围绕一组功能实现大量实现时,自然要对其进行标准化。 Oracle最初是从JSR107的想法开始的,但是直到几年前该公司收购Tangosol才拥有自己的缓存。 并在2009年Terracotta收购了Ehcache。 结果,我们有两家公司能够为标准的制定提供资金。
Java EE 7的开发已经进行了多长时间? 一路上有问题吗?
在得到执行Java EE 7的专家组JSR342的支持之后,我们于3月正式启动了该程序。它们无疑为推动事情发展提供了触发条件。
事情进展顺利。 许多新成员加入了专家组。 现在我们有19个成员。 如您所料,我们拥有大多数Java缓存供应商。 但是我们也有一些公司成员,例如高盛,花旗集团,以及一些领先的个人,例如开创了缓存注释的埃里克·达奎斯特。
显然,Terracotta和Oracle联手完成了这个项目。 你们两个之间的关系是否顺利?
当然。 卡梅隆·珀迪(Cameron Purdy)和我一直保持亲密关系。 卡梅伦(Cameron)任命高级人员工程师Yannis Cosmadopoulos担任他的共同技术负责人。 Yannis和我有很多辩论,但也要社交。 当我在城里时,我一直在Oracle旧金山办公室工作,我们总是一起去吃午餐。 我什至被邀请去星期五喝酒。
Oracle和Terracotta都愿意灵活地使用许可。 参考实现是Apache 2,TCK测试也是。 整个TCK都是定制许可证,与标准TCK许可证相比有一些变化。 特别是,它将是免费和开源友好的。
许多供应商对实现JSR107感兴趣。 Terracotta的Ehcache是否提供了其他产品所不能提供的任何功能,还是全面标准化的产品?
API是标准化的,但是功能会因供应商而异。 API的某些部分也是可选的:事务,按引用存储和注释。
在功能方面,有很多差异化供应商:
- 缓存是独立的还是分布式的?
- 它是否支持可选功能?
- 实施的性能如何?
- 是否支持分层缓存存储?
- 可以使缓存持久化吗?
- 缓存是否支持搜索?
- 缓存中可以放入多少数据? 在JVM中? 每个缓存存储节点?
- 缓存是否支持丰富的数据一致性模型集(例如最终一致性和强一致性)?
- 缓存高度可用吗? 他们有韧性吗?
- 缓存插入哪些框架(例如Hibernate,Web缓存,Grails,JRuby,HTTP会话)?
- 分布式缓存可以通过WAN操作吗? 什么模式?
通常,有两种类型的缓存实现:开源代码实现,而不是上面的大多数功能,以及企业缓存,它们不同程度地支持这些功能。 Enterprise Ehcache完全支持所有这些功能。
另外,Ehcache多年来一直是事实上的行业标准。 最近,我们创建了一些突破性的功能。 借助BigMemory技术,我们可以在每个缓存节点中将数百GB的内存全部存储在内存中。 我们提供了搜索缓存的功能。 在最新版本中,我们通过自动资源控制大大简化了我们的配置,该功能允许缓存自动分配其堆和堆外内存使用量。
您最近在JavaOne上与Cameron Purdy谈论了整个项目–您在会议上收到了人们的热烈欢迎,他们是否提供任何反馈?
会议已满。 JSR107引起了人们的极大兴趣。 我认为人们喜欢他们所看到的内容,但是专家组之外的大多数人仍然想仔细看看。
为了表达出浓厚的兴趣,我上周在Devoxx上发表了有关JSR107的最新演讲,并将于2月在Jfokus进行另一场演讲。 我计划展示Ehcache 3.0,它将提供该规范的本地实现。
我们距离JSR107完成有多近?
我想我们很近。 Yannis和我大约一个月前完成了基准规格,现在根据评论意见对其进行了修订。 Oracle和Terracotta都在致力于实现,这进一步推动了规范的微调。
我希望我们能在年底之前完成JCP的完整初稿。
关于JSR107,Terracotta的未来计划是什么?
我们将有两个实现。 第一个是包装程序,它将与当前的Ehcache 2.5版本一起使用。 它现在处于beta中,并实现了交易以外的所有功能。 (Ehcache支持READ_COMMITTED XA和本地事务,但是根据规范,如果您要求事务支持,则必须提供所有隔离模式。)
其次,Ehcache的下一个主要版本将计划原生支持API。 我的意思是,我们将拥有一个Cache类,该类将实现javax.cache.Cache并以尽可能最有效的方式与我们的代码进行交互。 我们可能还会继续支持现有的Ehcache API,以实现向后兼容。
我们计划在明年年初完成这项工作,并率先推向市场。
terracotta
本文深入探讨了JSR107规范如何为Java生态系统引入统一的缓存标准,强调了缓存在提升性能和扩展性方面的作用。详细介绍了javax.cache背后的设想,及其与JavaEE7和Spring容器的整合。文章还讨论了标准API的功能,包括原子操作、缓存事件监听和交易支持等,以及标准化对于Java社区的重要性。

被折叠的 条评论
为什么被折叠?



