写点什么

SpringOne 大会采访:Mark Pollack 博士专访

  • 2012-12-10
  • 本文字数:2690 字

    阅读完需:约 9 分钟

SpringOne 大会今年首次落户中国,将会于 12 月 7-8 号在北京召开,大会结合了 Spring 和 Cloud Foundry 大热门技术,将会针对于 Spring 的最新发展、Spring 在移动、大数据领域的应用等做主题分享。InfoQ 就 Spring 以及 Spring Data、Spring Batch 等话题采访到了 Spring 社区专家 Mark Pollack 博士。

InfoQ:欢迎来到北京,我是 InfoQ 中文站的编辑丁雪丰,感谢您接受我们的采访。您能否先为我们的读者做个自我介绍?

Mark:我就职于 SpringSource,它是 VMWare 的子公司,多年以来都在从事 Spring 开源项目相关的工作,早在成立公司支持它以前就是团队的成员了。我做过 JmsTemplate 相关的事情,早期还做过 Spring.NET 项目——这是.NET 版本的 Spring 框架。这些年数据访问技术方面发生了很多变化,大约三年前,我开始围绕 NoSQL、大数据这些方面为大家提供支持,还为关系型数据库添加了更多支持。

InfoQ:您刚提到了 NoSQL 技术,现在有很多数据存储,比如 RDBMS、NoSQL 和 NewSQL。在只有 RDBMS 时,Hibernate 可以应对大部分的问题。现在我们要面对 MongoDB、Redis 还有 Cassandra,Spring 如何让开发者的生活变得更轻松一点呢?

Mark:我们的确为其中一些提供了支持,但不是全部 NoSQL 数据库都有支持,MongoDB 和 Redis 就有支持,Cassandra 目前还不在其列。Spring 从很多方面减轻了开发者的负担。首先,使用 Spring 容器来配置应用程序,通过一致的方式来使用多种技术,在 Spring 早期,你要把 MVC、模版引擎和 Hibernate 结合在一起,就得益于一致的使用方式;NoSQL 数据库和关系型数据库很类似,我们可以用一个通用的配置模型将所有技术整合起来,这只是纯粹的配置方面的。

其次,我们为很多 NoSQL 数据库,还有 Hadoop 提供了很多特定的辅助类,和 JdbcTemplate 很类似,我们提供了 MongoTemplate,能更方便地使用 MongoDB,如果你只是使用标准 API 集合,它同样提供了高层 API,比如把 POJO 映射成文档数据模型,这是基本的值属性方面的。

第三,要创建一个针对 POJO 的数据访问类库,以 MongoTemplate 和 RedisTemplate 为例,能很方便地通过 MongoTempalte 来使用一些特性,比如 MapReduce、累加计数器,后者在 Redis 里也很常用,这都很容易。如果你还想映射 POJO 来做领域层,也就是 Repository 层,我们也提供了一些基础设施,帮你对各种 NoSQL 数据库进行 POJO 的增、删、改、查操作。

InfoQ:在您的演讲中,您提到了 Spring Data、Spring Integration,以及一些 Spring 的子项目,这些项目满足了开发者在大数据时代下的各种日常工作需要。您能否向国内的开发者介绍下 Spring Data 项目,虽然国内 Spring 的应用很广泛,但 Spring Data 还未广为人知。

Mark:我很早就开始参与 Spring Data 项目了,我们的目标是提供熟悉的基于 Spring 的编程模型,涵盖大数据、NoSQL 和关系型数据库。如此一来,需要对 NoSQL 数据源做一个抽象,因此我们有两类支持,一个是一系列的模版类,让你更方便地与下层的 NoSQL 存储进行交互;另一个是 Repository 抽象,让你更方便地编写数据访问层,把 POJO 写到数据存储里。

另一大块内容是大数据,我们有 Spring Hadoop 项目,协助进行与 Hadoop 的交互,在 HDFS 里读写文件。Hadoop 中经常用到 Hadoop 任务,你有一系列顺序执行的任务,Spring Batch 能帮你组织这些任务。

InfoQ:这些项目在国外的使用情况是怎么样的,比如美国和英国,在那里大家都用这些 Spring 子项目么?

Mark:我们一直在持续追踪 Maven 上的下载统计信息,这些项目的下载量都是呈指数级增长的。我最近没有关注,但我认为,Spring Integration 和 Spring Batch 的流行程度比较接近。Spring Data JPA 是最流行的项目,虽然 NoSQL 的讨论很热烈,但企业开发者还是在使用关系型数据库,所以对这个结果我们并未感到太吃惊。我们的 MongoDB 支持、Redis 支持最近也越来越流行了,还有 Neo4j,它们的成长曲线很漂亮,终会和 Spring Integration 和 Spring Batch 一样流行的。

InfoQ:在你看来,Java EE 6 和 Spring 框架是个什么关系?有些人认为 Java EE 6 比 Spring 要好,你是怎么想的?

Mark:Java EE 6 就是一堆 JSR 的集合,它的版本基本就是标明用了哪个版本的 JSR 实现。Spring 通常都会部署在 Java EE 容器里,提供一些容器里没有的功能,举例来说,可以让 Spring 在老的不支持 CDI 的容器里提供依赖注入,很多人都看到了其中的价值。Spring 和 Java EE 6 有很多共同点,比如都实现了 Bean Validation、依赖注入注解等等,的确有很多重复的地方。Spring 最出名的是它的依赖注入,CDI 是 Java EE 6 里的依赖注入规范。我认为依赖注入现在已经是个标配了,我想人们不会从一大堆特性里把它挑出来说事。Spring 给你带来的是更多的灵活性,你可以在 Tomcat 3 里用依赖注入,然后升到 Tomcat 7,不会受限于 Java EE 的版本,不受限于 JSR。

InfoQ:Java 7 已经被广泛使用了,明年 Java 8 很快就要来了,Spring 是否已经为新的 JDK 做好准备了?

Mark:Java 8 很令人振奋,我们对一系列的特性都很感兴趣,比如闭包。我们的目标是成为第一个支持 Java 8 的现代 Java 框架,因此我们非常期待 Java 8 的到来。

InfoQ:我们应该如何使用开源软件来构建基于 Hadoop 的大数据平台,让整个解决方案更加易于维护?

Mark:在 Spring Hadoop 是个很好的项目,其中你能找到很多东西帮助创建 Hadoop 项目。如何用它来创建一个更可靠的解决方案,人们使用 Hadoop 的传统方式是用 MapReduce 任务来和 HDFS 交互,用 Pig 或者 Hive 这种构建于 MapReduce 核心之上的语言,所有这些操作基本都是通过命令行、Shell、命令行应用的方式,很多都是在 JavaScript、Perl 和 Ruby 脚本里,一个接一个的进行调用,这种方式很乏味,严重依赖于脚本,在用的时候要十分小心。

在 Spring Hadoop 里,我们有个使用 Hadoop 的编程模型,易于使用,和现有的配置 Spring 的方式保持一致,提供了很多辅助 API 和工具类,让你从脚本驱动的编写 Hadoop 应用的方式转变到一种使用 Java 类的方式,你有了一套早已习惯的结构,只需配置到 Hadoop 的连接,然后执行 Hadoop 任务。比如,你现在可以把那个任务注入到你的代码里并运行。这种方式比意大利面条式的脚本更具可维护性。可以先从一个简单的任务和 Spring 应用上下文开始,以后要是有了很多步骤,比方说 20 个步骤,这时可以在 Spring Batch 任务里复用那些 Hadoop 任务的定义,也就是说 Spring Batch 里的任务就是 Hadoop 任务的引用。也许这么多“任务”有点混淆,但通过这种方式应用程序能更加可靠,可维护性更强。

InfoQ:非常感谢您接受我们的采访。

Mark:谢谢。

2012-12-10 00:122261
用户头像

发布了 135 篇内容, 共 63.7 次阅读, 收获喜欢 43 次。

关注

评论

发布
暂无评论
发现更多内容

全国高校计算机类课程能力提升高级研修班(2024年第一期)来了!

华为云PaaS服务小智

云计算 软件开发 华为云

交互式产品原型设计工具 Axure RP 9汉化授权版 【Mac/win】

南屿

Axure RP 9汉化 Axure RP 9授权码 Axure RP 9破解版 原型设计工具

实战讲解|Trino 在袋鼠云数栈的探索与实践

袋鼠云数栈

大数据 前端 计算引擎 trino

React Native性能优化指南

macOS Catalina for mac (macos 10.15系统)v10.15.7正式版

南屿

mac系统 苹果系统下载 macos 10.15系统

Ngnix常用配置及和基本功能讲解

京东科技开发者

ICDM'23 BICE论文解读:基于双向LSTM和集成学习的模型框架

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 论文解读

《高效能笔记法》读后感

凌晞

结构化思维 冰山模型

论学习方式和知识结构

凌晞

学习方法

把Mybatis Generator生成的代码加上想要的注释

京东科技开发者

探究低代码平台

互联网工科生

低代码 JNPF

第一个程序:HelloWorld——IDEA 使用

小魏写代码

万界星空科技MES系统中的生产防错功能

万界星空科技

MES系统 mes 万界星空科技 生产管理 数字化车间

FastAPI 并发请求:打造更快的Web应用

Liam

程序员 性能优化 并发编程 后端 FastApi

音乐编辑软件Studio One 6 Pro新功能介绍 含Studio One 6破解注册机

南屿

音乐制作 Studio One 许可证 Studio One 破解 Studio One 6下载

MacOS远程管理软件哪款好?Royal TSX for Mac v6.0.2激活版

南屿

Royal TSX 教程 MacOS远程管理 Royal TSX mac破解版

关于MySQL日期函数你不知道的用法

不在线第一只蜗牛

MySQL 数据库 前端 日期工具

以DataOps一体化之道,助力研发治理提质增效

鲸品堂

Data 运营商 一体化

源2.0大模型适配LLaMA-Factory框架 微调训练快捷高效

财见

软件测试/测试管理训练营马上开营! 快来免费领取试听课吧~

测吧(北京)科技有限公司

测试

代码注释是程序员必备的技能吗?

小魏写代码

CleanShot X为什么不能识别文字?CleanShot X文字识别教程

南屿

OCR识别 CleanShot X Mac截图软件

cad2022破解版安装教程 附autocad2022注册机【Mac/win】

南屿

AutoCAD 激活版 CAD绘图软件 cad 2022安装教程 AutoCAD2022序列号

illustrator 2024中文破解版 含AI2024激活补丁【Mac/win】

南屿

AI2024破解版 矢量图形设计工具 Illustrator 2024下载 Illustrator 2024中文版

Hex-Rays IDA Pro(交互式反汇编工具) v7.7汉化版

南屿

IDA Pro 静态反编译工具

制造业各种管理系统介绍及集成

万界星空科技

MES系统 ERP mes 万界星空科技 万界星空科技mes

电影特效合成软件:NUKE 14.1v1 for Mac安装教程

南屿

NUKE 14 电影特效合成软件 NUKE下载

[杂谈]字符串操作-两个数组之间的重排序

alexgaoyh

重排序 数组 字符串 数组之间

软件测试 | 拒绝上市公司的 Offer,选择自己喜爱的行业,这么从容不迫他凭什么?

测吧(北京)科技有限公司

测试

SpringOne大会采访:Mark Pollack博士专访_语言 & 开发_丁雪丰_InfoQ精选文章