本文摘自左潇龙博客,原文出处:https://blog.youkuaiyun.com/zuoxiaolong8810/article/details/65629297
一句话:玩好JDK(Java Development Kit)
总的来说,JDK包括三部分,第一:Java运行环境(JVM),第二:Java的基础类库(lang 、uitl、io等等),第三:Java开发工具(java、javac等等)。
第一部分:Java运行环境
这里的运行环境就是指咱们平常的所说的JRE(Java Runtime Environment),它的核心就是java虚拟机(JVM),可以说它是java中的重中之重,没有它class文件就无法解析
Java稍微高级一点的职位,面试必问的;
建议:对于JVM,多深入研究,能有多深就多深
第二部分:Java基础类库
Java基础类库有近200多个包,这里就不一一列举了,以下是对所有的包进行分级,大伙可以根据以下进行分级学习
第一级别:精读源码
java.lang、java.util(使用数据结构常用的)、java.io(读写文件必不可少的)
这3个包是最常用的,这里要求精读源码,一方面增加读代码的能力,另一方面的学习大神们的写代码风格
第二级别:深刻理解
java.lang.reflect(反射)、java.net(网络IO)、javax.net.*(网络)、java.nio.*(非阻塞IO)、java.util.concurrent(并发包).*
以上这些包虽然比精读源码要求低一级,但是却很重要,这些类的源码非常复杂,需要花太多时间去研究,其实会得不偿失。
不过在使用这些类的过程中遇到了问题,第一反应是先看看它们的源码试着解决问题,而不是百度或者谷歌
Java.reflect,反射要搞清楚的话,需要弄明白JVM的类加载机制;
网络IO要搞清楚的话,需要弄清楚TCP/IP和HTTP\HTPS
并发包要弄清楚的话,需要理解并发的相关知识
这4个包的熟悉程度决定你的程序员所在的水平
第三级别:会用即可
java.lang.annotation
javax.annotation.*
java.lang.ref
java.math
java.rmi.*
javax.rmi.*
java.security.*
javax.security.*
java.sql
javax.sql.*
javax.transaction.*
java.text
javax.xml.*
org.w3c.dom.*
org.xml.sax.*
javax.crypto.*
javax.imageio.*
javax.jws.*
java.util.jar
java.util.logging
java.util.prefs
java.util.regex
java.util.zip
第三级别的包你会用就行,,这些包在特定情况下会用到,但不会时刻用到。比如sql包和transaction包就是操作数据库的使用用到,xml、dom\sax对xml操作的时候用到
第四级别:请无视他
除了上述所提及的包,剩下的包可以无视他们,几乎不用到它们
第三部分:Java的开发工具
这些开发工具是辅助你开发的,java javac是常用的,
还有其他的比较实用的工具,可以帮助你排查问题,
这儿列出常用的工具有jmap、jconsole,jstack,jvisualvm,其他工具可在bin目录下查找
小结
到目前为止,具有扎实的Java基础到目前为止说完了;
总的来说,先从第二部分开始着手比较好,在第二部分中,可以把第一级别称为基础,第二级别成为进阶,第三第四级别后续慢慢熟练就行了
不过最最重要的还是JVM,JVM才是Java的核心。路漫漫其修远兮 吾将上下而求索