项目 |
内容 |
这个作业属于哪个课程 |
https://www.cnblogs.com/nwnu-daizh/ |
这个作业的要求在哪里 |
|
作业学习目标 |
|
第一部分:课程学习平台注册账号
平台名称 |
注册账号或者个人博客园地址 |
|
博客园:www.cnblogs.com |
https://www.cnblogs.com/zyja/ |
|
程序设计评测:https://pintia.cn/ |
1911296608@qq.com |
|
中国大学MOOC: https://www.icourse163.org/ |
18419244307 |
|
以下回答是或否 |
||
是否加入课程班级博客群 |
是 |
|
是否加入课程QQ讨论群 |
是 |
|
第二部分:理论知识学习部分
第一章 Java程序设计概述
一:Java"白皮书“的关键术语
1.简单性
人们希望构建一个无须深奥的专业训练就可以进行编程的系统,并且要符合当今的标准惯例。因此,尽管人们发现C++不太适合,但在设计java的时候还是尽可能地接近C++,以便系统更易于理解。Java挑剔了C++中许多很少使用、难以理解、易混淆的特性。在目前看来,这些新特性带来的麻烦远远多于其带来的好处。
的确,Java语言是C++语法的一个纯净版本。这里没有头文件、指针运算(甚至指针语法)、结构、联合、操作符重载、虚基类等。然而设计者并没有试图清除C++中所有不适当的特性。例如,switch语句在Java中就没有改变。如果你了解C++你就会发现可以轻而易举地转换到Java语法。以前,Java刚发布时,许多开发人员肯定觉得Java并不简单。很多年以后Java的开发环境才迎头而上。如今,Java发开环境已经远远超过了大多数其他编程语言的开发环境。简单的另一方面是小。能够在小型机器上独立运行的软件。随着时代的发展,现在已经适用于嵌入式设备。
2.面向对象性
简单来说,面向对象设计是一种程序设计技术。它的重点在于对象。举一个例子:有一个木匠想做一把椅子,一个有面向对象特点的木匠,他始终关注的是所制造的椅子,然后再关注所使用的工具;一个不具有面向对象特点的木匠,他首先考虑的是所用的工具。在本质上,Java的面向对象能力和C++是一样的。主要不同点在于,C++可以多重继承,在Java中取而代之的是更简单的接口概念。总的来说,就是Java先考虑的是结果,再考虑怎么实现它。
3.分布式
Java有一个丰富的例程库,到这里是不是想问例程库 是什么? 有什么用? 它是用于处理像HTTP和FTP之类的TCP/IP协议。Java应用程序能通过URL打开和访问网络上的对象,它的编写程度就相当于我们访问本地一样。
4.健壮性
Java的设计目标之一就在于Java编写的程序可以具有多方面的可靠性。Java编译器能够检测许多在其他语言中仅在运行时才能检测出来的问题。至于第二点,对于以前需要花费几个小时才能检查出指针bug而引起的内存冲突的人来说,一定会爱上Java的这一特性。简单来说,健壮性是指出错了也能继续运行的能力。
5.安全性
Java适用于网络/分布式环境。为了达到这个目标,在安全方面投入了很大精力。使用Java可以构建防病毒、防篡改的系统。从一开始,Java就设计成能够防范各种攻击,其中包括:* 运行时堆栈溢出时。如蠕虫和病毒常用的攻击手段。*破坏自己的进程空间之外的内存。*未经授权读写文件。 不过黑客已经擅长找出全体系结构实现中的小漏洞,Java安全模型没有原先预想的那么成功,不过我相信迟早有一天,它会出现奇迹的。
6.体系结构中立
编译器生成一个体系结构中立的目标文件格式,这是一种编译过的代码,只要有Java运行时系统,这些编译后的代码可以在许多处理器上运行。Java编译器通过生成与特定的计算机体系结构无关的字节码指令来实现这一特性。精心设计的字节码不仅可以很容易地在任何机器上解释执行,而且还可以迅速地翻译成本地机器的代码。字节码可以实现了结构中立。
7.可移植性
因为Java有一个JVM(Java Virtual Machine)Java虚拟机,源程序*.java被编译成字节码文件,字节码是与平台无关的,是面向jvm编写的,而Jvm又有自己的一套指令系统,在不同的平台上jvm的指令也是不一样的,也就是说不同操作平台有自己的Jvm但是Jvm向上的字节码接口是与平台无关的,Jvm接口向下是与硬件有关的,jvm是个中间件,这样只要有字节码和Jvm,不管在任何平台都可以运行Java程序。全靠的是Jvm虚拟机,可以跨平台,这就是可移植性。
8.解释型
Java解释器可以在任何移植解释器的机器上执行Java字节码。由于链接是一个轻量级的过程,所以,开发过程也变得更加敏捷,更加具有探索性。它其实就是把做好的源程序翻译一句,然后执行一句,直至结束。特点:执行速度慢、效率低;依靠解释器、跨平台性好。javascript语言也是解释型的。
9.高性能
尽管现在我们对解释后的字节码的性能已经比较满意了,但在有些场合还需要更高的性能,这时候我们该怎么办呢?字节码可以在运行时刻 动态地 翻译成对应这个应用的特定CPU的机器码。
10.多线程
多线程可以带来更好的交互响应和实时行为。如今,我们非常关注并发性,现在我们不再追求更快的处理器,而是获得更多的处理器,而且要让它们一直保持工作。并发程序设计绝非易事,不过Java在这方面表现很出色,可以很好地管理这个工作;web编程因为时间不是很长,处理器则要花很长时间来等待服务器响应,需要并发程序设计来确保用户界面不会被冻住。
11.动态性
从各种角度看,Java与C或C++相比更加具有动态性。因为它能够适应不断发展的环境。库中可以自由地添加新方法和实例变量,而客户端却没有任何影响。在Java中找出运行时类型信息十分简单。
当需要将某些代码添加到正在运行的程序中时,动态性将是一个非常重要的特性。比如说:从网上下载代码,然后在浏览器上运行。如果使用C或C++,这确实难度很大,不过Java可以很容易实现程序的推演。(C#与Java有很多相同之处,不过使用的虚拟机却是完全不同的)。
二:JAVA applet
Applet 是一种 Java 程序。它一般运行在支持 Java 的 Web 浏览器内。因为它有完整的 Java API支持,所以Applet 是一个全功能的 Java 应用程序。
1.如下所示是独立的 Java 应用程序和 applet 程序之间重要的不同:
a. Java 中 Applet 类继承了 java.applet.Applet 类。
b. Applet 类没有定义 main(),所以一个 Applet 程序不会调用 main() 方法。
c. Applet 被设计为嵌入在一个 HTML 页面。
d. 当用户浏览包含 Applet 的 HTML 页面,Applet 的代码就被下载到用户的机器上。
e. 要查看一个 Applet 需要 JVM。 JVM 可以是 Web 浏览器的一个插件,或一个独立的运行时环境。
f. 用户机器上的 JVM 创建一个 Applet 类的实例,并调用 Applet 生命周期过程中的各种方法。
g. Applet 有 Web 浏览器强制执行的严格的安全规则,Applet 的安全机制被称为沙箱安全。
h. Applet 需要的其他类可以用 Java 归档(JAR)文件的形式下载下来。
2. Applet的生命周期
Applet 类中的四个方法给我们提供了一个框架,你可以在该框架上开发小程序:
init: 该方法的目的是为你的 Applet 提供所需的任何初始化。在 Applet 标记内的 param 标签被处理后调用该方法。
start: 浏览器调用 init 方法后,该方法被自动调用。每当用户从其他页面返回到包含 Applet 的页面时,则调用该方法。
stop: 当用户从包含 Applet 的页面移除的时候,该方法自动被调用。因此,可以在相同的 Applet 中反复调用该方法。
destroy: 此方法仅当浏览器正常关闭时调用。因为 Applet 只有在 HTML 网页上有效,所以你不应该在用户离开包含 Applet 的页面后遗漏任何资源。
paint: 该方法在 start() 方法之后立即被调用,或者在 Applet 需要重绘在浏览器的时候调用。paint() 方法实际上继承于 java.awt。
3. "Hello, World" Applet:
下面是一个简单的 Applet 程序 HelloWorldApplet.java:
HelloWorldApplet.java 文件代码:
import java.applet.*;
import java.awt.*;
public class HelloWorldApplet extends Applet
{
public void paint (Graphics g)
{
g.drawString ("Hello World", 25, 50);
}
}
4. Applet安全设置
Applet访问网络,抛出异常:
java.security.AccessControlException: access denied (java.net.SocketPermission server1 resolve)
这个错误的通知你访问被拒绝。这就是说,由于 applet 程序试图在没有获得正确的权限的情况下访问系统资源,括号中代码表示,若要纠正这种情况,您需要一个向数据库所在计算机(主机名为server1) 授予 applet 访问权限的 SocketPermission。
解决办法:
创建policy策略文件,内容如下:
grant {
permission java.net.SocketPermission "server1", "resolve";
permission java.net.SocketPermission "127.0.0.1:8080", "connect, resolve";
};
将该文件保存成ASCII文件,命名为netconnect.policy,存于${JRE_HOME}/lib/security/目录下(主要是为方便后面路径填写)。
修改Java安全配置:
创建了策略文件后,修改${JRE_HOME}/lib/security/java.security文件,在
policy.url.1=file:${java.home}/lib/security/java.policy
policy.url.2=file:${user.home}/.java.policy
下添加一行
policy.url.3= file: ${java.home}/lib/security/netconnect.policy
再次访问页面的applet,又捕获到如下异常:
java.security.AccessControlException: access denied(java.net.SocketPermission 127.0.0.1:8080 connect,resolve)
网络访问仍受限,不能访问服务器127.0.0.1:8080,在前面生成的策略文件中加入
permission java.net.SocketPermission "10.6.1.16:1521", "connect, resolve";
再次访问,运行成功。
三:关于JAVA的误解
1:Java是HTML的扩展。
Java是一种程序设计语言;HTML是一种描述网页结构的方式。除了用于在网页上放置Javaapplet的HTML扩展之外,两者没有任何共同之处。既然说到了HTML就不得不提一下JSP了,JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,他是一个动态网页设计。我们可以把JSP理解为是Java Servlet的扩展;
2使用XML,就不需要Java。
Java是一种程序设计语言;XML是一种描述数据的方式,可以使用任何一种程序设计语言处理XML数据,而Java API对XML处理提供了很好的支持。此外,许多重要的第三方XML工具采用Java编写。
3.Java是一种非常容易学习的程序设计语言。
像Java这种功能强大的语言大都不太容易学习。首先,必须将编写玩具式程序,或者模仿他人的增删改与实际项目是的艰难区分开来。Java类库包含了数千种类和接口与几万个方法,要解决Java的实际问题,我们还是要了解不少内容的;
4.Java将成为使用与所有平台的通用性编程语言。
从理论上讲,这是完全有可能的。的确,除了微软之外的每一个厂商都希望如此。然而,有很多在桌面计算机上已经完全工作良好的应用程序,在其他设备上或浏览器中或许不能正常地工作。同时,在编写这些应用程序时,利用了相应处理器的速度和本地的用户接口库,而且他们已经移植到所有重要的平台上。这类应用程序包括:字处理程序,图片编辑器以及Web浏览器。他们通常是用C编写的,采用Java语言重新编写似乎对最终的用户不会带来什么特别的好处。
5.Java只不过是另外一种程序设计语言。
Java是一种很好的程序设计语言,很多程序设计人员喜欢Java胜过C,有上百种好的程序语言没有广泛的流行,而带有明显缺陷的语言,而Java和C却大行其道。这是因为程序设计语言的的成功更多的取决于其支撑系统的能力,而不是优美的语法。人们主要关注:是否提供了易于实现某些功能的易用,
便捷和标准的库。是否拥有强大的程序设计能力与调试工具,语言和工具是否能够与计算器的其他基础结构整合在一起Java的成功源于其类库能够让人们轻松的完成原本有一定难度的事情。
6.JAVA是专用的,应该避免使用
如果想在嵌入式系统中使用加瓦,就需要另外一个不同的许可,很可能需要付费,不过,这些专利在未来十年内就会到期,那是JAVA就完全免费了
7.Java是解释型语言,因此对于关键的应用程序速度太慢了。
早起的Java是解释型的,现在除了像手机这样的微型平台之外。Java虚拟机使用了即时编译器,因此采用Java编写的热点代码其运行速度与c++相差无几。
现在今天的计算机速度远比人们发出抱怨的时候快了很多。一个较慢的Java程序与几年前相当快的C++程序还要快一些。现在的人们已经不抱怨Java程序慢了,而去抱怨Java的界面太丑了。
8.JavaScript是Java的简易版。
JavaScript是一种在网页中使用的脚本语言。它是由Netscape发明的,原来的名字叫做LiveScript.JavaScript的语法类似于Java,除此之外。两者无任何关系。当然名字有些想象。
9.交换程序是主要的安全风险。
10.使用JAVA,可以用廉价的internet设备取代桌面计算机。
第二章:JAVA程序设计环境
系统环境的配置
,使用鼠标右击“计算机”->属性->左侧高级系统设置->环境变量
系统变量->新建
变量名:JAVA_HOME变量值:
c:\ProgramFiles\Java\jdk1.8.0
系统变量->新建
变量名:CLASSPATH变量值:
.;%JAVA_HOME%\lib
系统变量->编辑
变量名:Path在变量值的最前面
加上:%JAVA_HOME%\bin;
选择JAVA开发环境
1.使用命令行工具
2.使用集成开发环境
使用集成开发环境
3.从文本编辑器中编译程序
主要学习了Java程序开发过程。和如何分析Java应用程序。
1:源程序的编辑:Java源程序是以•Java为后缀的文本文件,可以用各种Java集成 开发环境中的源代码编辑器来编写,也可以用文本编辑工具来编写。
2:源文件的命名:如果源文件中有多个类,那么只能有一个类是public类。 如果有一个类是public类,那么源文件的名字必须与这个类的名字完全相同 。源程序文件的扩展名是.java 。如果源文件没有public类,那么源文件的名字只要和某个类的名字相同,并且扩展名是.java就可以。 源程序名一定为MyJavaApplication.java
第三部分 :实验部分
1、实验名称:实验一 Java程序设计环境
2. 实验目的:
(1)掌握JDK的安装与配置;
(2)掌握使用JDK开发Java程序的基本命令及步骤;
(3)熟练运用Elipse集成开发环境开发java程序的基本步骤
(4)掌握Java程序的基本语法。
3. 实验步骤与内容:
实验1 JDK的安装与配置
1):下载jdk10.0.2文件并进行安装,安装路径不会改变。
安装后的文件夹截图如下
2):进行环境变量的设置
步骤:此电脑-计算机-属性-高级系统设置-环境变量-path-新建文件夹-将如图所示的变量名粘贴
3):java -version 如下图所示,则环境变量设置成功
4):window+R
4):输入java
5):输入javac
6):下载安装eclipse软件包,页面如下
7):安装后设置工作空间后,截图如下
8):创建Java文件,截图如下
9):利用eclipse输出九九乘法表
10):代码如下:
package cfb.java;
public class welcome {
public static void main(String[] args) {
int sum;
for(int i=1;i<=9;i++) {
for(int j=1;j<=i;j++) {
sum=i*j;
System.out.print(j+"*"+i+"="+sum+" ");
}
System.out.println();
}
}
}
4:实验总结
1.通过第一章的学习,我大概了解了JAVA,知道了JAVA白皮书的一些关键术语,知道了一些JAVA的优缺点,并大致了解了JAVA applet,以及JAVA的发展简史,通过学习关于JAVA的常见误解,也解开了我对JAVA的一些疑惑。
2.通过第二章JAVA程序设计环境的学习,我知道了JAVA的开发工具JDK如何编译和运行,如何安装JDK,设置环境变量,还有eclipse的安装,也学会了使用命令行工具来运行JAVA程序,也知道了使用集成开发环境来运行JAVA程序。
3.JDK和eclipse安装好了以后就运行了第一个程序运行,Welcome.java,以及九九乘法表,加强巩固了一下运行的步骤以及过程。
4.学知识很难,但学会了还是比较开心的,也同时感谢助教和老师的帮助。