学习目标
- [√]了解Java基础知识
- [√]了解JVM、JRE与JDK,并下载、安装、测试JDK
- [√]了解PATH、CLASSPATH、SOURCEPATH的作用并会设置
- [√]初步使用IDE(推荐IDEA),会编译、运行、调试简单的Java程序
学习任务
浏览教材,根据自己的理解每章提出一个问题
- 第一章 Java平台概述 学习Java的历史对Java的学习有什么帮助?
- 第二章 从JDK到IDE 为什么Java的学习需要IDE?
- 第三章 基础语法:这部分Java的许多地方与C较为相似,那么关于这部分两种语言的主要区别是什么?学习时应更注意学习哪些方面?
- 第四章 认识对象:为什么要打包基本类型?主要目的是什么?
- 第五章 对象封装:对象的封装与打包之间有什么联系与区别?封装的目的又是什么?
- 第六章 继承与多态:继承是否指若B在A的基础上多一些功能时,B可继承A,这样使编程没那么繁琐?继承与多态有什么关系?
- 第七章 接口与多态:接口与继承之间是什么联系?
- 第八章 异常处理:异常处理是否是指只要程序偏离了正常轨道(不管是什么错误)就被Java当作异常进行处理?这种处理方式的好处是什么?
- 第九章 Collection与Map:为什么要单独学习Collection与Map这两个类?对其他类的学习有什么指导性的作用吗?
- 第十章 输入/输出:对于输出不是有System.out.printfln()等方式吗,为什么输出也要设置对象?
- 第十一章 线程与并行API:并行API是什么?
- 第十二章 Lambda:Lambda是什么?
- 第十三章 时间与日期:为什么Java这么强调时间与日期?
- 第十四章 NIO与NIO2:NIO是什么?
- 第十五章 通用API:为什么需要规则表达式?
- 第十六章 整合数据库:为何要使用JDBC架构?
- 第十七章 反射与类加载器:JDK类加载器层级是什么?
- 第十八章 自定义泛型、枚举与注释:为何要自定义泛型、枚举与注释?特别是注释
认真学习教材第一、二章
在学习第一、二章的过程中,我主要是通过自己看书的方式并结合老师的学习指导进行学习,以下是我的一些体会。
第一章
- 了解Java的历史
-
为什么需要Java程序设计语言?
我个人的理解的是,在当年,当单片机计算系统的出现后,相关领域的部分工作人员马上意识到可以利用其进行嵌入式应用的研发,以提高消费类电子产品的智能化程度。遗憾的是,当时并不存在一门程序语言既可以适应单片机计算系统(不能太庞大复杂)又能支持跨平台的需求,为了满足这些要求,Java的前生Oak语言诞生了。后来随着互联网的发展,需要一种能支持网络传播且支持跨平台的程序,Oak语言恰恰符合这些要求,在一系列的改动下,Oak语言被更名为Java,Java也就由此诞生了!
-
Java解决了什么问题?
根据Java产生的原因,我认为Java当时主要解决了支持网络传播与跨平台这两个问题。当然随着Java本身的不断改进与科技发展对Java提出的更多的要求,如今的Java具有更加安全、稳定、可移植的特点,可用来开发更多的技术。
- 识记Java的三大平台
-
Java SE
各应用平台的基础,学习的主要对象
-
Java EE
以Java SE为基础,定义了一系列的服务或技术
-
Java ME
Java平台版本中最小的一个,适用于小型数字设备上的研究开发。此项不用学
- Java SE的四个组成部分
-
JVM,JRE,JDK与Java语言
JVM是Java虚拟机,JRE是Java执行环境。JDK包括Java语言、一些工具程序和JRE,JRE里包括了JVM和Java SE API
-
学习Java API的重要性
API是一些预先定义好的函数,个人觉得,学习好Java API中的已定义好的函数,在未来编程的过程中如果遇到了能直接调用API中函数的问题,就可以避免自己去写相关的代码了,而且API中的函数一般也会比我自己写的更规范、更安全。
-
了解JCP与JSR、RI和TCK的关系
JCP是个开放性组织,JSR是个正式文件,RI是免费且开发原始码的参考实现,TCK是测试工具箱。JSR必须通过JCP投票才能通过,JSR成为最终文件前,需要提供RI和JCK。
-
了解Oracle JDK与OpenJDK的关系
OpenJDK是Oracle JDK的开源版本,而Oracle JDK的部分代码在OpenJDK中会有其他技术进行替代
-
了解Java的学习路径
-
深入理解JVM/JRE/JDK
JVM是Java程序唯一认识的操作系统,其可执行文件为.class文件
PATH与CLASSPATH:PATH是Windows操作系统的搜索路径,CLASSPATH是JVM操作系统的搜索路径,均可以用SET进行设定
-
面向对象技术
封装、继承、多态
-
Java API:从父类学起,注意继承体系
-
容器:课程后续继续学习,个人目前没什么概念
- 理解JVM是执行Java程序(可执行文件*.class)的操作系统(或容器)
-
理解JVM是Java实现「一次编译、到处运行」的跨平台的关键
个人的理解是JVM把源代码编译成各个平台都能认识的东西,不同的平台根据自身的特点再对这个东西进行执行,这也就是所谓的跨平台
-
JVM负责Java程序的各种资源管理
-
理解JVM、JRE与JDK的关系
JRE用来部署Java程序,包括Java SE API和JVM
JDK用来开发Java程序,包括Java程序设计语言、JRE和开发工具 -
下载、安装JDK,理解「Public JRE」和「Private JRE」的用途
按照书本的提示,结合第二章的相关内容已经完成了JDK的下载,并实现了第一个Java程序HelloWorld(见下图)
- 思考题
-
这一节的标题是「Java不只是语言」,学完这节内容后你认为Java还是什么?
我个人的理解是,正如书上所说,Java语言知识Java的其中一个主要部分,在学习Java的时候,我觉得自己不仅要关注Java语言的相关知识,更要学习Java里面提供的各种标准,里面丰富的类库也是我日后学习的一个重要资源
-
只执行Java程序,不下载JDK可以吗?
个人觉得是没有问题的,JDK包含了JVM和其他一些东西,而如果只是为了执行Java程序的话,直接下载JVM即可,不必下载JDK
第二章
- 从Hello World 开始
-
运行Hello World程序
已在Windows下运行了此程序,在第一章的第二幅截图中
-
我打算在Window下学习Java开发
-
理解PATH是用于Windows/Unix/Linux等系统的,找不到javac.exe、java.exe是因为PATH没有设置正确
此问题我在写HelloWorld的时候也遇到了,参照书本介绍的方法在系统高级选项处修改了PATH,之后就OK了
-
理解CLASSPATH是用于JVM(容器)的,使用javac和java命令找不到XXXX.class是因为CLASSPATH没有设置正确
此问题我也遇到了,参照书本介绍的方法使用参数-classpath即可
-
理解「JVM是Java程序唯一识别的操作系统,对JVM来说,可执行文件就是扩展名为.class的文件」
-
XXXX.class的路径可以用java -cp或 java -classpath指定,此时就不用设定CLASSPATH环境变量了
个人更倾向用java -cp,比较简洁一些
- 管理源码与二进制文件
- 理解SOURCEPATH和-d的作用,编译带有package语句的Java代码时,必须使用javac -d outpath XXXX.java
- 掌握package和import的使用,会用命令行编译、运行带有package和import语句的Java代码
- 使用IDE
-
会用IDE(IDEA、Netbeans、Eclipse等)编译、运行、调试Java代码
-
根据老师的推荐使用了IDEA,参考老师的博客,我编译并运行了HelloWorld(见下图)
-
学会使用java -version和java -verbose XXXXClass诊断问题
附带-version变量可以显示执行的JRE版本,见下图
使用JDK工具程序javap加上-v可确认位码文档的版本号,见下图
另外,可以使用-target指定编译出来的位码必须符合指定平台允许的版本号,使用-source要求编译程序检查使用的语法不超过指定的版本
-
学习上存在的疑问
通过自己初步的学习,对教材P35页有一处疑问,在Main程序开头输入package cc.openhome表示的意思为什么是将Console类放在cc.openhome包里,而不是将Main类放在cc.openhome包里?
-
思考题
编译、运行「Hello World」时你遇到了什么问题?怎么解决的?(参考)
主要是在用javac和java命令的时候,系统总是有出错的提示,在上文中有提到。解决办法是参考书本的方法,对PATH进行设置等便可正常运行了
代码托管到git@OSC
参考学长的博客,完成了建立项目以及代码托管等任务,见下图
学习进程
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | |
---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 |
第一周 | 25/200 | 1 | 15/20 |