写点什么

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

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

关注

评论

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

HTTP接口性能压力测试

javalover123

性能测试 压测 API 压力测试 HTTP API

Docker 镜像的导出与导入

陈皮

Docker save load

Spring高手之路2——深入理解注解驱动配置与XML配置的融合与区别

砖业洋__

XML配置 spring框架 注解驱动配置 组件注册 组件扫描

Nautilus Chain 主网上线,创世 ZBC 质押即将开启

股市老人

【Linux系统】fdisk相关分区命令。

百度搜索:蓝易云

云计算 Linux 运维 服务器 fdisk

如何理解小程序插件?微信及支付宝官方详解

没有用户名丶

《中国民用航空业零代码应用与推广白皮书》正式发布

明道云

[Huggingface]系列文章(1)-认识Transformers

alexgaoyh

文本分类 文本生成 huggingface sentiment-analysis text-generation

新兴技术对中药学的革命|社区征文

爱技术的药学生

AI AIGC 年中技术盘点

AI 改变我们的工作方式 | 社区征文

宇宙之一粟

年中技术盘点

AI绘图:艺术与科技的交融 | 社区征文

IT蜗壳-Tango

年中技术盘点

AITO问界,先经沧海而后造船

脑极体

智能汽车

C语言 typedef的用法示例讲解

芯动大师

AI与HPC融合,未来会朝什么方向发展 | 社区征文

瓜瓜猪

年中技术盘点

Spring高手之路1——深入理解与实现IOC依赖查找与依赖注入

砖业洋__

ioc 依赖注入 spring框架 依赖查找 IOC面试题

我来泼盆冷水:正面迎击AI的时代千万别被ChatGPT割了韭菜

EquatorCoco

人工智能 信息安全 ChatGPT

【有奖互动】开发者版本新特性,你期待哪些更新?#HDC.Together2023#

HarmonyOS开发者

HarmonyOS

工具产业推广级!腾讯云 CODING 度量平台获得业内权威机构高度认可

CODING DevOps

Nautilus Chain 主网上线,创世 ZBC 质押即将开启

大瞿科技

2023-07-20:假设一共有M个车库,编号1~M,时间点从早到晚是从1~T, 一共有N个记录,每一条记录如下{a, b, c}, 表示一辆车在b时间点进入a车库,在c时间点从a车库出去, 一共有K

福大大架构师每日一题

福大大架构师每日一题

第四届“先导杯”全国挑战赛正式开赛 百万奖金等你来拿

科技热闻

英特尔携钉钉及新华三以创新解决方案变革未来远程协作体验

E科讯

英特尔x MAXHUB:以创新解决方案掀起“智能协作”新浪潮

E科讯

Unity 发布《2023 移动游戏增长与变现报告》,聚焦游戏行业高效增长策略

Geek_2d6073

掌控MySQL并发:深度解析锁机制与并发控制

砖业洋__

表锁 MySQL并发控制 隐式锁 插入意向锁 行锁

Filter for GO

数由科技

前、后端通用的可视化逻辑编排

悠闲的水

低代码 逻辑编排 低代码平台 可视化编排 可视化开发

性能最快的代码分析工具,Ruff 正在席卷 Python 圈!

EquatorCoco

Python 开源 框架

Python爬虫超详细讲解(零基础入门,老年人都看的懂)

Java随想录

Java Python

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