20155214曾士轩 2006-2007-2 《Java程序设计》第1周学习总结
教材学习内容总结
浏览教材,根据自己的理解每章提出一个问题
- 1.标准API的架构指的是什么?
- 2.一个项目良好的文件管理分支应该是怎么样的(怎样管理package,src,classes等)?
- 3.Java语言和C语言有哪些语法差别?
- 4.新建对象分配的内存空间和对应类中属性类型有什么联系呢?什么叫做编译程序蜜糖?
- 5.装箱动作对方法的影响?
- 6.多态的接口和JAVA中的interface有哪些差别?次态多态指的是什么?
- 7.两个接口定义了相同的方法是否表示相同的行为?
- 8.异常处理时是如何将错误包装成对象的?
- 9.对象的索引是什么?是将索引储存在队列中来读取对象吗?
- 10.JAVA的输入输出串流和C的文件操作有什么异同吗?
- 11.如何理解“撰写类操作java.lang.Runnable接口,流程的进入点实操作在run()方法中(而不是main()方法)”?
- 12.如何理解“同样的Lambda表达式,可以用来表示不同目标类型的对象操作”?
- 13.为什么要划分机器时间和人类时间?
- 14.使用队列、栈等不同的结构对衔接NIO衔接数据节点有什么差别呢?
- 15.一个Logger类应该具有那些属性?
- 16.通过java.sql.DataSource获得数据来源后,如何将部分数据存储下来?
- 17.类加载器的功能是继承自java.lang.ClassLoader,那么它的初始搜索路径设置的是在哪?
- 18.动态代理技术和自定义注释之间存在什么关系?
教材学习中的问题和解决过程
了解JAVA的历史
-
为什么需要Java程序设计语言?
- 1.Java 是由 Sun Microsystems 在 1995 年首先发布的编程语言和计算平台。
- 2.IEEE评出的2016年五月语言排行,JAVA稳坐第一。
- 3.“Java的设计思想保守,他不愿意为增加新特性而增加新问题,也不愿意让某些功能吓跑一线的蓝领工作者。虽然缓慢,但是Java却在不断地前进和变化着。”——《进击的Java》/李盼
- 4.有许多应用程序和 Web 站点只有在安装 Java 后才能正常工作,而且这样的应用程序和 Web 站点日益增多。Java 快速、安全、可靠。从笔记本电脑到数据中心,从游戏控制台到科学超级计算机,从手机到互联网,Java 无处不在!(https://www.java.com/zh_CN/download/faq/whatis_java.xml)
-
Java解决了什么问题
- 1."Java就是一种蓝领语言,它的设计是为了让工作中的程序员解决真正的问题。Java是实用的语言,它解决的是真实世界的业务。"——Ben Evans
- 2.James解释他设计Java但初衷时说:当我在设计的时候,我知道人们想要自动内存管理,人们想要强型式,但是这些功能会吓跑蓝领工人。比如说Smalltalk这是一门很优秀的语言,但是它太先进了,它和现实中开发者们在构建应用时的思维脱离开了。所以Java继承了其中一些理念,并将其简化,把这些理念放入一种语言和格式中。这些事解释了这门语言设计的基本动机。
- 3.一次编译,到处运行,开源社区活跃。
- 4.Java本身会见到许多为了节省资源而作的设计,Java一开始就是为了消费性数字产品而设计,而这类小型装置通常有着有限内存与运算资源。
了解JVM、JRE与JDK,并下载、安装、测试JDK
-
JVM
-
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
-
JRE
-
JRE为Java Runtime Environment的简称,Java Runtime Environment(包括Java Plug-in)是Sun的产品,包括两部分:Java Runtime Environment和Java Plug-in。JavaRuntimeEnvironment(JRE)是可以在其上运行、测试和传输应用程序的Java平台。
-
JDK
-
JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境,JAVA工具和JAVA基础的类库。
-
Oracle JDK与OpenJDK的关系
-
-
OpenJDK是Sun在2006年末把Java开源而形成的项目,Oracle JDK采用了商业实现,而OpenJDK使用的是开源的FreeType。
(http://www.cnblogs.com/zengkefu/p/5633342.html) -
授权协议的不同:
-
1.openjdk采用GPL V2协议放出,而JDK则采用JRL放出。两者协议虽然都是开放源代码的,但是在使用上的不同在于GPL V2允许在商业上使用,而JRL只允许个人研究使用。
-
2.OpenJDK不包含Deployment(部署)功能:部署的功能包括:Browser Plugin、Java Web Start、以及Java控制面板,这些功能在Openjdk中是找不到的。
-
3.OpenJDK源代码不完整:这个很容易想到,在采用GPL协议的Openjdk中,sun jdk的一部分源代码因为产权的问题无法开放openjdk使用,其中最主要的部份就是JMX中的可选元件SNMP部份的代码。因此这些不能开放的源代码 将它作成plug,以供OpenJDK编译时使用,你也可以选择不要使用plug。而Icedtea则为这些不完整的部分开发了相同功能的源代码 (OpenJDK6),促使OpenJDK更加完整。
-
4.部分源代码用开源代码替换:由于产权的问题,很多产权不是SUN的源代码被替换成一些功能相同的开源代码,比如说字体栅格化引擎,使用Free Type代替。
-
5.openjdk只包含最精简的JDK:OpenJDK不包含其他的软件包,比如Rhino Java DB JAXP……,并且可以分离的软件包也都是尽量的分离,但是这大多数都是自由软件,你可以自己下载加入。
-
6.不能使用Java商标
(http://blog.csdn.net/kiyoki/article/details/8777744)
学习Java API的重要性
- 1.Java最重要的就是提供庞大且强大的标准API,提供字符串处理、数据输入/输出、网络套件、用户窗口接口等功能,可以使用这些API作为基础来进行程序开发,无需重复开发功能相同的组件。
- 2.事实上,在熟悉Java语言之后,更多的时候,都是在学习如何使用Java SE提供但API来组成应用程序。
了解JCP与JSR、RI、TCK的关系
- JCP(Java Community Process)成立于1998年,是使有兴趣的各方参与定义Java的特征和未来版本的正式过程。
- JCP使用JSR(Java规范请求,Java Specification Requests)作为正式规范文档,描述被提议加入到Java体系中的的规范和技术。 JSR变为final状态前需要正式的公开审查,并由JCP Executive Committee投票决定。最终的JSR会提供一个参考实现,它是免费而且公开源代码的;还有一个验证是否符合API规范的TCK(Technology Compatibility Kit)。
- RI(reference implementation)是根据JSR成果作出免费且开发原始码的参考实现
了解Java的学习路径
了解PATH、CLASSPATH、SOURCEPATH的作用并会设置
使用sudo vim /etc/profile
打开profile 在最后加入PATH、CLASSPATH
- path 路径,操作系统会依照PATH环境变量中设定的路径顺序,依次寻找各路经下是否有需要的指令。
- classpath 类的路径,虚拟操作系统需要寻找文档时,通过CLASSPATH指定其可执行文件的路径信息。
- sourcepath 是程序代码调用类时,编译程序寻找类原始码的文档存放位置。
理解封装、继承、多态
- 封装 目前理解,将数据与操作数据的源代码进行有机的结合,形成类的方法。其中数据和函数都是类的成员。
- 继承 目前理解,子类可以调用、重写父类的属性。
- 多态 目前理解,多态是允许你将父类设置成子类相等的技术,赋值之后,父类就可以根据当前赋值给它的子类的特性以不同的方式运作。
Java SE API架构
- 目前还不太理解,尚未学习。
容器
- 容器从操作层面来说,就是执行与JVM上的Java应用程序;从抽象层面来说就是你的应用程序沟通、协调相关资源的系统
- Java应用程序客户端执行于应用程序客户端容器中。
这一节的标题是「Java不只是语言」,学完这节内容后你认为Java还是什么?
- Java首先是一种语言,它预见了时代商业和科技的潮流,逐渐制定出了适应潮流的标准,在标准的基础上满足“跨平台”等特性使得Java成为了蓝领趋势。
深入理解JVM/JRE/JDK
JVM
- JVM是Java程序唯一认识的操作系统,其可执行文件为.class的位码文档。
- JVM将位码文档翻译为相依于平台的机器码,这是Java“一次编译,到处运行”的关键。
JRE
- JRE是Java执行环境,包括Java SE API与JVM。
- JRE中的Java SE API可以直接提供链接库
JDK
- JDK提供像编译程序这样的工具。
- JDK本身也包括了JRE。
- 撰写Java程序才需要JDK,执行程序只需要JRE。 <- 思考题:只执行Java程序,不下载JDK可以吗?
安装JDK,理解「Public JRE」和「Private JRE」的用途
-
1.安装JDK
(学习娄老师的JDK安装教程:http://www.cnblogs.com/rocedu/p/6371315.html#SECJDK)
-
2.public JRE
公共JRE在安装过程中可以选择为别的位置。它包括各种浏览器的插件,以便于能够在浏览器中执行JAVA小应用程序(Applet)。运行Java虚拟机,Java虚拟机会自动加载公共JRE下面的一个rt.jar包,它是Java核心类库所在。 -
3.private JRE
在jdk目录下面有一个子目录jre,这就是private JRE所在的目录。所谓私有JRE,即JDK中的工具包需要用到的JRE。这个jre目录名称是固定的,不能更改。
代码调试中的问题和解决过程
初步使用IDE(推荐IDEA),会编译、运行、调试简单的Java程序
问题:
-
1.Invalid method declaration
-
2.Method 'main()' is never used
-
3.Cannot resolve symbol 'string'
解决方案:
- main()方法一定得是
public static void main(String [] args)
- main()方法是public成员;static表示JVM不用生成类实例就能调用; main()不用传回值;String[] args可以取得用户指定的命令行自变量;
代码托管
(前期git本地设置参照卢肖明学长博客 http://www.cnblogs.com/lxm20145215----/p/5905765.html)
- 代码提交过程截图:
tree
命令可以查看当前目录下的项目分支
git init
命令可以在项目文件下创建一个库
git add . -A
命令可以将当前目录下所有文件上传到库
git commit -m "撰写注释"
命令可以撰写本次上传代码的注释
git log
命令可以查看git上传日志
git remote add origin git@git.oschina.net:git帐号/项目名.git
命令可以链接远程github项目
git push -u origin master
命令可以将本地项目更新到github项目上
-
托管链接
http://git.oschina.net/besti155214/myHello
- 代码量截图:
上周考试错题总结
- 本周考试取消了,我对命令行重新做了总结,并复习了上节课的笔记。
其他(感悟、思考等,可选)
经过一周目的学习,我发现要从一开始入门时使用搜索引擎发现某个命令,某个软件,某种功能,到能熟练掌握它还有一段不小的距离。
即使在段时间内进行了突击性学习,没有反复的拿出来练习还是会遗忘。应该将自己学习过的技能多拿出来实战,并且思考一下运用心得。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 10/10 | 1/1 | 15/21 | 对java学习流程有了一个大致的概念 |