iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎么阅读Java源码
  • 383
分享到

怎么阅读Java源码

2023-06-17 00:06:15 383人浏览 独家记忆
摘要

本篇内容主要讲解“怎么阅读Java源码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么阅读Java源码”吧!Java源码初接触如果你进行过一年左右的开发,喜欢用eclipse的debug功能。

本篇内容主要讲解“怎么阅读Java源码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么阅读Java源码”吧!

Java源码初接触

如果你进行过一年左右的开发,喜欢用eclipse的debug功能。好了,你现在就有阅读源码的技术基础。

我建议从jdk源码开始读起,这个直接和eclipse集成,不需要任何配置。

可以从JDK的工具包开始,也就是我们学的《数据结构算法》Java版,如List接口和ArrayList、LinkedList实现,HashMap和TreeMap等。这些数据结构里也涉及到排序等算法,一举两得。

面试时,考官总喜欢问ArrayList和Vector的区别,你花10分钟读读源码,估计一辈子都忘不了。

然后是core包,也就是String、StringBuffer等。

如果你有一定的Java io基础,那么不妨读读FileReader等类。我建议大家看看《Java In A Nutshell》,里面有整个Java  IO的架构图。Java IO类库,如果不理解其各接口和继承关系,则阅读始终是一头雾水。

Java IO 包,我认为是对继承和接口运用得***雅的案例。如果你将来做架构师,你一定会经常和它打交道,如项目中部署和配置相关的核心类开发。

读这些源码时,只需要读懂一些核心类即可,如和ArrayList类似的二三十个类,对于每一个类,也不一定要每个方法都读懂。像String有些方法已经到虚拟机层了(native方法),如hashCode方法。

当然,如果有兴趣,可以对照看看JRockit的源码,同一套api,两种实现,很有意思的。

如果你再想钻的话,不妨看看针对虚拟机的那套代码,如System  ClassLoader的原理,它不在JDK包里,JDK是基于它的。JDK的源码Zip包只有10来M,它像是有50来M,Sun公司有下载的,不过很隐秘。我曾经为自己找到、读过它很兴奋了一阵。

Java Web开发源码

在阅读Tomcat等源码前,一定要有一定的积累。我的切实体会,也可以说是比较好的阶梯是:

写过一些Servlet和jsP代码。注意,不是用什么Struts,它是很难接触到Servlet精髓的。用好Struts只是皮毛。

看过《Servlet和JSP核心编程

看过Sun公司的Servlet规范

看过Http协议的rfc,debug过http的数据包

如果有以上基础,我也不建议你开始读Tomcat源码。我建议你在阅读Tomcat源码前,读过Struts源码,Struts源码比  WEBWork要简单得多。这个框架是可以100%读懂的,至少WebWork我没有100%读懂。我曾经因为读懂了Struts源码,自己写过一个  Web框架。

当然,在读Struts框架前,***看过它的MailReader等demo,非常非常不错的。

如果你做过一些Struts项目,那么读它时就更得心应手了。

在读Struts前,建议看看mvnforum的源码,它部分实现了Struts的功能,虽然这个BBS做得不敢恭维。

如果你读过Struts,再开始考虑Tomcat源码阅读吧。

不过,我还是不建议直接读它,先读读onJava上的系列文章《How Tomcat  Works》吧,它才是Tomcat的最最简易版。它告诉你httpservletRequest如何在容器内部实现的,Tomcat如何通过  Socket来接受外面的请求,你的Servlet代码如何被Tomcat容器调用的(回调)。

学习JSP,一定要研读容器将JSP编译后的Servlet源码。

为什么我总是称呼Tomcat为容器,而不是服务器?这个疑问留给大家吧。

如果你一定要读Tomcat,那么就读Jetty吧。至少它是嵌入式,可以直接在eclispe里面设置断点debug。虽然Tomcat也有嵌入式版本。

Java数据库源码阅读

我建议,先读读Sun的JDBC规范。

我想你一定写过JDBC的代码,那么这时候可以开始阅读源码了。

如果了解JDBC规范(接口),那么它的实现,JDBC  Driver就一定要开始了解,我的建议是,读读mysql的jdbc驱动,因为它开源、设计优雅。在读Mysql的JDBC驱动源码时,建议看看  mysql的内幕,官方正好有本书,《Mysql  Internals》,我五年前读过一部分。比如你可以知道mysql的JDBC驱动,如何通过socket数据包(connect、query),给这  个c++开发的mysql服务器交互的。

通过上面的阅读,你可以知道,你的业务代码、JDBC规范、JDBC驱动、以及数据库,它们是如何一起协作的。

如果你了解这些内幕,那么你再学习Hibernate、iBatis等持久化框架时,就会得心应手的。

读过JDBC驱动,那么下一步一定要读读数据库了。而正好有一个强大的数据库是用Java开发的,Hsqldb。它是嵌入式数据库,比如用在桌面客户端软件里,如Mail  Client。

Java通讯及客户端软件

我强烈推荐即时通讯软件wildfire和spark。你可以把wildfire理解成MSN服务器,Spark理解成MSN客户端。它们是通过XMPP协议通讯的。

我曾经在一个项目中,定制过Spark,当然也包括服务端的一些改动。所以它们的源码我都读过。

我之所以推荐它们。是因为:

XMPP够轻量级,好理解

学习Socket通讯实现,特别是C/S架构设计

模块化设计。它们都是基于module的,你既可以了解模块化架构,还可以了解模块化的技术支撑:Java虚拟机的ClassLoader的应用场景。

Event Driven架构。虽然GUI都是Event驱动的,但Spark的设计尤其优雅

这么说吧,读它们的源码,你会为做一名程序员而自豪,因为无论是他们的架构设计还是代码,都太漂亮了。

Java企业级应用

当然了,就是Hibernate、spring这类框架。

在读Spring源码前,一定要先看看Rod Johnson写的那边《J2EE Design and  Development》,它是Spring的设计思路。注意,不是中文版,中文版完全被糟蹋了。

在读Hibernate源码前,一定要读读Gavin King写的那本《Hibernate in Action》,同时,应该再读读Martin  Fowler写的《企业应用架构模式》,它专门谈到持久化框架的设计思路。当你觉得这两本书读透了,再去看它们源码吧。

而且,在读源码前,你会发现它们用到很多第三方jar包,二三十个,你***把那些Jar包先一个个搞明白。

说到企业应用,一定会涉及到工作流。我当年读过jBPM的源码,网上有介绍jBPM内核的文章(银狐)。我感觉它的内核也就两千行,不要害怕。我曾经阅读jBPM源码的博客。

当然了,读工作流源码,前提是一定要对其理论模型有深入的了解,以及写过一些demo、或做过一些项目。

我上面介绍的这些,是我自己读过的,也适合一般人阅读。

我也读过一些非Java源码,感觉不错,也推荐给大家:

dojo源码  它的架构设计得很优雅,仿Java的import和extends。但实际应用起来一塌糊涂。我们当年基于这个开发了自己的框架,不过我不是主力。

Flex源码 Flex  08年底刚刚开源后,我就用它做过一个中型项目,应该说是国内的技术先行者。当时市面没有有深度的书,也没有开源项目。我纯粹是看Flex的Help文档和源码,把项目搞定的。两三年过去了,现在觉得系统设计得蛮优雅的。

到此,相信大家对“怎么阅读Java源码”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 怎么阅读Java源码

本文链接: https://www.lsjlt.com/news/286279.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么阅读Java源码
    本篇内容主要讲解“怎么阅读Java源码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么阅读Java源码”吧!Java源码初接触如果你进行过一年左右的开发,喜欢用eclipse的debug功能。...
    99+
    2023-06-17
  • 怎么样阅读Java源码
    这篇文章主要介绍了怎么样阅读Java源码,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。阅读Java源码的前提条件:1、技术基础在阅读源码之前,我们要有一定程度的技术基础的支持...
    99+
    2023-06-02
  • PostgreSQL怎么阅读源代码
    这篇文章主要介绍PostgreSQL怎么阅读源代码,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!自底向上的方法    先说自底向上的方法。简单来说,就是从一个具体的小功能点出发阅读和...
    99+
    2024-04-02
  • Nacos源码阅读方法
    为什么我会经常阅读源码呢,因为阅读源码能让你更加接近大佬,哈哈,这是我瞎扯的。 这篇文章将会带大家阅读Nacos源码 以及 教大家阅读源码的技巧,我们正式开始吧! 先给大家献上一张我...
    99+
    2024-04-02
  • Android源码在线阅读
    ⭐博客同步更新在blogs-index ⭐推荐在github上阅读 推荐几个我在用的Android源码在线阅读网站,方便随时随地学习Android代码。 AOSPXRef 代码比较齐全,...
    99+
    2023-09-02
    android
  • 程序员是怎么阅读源码的
    本篇内容介绍了“程序员是怎么阅读源码的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!React:React 架构的演变 - 从同步到异步Re...
    99+
    2023-06-15
  • Spring源码阅读MethodInterceptor解析
    目录概述MethodInterceptor 分析AspectJAroundAdvice 分析AspectJAfterThrowingAdvice 分析AspectJAfterAdvi...
    99+
    2022-11-13
    Spring MethodInterceptor Spring MethodInterceptor源码解析
  • GoExcelizeAPI源码阅读GetPageLayout及SetPageMargins
    目录一、Go-Excelize简介二、 GetPageLayout三、SetPageMargins一、Go-Excelize简介 Excelize 是 Go 语言编写的用于操作 Of...
    99+
    2024-04-02
  • jQuery1.5.1 animate方法源码阅读
    复制代码 代码如下: animate: function( prop, speed, easing, callback ) { if ( jQuery.isEmptyObject(...
    99+
    2022-11-21
    animate 源码阅读
  • 怎么读Java源码
    这篇文章主要讲解了“怎么读Java源码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么读Java源码”吧!1、建议从JDK源码开始读起,这个直接和eclipse集成,不需要任何配置。可以从...
    99+
    2023-06-17
  • 怎么进行axios源码阅读与分析
    怎么进行axios源码阅读与分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。概述在前端开发过程中,我们经常会遇到需要发送异步...
    99+
    2024-04-02
  • Nacos源码阅读方法是什么
    这篇文章主要介绍“Nacos源码阅读方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Nacos源码阅读方法是什么”文章能帮助大家解决问题。先给大家献上一张我梳理的高清源码图,方便大家对nac...
    99+
    2023-06-29
  • python json-rpc 规范源码阅读
    目录json-rpc 源码阅读JSON-RPC规范jsonrpcclient的实现jsonrpcserver的实现小结小技巧json-rpc 源码阅读 JSON-RPC是一个无状态且...
    99+
    2024-04-02
  • Java终止线程实例和stop()方法源码阅读
    了解线程概念线程 是程序中的执行线程。Java 虚拟机允许应用程序并发地运行多个执行线程。线程特点拥有状态,表示线程的状态,同一时刻中,JVM中的某个线程只有一种状态;·NEW尚未启动的线程(程序运行开始至今一次未启动的线程)·RUNNAB...
    99+
    2023-05-30
  • python线程同步原语--源码阅读
    前面两篇文章,写了python线程同步原语的基本应用。下面这篇文章主要是通过阅读源码来了解这几个类的内部原理和是怎么协同一起工作来实现python多线程的。 相关文章链接:python同步原语--线程锁                  ...
    99+
    2023-01-30
    线程 源码 python
  • 教你阅读Python开源项目代码
    作者:董伟明 链接:https://zhuanlan.zhihu.com/p/22275595 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。注:本专栏文章未经允许请勿转载。 知乎上有不少人问和关注阅读开...
    99+
    2023-01-31
    教你 开源 代码
  • Redis源码阅读:Redis字符串SDS详解
    SDS 基本概念 简单动态字符串(Simple Dynamic String)SDS,用作Redis 的默认字符串。 C语言中的字符串:以空字符结尾的字符数组 SDS实现举例 r...
    99+
    2024-04-02
  • spring源码阅读--@Transactional实现原理讲解
    目录@Transactional注解简介spring中声明式事务实现原理猜想@Transactional作用动态代理逻辑实现TransactionInterceptor–最终事务管理...
    99+
    2024-04-02
  • spring源码阅读--aop实现原理讲解
    目录aop实现原理简介代理实现的处理器(BeanPostProcessor)代理实现的源头–AnnotationAwareAspectJAutoProxyCreatorAnnotat...
    99+
    2024-04-02
  • Go Excelize API源码阅读SetSheetViewOptions示例解析
    目录一、Go-Excelize简介二、 SetSheetViewOptions一、Go-Excelize简介 Excelize 是 Go 语言编写的用于操作 Office Excel...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作