Chapter 1 Java开发前奏

第1章:初识Java

1.1 计算机的基础知识

1.1.1 计算机

计算机(Computer)全称:电子计算机,俗称电脑。是一种能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。由硬件和软件所组成,没有安装任何软件的计算机称为裸机。常见的形式有台式计算机、笔记本计算机、大型计算机等。

计算机的应用已渗透到社会的各个领域,正在改变着人们的工作、学习和生活的方式,推动着社会的发展。哪些方面?

1:科学计算

科学计算也称数值计算。计算机最开始是为解决科学研究和工程设计中遇到的大量数学问题的数值计算而研制的计算工具。例如,人造卫星轨迹的计算,房屋抗震强度的计算,火箭、宇宙飞船的研究设计都离不开计算机的精确计算。就连我们每天收听收看的天气预报都离不开计算机的科学计算。

2、数据处理

在科学研究和工程技术中,会得到大量的原始数据,其中包括大量图片、文字、声音等信息处理就是对数据进行收集、分类、排序、存储、计算、传输、制表等操作。

3、自动控制

自动控制是指通过计算机对某一过程进行自动操作,它不需人工干预,能按人预定的目标和预定的状态进行过程控制。例如,无人驾驶飞机、导弹、人造卫星和宇宙飞船等飞行器的控制,都是靠计算机实现的。

4、计算机辅助设计

计算机辅助设计(Computer Aided Design,简称CAD)是指。借助计算机的帮助,人们可以自动或半自动地完成各类工程设计工作。目前CAD技术已应用于飞机设计、船舶设计、建筑设计、机械设计、大规模集成电路设计等。在京九铁路的勘测设计中,使用计算机辅助设计系统绘制一张图纸仅需几个小时,而过去人工完成同样工作则要一周甚至更长时间。可见采用计算机辅助设计,可缩短设计时间,提高工作效率,节省人力、物力和财力,更重要的是提高了设计质量。

5、人工智能

人工智能(Artificial Intelligence,简称AI)是指计算机模拟人类某些智力行为的理论、技术和应用。例如,用计算机模拟人脑的部分功能进行思维学习、推理、联想和决策,使计算机具有一定“思维能力”。我国已开发成功一些中医专家诊断系统,可以模拟名医给患者诊病开方。 还有就是机器人也是计算机人工智能的典型例子。

6、多媒体应用

随着电子技术特别是通信和计算机技术的发展,人们已经有能力把文本、音频、视频、动画、图形和图像等各种媒体综合起来,构成一种全新的概念—“多媒体”(Multimedia)。比如一些flash广告,网页游戏等。

7、计算机网络

计算机网络是由一些独立的和具备信息交换能力的计算机互联构成,以实现资源共享的系统。如在全国范围内的银行信用卡的使用,火车和飞机票系统的使用等。

1.1.2 计算机硬件

计算机硬件(Computer Hardware)是指计算机系统中由电子,机械和光电元件等组成的各种物理装置的总称。这些物理装置按系统结构的要求构成一个有机整体为计算机软件运行提供物质基础。

计算机通常由CPU、主板、内存、电源、主机箱、硬盘、显卡、键盘、鼠标,显示器等多个部件组成。

1.1.3 计算机软件

计算机软件是使用计算机过程中必不可少的东西,计算机软件可以使计算机按照事先预定好的顺序完成特定的功能,计算机软件按照其功能划分为系统软件与应用软件

  • 系统软件: DOS(Disk Operating System), Windows, Linux, Unix, Mac, Android, iOS
  • 应用软件: Office  QQ聊天  YY语言  扫雷 等
  • 软件:按照特定顺序组织的计算机数据和指令的集合

1.1.4 软件开发

例如:体重和身高他们属于数据的范畴单独的拿出来没有任何意义,可是如果我们通过   身高和体重 的一个比例计算就可以得出我们的健康状态,这个计算属于指令;这种数 据和指令的集合才有意义;

  • 开发:软件的制作过程
  • 软件开发:借助开发工具与计算机语言制作软件
  • 语言:人类进行沟通交流的各种表达符号,方便人与人之间进行沟通与信息交换;
  • 计算机语言:计算机语言(Computer Language)指用于人与计算机之间通讯的语言。计算机语言是人与计算机之间传递信息的媒介。计算机系统最大特征是指令通过一种语言传达给机器。为了使电子计算机进行各种工作,就需要有一套用以编写计算机程序的数字、字符和语法规划,由这些字符和语法规则组成计算机各种指令(或各种语句)。这些就是计算机能接受的语言。计算机语言的种类非常的多,总的来说可以分成机器语言,汇编语言,高级语言三大类。

1.1.5 计算机语言

  • 语言:人类进行沟通交流的各种表达符号,方便人与人之间进行沟通与信息交换;
  • 计算机语言:计算机语言(Computer Language)指用于人与计算机之间通讯的语言。计算机语言是人与计算机之间传递信息的媒介。计算机系统最大特征是指令通过一种语言传达给机器。为了使电子计算机进行各种工作,就需要有一套用以编写计算机程序的数字、字符和语法规划,由这些字符和语法规则组成计算机各种指令(或各种语句)。这些就是计算机能接受的语言。计算机语言的种类非常的多,总的来说可以分成机器语言,汇编语言,高级语言三大类。

1.1.6 计算机语言的发展史

1.1.6.1 机器语言

机器语言是指一台计算机全部的指令集合,电子计算机所使用的是由"0"和"1"组成的二进制数,二进制是计算计算机语言的基础。计算机发明之初,人们只能降贵纡尊,用计算机的语言去命令计算机干这干那,一句话,就是写出一串串由"0"和"1"组成的指令序列交由计算机执行,这种计算机能够认识的语言,就是机器语言。使用机器语言是十分痛苦的,特别是在程序有错需要修改时,更是如此。因此程序就是一个个的二进制文件。一条机器语言成为一条指令。指令是不可分割的最小功能单元。而且,由于每台计算机的指令系统往往各不相同,所以,在一台计算机上执行的程序,要想在另一台计算机上执行,必须另编程序,造成了重复工作。但由于使用的是针对特定型号计算机的语言,故而运算效率是所有语言中最高的。机器语言,是第一代计算机语言。

1.1.6.2 汇编语言

为了减轻使用机器语言编程的痛苦,人们进行了一种有益的改进:用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串,比如,用"ADD"代表加法,"MOV"代表数据传递等等,这样一来,人们很容易读懂并理解程序在干什么,纠错及维护都变得方便了,这种程序设计语言就称为汇编语言,即第二代计算机语言。然而计算机是不认识这些符号的,这就需要一个专门的程序,专门负责将这些符号翻译成二进制数的机器语言,这种翻译程序被称为汇编程序。汇编语言同样十分依赖于机器硬件,移植性不好,但效率仍十分高,针对计算机特定硬件而编制的汇编语言程序,能准确发挥计算机硬件的功能和特长,程序精炼而质量高,所以至今仍是一种常用而强有力的软件开发工具。汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。汇编程序的每一句指令只能对应实际操作过程中的一个很细微的动作,例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的操作不是一般高级语言所能实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。

1.1.6.3 高级语言

高级语言有:BASIC(True basic、Qbasic、Virtual Basic)、C、C++、PASCAL、FORTRAN、智能化语言(LISP、Prolog、CLIPS、OpenCyc、Fazzy)、动态语言(Python、PHP、Ruby、Lua)等等。- 高级语言源程序可以用解释、编译两种方式执行。通常用后一种。高级语言是绝大多数编程者的选择。和汇编语言相比,它不但将许多相关的机器指令合成为单条指令并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。由于省略了很多细节,所以编程者也不需要具备太多的专业知识。 高级语言主要是相对于汇编语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言,流行的VB、VC、FoxPro、Delphi等,这些语言的语法、命令格式都各不相同

计算机软件都是用各种计算机语言(后面讲)编写的。最底层的叫机器语言,它由一些0和1组成,可以被某种电脑直接理解,但人就很难理解。上面一层叫汇编语言,它只能由某种电脑的汇编器软件翻译成机器语言程序,才能执行。人能够勉强理解汇编语言。人常用的语言是更上一层的高级语言,比如C,C++,C#, Java等。这些语言编写的程序一般都能在多种电脑上运行,但必须先由一个叫作编译器或者是解释器的软件将高级语言程序翻译成特定的机器语言程序。编写计算机软件的人员叫程序设计员、程序员、编程人员。他们当中的高手有时也自称为黑客。

1.1.7 人机交互方式

交互的意思就是你和程序对话.例如你点击一个按钮,然后程序弹出一个窗口"您真的要退出吗?"这样你就可以选择了.这个就叫交互.目前大部分的程序都是交互程序。软件的出现实现了人与计算机之间更好的交互。这种交互方式成为人机交互或者人机互动(英文:Human–Computer Interaction或Human–Machine Interaction,简称HCI或HMI),是一门研究系统与用户之间的交互关系的学问。系统可以是各种各样的机器,也可以是计算机化的系统和软件。人机交互界面通常是指用户可见的部分。用户通过人机交互界面与系统交流,并进行操作。小如收音机的播放按键,大至飞机上的仪表板、或是发电厂的控制室。人机交互界面的设计要包含用户对系统的理解(即心智模型),那是为了系统的可用性或者用户友好性。人机交互的发展经历了几个阶段:

  • 早期的手工作业阶段
  • 作业控制语言及交互命令语言阶段即命令行方式:需要有一个控制台,输入特定的指令,让计算机完成一些操作。较为麻烦,需要记录住一些命令
  • 图形用户界面(GUI)阶段:这种方式简单直观,使用者易于接受,容易上手操作。
  • 网络用户界面的出现
  • 多通道、多媒体的智能人机交互阶段

1.1.8 键盘功能键及快捷键介绍

常用快捷键:


F键


F1帮助 、F2改名 、F3搜索 、F4地址 、F5刷新 、F6切换 、F10菜单


CTRL键


CTRL+A全选 、CTRL+F4关闭 、CTRL+ESC开始菜单

CTRL+C复制 、CTRL+S 保存

CTRL+X剪切 、CTRL+V粘贴 、CTRL+Z撤消 、CTRL+O打开 、CTRL+F查找 、CTRL+H替换 、


ALT键


ALT+ENTER属性 、ALT+F4关闭 、ALT+TAB切换 、ALT+ESC切换 、ALT+空格键 窗口菜单


Windows键


Windows快捷键

Windows徽标键+L键切换用户

Windows徽标键+TAB键在任务栏上的按钮间循环

Windows徽标键+E键启动“我的电脑”

Windows徽标键+D键快速显示桌面

Windows徽标键+R键执行“运行”命令

Windows徽标键+U键打开“工具管理器”

Windpws徽标键+M键将所有窗口最小化

Windows徽标键+F键搜索文件或者文件夹

Windows徽标键+F1键显示Windows帮助

Windows徽标键+Shift+M键将最小化的窗口还原

Windows徽标键+Ctrl+F键搜索计算机

Windows徽标键+PauseBreak键打开“系统属性”对话框


其他


SHIFT+DELETE永久删除 、DELETE删除 、PrtSc(PrintScreen)屏幕截图

1.1.9 常用的DOS命令

Ping命令:它是用来检查网络是否通畅或者网络连接速度的命令。作为一个生活在网络上的管理员或者黑客来说,ping命令是第一个必须掌握的DOS命令,它所利用的原理是这样的:网络上的机器都有唯一确定的IP地址,我们给目标IP地址发送一个数据包,对方就要返回一个同样大小的数据包,根据返回的数据包我们可以确定目标主机的存在,可以初步判断目标主机的操作系统等。下面就来看看它的一些常用的操作。先看看帮助吧,在DOS窗口中键入:ping /? 回车,出现如图1。所示的帮助画面。在此,我们只掌握一些基本的很有用的参数就可以了(下同)。

-t :表示将不间断向目标IP发送数据包,直到我们强迫其停止。试想,如果你使用100M的宽带接入,而目标IP是56K的小猫,那么要不了多久,目标IP就因为承受不了这么多的数据而掉线,呵呵,一次攻击就这么简单的实现了。

-l :定义发送数据包的大小,默认为32字节,我们利用它可以最大定义到65500字节。结合上面介绍的-t参数一起使用,会有更好的效果哦。

-n :定义向目标IP发送数据包的次数,默认为3次。如果网络速度比较慢,3次对我们来说也浪费了不少时间,因为现在我们的目的仅仅是判断目标IP是否存在,那么就定义为一次吧。说明一下,如果-t 参数和-n参数一起使用,ping命令就以放在后面的参数为标准,比如“ping IP -t -n 3”,虽然使用了-t参数,但并不是一直ping下去,而是只ping 3次。另外ping命令不一定非得ping IP,也可以直接ping主机域名,这样就可以得到主机的IP。下面我们举个例子来说明一下具体用法,如图2。这里time=2表示从发出数据包到接受到返回数据包所用的时间是2秒,从这里可以判断网络连接速度的大小。从TTL的返回值可以初步判断被ping主机的操作系统,之所以说“初步判断”是因为这个值是可以修改的。这里TTL=32表示操作系统可能是win98。 (小知识:如果TTL=128,则表示目标主机可能是Win2000;如果TTL=250,则目标主机可能是Unix)至于利用ping命令可以快速查找局域网故障,可以快速搜索最快的QQ服务器,可以对别人进行ping攻击……这些就靠大家自己发挥了。

打开DOS控制台的方式:

1:开始--程序--附件--命令提示符

2:开始--运行—cmd—回车

3:win+r—cmd--回车

常用DOS命令

d: 回车 盘符切换

dir(directory):列出当前目录下的文件以及文件夹

md (make directory) : 创建目录

rd (remove directory): 删除目录

cd (change directory)改变指定目录(进入指定目录)

cd.. : 退回到上一级目录

cd\: 退回到根目录

del (delete): 删除文件,删除一堆后缀名一样的文件*.txt

exit : 退出dos命令行

cls : (clear screen)清屏

1.2 Java简介

Java是一种高级的面向对象的程序设计语言。使用Java语言编写的程序是跨平台的,从PC机到手持电脑都有Java开发的程序和游戏,Java程序可以在任何计算机、操作系统和支持Java的硬件设备上运行。

1.2.1 Java语言的历史

Java语言是Sun公司于1990年开发的,当时Green项目小组的研究人员正在致力于为未来的智能设备开发一种新的编程语言。由于该小组的成员James Gosling 对C++语言在执行过程中的表现非常不满,就把自己封闭在办公室里编写了一种新的语言,并将其名命名为OaK(OaK就是Java语言的前身),这个名字源于James Gosling 办公室窗外的一颗橡树(OaK)。此时的OaK已经具备安全性、网络通信、面向对象、多线程等特性,是一款相当优秀的程序语言。后来在注册OaK的商标时发现OaK已经被另一家公司注册,所以不得不改名,要起什么名字呢?工程师们边喝咖啡边讨论,看着手上的咖啡,联想到印度尼西亚有一个盛产咖啡的海岛(中文名叫爪哇),于是将其改名为Java。

随着Internet的迅速发展,web应用日益广泛,Java语言也得到了迅速发展。1994年Gosling用Java语言开发了一个实时性较高、可靠、安全、有交互功能的新型Web浏览器,他不依赖于与任何硬件平台和软件平台。该浏览器被命名为HotJava,并于1995年在业界发表,引起了巨大的轰动,Java语言的地位随之得到了肯定。1995年5月23日,JDK(Java Development Kit)1.0a2版本正式对外发布。此后,Java语言的发展异常迅速,2009年4月20日,Sun公司被Oracle公司收购。

1.2.2 什么是Java语言

Java是于1995年由Sun公司推出的一种极富创造力的面向对象的程序设计语言,它是由有Java之父之称的Sun研究院院士詹姆斯.戈士林博士亲手设计而成的,并完成了Java技术的原始编译器和虚拟机。Java的最初名字是OAK,在1995年被重命名为Java,正式发布。

Java是一种通过解释方式来执行的语言,其语法规则和C++类似。同时,Java也是一种跨平台的程序设计语言。用Java语言编写的程序,可以运行在任何平台和设备上,如跨越IBM个人电脑、MAC苹果计算机、各种微处理器硬件平台,以及Windows、UNIX、OS/2、MAC OS 等系统平台,真正实现“一次编写,到处运行”。Java非常适于企业网络和Internet环境,并且已成为Internet中最具影响力、最受欢迎的编程语言之一。

与目前常用的C++相比,Java语言简洁的多,而且提高了可靠性,除去了最大的程序错误根源,此外他还有较高的安全性,可以说它是有史以来最为卓越的编程语言。

Java语言编写的程序既是编译型的,又是解释型的。程序代码经过编译之后转换为一种称为Java字节码的中间语言,Java虚拟机(JVM)将对字节码进行解释和运行。编译只进行一次,而解释在每次运行程序时都会进行。编译后的字节码采用一种针对JVM优化过的机器码形式保存,虚拟机将字节码解释为机器码,然后在计算机上面运行。Java语言程序代码的编译和运行过程如图1.1所示。

图1.1   Java程序的编译和运行过程

1.2.3 Java的应用领域

借助Java,程序开发人员可以自由地使用现有的硬件和软件系统平台。这是因为Java是独立于平台的,它还可以应用于计算机之外的领域,Java程序可以在便携式计算机、电视、电话、手机和其他的大量电子设备上运行。Java的用途不胜枚举,他拥有无可比拟的能力,其节省的时间和费用也十分可观。Java的应用领域主要有以下方面:

n 桌面应用系统开发。

n 嵌入式系统开发。

n 电子商务应用。

n 企业级应用开发。

n 交互式系统开发。

n 多媒体系统开发。

n 分布式系统开发。

n Web应用系统开发。

Java无处不在,它已经拥有几百万个用户,其发展速度要快于在它之前的任何一种计算机语言。Java能够给企业和最终用户带来数不尽的好处。Oracle公司董事长和首席执行官Larru Ellison说过:“Java正在进入企业、家庭、和学校。它正在像Internet本身一样成为普遍存在的技术。”

如果仔细观察,就会发现Java就在我们身边,如我们经常使用的Java开发工具Eclipse、NetBeans、JBuilder等,另外还有RSSOwl、Limewire、Azureus、CyberDuck、OpenOffice等优秀软件都是使用Java编写的。此外,各手机厂商都为自己的产品提供了Java技术的支持,各种手机上的Java程序和游戏已经数不胜数。

1.2.4 Java的版本

自从Sun公司推出Java以来,就力图使之无所不能。Java发展至今,按应用范围分为三个版本,即Java Se、Java EE、Java ME,也就是Java ONE(Open Net Environment)体系。本节将分别介绍这3个Java版本。

1.Java SE

Java SE是Java的标准版,主要用于桌面应用程序的开发,同时也是Java的基础,它包含Java语言基础、JDBC(Java数据库连接性操作)、I/O(输入输出)、网络通信、多线程等技术。Java SE的结构如图1.2所示。

图1.2   Java SE的结构

1.Java EE

Java EE是Java的企业版,主要用于开发企业级分布式的网络程序,如电子商务网站和ERP(企业资源规划)系统,其核心为EJB(企业Java组件模型)。Java EE的结构如图1.3所示。

图1.3   Java EE的结构

1.Java ME

Java ME主要应用于嵌入式系统开发,如掌上电脑、手机等移动通信电子设备,现在大部分手机厂商所生产的手机都支持Java技术。Java ME的结构图如图1.4所示。

图 1.4   Java ME的结构

Java SE、Java EE、Java ME又叫J2SE、J2EE、J2ME,区别在于J2EE是在java1.2是沿用下来的名字,
从java1.5开始更名为JavaEE 5.0。相应的J2SE-->JavaSE、J2ME-->JavaME现在是JavaEE 6.0只是名字的变换,并没有什么大的改变。要说有改变,那也就是版本的升级。

1.2.5 怎么学好Java

如何学好Java语言,是所有初学者需要共同面对的问题,其实每种语言的学习方法都大同小异,初学者需要注意的主要有以下几点:

n 明确自己的学习目标和大的方向,选择并锁定一门语言,按照自己的学习方向努力学习,认真研究。

n 初学者不要看太多的书,先找本相对基础的书系统的学习。很多程序开发人员工作了很久也只是熟悉部分基础而已,并没有系统地学习Java语言。

n 了解设计模式。开发程序必须编写程序代码,这些代码必须具有高度的可读性,这样编写的程序才能调试、维护和升级的价值。学习一些设计模式,能够更好的把握项目的整体结构。

n 不要死记语法。在刚接触一门语言,特别是Java语言时,掌握好基本语法,并大概了解一些功能即可。借助开发工具(如Eclipse或NetBeans)的代码辅助功能,完成代码的录入,这样可以快速进入学习状态。

n 多实践,多思考,多请教。仅读懂书本中的内容和技术是不行的,必须动手编写程序代码,并运行程序、分析运行结构,从而对学习内容有个整体的认识和肯定。用自己的方式思考问题、编写代码来提高编程思想。平时多请教老师或经理,和其他人多沟通技术问题,提高自己的技术和见识。

n 不要急躁。遇到技术问题,必须冷静对待,不要让自己思维混乱,保持清醒的头脑才能分析和解决各种问题。可以尝试用歌和散步等方式来放松自己。

n 遇到问题,首先尝试自己解决,这样可以提高自己的程序调试能力,并对常见问题有一定的了解,明白出错的原因,甚至举一反三,解决其他关联的错误问题。

n 多查阅资料。可以经常到Internet上搜索相关资料或解决问题的方法,网络上已经摘录了很多人遇到的问题和不同的解决方法,分析这些解决问题的方法,找到最适合自己的方法。

n 多阅读别人的源代码。不但要看懂别人的程序代码,还要分析编程者的编程思想和设计模式,并融为己用。

1.2.6 Java API文档

API的全称是 Application Programming Interface,即应用程序编程接口。Java API文档是Java程序开发不可缺少的编程词典,并记录了Java语言中海量的API,主要包括类的继承结构、成员变量和成员方法、构造方法、静态成员的详细说明和描述信息。可以在Java网站http://java.sun.com中找到最新版本的JDK文档(即API文档),Java API文档的页面效果如图1.5所示。

图1.5   Java API文档页面

1.2.7 Java语言组成

Java 由四方面组成:

●Java编程语言,即语法。

●Java文件格式,即各种文件夹、文件的后缀。

●Java虚拟机(JVM),即处理*.class文件的解释器

●Java应用程序接口(Java API)。

1.3 Java语言的特性

Java语言的作者们编写了具有广泛影响的Java白皮书,里面详尽地介绍了他们的设计目标以及实现成果,还用简短的篇幅介绍了Java语言的特性。下面将对这些特性进行扼要的介绍。

1.3.1 简单

Java语言的语法简单明了,容易掌握,并且是纯面向对象的语言。Java语言的简单性主要体现在以下几个方面:

n 语法规则和C++类似。从某种意义上讲,Java语言是由C和C++语言演变而来的,所以C程序设计人员可以很容易地掌握Java语言的语法。

n Java语言对C++进行了简化和提高。例如,Java使用接口取代了多重继承,并取消了指针,因为指针和多重继承通常使程序变得复杂。Java语言还通过实现垃圾自动收集,大大简化了程序设计人员的资源释放管理工作。

n Java提供了丰富的类库和API文档以及第三方开发包,另外还有大量的基于Java的开源项目,JDK(Java开发者工具箱)已经开放源代码,读者可以通过分析项目的源代码,从而提高自己的编程水平。

1.3.2 面向对象

面向对象是Java语言的基础,也是Java语言的重要特性,它本身就是一种纯面向对象的程序设计语言。Java提倡万物皆对象,语法中不能在类外面定义单独的数据和函数,也就是说,Java语言最外部的数据类型是对象,所有的元素都要通过类和对象来访问。

1.3.3 分布性

Java的分布性包括操作分布和数据分布,其中操作分布是指在多个不同的主机上布置相关操作,而数据分布是将数据分别存放在多个不同的主机上,这些主机是网络中的不同成员。Java可以凭借URL(统一资源定位符)对象访问网络对象,访问方式与访问本地系统相同。

1.3.4 可移植性

Java程序具有与体系结构无关的特性,可以方便的移植到网络上的不同计算机中。同时,Java的类库中也实现了针对不同平台的接口,使这些类库可以移植。

1.3.5 解释型

运行Java程序需要解释器。任何移植了Java解释器的计算机或其他设备都可以用Java字节码进行解释执行。字节码独立于平台,它本身携带了许多编译时的信息,使得连接过程更加简单,开发过程更加迅速,更具探索性。

1.3.6 安全性

Java语言删除了类似C语言中的指针和内存释放等语法,有效的避免了非法操作内存。Java程序代码要经过代码校验、指针校验等很多测试步骤才能够运行,所以未经过允许的Java程序不可能出现损害系统平台的行为,而且使用Java可以编写防病毒和防修改的系统。

1.3.7 健壮性

Java程序的设计目标之一,是编写多方面的、可靠的应用程序,Java将检查程序在编译和运行时的错误,并消除错误。类型检查能帮助用户检查出很多在开发早期出现的错误。集成开发工具(如Eclipse、NetBeans)的出现也使编译和运行Java程序更加容易。

1.3.8 多线程

多线程机制能够使应用程序在同一时间并行执行多项任务,而且相应的同步机制可以保证不同线程能够正确地共享数据。使用多线程,可以带来更好的交互能力和实时行为。

1.3.9 高性能

Java编译后的字节码是在解释器中运行的,所以它的速度较多数交互式【交互的意思就是你和程序对话.例如你点击一个按钮,然后程序弹出一个窗口"您真的要退出吗?"这样你就可以选择了.这个就叫交互.目前大部分的程序都是交互程序。】应用程序提高了很多。另外,字节码可以在程序运行时被翻译成特定平台的机器指令,从而进一步提高运行速度。

1.3.10 动态

Java在很多方面比C和C++更能适应发展的环境,可以动态调整库中方法和增加变量,而客户端却不需要任何更改。在Java中进行动态调整是非常简单和直接的。

1.4 Java环境的搭建

工欲善其事必先利其器。在学习Java语言之前,必须了解并搭建好它所需要的开发环境。要编译和执行Java程序,JDK(Java Developers Kits)是必备的。下面将具体认识下JDK和JRE,并进行介绍下载安装JDK和配置环境变量的方法。

1.4.1 Java的跨平台

Java的跨平台是指:通过Java语言编写的应用程序在不同的系统平台上都可以运行。

原理是:只要在需要运行java应用程序的操作系统上,先安装一个Java虚拟机(JVM Java Virtual Machine)即可。由JVM来负责Java程序在该系统中的运行。简单来说就是如图1.1所示那样程序代码经过编译之后转换为一种称为Java字节码的中间语言,Java虚拟机(JVM)将对字节码进行解释和运行。编译只进行一次,而解释在每次运行程序时都会进行。编译后的字节码采用一种针对JVM优化过的机器码形式保存,虚拟机将字节码解释为机器码,然后在计算机上面运行。如下图1.6所示。

图1.6   Java的跨平台性的原理

因为有了JVM,所以同一个Java程序在三个不同的操作系统中都可以执行。这样就实现了Java程序的跨平台性。也称为Java具有良好的可移植性。

Java语言是跨平台的,而JVM不是跨平台的。【什么是java的平台无关性?a)答:Java源文件被编译成字节码的形式,无论在什么系统环境下,只要有java虚拟机就能运行这个字节码文件。也就是一处编写,处处运行。这就是java的跨平台性。】

1.4.2 JDK

jdk是 Java 语言的软件开发工具包,是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。JDK包含的基本组件包括:

  • javac – 编译器,将源程序转成字节码
  • jar – 打包工具,将相关的类文件打包成一个文件
  • javadoc – 文档生成器,从源码注释中提取文档
  • jdb – debugger,查错工具
  • java – 运行编译后的java程序(.class后缀的)
  • appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。
  • Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。
  • Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。
  • Jconsole: Java进行系统调试和监控的工具

为什么JDK中包含一个JRE呢?

其一,开发完的程序,总需要运行一下看看效果。

其二,也是最重要的,JDK中的开发工具其实都是java语言编写的应用程序,为了方便使用才打包成exe文件,如果没有JRE,那么这些工具是运行不了的。

1.4.3 JRE

JRE(Java Runtime Environment,Java运行环境),运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。

简单而言:使用JDK开发完成的java程序,交给JRE去运行。【JDK是什么?JRE是什么?

a)答:JDK:java开发工具包。JRE:java运行时环境。】

1.4.4 JDK下载

Java的JDK又称Java SE(以前称J2SE),是Sun公司的产品,由于Sun公司已经被Oracle公司收购,因此JDK可以在Oracle公司的官方网站http://www.oracle.com/index.html下载。


在Java 6 出版之后,J2SE、J2EE和J2ME正式更名,将名字中的2去掉,分别更改为Java SE、Java EE和Java ME

下面以JDK 最新版本为例介绍下载安装JDK的方法,具体步骤如下:

n 打开IE浏览器,输入网址“http://www.oracle.com/index.html”,浏览Oracle官网,将光标移动当Downloads菜单项上,将显示下载列表下拉菜单,单击Java for Developers 超链接,如图1.7所示。

图1.7   Oracle主页

n 将跳转到JDK的下载页面,在该页面中单击最新版本JDK的超链接,即如图1.8所示的Download按钮。

图1.8   JDK的下载页

n 在进入的新页面中,需要先选中同意协议中的单选按钮,这时将显示如图1.9所示的页面,否则单击要下载的链接时不能进行下载。

图1.9   JDK最新版本的下载页面


下载时要选择适合自己操作系统平台的的安装文件,如Windows系统平台是无法安装Linux系统平台的安装文件的。如果我们需要一些旧版本的JDK则可以在进入JDK的下载链接页面后选择旧版本下载,单击进入历史页面,我们以JDK 7 为例如图1.10所示。

图1.10   历史版本的JDK下载

1.4.5 Windows系统的JDK环境

1.4.5.1 JDK的安装

我们以下载的JDK 7为例进行安装介绍,步骤如下:

JavaFX是由甲骨文宣布推出的,是一款为企业业务应用提供的先进Java用户界面(UI)平台,它能帮助开发人员无缝的实现与本地java功能及Web技术动态能力的混合与匹配。

1.4.5.2 配置JDK

在安装完JDK后需要对环境变量进行配置,具体步骤如下所示。

1.4.5.2.1 path环境变量配置的作用
  • 程序的执行需要使用外部指令javac,但是javac指令仅仅能在JDK安装目录下的bin目录下时候,因此程序只能写入bin目录
  • 程序开发过程中,不能将源代码写入JDK的安装目录,因此需要将源程序保存到任意位置的指定目录(英文目录),所以需要使javac指令在任意目录下可以运行
  • 通过配置path环境变量,将javac指令所在目录也就是JDK安装目录下的bin目录配置到path变量下,即可使javac指令在任意目录下运行
  • win7,win8系统:右键点击桌面计算机→选择属性→选择高级系统设置→选择高级选       项卡→点击环境变量→下方系统变量中查找path→双击path
  • XP系统:右键点击桌面计算机→选择属性→选择高级选项卡→点击环境变量→下方系统变量中查找path→双击path将jdk安装目录下的bin目录添加到最左边并添加分号
1.4.5.2.2 path环境变量配置方式
  • 通过配置path环境变量,将javac指令所在目录也就是JDK安装目录下的bin目录配置到path变量下,即可使javac指令在任意目录下运行
  • win7,win8系统:右键点击桌面计算机→选择属性→选择高级系统设置→选择高级选       项卡→点击环境变量→下方系统变量中查找path→双击path
  • XP系统:右键点击桌面计算机→选择属性→选择高级选项卡→点击环境变量→下方系统变量中查找path→双击path将jdk安装目录下的bin目录添加到最左边并添加分号

  • path环境变量的参照形配置方式

创建新的变量名称:JAVA_HOME,为JAVA_HOME添加变量值:JDK安装目录,将path环境变量中JDK目录修改,%JAVA_HOME%\bin;,path环境变量具有先后顺序

我们配置成功后发现javac和java可以到处运行

在一台电脑上配置java环境,path起什么作用?如何配置?

a)答:path的作用是在DOS环境下,能在任意位置使用JDK目录中bin文件夹中的可执行程序,来编译执行java程序。

b)在环境变量中找到path变量,把bin文件夹的绝对路径加上即可。

1.4.5.2.3 classpath环境变量配置方式

我们配置成功path环境变量后发现java和javac可以到处运行,那么此时我们已不必将源代码放入bin目录下了,但是我们遇到这么一个问题就是,源文件的运行必须在源文件的目录下编译

那么如果我们要摆脱这个限制做到可以再任意目录下编译任何想要编译的文件,那么我们就用到了classpath 类路径

classpath环境变量配置方式

  • 创建新的变量名称:classpath
  • 值设定为指定的还有class文件的目录,多个目录间使用分号(;)分割

作用:使classpath目录中的.class文件可以在任意目录运行

  • 技巧:通常将配置的目录最前面添加.配置,即便当前目录,使.class文件搜索时首先搜索当前目录,然后根据目录配置的顺序依次查找,找到后即运行,因此classpath目录中的配置存在先后顺序

小知识:rt.jar是JAVA基础类库,dt.jar是关于运行环境的类库,tools.jar是工具类库

1.rt.jar 默认就在 根classloader的加载路径里面 放在claspath是多此一举

不信你可以去掉classpath里面的rt.jar

然后用 java -verbose XXXX 的方式运行一个简单的类 就知道 JVM的系统根Loader的路径里面

不光rt.jar jre\lib下面的大部分jar 都在这个路径里

2.tools.jar 是系统用来编译一个类的时候用到的 也就是javac的时候用到

javac XXX.java

实际上就是运行

java -calsspath=%JAVA_HOME%\lib\tools.jar xx.xxx.Main XXX.java

javac就是对上面命令的封装 所以tools.jar 也不用加到classpath里面

3.dt.jar是关于运行环境的类库,主要是swing的包你要用到swing时最好加上

jdk1.5版本之前必须配置classpath,jvm虚拟机才能找到.class文件,1.5版本以后jvm虚拟机会默认在当前目录去找.class文件,所以我们现在的1.7版本千万别配置classpath,因为没有意义

1.4.5.2.4 path和classpath的区别

path环境变量里面记录的是可执行性文件,如.exe文件,对可执行文件先在当前路径去找,如果没找到就去path环境变量中配置的路径去找

classpath环境变量里记录的是java类的运行文件所在的目录

1.5 第一个Java程序“Hello World”

1.5.1 工具介绍

编写Java程序可以使用很多种工具

l notepad(微软操作系统自带)

l Notepad++

l Eclipse

l MyEclipse

我们在初始学习阶段先通过Notepad++来学习,这样我们可以更直观的看到程序运行的流程。

1.5.2 HelloWorld

源代码

class HelloWorld{
    public static void main(String[] args){
        System.out.print("Hello World;");
        System.out.println("Hello World;");
    }
}

此时我们打开命令行,定义到JDK的目录下,

此时我们编译程序会发现

原因在于javac.exe它只会编译bin目录下的文件,而HelloWorld.java不在当前bin目录下,我们将需要编译的文件放在当前bin目录下,重新编译发现提示编码错误错误,这是我们可以解决错误提示:编码 GBK 的不可映射字符,使用命令:javac -encoding utf-8 helloword.java,编译成功

运行我们编译成功的class

在这里我们要注意当我们更改源文件时,我们在运行可执行文件.class时,如果没有编译,那么更改是无效的,简单举例:当我们将HelloWorld.java中再加入一句输入语句System.out.print(“未经编译的举例”);此时我们不编译,直接运行可执行文件,

输出结果是上一次我们编译后的呈现,我们重新编译,重新执行,这次变化才会显示出来

1.5.3程序解析

class Demo{  /*首先定义一个类  class 类名  这个类名将是未来我们编译后的字节码文件名

在类定义后加上一对大括号{}*/

/*在大括号中间添加一个主(main)方法/函数  public static void main(String [] args){ } main是给类定义的方法,当类作为包中的主类时,必须要有main方法,main方法是程序的入口,当程序执行时,优先调用它。然后在main方法中再调用别的类和方法,就完成了程序。*/

public static void main(String[] args){

/*在主方法的大括号中间添加两行输出语句 System.out.print(“hello world”); System.out.println(“hello world”);Ln的区别在于是一个回车 有Ln代表有一个回车*/

System.out.print("Hello World");

System.out.println("Hello World");

}

}

当我们不输入main方法时,我们的编译仍可进行,但执行可执行文件时汇报错误

1.5.4运行与工作原理

1.5.5常见错误

l 文件扩展名隐藏导致编译失败

l class写错 Class claas…

l 类名格式有问题 暂时全部使用英文

l 类名后面的大括号匹配不正确

l main方法格式错误 public static void main(String [] args){ }

l main方法大括号缺失

l 打印语句拼写错误 System.out.println(“”);

l 引号使用错误,使用成中文全角引号

如果编译后无法生成可执行文件一般可以按以下步骤进行排查,找到问题所在:

1.先检查jdk环境是否配置成功

做法:DOS下输入:java -version,看是否有jdk版本的信息;java,看是否有相关命令;javac,看是否有这个命令;验证这3个命令,会对jdk环境配置有个直观的认识,如果没有正常显示相关信息,就要去配置jdk环境,具体步骤可参考百度经验。

2.检查路径是否正确

做法:DOS下输入:dir,查看当前路径下是否真的有这个HelloWorld.java文件

3.通过命令 javac -d 你想生成class文件的目录 HelloWorld.java 来查看是否有class文件

做法:DOS下输入:javac -d C:\ HelloWorld.java  ,运行后,看是否在C盘下有HelloWorld.class文件

意思是输出5个占位符,如果数字不足5的话就有左边以0相补

【以上为个人浅见,如有错误,还望不吝赐教!】

Question1  Java环境变量的配置及为什么要配置环境变量

Question2  Java的跨平台特性的原理

Question 3 Class文件结构

Question 4 Class文件是如何被加载的&&类加载器

Question 5 JDK和JRE的区别和各自承担的作用

时间: 2024-09-29 06:11:16

Chapter 1 Java开发前奏的相关文章

黑马程序员____第一阶段Java开发前奏(1)

  黑马程序员____第一阶段Java开发前奏(1) ⒈软件开发:        软件是由一系列按照特定顺序组织的计算机数据和指令的集合,软件开发就是制作软件.软件的出现实现了人与计算机之间的交互.    ⒉人机交互方式:        图形化界面和命令行方式,图形化界面简单直观,使用者易于接受,容易上手操作.命令行方式需要有一个控制台,输入特定的指          令,让计算机完成一些操作,较为麻烦,需要记住一些命令.    3.常用的DOS命令:     dir:列出当前目录下的文件以及文

java 开发前奏

Java的特点 Java最主要的特点是:一次编译,到处运行(Write Once, Run Anywhere.). 原理:Java源程序经编译后生成.class字节码文件,.class文件由Java虚拟机(JVM)解释执行.不同的操作系统下,只要有相应的Java字节码解释程序,.class文件就能够运行,这是Java跨平台性的根本.c和java编程与执行的过程如下图所示: Java的内涵 1.是一种编程语言 2.是一套开发工具 3.是一个运行环境 Java应用平台 1.J2EE(Java 2 P

Java开发前奏

一.常见的dos命令 盘符:-----------------进入指定的盘符下: dir---------------------列出当前目录下的文件以及文件夹. rd 文件名---------------- 删除空文件夹.(非空文件夹,必须先删文件) cd:文件夹名-----------打开该文件名的文件夹. cd..----------------------返回上一级目录. cd\----------------------退回到根目录. echo “hello java”>a.txt--

底层战详解使用Java开发Spark程序(DT大数据梦工厂)

Scala开发Spark很多,为什么还要用Java开发原因:1.一般Spark作为数据处理引擎,一般会跟IT其它系统配合,现在业界里面处于霸主地位的是Java,有利于团队的组建,易于移交:2.Scala学习角度讲,比Java难.找Scala的高手比Java难,项目的维护和二次开发比较困难:3.很多人员有Java的基础,确保对Scala不是很熟悉的人可以编写课程中的案例预测:2016年Spark取代Map Reduce,拯救HadoopHadoop+Spark = A winning combat

Java开发搜索引擎爬虫

1 package com.peidon.html; 2 3 import java.io.BufferedReader; 4 import java.io.File; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.io.InputStream; 8 import java.io.InputStreamReader; 9 import java.net.HttpURLConnectio

Lombok: Java开发的利器

Lombok是一个旨在减少代码开发工作的Java库.本文介绍了如何用它来完成getter/setter方法,构造方法,以及重写equals(),hashCode()和toString()方法.在Java中,一个很简单的类却往往写得特别复杂.如果你没听说过Lombok的话,那它肯定会让你满意的. Lombok可以帮助Java开发人员完成以下这些事情: 1. 不用再写setter/getter方法了 public class Animal { @Getter @Setter private Stri

温故而知新系列(1)——net开发前奏

为什么要写这一系列的博客?因为自己发现学过的知识太容易忘记了,即使是一些很容易的知识点,也会因为长时间不去学习而导致忘掉,所以准备些一些博客用来复习以前学过的知识点.同时自己在忘记的时候可以 通过些的博客 对知识点做一个复习. .net 开发前奏呢,主要是将学习.net 入门的一些基本知识 首先思考什么是编程? 编程:即程序员使用计算机能够明白的一种方式指挥计算机帮助我们做事情. 编程语言:是软件工程师与计算机沟通的一种方式 .net开发,那.net是什么,什么是C#? 在这之前先说什么是 平台

java开发中的那些事(5)--------一点经历,败给2分钟的2个小时

特意记下这个经历,这个让我感慨万千又斗志昂扬的一次经历,这是经验,也是生活. 故事的始末是这样的,先给大家上几句代码,现在身在家中,只能凭记忆敲打几行,大致意思倒不会错: {field:'code',align:'center'} {field:'btfid',align:'center',hidden:'true', formatter:function(value,row,rowIndex){ return "<a href="javascript:void(0)"

Java开发环境的配置

为了能够在计算机上开发Java程序和运行Java程序,就需要在Windows操作系统上配置Java开发环境. 首先,安装JDK: 1.在Oracle官网上下载JavaSE: 2.在Download下载页面中,选择Windows平台下的JDK6: 3.下载完成后进行安装,默认安装在c:\Program Files\Java下: 4.安装完成后,在DOS命令行状态下测试JDK6是否安装成功: 5.运行cmd,输入java -version命令,可以查看版本信息,若显示出版本信息,则安装成功. 然后进