2016 - 2024

感恩一路有你

java学习之jvm从哪方面入手学习 如何系统的学习JAVA?

浏览量:1990 时间:2023-05-20 12:45:53 作者:采采

如何系统的学习JAVA?

java的整体生态和积累知识真是是太大了。95年到现在为止20多年的积累,全都不属于到计算机软硬件的方方面面。我不提就怀疑,提主所说的精通,是指jdk本身和一些必要的数据结构这些正确框架和面向对象的基本都思想吧。

从11年初至今,一直在在学习java相关的知识。其中也走了不少弯路。按自己的积累,具体提主一个自认为合算且有是有深度的学习路线。确切分下面几个阶段吧。

1.简单应尽很有可能的打牢基础的数据结构和简单的算法基础。

可以去急速的学习一些简单的四头系统,来满足的条件软件学习的兴趣和初期成就感。但,你必须回过头,一遍的培养数据结构基础和简单算法。像这种书就这个可以。

2.熟练使用Java类库和java第三方工具框架。

去学习建议使用java的语法,接触理解Java语法设计什么的逻辑。熟练的掌握手中掌握jdk类库本身,在内各种第三方类库工具包和第三方框架的简单使用。这里自学的同时,推荐去看看《设计模式》,《代码整洁之道》,《spring源码解读》,《Spring揭秘》等这一类的书集。

3.理解学jdkjava代码本身的应用源码实现程序和大型网游第三方框架的源码和架构设计。

例如jdk本身的数据结构二叉树,红黑树,treemap,和异步包的unsafe,同步阻塞队列,call-future等等包源码,在内线程基础类的实现,各个类库怎么设计的结构和设计模式。学透第三方框架的设计思想,理解学习第三方框架的核心源码。

其实,这里面可能会会不属于到其他的事务,分布式协议等,这里继续展开攻击。这个过程不是他一朝一夕,很有可能是需要大量的时间和技术感悟。肯定,《设计模式》,《代码整洁之道》,《spring源码解读与设计详析》,《Spring揭秘》等等这一大类书,在这个过程也可以明白大差不差了。

4.再理解jdk,jre即jvm原理和实现程序。

这里我推荐看下王振彪的《实战java虚拟机》,里面解说也很偏实操。容易上手明白。

简单,也可以从jdk那个软件的工具学习来先学些。

例如:jstat,jmap,jstack,jps,jdb.......哪怕有就这个可以窥视运行期间不好算内存数据的HSDB。当然了,充当自学初步,我们只要理解正确的几个命令,并明白了其华指的意义再试一下。不过,第三方监控工具,除开jdk本身也需要提供了3个可视化的监控。

主要,表述jvm的运行加载原理,看懂class文件结构。

这个过程我们也可以动用之前会专用监控工具,理解jvm加载的基本原理。也可以建议参考官方各个版本的jvm标准,学习看得懂class文件。在此这个可以建议使用如classpy等工具,方便啊我们真接阅读什么class文件。也可以再试试意见class字节码级别的单步运行调试工具。甚至,是可以接触用用jvm汇编编码工具。

接下来,明白jvm的垃圾回收机制发展历史和各个主流垃圾回收器的工作原理。

这个过程总之更加复杂。垃圾回收器有各种串行,左行,新声代/swap和老年代,和回收警戒线,clear触发条件,各种个样的基本参数和不咋得用超参数,以及G1的H区,ZGC等等。。。不过的是,GC并都属于jvm官方规范的一部分。

接着,动手做一些jvm的实践和实战,

例如,jvm较常见的故障排查和故障归纳,性能调优,热程序加载,class字节码的动态操作,asm等。

后来,也可以数次利用自己的jvm。(当然这个步骤,对很多同学来说不是前提是了)

这里我推荐几本书,确实是全部看懂jvm规范的要求的学习路径。最好自己实现程序垃圾回收器。

周老师的《深入理解Java虚拟机》。

接下来是《深入嵌入式java虚拟机》和配套源码。这个cldc的jvm源码唯有1M多。目前在oracle的官网上,仍旧是可以下载。是一个设计更加系统精简的jvm实现程序。

接下来的,也可以去阅读《自己动手写java 虚拟机》。这本书的jvm基于是按结构go语言编写。当然其中也有很多设计并也不是非常合算。但基本都都按照了jvm规范。

这个时候就也可以去看一下github上各种jvm的开源软件实现了。有me,scalajvm,javainjava,ajvm,python-jvm,lua,各个版本各个相同的jvm实现程序。

不过,这些实现都仅仅基本原理。

后面推荐推荐你上去看《实战hotspot》豹子书,参与高级语言虚拟机的圈子。

肯定,垃圾回收的书籍都很少,这里应该我推荐给你垃圾回收的超经典书《The Garbage Collection Cookbook》。事实上对新的垃圾回收算法有兴趣,也可以去知乎搜索相关的论文和GC算法开放源代码基于的demo。

5.不过,我的建议只是因为对于Java本身。

能够要提升到完全才能学好java生态,软件工程,计算机网络,大数据基础知识,mahuot,sparklib,分布式搜索架构,各种消息中间件,缓存中间件,数据库,DNS/CDN。。。。。这些全是做互联网应用,无法躲闪的。

不能见意,通用知识熟练的掌握,努力专研方向专精,查找生态打听一下。

而提问是针对java本身。我就继续发起说其他具体看方向了。描述的是大的技术方向,并没有什么其他答主那样,详细去再讨论语法糖这种级别。期望对提主所帮助。

有任何问题,请关注知道回答,与我继续讨论。谢谢了。

你是如何学习Java的?

给您推荐一下Java自学路线图,是菊厂童鞋做开发你经常建议使用的一些技术和工具,只希望能好处到您~

前端部分:

1)HTML:网页的核心语言,构成网页的基础

2)CSS:使网页十分多彩缤纷璀璨的利器

3)JavaScript:使网页动起来的根本,加强了网页和用户之间的交互

4)HTMLDOM:换一种更加形象化的角度来看待事情网页,让我们更加方便的控制网页

5)HTMLBOM:与浏览器交互过程不可或缺的工具

6)JavaScript库,主要是:jQuery教材习题解答插件、YUI船舶概论插件,使c语言设计网页非常的便捷和健硕的强大工具

7)AJAX:异步重新提交,增加了用户在用网页的良好交互体验

8)JSON:比XML更小、快的,更易解析的数据传输工具

9)FLEX:可以提供丰富多彩的动画效果

10)普元工作流:十分清晰明了的帮助用户处理业务流程上面的工作

11)JSP:Servlet的展示层,使网页逻辑与网页设计的显示只是分离

12)JSTL:可以提高和简化后了JSP页面的开发

13)EL:使JSP页面写出声极其很简单

后台部分:

1)JAVA语言编程基础部分:内容多样是Java知识体系结构的核心和基础

2)JDBC:需要提供了一种基准,以此为标准这个可以形成完整更高级的工具和接口,使Java开发人员都能够c语言程序数据库应用程序

3)JavaMail:主要是用于电子邮件的相关的编程工作

4)JUnit:单元测试,这座变得工作测试出来的地位仍然非常重要

5)Log4j:使我们能够更细致地完全控制日志的生成过程

6)Servlet:JavaWeb的核心

7)Struts2:JavaWeb编程中明星级的框架,优点多功能组合强使编程工作更简单的,要注意主要用于控制跳转

8)Spring:JavaWeb编程中明星级的框架,则是优点多功能组合强使编程工作更简单点,主要作用于管理对象

9)iBatis:JavaWeb编程中明星级的框架,同样的又是优点多功能强使编程工作更简单啊,通常用于程序和数据库之间的交互

10)SQL:与数据库多屏幕编程的必备工具

版本控制:

1)SVN:版本控制,更方便团队协同工作

WEB服务器:

1)Tomcat:杰出的在线的大中小型WEB服务器

2)Weblogic:功能很极为强大的WEB服务器

开发工具:

1)Eclipse:开源强大无比的Java编程工具

2)MyEclipse:在eclipse基础上而且自己的插件开发而成的功能强大的企业级集成开发环境

数据库:

1)Oracle:数据库业界老大,这个具体用法一点不过,也仅是正确一些常用的功能罢了,要增强

2)MySQL:最好的关系型数据库之一

3)SqlServer:最好就是的关系型数据库之一

数据库客户端:

1)Toad:相当棒的数据库客户端软件

操作系统:

1)Windows

2)Linux

远程登录的会话工具:

1)SSH:一直在在用,非常不错

其他:

各种种类和版本的浏览器(我推荐使用FireFox)、office办公软件系列、各种文本编辑器(推荐Sublime)、各种阅读器等等

下面是从网上找的三幅图片,比较好的说明了充当一个Java程序员的学习路线图,这里作为一种自我尊重嘱咐的工具,时不时地看看,而且会慌忙修补后自己的知识树!

1、Java的知识体系结构

2、JavaWeb开发的基本都学习路线图

3、JavaWeb开发完毕的成长路线图

第一部分:Java低级学习课程大纲

1、工程化专题

我们的工程化热点专题有五大内容:Maven、Nexus、jenkins、代码审查、Git/SVN

共工程浩大一个月

2、源码分析专题

源码分析有三大内容:spring的源码结论,里面包括FactoryBean和MVC和事务处理与Spring源码中设计模式结论;持久层;企业级开发前瞻预测,一共有多少需要的时间2个月

3、高并发与更高性能

高并发与集高性能有四大内容:并发编程,里面又包涵有线程安全和NIO和AIO。异步通信,里面包涵有本地队列和消息中间件。分布式协调技术,里面包涵有Zookeeper和服务锁。NoSqI:里面真包含有MongoDB和Redis和Memcached。一共有多少需要的时间2个月

4、高可用性与可扩展

高可用性与可扩展有两大内容:分布式架构详细介绍,里面有导入流量技术和服务设计和存储设计。服务调用,里面真包含有WebService和Dubbo。共耗时2个月

5、性能优化

性能优化有四大内容:360优化技巧,要如何这里有性能瓶颈。JVM优化软件。数据库优化。服务器优化。一共前后历时2个月

上面这五大专题,是几位工作经验十多年的大牛,参照自己往年的工作经验与经历,在依据什么现在科技发展的求实际情况,历经世间几个月的时间c语言程序而成,是说,上面的五大专题,也就是他们这十几年精华总结,现在,您只要明确的上面的课题自学,只要最少掉七个月多的时间,就能够学会什么与理解几位大牛十多年归纳出来的精华。学完后这些,还怕公司老总不给涨工资和职位提升么?

第二部分:某阶段的学习

学什么东西都差不多,小宅我相信大家也一样,在学东西的时候,总会安排好了好自己某阶段的学习,这样才能管用的提升自己与快速有效的理解和认知所学的知识。合理安排好,才能起到可以事半功倍的效果。

阶段一:

阶段二:

阶段三:

阶段四:

阶段五:

工具 Java jvm 程序 软件

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。