前言 大数据专业作为近几年我国高校新兴建设专业,面临着教师迁移和课程再造的问题,原先通用知识体系需要针对大数据的框架进行重新构建,方能在有限的教学时间内,帮助学生有条理地开展相关学习和研究,减少课程学习的撕裂感,提升学生的学习兴趣,铸造学习成就感。 Java作为一种面向对象的编程语言,其优异的跨平台性和内存管理机制在大数据平台上得以大量应用。现阶段大数据生态圈基本都是建立在JVM这个基础平台上的,这意味着学习Java语言是学习大数据行之有效的敲门砖,Java程序设计的学习也成为大数据专业人才培养中重要的一环。 本书特色 本书根据大数据专业教学实际需要,从数据处理的角度,对Java中涉及的基础知识进行了优化整理。所选内容充分衔接大数据处理技术,为大数据专业后续并行编程、分布式数据管理提供语言和思想基础。另外,本书延续了河南省研究生教育优质课程研究生精品课程——“面向对象技术及应用”的建设成果,设计了以章节为知识单位的反转课堂。教师可以根据学生的学习能力、学时长短和教学内容的难易程度有针对性地构建自己的教学体系,丰富教学手段,提高学生学习的积极性和课堂参与感。 全书理论结合实践,配以趣味性的程序实例,安排有精心设计的主题讨论问题。立足Java基础,面向大数据未来,在精选的知识的基础上尽可能地穿插大数据处理的相关知识,在潜移默化中将大数据技术的一些重要思想和思路植入本课程的学习过程中,争取在教与学的过程中锤炼大数据思维。当然,为了帮助学生在自主学习过程中突破难点,本书在重要章节都配备了课堂讲解视频,视频内容简明扼要、信息丰富,既方便了反转课堂设计,又降低了读者学习难度。 本书设计符合目前数据科学方向的研究生、本科、大专、高职院校大数据专业的课时及教学大纲,非常适合高校相关专业教学使用,也适合有志于大数据领域学习的Java初学者自学使用。这里根据众多大数据专业教学特点、课程教学体系设置以及学生学习进度,假设本书的读者有过C语言的学习经历并且具有一定的Linux系统的操作经验。 内容设置 本书主要内容是Java SE的基础程序设计,语言版本选用了广泛应用于大数据平台的Java 8为基准。全书内容包含7章内容和7个反转教学主题,1个附录。〖1〗面向大数据的Java程序设计基础(微课版)前言〖3〗〖3〗全书知识体系如下。 第1章涉及面向对象的程序设计思想概述、Java程序设计语言概述及历史、大数据与Java之间的关系、开发环境搭建、IntelliJ IDEA开发工具使用方法等内容。通过本章内容的学习,读者可以了解Java语言的历史和现状,Java中重要组件JDK、JRE和JVM之间的关系,理解Java程序设计与大数据专业的关系,熟悉Linux环境下JDK 8的安装配置方法以及集成开发环境的搭建,为后续的Java学习打下理论和实践基础。 第2章是Java语言基础。本章内容主要涵盖Java语言基础语法: 数据类型及转换、运算符、逻辑控制、枚举、数组等内容。对本章内容,学生可以与其他编程语言进行对比性学习,加速学习流程。 第3章涉及类、对象、继承、多态、抽象类、接口、内部类和Lambda表达式等内容。本章是面向对象的核心内容,读者需要适应以数据为核心的程序设计思想,理解多态在构建面向对象的程序中的用途和作用,理解并掌握Lambda表达式与内部类之间的关系。 第4章主要介绍了包的概念和制作方法、Object类等基本概念,并围绕基础类型数据与字符串的转换、字符串处理和计算机中的时间三个问题,介绍了Java中的常用类以及Java 8中的函数式接口。 第5章是Java中的异常处理。这一章介绍了异常的定义和分类,捕获和处理异常对象的方法,以及自定义异常的一些规范。 第6章是Java中的I/O文件处理。这一章介绍了Java中I/O管道的基本设计概念,I/O流对象构造及使用方法,围绕着数据的读写和文件系统管理展开。 第7章是Java中的容器类。这一章主要介绍 List、Set和Map容器的具体特征和使用方法,其中包括服务于容器的迭代器、泛型以及Collections工具类的相关内容,以及基于Stream的流式编程理念。 反转课堂设置对齐章节内容。 主题1可在第2章教学内容完成后实施。旨在锻炼学生计算思维,展示程序设计与生产实践之间的关系,对于学生的创新性思维的培养有一定的作用。 主题2可在第3章教学内容完成后实施。通过讨论与实践的过程,加深学生对于面向对象程序思想的理解,并从中体会面向对象程序设计模式的特点和优势。 主题3可在第5章教学内容完成后实施。通过简单的字符串与数字的转换处理,让学生了解数据预处理过程中的一些技术手段,并体会面向对象的异常处理思想的重要性和优势。 主题4可在第6章教学内容完成后实施。HDFS是现阶段最成熟、最常用的大数据分布式存储的文件系统,但其本质仍然是外部数据源。通过引导学生快速学习少量API文档,将其嫁接于现有知识体系之上,打破大数据的神秘感。 主题5可在第6章教学内容完成后实施。这个主题主要讨论了程序设计中缓存的使用对于程序运行效率的影响,让学生理解程序设计中合理利用高速设备的重要性,对于日后对大数据处理过程优化可以起到积极作用。 主题6可在第7章教学内容完成后实施。单词统计(WordCount)是各种大数据平台的开篇程序,这里立足于Java SE知识体系,逐步将程序思维从串行的数组思维提升到容器思维,再到键值对思维,最后落实到并行的MapReduce框架,引导学生了解串行程序与并行程序之间的联系和区别,明白并行程序设计的一些基本问题。 主题7可在第7章教学内容完成后实施。本主题从熟悉的学生成绩管理系统入手,讨论了大数据存储中常用的列式数据表的存储方法和查询运算方案,从Java的角度引入了分布式数据库的查询原理和工作机制。 为了帮助读者更好地满足主题讨论中的分布式文件系统和MapReduce框架的使用,我们将Linux环境下伪分布式Hadoop的简单部署加入附录中。 创作与致谢 本书由河南理工大学软件学院组织,吴正江、毋东、王海涛负责编写,其中,毋东负责前三章内容的编写工作;王海涛负责主题5、6、7的设计和编写工作;吴正江负责其余部分内容的编写和主题设计工作;翟海霞负责统稿和技术把控、大纲划定等工作。特别感谢高岩教授在本书写作期间提出的宝贵意见和建议。 本书的出版受到河南省研究生教育优质课程研究生精品课程——“面向对象技术及应用”项目和河南理工大学创新团队支持计划的鼎立支持。 本书初次出版,如有宝贵意见和建议,恳请同行专家学者和读者朋友不吝指正,我们将不胜感激,并在重印时及时予以更正。您在使用本书时,发现任何问题或需要帮助,都可以与编者联系,期待与您的交流。 编者 2023年9月