免费下载案例集|20+数字化领先企业人才培养实践经验 了解详情
写点什么

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:121876
用户头像

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

关注

评论

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

图解CyclicBarrier运动员接力赛

叫练

面试 AQS CyclicBarrier

2021年美团/字节跳动/腾讯面经总结:互联网工程师必备的面试1000题

比伯

Java 编程 程序员 架构 面试

Docker 常用命令,还有谁不会?

xcbeyond

Docker 常用命令 28天写作

产品经理训练营 - 第四章作业 (二)

joelhy

产品经理训练营

#滴滴夜莺# Nightingale & Prometheus

漂洋散人

环信大学 | 构建一套适合微服务的高可用架构

DT极客

数据库周刊59丨GaussDB(for openGauss)开放商用;人大金仓保障冬奥会演练顺利完成;MDL锁导致的MySQL问题分析;PG日志使用手册;达梦表空间查询;数据库笔试题面试题集……

墨天轮

MySQL 数据库 程序员 运维 postgre

真实字节二面:什么是伪共享?

艾小仙

Java 程序员 字节跳动 面试

面试系列二:精选大数据面试真题JVM专项-附答案详细解析

五分钟学大数据

大数据 28天写作 3月日更

「产品经理训练营」作业 05:知识星球加入星球流程图

狷介

产品经理训练营

一线互联网大厂面经分享:阿里三面+头条四面+腾讯二面+美团四面

Java架构之路

Java 程序员 架构 面试 编程语言

SuperBenchmarker sb在mac上的安装手记

edd

星环科技Sophon Edge边缘计算平台持续赋能千家万业

星环科技

七种分布式事务的解决方案,一次讲给你听

moon聊技术

「两次遍历」要比「一次遍历」要慢 ... 为啥呀?为啥呀??

宫水三叶的刷题日记

面试 LeetCode 数据结构与算法

代码从业者

ES_her0

28天写作 3月日更

(28DW-S8-Day10) T型学习模式:迁移式学习

mtfelix

T型人才 28天写作 迁移学习 一万小时定律

VR,正在上演一出“风月宝鉴”

脑极体

别梦依稀咒逝川,Ruby二十八年前|M1芯片Mac os系统配置Ruby(3.0.0) on Rails(6.1.1)开发环境(2021最新攻略)

刘悦的技术博客

ruby ruby-on-rails rubygems macOS Big Sur m1

前端上手Docker超详细基础教程

1024肥宅

Docker Linux 大前端 jenkins CI/CD

手写一个LRU缓存淘汰算法

Simon郎

Java 大数据 缓存 LRU 数据结构与算法

谁才是一级方程式赛车中的最强车手?

亚马逊云科技 (Amazon Web Services)

SQL Server 多表数据增量获取和发布 2.1

happlyfox

28天写作 3月日更

java学习笔记(一)

陈皮

Java

打破垄断 上海发布自主研发树图区块链重大成果

CECBC

区块链

敏捷, 是一种信仰

boshi

敏捷 七日更 28天写作

四面美团开发岗,成功斩获offer,分享个人面经

Java架构之路

Java 程序员 架构 面试 编程语言

想做技术自媒体实现财富自由?先看看广告报价吧,无编码学爬虫之二。

梦想橡皮擦

Python 28天写作 2月春节不断更 3月日更

加快布局区块链技术发展,助力网络强国建设

CECBC

区块链

javascript中的内存管理

程序那些事

JavaScript nodejs 内存管理 程序那些事

这个新春,你的云端安全守卫来咯 | 新服务上线

亚马逊云科技 (Amazon Web Services)

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