飞创网站建设,建设网站dns如何设置,网站页面设计培训班,网站怎样做301跳转Java是当前的主流编程语言之一#xff0c;常年稳居TIOBE编程语言排行榜前五。Java的使用领域非常广泛#xff0c;包括了桌面端编程、Web端编程、移动端编程等几乎所有的编程领域。Java是Web端编程使用最广泛的编程语言之一。要学习Web端编程#xff0c;需要了解Java语言的知…Java是当前的主流编程语言之一常年稳居TIOBE编程语言排行榜前五。Java的使用领域非常广泛包括了桌面端编程、Web端编程、移动端编程等几乎所有的编程领域。Java是Web端编程使用最广泛的编程语言之一。要学习Web端编程需要了解Java语言的知识架构、界面编程工具、常用教材、学习路线等主要内容。
在开始描述主要内容之前首先来了解一下Java语言的发展历程[24][25]。
Java是一门面向对象编程语言不仅吸收了C语言的各种优点还摒弃了C里难以理解的多继承、指针等概念因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表极好地实现了面向对象理论允许程序员以优雅的思维方式进行复杂的编程。
Java的创立非常具有戏剧性。1990年12月SUN公司开始了一个叫做“Stealth计划”的内部项目起因是因为该公司的工程师帕特里克·诺顿被自己开发的C和C语言编译器折磨得不胜其烦。因为其中的APIApplication Programming Interface应用程序接口非常不好用。于是决定改用NeXT并向公司申请了该项目。“Stealth 计划”后来被更名为“Green计划”并且Java之父詹姆斯·高斯林James Gosling和麦克·舍林丹也加入了该计划。他们和其他几个工程师在位于加利福尼亚州门罗帕克市沙丘路的一个小工作室里一起研究和开发新技术。作为富有创新意识的一群人他们远见卓识地将目光瞄准了下一代智能家电程序设计。项目组最初打算用C 语言进行项目开发但是很多成员包括SUN的首席科学家比尔·乔伊很快发现了一些严重的问题1C和可用的API在某些方面存在很大问题2项目组使用的是内嵌类型平台可以使用的资源极其有限3C语言太复杂以至很多开发者在编写程序时经常出错4C语言缺少垃圾自动回收机制5C语言缺少可移植的安全性、分布式程序设计、多线程等功能6C语言编写的程序无法很方便地移植到各种设备平台上。基于上述原因同时考虑到项目资金的限制比尔·乔伊决定开发一种兼具C语言和Mesa语言优点的新语言。最初高斯林试图修改和扩展C 的功能来实现目的但是后来他放弃了。他决心创造出一种全新的语言并以他办公室外的树命名为“Oak”橡树。
经过艰苦卓绝的努力到1992年的夏天项目组已经能够演示新平台的一部分了包括Green操作系统Oak的程序设计语言和类库以及支撑该操作系统的硬件。最初的计划是将该操作系统运行在一种名为Star7且类似PDAPersonal Digital Assistant个人数字助理简称PDA的设备上。这种设备的特点是具有鲜艳的图形界面同时使用被称为“Duke”的智能代理来帮助用户。1992年12月3日项目组使用这种设备进行了展示。同年的11月Green计划被转化成了一个SUN公司的全资子公司即FirstPerson有限公司。项目组随即被重新安排到了帕洛阿尔托。FirstPerson团队对建造一种高度互动的设备感兴趣。在时代华纳发布了一个关于电视机顶盒的征求提议书时FirstPerson团队随即敏锐地觉察到了机会于是提出了一个机顶盒平台的提议。遗憾的是有线电视业界觉得FirstPerson的平台会释放过多的控制权给用户因此FirstPerson的投标败给了SGI。雪上加霜的是与3DO公司的另外一笔关于机顶盒的交易也没能够获得成功。FirstPerson走到了山穷水尽没有资金支持继续研究的地步于是FirstPerson公司被并购回了SUN公司。
1994年的6、7月间在经历了一场历时三天的激烈讨论之后项目组的决定再一次改变努力的方向。这次他们决定将该技术应用于万维网。他们认为随着Mosaic浏览器的到来因特网正在向高度互动的目标演进而这一远景正是他们在有线电视网中看到的。于是帕特里克·诺顿写了一个小型万维网浏览器原型即WebRunner。后来又被更名为HotJava。同年Oak语言被更名为Java。1994年10月项目组向公司高层演示了HotJava和Java平台。
1995年5月23日SunWorld大会上SUN公司的科学指导约翰·盖吉宣告了Java技术的诞生。1996年1月Sun公司成立了Java业务集团专门开发Java技术。
为了让读者对Java的发展历程有更为清晰的了解图 4‑14按照年份的先后顺序展现了Java发展历史上的各个版本及其相关技术的改进。 图 4‑14 Java发展年代列表
Java编程一般使用IntelliJ IDEA或Ecplise软件。Ecplise是免费开源的而IntelliJ IDEA则需要付费使用。Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。Eclipse最初是由IBM公司开发的替代商业软件Visual Age for Java的下一代IDE开发环境2001年11月贡献给开源社区它由非营利软件供应商联盟Eclipse基金会管理。通过Ecplise可以非常方便的进行Java项目的开发。Ecplise的下载地址为https://www.eclipse.org/downloads/。
在之前的文章《编程语言的通用架构》中通过图 4‑2呈现了编程语言的通用架构学习其它编程语言只需将该通用架构拓展到要学习的编程语言上即可。将图 4‑2中的编程语言的通用架构拓展到Java语言得到了图 4‑15中的Java语言的知识架构。下面将根据图 4‑15来描述如何学习Java语言。 图 4‑15 Java语言的知识架构
1. Java语言的核心模块
(1) Java中的数据类型
了解Java中变量的数据类型的种类并熟练掌握不同数据类型的变量的定义和赋值的方法。也就是说必须理解整型、实型、字符型、逻辑型、枚举型、数组的定义及其赋值方法。注意这里将数组视为一种特殊的数据类型。与C语言相比在Java中不存在结构体类型如果需要像C语言那样使用结构体数据类型可以通过类的功能来实现。
(2) Java中的流程控制语句
熟练掌握Java中的流程控制语句的实现方法。具体来说需要掌握分支语句if语句、switch语句的实现方法循环语句for语句、while语句、do-while语句的实现方法。
(3) Java中方法的定义、实现与方法重载
在Java语言中函数被称为方法。学习Java需要熟练掌握Java中方法的定义与实现、方法的调用、方法的重载等明白在Java中使用方法的好处会利用方法实现代码的封装从而提高代码的安全性。
(4) Java中的类的定义与实现、类的继承与派生
面向对象是Java语言的核心思想和优势。在Java语言中一切皆对象而对象是类的实例化可见类在Java中的重要性。读者要理解面向对象编程的核心思想熟练掌握Java中类的定义和实现方法。深刻理解类的派生和继承的主要思想以及类的继承和派生的必要性和优势。认真掌握类的继承和派生的方法。理解多态性的基本概念以及通过类来实现多态性的方法。
2. Java语言的扩展模块
Java语言的扩展模块主要包括文件I/O、图像处理、网络通信、界面编程、数据库操作、并行计算、混合编程等。
(1) 文件I/O
在Java中所有的I/O机制都是基于数据“流”方式进行输入/输出。这些“数据流”可视为同一台计算机不同设备或网络中不同计算机之间流动的数据序列。Java把这些不同来源和目标的数据统一抽象为“数据流”。这些流序列中的数据通常有两种形式文本流和二进制流。读者需要熟练掌握Java中文件I/O的主要方法。
(2) 图像处理
Java中的图像处理主要是指图像、动画、视频等的显示、编辑、分析、保存等一系列的操作。Java图像处理功能非常强大很多图像、视频处理软件都是基于Java语言开发的。读者如果希望从事Java项目开发方面的工作需要熟练掌握Java的图像处理扩展模块。可以使用Java中的AWT工具集方便地实现绘图功能AWT的中文名称是抽象窗口工具集Abstract Window Toolkit简称AWT。
(3) 网络通信
Java是伴随着互联网的诞生而发展强大的语言其核心优势是可以非常方便地实现互联网间的网络通信特别是网站页面与服务器端之间的通信。掌握好基于Java的网络通信技术对于Java互联网项目的开发至关重要。
(4) 界面编程
Eclipse中的SWT和JFace这两个工具包为开发人员进行Java界面编程提供了非常强大的功能。开发者既可以采用拖拽方式实现界面的编写也可以使用编写代码行的方式编写界面。Java编写的软件界面非常美观很多著名的软件采用Java进行界面编程例如 MATLAB的内核是基于C语言的但其界面编程却是基于Java的。
(5) 数据库操作
Java使用JDBC包实现数据库的操作。JDBC全称Java Database Connectivity它可以通过载入不同的数据库的“驱动程序”而与不同的数据库进行连接。JDBC优势在于对不同的数据库都具有很好的兼容性而且可以使用同一套操作来操作不同的数据库。通过Java编程实现对数据库的操作是从事Web编程的核心内容之一需要熟练掌握。
(6) 并行计算
Java可以通过特定的计算框架实现并行计算例如Fork/Join计算框架等。当处理大数据时采用Java进行并行计算会显著提升计算的效率但是当数据量较小时则没有必要。Hadoop是最著名的大数据计算框架之一它就是使用Java进行开发的。掌握Java的并行计算扩展模块对于进行大规模的数据处理是必须的。
(7) 混合编程
使用Java与其它语言进行混合编程是非常常见的需求。例如在开发一个AI计算架构时往往采用Java语言编写主体框架而使用Java调用Python来实现具体的AI算法。这好比建造一座建筑时主体架构使用钢材而局部使用砖头。因此掌握Java的混合编程技巧就显得非常有必要。
关于Java语言的界面编程工具、常用教材、学习路线等内容的详细介绍请读者查阅图书《人工智能怎么学》。
如果想了解人工智能中移动端编程的相关内容敬请关注本公众号的下一篇文章《人工智能中的移动端编程》。
关于人工智能中编程能力和技能训练的更多介绍可以购买《人工智能怎么学》进一步阅读。 图书购买方式
京东https://item.jd.com/13395339.html
当当http://product.dangdang.com/29469230.html
天猫https://detail.tmall.com/item_o.htm?id687374654836 为了让图书惠及更多的读者为更多想学习人工智能的人提供帮助经过向出版社申请对图书《人工智能怎么学》的部分内容进行改编和连载。图书《人工智能怎么学》的全部内容包含了初级入门、中阶提高以及高级进阶三个级别的内容。连载的内容主要是初级入门级别适合想对人工智能进行快速和高效入门的读者对于已有一定的人工智能学习基础希望进一步进阶或提高的读者则需要购买图书《人工智能怎么学》学习中阶提高以及高级进阶的内容。此外对于学习人工智能感兴趣的读者也可以加入知识星球《人工智能怎么学》知识星球是一个构建学习社群的平台通过加入《人工智能怎么学》的社群你将获得更多的学习资料和课程信息。 与作者互动和了解更多信息
想跟作者一起学习人工智能和互动你可以加入如下社群
知识星球https://t.zsxq.com/0aLkVg0os
QQ群600587177 想了解更多关于人工智能学习及实践的内容请关注如下媒体
官方网站https://bigdatamininglab.github.io
官方微信公众号人工智能怎么学(可扫描下方二维码或者微信搜索“人工智能怎么学”添加关注)
CSDNhttps://blog.csdn.net/audyxiao001
参考文献
Robert C. Martin. 代码整洁之道第2版[M]. 韩磊, 译. 北京: 中国工信出版集团, 人民邮电出版社, 2020.Herb Sutter, Andrei Alexandrescu. C编程规范101条规则、准则与最佳实践[M]. 刘基诚, 译. 北京: 人民邮电出版社, 2016.杨冠宝. 阿里巴巴Java开发手册[M]. 北京: 电子工业出版社, 2020.James Gosling et al. The Java Language SpecificationJava SE 8 Edition [M]. Upper Saddle River: Addison-Wesley, 2014.老九君. C的发展简史[EB/OL]. https://www.cnblogs.com/ljxt/p/11636342.html, 2019-10-08.翁惠玉. C程序设计思想与方法第2版[M]. 北京: 人民邮电出版社, 2012.谭浩强. C程序设计第3版[M]. 北京: 清华大学出版社, 2015.Siddhartha Rao. Sams Teach Yourself C in One Hour a Day (Eighth Edition) [M]. Boston: Pearson, 2017.Bjarne Stroustrup. ProgrammingPrinciples and Practice Using C (Second Edition) [M]. Crawfordsville: Pearson, 2014.Bjarne Stroustrup. C语言设计和演化[M]. 裘宗燕, 译. 北京: 人民邮电出版社, 2020.Stephen Prata. C Primer Plus中文第6版[M]. 张海龙 等, 译. 北京: 人民邮电出版社, 2020.Stanley B. Lippman, Josée Lajoie, Barbara E. Moo. C Primer中文第5版[M]. 王刚 等, 译. 北京: 电子工业出版社, 2013.Stanley B. Lippman. Essential C中文版[M]. 侯捷, 译. 北京: 电子工业出版社, 2013.侯捷. STL源码解析 [M]. 武汉: 华中科技大学出版社, 2015.Ivor Horton. C标准模板库编程实战 [M]. 郭小虎 等, 译. 北京: 清华大学出版社, 2017.Brian W. Kernighan, Rob Pike. 程序设计实践 [M]. 裘宗燕, 译. 北京: 机械工业出版社, 2003.Bruce Eckel. C编程思想两卷合订本[M]. 刘宗田 等, 译. 北京: 机械工业出版社, 2011.Scott Meyers. Effective C改善程序与设计的55个具体做法第3版[M]. 侯捷, 译. 北京: 电子工业出版社, 2011.Scott Meyers. More Effective C35个改善编程与设计的有效方法 [M]. 侯捷, 译. 北京: 电子工业出版社, 2020.Scott Meyers. Effective STL50条有效使用STL的经验 [M]. 潘爱民 等, 译. 北京: 电子工业出版社, 2013.陆文周. Qt 5开发及实例第4版[M]. 北京: 电子工业出版社, 2019.王维波. Qt 5.9 C开发指南 [M]. 北京: 人民邮电出版社, 2018.冯振, 郭延宁, 吕跃勇. OpenCV 4快速入门 [M]. 北京: 电子工业出版社, 2020.ghscarecrow. Java的发展历程[EB/OL]. https://blog.csdn.net/ghscarecrow/article/details/82318636, 2018-09-02.JMCui. Java的发展历程[EB/OL]. https://www.cnblogs.com/jmcui/p/11796303.html, 2019-11-07.明日科技. Java从入门到精通第5版[M]. 北京: 清华大学出版社, 2019.Kathy Sierra, Bert Bates. Head First Java (Second Edition) [M]. Sebastopol: O’Reilly, 2005.Bruce Eckel. Java编程思想第4版[M]. 陈昊鹏, 译. 北京: 机械工业出版社, 2007.Cay S. Horstmann. Java核心技术 卷I基础知识第11版[M]. 林琪 等, 译. 北京: 机械工业出版社, 2019.Cay S. Horstmann. Java核心技术卷Ⅱ高级特性第11版[M]. 陈昊鹏, 译. 北京: 机械工业出版社, 2020.Joshua Bloch. Effective Java中文第3版[M]. 俞黎敏, 译. 北京: 机械工业出版社, 2019.周志明. 深入理解Java虚拟机JVM高级特性与最佳实践第3版[M]. 北京: 机械工业出版社, 2019.Brian Goetz. Java并发编程实战 [M]. 童云兰 译. 北京: 机械工业出版社, 2012.Kamalmeet Singh. Java设计模式及实践 [M]. 张小坤 等, 译. 北京: 机械工业出版社, 2013.明日科技. Java Web从入门到精通第3版[M]. 北京: 清华大学出版社, 2019.未来科技. HTML5CSS3JavaScript从入门到精通[M]. 北京: 中国水利水电出版社, 2017.Elisabeth Robson, Eric Freeman. Head First HTML与CSS第2版[M]. 徐阳 等, 译. 北京: 中国电力出版社, 2013.Adam Freeman. HTML5权威指南 [M]. 谢廷晟 等, 译. 北京: 人民邮电出版社, 2014.Eric A. Meyer, Estelle Weyl . CSS权威指南第4版[M]. 安道, 译. 北京: 中国电力出版社, 2019.David Flanagan. JavaScript权威指南第7版[M]. 李松峰, 译. 北京: 机械工业出版社, 2021.许令波. 深入分析Java Web技术内幕修订版[M]. 北京: 电子工业出版社, 2014.Nicholas S. Williams. Java Web高级编程 [M]. 王肖峰, 译. 北京: 清华大学出版社, 2015.孙卫琴. Tomcat与Java Web开发技术详解第3版[M]. 北京: 电子工业出版社, 2019.郭霖. 第一行代码Android第3版[M]. 北京: 人民邮电出版社, 2020.欧阳燊. Android Studio开发实战从零基础到App上线第2版[M]. 北京: 清华大学出版社, 2018.Dmitry Jemerov, Svetlana Isakova. Kotlin实战 [M]. 覃宇 等, 译. 北京: 电子工业出版社, 2017.Kristin Marsicano, Brian Gardner, Bill Phillips, Chris Stewart. Android编程权威指南第4版[M]. 王明发, 译. 北京: 中国工信出版集团, 人民邮电出版社, 2021.刘望舒. Android进阶之光第2版[M]. 北京: 电子工业出版社, 2021.邓凡平. 深入理解Android: Java虚拟机ART [M]. 北京: 机械工业出版社, 2019.任玉刚. Android开发艺术探索[M]. 北京: 电子工业出版社, 2015.林学森. 深入理解Android内核设计思想上、下册第2版[M]. 北京: 人民邮电出版社, 2017.何红辉, 关爱民. Android 源码设计模式解析与实战第2版[M]. 北京: 人民邮电出版社, 2017.Christian Keur, Aaron Hillegass. iOS编程第6版[M]. 王风全, 译. 武汉: 华中科技大学出版社, 2019.张益珲. Swift 4从零到精通iOS开发[M]. 北京: 清华大学出版社, 2019.Aaron Hillegass, Mikey Ward. Objective-C编程第2版[M]. 王蕾 等, 译. 武汉: 华中科技大学出版社, 2015.Matthew Mathias, John Gallagher. Swift编程权威指南第2版[M]. 陈晓亮, 译. 北京: 人民邮电出版社, 2017.Kazuki Sakamoto, Tomohiko Furumoto. Objective-C高级编程iOS与OS X多线程和内存管理[M]. 黎华, 译. 北京: 人民邮电出版社, 2013.Erica Sadun. iOS Auto Layout开发秘籍第2版[M]. 孟立标, 译. 北京: 清华大学出版社, 2015.珲少. iOS性能优化实战[M]. 北京: 电子工业出版社, 2019.罗巍. iOS应用逆向与安全之道[M]. 北京: 机械工业出版社, 2020.Gaurav Vaish. 高性能iOS应用开发[M]. 梁士兴 等, 译. 北京: 人民邮电出版社, 2017.刘浩. MATLAB R2020a完全自学一本通 [M]. 北京: 电子工业出版社, 2020.天工在线. MATLAB 2020从入门到精通 [M]. 北京: 中国水利水电出版社, 2020.苗志宏, 马金强. MATLAB面向对象程序设计[M]. 北京: 电子工业出版社, 2014.徐潇, 李远 . MATLAB面向对象编程——从入门到设计模式第2版[M]. 北京: 北京航空航天大学出版社, 2017.王文峰 等. MATLAB计算机视觉与机器认知[M]. 北京: 北京航空航天大学, 2017.杨淑莹, 郑清春. 模式识别与智能计算——MATLAB技术实现第4版[M]. 北京: 电子工业版社, 2019.Eric Matthes. Python编程从入门到实践第2版[M]. 袁国忠, 译. 北京: 人民邮电出版社, 2020.Magnus Lie Hetland. Python基础教程第3版[M]. 袁国忠, 译. 北京: 人民邮电出版社, 2018.Luciano Ramalho. 流畅的Python [M]. 安道 等, 译. 北京: 人民邮电出版社, 2017.Brett Slatkin. Effective Python编写高质量Python代码的90个有效方法第2版[M]. 爱飞翔, 译. 北京: 机械工业出版社, 2021.Jan Erik Solem. Python计算机视觉编程[M]. 朱文涛 等, 译. 北京: 人民邮电出版社, 2014.Andreas C. Müller. Python机器学习基础教程[M]. 张亮, 译. 北京: 人民邮电出版社, 2018.魏坤. Julia语言程序设计[M]. 北京: 机械工业出版社, 2018.郝林. Julia编程基础第2版[M]. 北京: 人民邮电出版社, 2020.Ben Lauwens, Allen B. Downey. Think Julia [M]. Sebastopol: O’Reilly, 2019.Jalem Raj Rohit. Julia Cookbook [M]. Birmingham: Packt Publishing, 2018.Zacharias Voulgaris. Julia数据科学应用 [M]. 陈光欣, 译. 北京: 人民邮电出版社, 2018.朱红庆. Julia机器学习核心编程人人可用的高性能科学计算[M]. 北京: 电子工业出版社, 2019.Norman Matloff. R语言编程艺术[M]. 陈堰平, 译. 北京: 机械工业出版社, 2013.Andy Nicholls, Richard Pugh, Aimee Gott. R语言入门经典[M]. 姜佑 等, 译. 北京: 人民邮电出版社, 2018.Robert I. Kabacoff. R语言实战第2版[M]. 王小宁 等, 译. 北京: 人民邮电出版社, 2016.Hadley Wickham. 高级R语言编程指南[M]. 潘文捷 等, 译. 北京: 机械工业出版社, 2020.Brett Lantz. 机器学习与R语言第2版[M]. 李洪成 等, 译. 北京: 机械工业出版社, 2017.程乾, 刘永, 高博. R语言数据分析与可视化从入门到精通[M]. 北京: 北京大学出版社, 2020.周伟明.程序员的十层楼(一、二、三)[J]. 程序员, 2009(6):134-136; 2009(7):118-120; 2009(8):134-136.
注本文版权归作者个人所有如需转载请联系作者未经授权不得转载。