CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛

一文帮你理清基本Java编程思想,以不变应万变!-免费源码丞旭猿

孙卫琴,知名Java开发专家、IT技术作家。

业界经典10年畅销图书《Java面向对象编程》的姊妹篇《Java网络编程核心技术详解(视频微课版)》现已上市,该书基于全新Java技术并配备视频微课,以行云流水般的语言诠释了Java网络编程核心。

▲扫码获取本书详情▲

在如今的Java领域,各种新技术,新工具层出不穷,一方面,每一种技术都会不停地升级换代,另一方面,还会不断涌现出新的技术和工具。Java世界就像小时候玩的万花筒,尽管实质上只是由几个普通的玻璃碎片组成,但只要轻轻一摇,就会变化出千万种缤纷的图案。

Java世界如此变化多端,很容易让初学Java的人有无从下手的感觉。常常会有读者问我这样的问题:

我学了Java已经一年多了,现在就只能写点简单的程序,其它的东西实在太多了,我整天学都学不完,很迷惘,不知道该如何有针对性地去学,去找到一份Java工作,现在是困死在Java里了。

撰写本文,目的是为了帮助读者看清Java万花筒的本质,从复杂的表象中寻找普遍的规律,只有掌握了普遍的规律,才能以不变应万变,轻轻松松地把握Java技术发展的新趋势,迅速领略并且会熟练运用一门新的技术,而不成为被动的追随者,知其然而不知其所以然。

本文的参考书籍是《Java面向对象编程》、《Java网络编程核心技术详解》和《Tomcat与JavaWeb开发技术详解》

◆ Java的主流技术的发展

在寻找普遍规律之前,让我们先看看Java的发展历程:

  • GUI界面:Java AWT API–〉Java Swing API

  • Java Web:Servlet–〉JSP–〉Struts和Spring框架

  • 持久化层:JDBC–〉CMP EJB或BMP EJB–〉Hibernate,MyBatis, JPA –〉Spring框架

  • 分布式应用:Socket–〉RMI–〉JavaEE或Java Web Service

  • 大数据处理:Hadoop以及在此基础上产生的各种软件

◆ 主要Java软件的种类

Java软件琳琅满目,日新月异。对于初学者,无需精通每个软件的用法,只要先对Java领域的软件掌握大致的概貌,接下来在开发软件应用时,需要用到什么软件,就专攻这类软件的用法。

  • Java Web容器:Tomcat、Resin

  • EJB容器:Jboss、Weblogic、Webshpere

  • 框架:Java Web框架(Struts,Spring MVC)、业务逻辑层框架(Spring)

  • 持久化层:DAO、ORM映射工具(如Hibernate、MyBatis)、JPA

  • 工程管理工具:ANT、Eclipse、Maven

  • 日志输出工具:

a)Apache Commons Logging(Jakarta Commons Logging,JCL)

b)Simple Logging Facade for Java (SLF4J)

c)Apache Log4j(Log4j2)

d)Java Logging API(JUL)

  • Java Web服务:Apache Axis2、Apache CXF、Xfire

  • 大数据处理软件:Hadoop、Spark、Apache Hive、Hbase等

◆ 创造Java绚丽世界的核心思想

促成Java世界如此绚丽多姿的基本动力在于以下核心思想。

▉ 接口与实现

不同的软件系统之间通过接口来交互。软件系统只对外公开接口,封装实现细节。接口描述了软件系统具备的功能,也就是指定软件系统能够做什么,但是没有指明怎么去做。接口具有三大作用:

(1)对于接口制订者:Oracle公司(原先的SUN公司)通过定义接口,来制定新的软件系统的规范,例如Servlet规范、EJB规范、JPA规范和JWS规范,这些规范主要以接口的形式描述了软件系统必须具备的功能。通过制定规范,Oracle公司指引着Java技术的发展方向,同时给接口的实现者提供了自由发挥的广阔空间。

(2)对于接口实现者:接口实现者以特定的方式实现标准的规范。例如一些开放源代码软件,如Tomcat和Resin分别以不同的实现方式,实现了标准的Servlet规范。同一个接口允许有多种实现,使得Java领域保持着百花齐放、百家争鸣的良好势头。

(3)对于接口调用者:接口调用者的程序具有良好的可移植性。以Java Web应用为例,由于Tomcat和Resin遵守同样的规范,因此用户开发的Java Web应用能够顺利地从Tomcat容器移植到Resin容器中。

▉ 封装与抽象

封装指的是在一个大系统中包含一个小系统,大系统是建立在已有小系统的基础上的更为复杂、功能更强大的系统。例如,Hibernate对JDBC API进行了封装,在Hibernate内部依赖JDBC API来操纵数据库,但是Hibernate API比JDBC API具有更强大的功能,例如JDBC API只具有连接和操纵数据库的功能,而Hibernate不仅具备这一功能,还具有对象-关系映射的功能。

抽象是指从已经存在的具有相似功能、但不同接口的系统中抽取共性,提炼出统一的接口。例如,Hibernate Transaction API是对JDBC Transaction API和Java Transaction API(JTA)的抽象。

再例如现在运用最广泛的Spring框架就像八爪鱼,触角伸到了软件应用的各个层面,Spring在持久化层整合了Hibernate和MyBatis等ORM软件,在Java Web层提供了Spring MVC框架,在Java Web服务层整合了Apache CXF。通过封装和整合,使得Spring自身的功用越来越强大,并且为应用程序提供了统一的Spring API。

▉  继承与扩展

继承与扩展是一对孪生兄弟,当两个类之间存在继承关系,那么必定也存在扩展关系。继承的优点在于提高代码的可重用性,子类会继承父类的所有public和protected类型的属性和方法,在子类的程序代码中,无需重复定义这些属性和方法。扩展的优点在于使软件应用具有可伸缩性,能够在已有功能的基础上扩展新的功能。

Struts框架作为Java Web应用的框架充分运用了扩展思想。Struts框架中的许多类都是供应用程序扩展的,其中最主要的一个是Action类,在Action类中已经定义了一些通用的方法,采用Struts框架的JavaWeb应用将扩展Action类,创建负责特定流程或业务的客户化的Action类。

▉ 对象的生命周期

当一个对象通过new语句创建后,它就会拥有一块固定的内存空间,如果没有任何变量引用它,它就会结束生命周期,它占用的内存空间随时可能被JVM的垃圾回收器回收。

应用程序如何管理对象的生命周期呢?目前比较流行的做法是把对象存放在一个范围内。例如在Java Web应用中,JavaBean可以存放在request、session或application范围内。每个范围对应一个对象,例如request范围对应HttpServletRequest对象,session范围对应HttpSession对象,application范围对应ServletContext对象。把一个JavaBean存放在request范围内,实质上是在HttpServletRequest对象的一个集合属性中加入这个JavaBean的引用,这个集合属性也被称为HttpServletRequest对象的缓存。

把一个JavaBean存放在request范围内,等价于以下两种说法:

  • 把一个JavaBean加入到HttpServletRequest对象的缓存中

  • 把一个JavaBean和HttpServletRequest对象关联

当JavaBean位于request范围内,这个JavaBean的生命周期依赖于HttpServletRequest对象的生命周期,当HttpServletRequest对象结束生命周期,并且这个JavaBean也不被应用程序中的其他变量引用,那么它就会结束生命周期。

那么HttpServletRequest对象本身的生命周期由谁管理呢?这是由JavaWeb容器(也称Servlet容器)来管理的。对于每个HTTP请求,JavaWeb容器会自动创建一个HttpServletRequest对象,当HTTP请求的响应完毕,JavaWeb容器就会结束这个对象的生命周期。同理,当每个HTTP会话开始,JavaWeb容器会自动创建一个HttpSession对象,当这个会话结束,JavaWeb容器就会结束这个对象的生命周期;当每个JavaWeb应用启动时,JavaWeb容器会自动创建一个ServletContext对象,当这个应用被关闭,JavaWeb容器就会结束这个对象的生命周期。

在Hibernate中,在Session范围内加入一个持久化对象,实质上是在Session对象的集合属性中加入这个持久化对象的引用。以下几种说法是等价的:

  • 在Session范围内加入一个持久化对象

  • 在Session的缓存中加入一个持久化对象

  • 把一个持久化对象与Session关联

值得注意的是,Hibernate的Session不仅能管理缓存中持久化对象的生命周期,还会负责按照持久化对象的状态的变化,来同步更新数据库。

◆ 集成开源软件的基本步骤

在开发Java应用时,为了提高开发效率,缩短开发周期,常常需要集成第三方提供的Java软件,如ORM映射工具Hibernate、MVC框架Struts或Spring MVC、日志工具Log4J和Web服务软件Apache AXIS等。在自己的应用中集成这些第三方软件时,大体步骤都很相似。

(1) 把它们的JAR文件拷贝到classpath中。

(2) 创建它们的配置文件(XML格式的文件或者Java属性文件),这些配置文件通常也位于classpath中。

(3) 在程序中访问它们的接口。

接口与配置文件,是软件系统对外公开的两个主要窗口。无论是Spring、Tomcat、Struts还是Hibernate,都离不开配置文件,与编写程序代码相比,配置文件能提高软件的可维护性,更加灵活的适应用户变化的需求,但是,配置文件不擅长表达非常复杂的逻辑,在这种情况下,必须求助于程序代码。作为软件使用者,如果仅仅想快速掌握一个新的Java软件的使用方法,而不打算深入了解软件内在原理和结构,无非就是了解它的接口以及配置文件的使用方法。当然,如果想对软件的运用达到得心应手的地步,还应该了解软件本身的实现原理和结构,而这些软件无非就是通过抽象、封装和实现等手段,从简单的小系统出发,构造出更加复杂,但是对外有着简洁统一的接口的大系统。

当一个应用程序依赖越来越多的第三方软件时,需要下载大量的第三方软件的类库,这回带来以下问题:

  • 第三方软件的下载地址会经常发生变更,因此从网上下载软件比较麻烦。

  • 软件的版本不断更新,API不断变化,要找到和应用程序匹配的版本比较麻烦。

  • 不同软件的类库中如果存在同包同名的类,会造成冲突。

为了解决以上问题,可以用Maven来管理应用程序,Maven负责对应用程序所依赖的类库进行统一管理,解决所依赖类库的下载、版本匹配和类库之间的冲突问题。

◆ 初学者学习Java的次第

对于Java初学者,如果希望日后成为一名Java开发的高手,首先要掌握Java编程的基本功,不能如蜻蜓点水般大致有数就裹足不前。在这个阶段,可以通过专项的编程题训练,来精通Java编程语法,保证自己会熟练地编写和编译程序。遇到编译错误时,应该能迅速找到程序中的错误并进行修正。

接下来,进一步学习创建实用Java软件或分布式框架所需掌握的知识,包括多线程、套接字、数据库访问、序列化、RMI等技术。了解了这些技术后,不仅自己的编程功力又显著提高,而且会更容易地去掌握一些现成的Java软件的组成原理和用法。

最后,需要根据实际开发需求,去掌握一些框架软件或服务器软件的用法。例如,如果是开发一个Java Web应用,就需要了解Tomcat的使用和配置方法,还需要掌握Spring MVC或Struts框架的用法,假如是通过ORM来访问数据库,则要掌握Hibernate API、MyBatis API或JPA API的用法。

(完)

在 IT 行业,大多数 Java 程序员都看过孙卫琴老师的书。

孙老师的书,清晰严谨,把复杂的技术架构层层剖析,结合典型的实例细致讲解,读者只要静下心来好好品读,就能深入 Java 技术的殿堂!

如今,Java 在网络应用开发领域得到了非常广泛的运用,孙卫琴老师新书上市之际,博文视点学院联合孙老师共同打造技术视频课《Java网络编程核心技术详解》(含同名新书一本)!

通过课程+图书的学习,不仅可以帮助你掌握网络编程的实用技术,还可以进一步提高按照面向对象的思想来设计和开发Java软件的能力!

500+分钟的视频课,限时特惠仅需79元!(包含价值129元图书一本)

(扫码获取详情)

如果喜欢本文

欢迎在看留言分享至朋友圈三连

热文推荐

▼点击阅读原文,获取本书详情!

声明:本文部分素材转载自互联网,如有侵权立即删除 。

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
相关推荐
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容