文章目录
1.2 Java 的特点
Java是目前使用最为广泛的网络编程语言之一,它具有语法简单、面向对象、稳定、与平台无关、多线程、动态等特点,与平台无关是Java最初风靡世界的最重要的原因。
1.2.1 简单
如果读者学习过C++语言,会感觉Java很眼熟,因为Java中许多基本语句的语法和C++语言是一样的,像常用的循环语句、控制语句等几乎和C++相同。需要注意的是,Java和C++是完全不同的语言,Java和C++各有各的优势,将会长期并存下去,Java语言和C++语言已经成为软件开发者应当掌握的基础语言。如果从语言的简单性方面看,Java要比C++简单,C++中许多容易混淆的概念或者被Java弃之不用了,或者以一种更清楚、更容易理解的方式实现,例如Java中不再有指针的概念。
1.2.2 面向对象
基于对象的编程更符合人的思维模式,使人们更容易解决复杂的问题。Java是面向对象的编程语言,本书将在第4~7章详细、准确地介绍类与对象、子类与继承、接口与实现以及内部类与异常类等重要概念。
1.2.3 与平台无关
Java语言的出现源自对独立于平台的语言的需要,希望用这种语言能编写出可嵌入各种家用电器等设备的芯片上且易于维护的程序。但是,人们发现当时的编程语言(例如C、C++)有一个共同的缺点,那就是只能对特定的中央处理器(Central Processing Unit,CPU)芯片进行编译。这样,一旦电器设备更换了芯片就不能保证程序的正常运行,就可能需要修改程序并针对新的芯片重新进行编译。
Java语言和其他语言相比,最大的优势就是编写的软件能在执行码上兼容,在所有的计算机上运行。Java之所以能做到这一点,是因为Java可以在计算机的操作系统之上再提供一个Java运行环境(Java Runtime Environment JRE).该运行环境由Java虚拟机(JavaVirtual Machine,JVM)、类库以及一些核心文件组成,也就是说,只要平台提供了Java 运行环境,用Java 编写的软件就能在其上运行
① 平台与机器指令
无论用哪种编程语言编写的应用程序,都需要经过操作系统和处理器来完成程序的运行,因此这里所指的平台由操作系统(Operating System,OS)和中央处理器(CPU)所构成。与平台无关是指软件的运行不因操作系统、中央处理器的变化而无法运行或出现运行错误。
每个平台都会形成自己独特的机器指令。所谓平台的机器指令,就是可以被该平台直接识别、执行的一种由0.1组成的序列代码。相同的CPU和不同的操作系统所形成的平台的机器指令可能是不同的。例如,某种平台可能用8位序列代码00001111表示加法指令,用10000001表示减法指令;而另一种平台可能用8位序列代码10101010表示加法指令,用10010011表示减法指令。
② C/C++程序依赖平台
现在分析一下为何用C/C++语言编写的程序可能因为操作系统的变化、中央处理器升级导致程序出现错误或无法运行。
C/C++针对当前C/C++源程序所在的特定平台对其源文件进行编译、连接,生成机器指令,即根据当前平台的机器指令生成可执行文件,那么可以在任何与当前平台相同的平台上运行这个可执行文件。但是,不能保证C/C++源程序所产生的可执行文件在所有的平台上都能正确地被运行,其原因是不同平台可能具有不同的机器指令(如图 1.2 所示)。因此,如果更换平台,可能需要修改源程序,并针对新的平台重新编译源程序。
③ Java 虚拟机与字节码
Java语言和其他语言相比,最大的优势就是它与平台的无关性。这是因为Java可以在平台之上再提供一个Java 运行环境,该Java 运行环境由Java虚拟机、类库以及一些核心文件组成。Java虚拟机的核心是所谓的字节码指令,即可以被Java虚拟机直接识别、执行的一种由0.1组成的序列代码,字节码并不是机器指令,因为它不和特定的平台相关,不能被任何平台直接识别、执行。Java针对不同平台提供的Java虚拟机的字节码指令都是相同的,例如所有的虚拟机都将11110000识别、执行为加法操作。
和C/C++不同的是,Java语言提供的编译器不针对特定的操作系统和CPU芯片进行编译,而是针对Java虚拟机把Java源程序编译成称为字节码的“中间代码”,例如Java源文件中的+被编译成字节码指令 11110000。字节码是可以被Java虚拟机识别、执行的代码,即Java虚拟机负责解释、运行字节码,其运行原理是Java虚拟机负责将字节码翻译成虚拟机所在平台的机器码,并让当前平台运行该机器码,如图1.3所示。
在一个计算机上编译得到的字节码文件可以复制到任何一个安装了Java运行环境的计算机上直接使用。字节码由Java虚拟机负责解释、运行,即Java虚拟机负责将字节码翻译成本地计算机的机器码,并将机器码交给本地的操作系统运行
1.2.4 多线程
Java 的特点之一就是内置了对多线程的支持。多线程允许同时完成多个任务。实际上多线程使人产生多个任务在同时执行的错觉,因为目前计算机的处理器在同一时刻只能执行一个线程,但处理器可以在不同的线程之间快速地切换,由于处理器的运行速度非常快,远远超过了人接收信息的速度,所以给人的感觉好像多个任务在同时执行。C++没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序的设计。
1.2.5 动态
在学习了第4章之后,读者就会知道Java程序的基本组成单元就是类,有些类是用户自己编写的,有些是从类库中引入的,而类又是在运行时动态装载的,这就使得Java可以在分布式环境中动态地维护程序及类库。C/C++在编译时就将函数库或类库中被使用的函数、类同时生成机器码,那么每当其类库升级之后,如果C/C++程序想具有新类库提供的功能,程序就必须重新修改、编译。
1.30安装 JDK
Java要实现“编写一次,到处运行(write once,run anywhere)”的目标,就必须提供相应的Java运行环境,即运行Java程序的平台。
1.3.1 平台简介
0 Java SE
Java SE(曾称为J2SE)称为Java标准版或Java标准平台。Java SE提供了标准的JavaDevelopment Kit(JDK)。利用该平台可以开发Java 桌面应用程序和低端的服务器应用程序。当前较新的JDK版本为JDK 14。
②Java EE
Java EE(曾称为J2EE)称为Java企业版或Java企业平台。使用Java EE可以构建企业级的服务应用,Java EE平台包含了Java SE平台,并增加了附加类库,以便支持目录管理、交易管理和企业级消息处理等功能。
1.4 Java 程序的开发步骤
①编写源文件
使用一个文本编辑器,例如记事本(可以在Windows附件中找到记事本notepad)来编写源文件。注意,不可使用非文本编辑器,例如Word编辑器。另外,要将编写好的源文件保存起来,源文件的扩展名必须是.java。
②编译源文件
使用Java 编译器(javac.exe)编译源文件,得到字节码文件。
③运行程序
使用Java SE平台中的Java解释器(java.exe)来解释、执行字节码文件。
②保存源文件
如果源文件中有多个类,那么最多有一个类是 public类;如果有一个类是public类,那么源文件的名字必须与这个类的名字完全相同,扩展名是,java;如果源文件没有public类,那么源文件的名字只要和某个类的名字相同,并且扩展名是.java就可以了。
1.5.2 编译
在保存了Hello,java 源文件之后,就可以使用Java 编译器(javac.exe)对其进行编译。
使用JDK环境开发Java程序需打开MS-DOS命令行窗口(在Windows系统中称命令提示符),可以单击计算机左下角的“开始”,在“Windows系统”下找到“命令提示符”选项,单击该选项打开MS-DOS命令行窗口;或右击计算机左下角的“开始”,找到“运行”选项,单击该选项,在弹出的对话框中输入“cmd”,打开MS-DOS命令行窗口。用户需要掌握几个简单的DOS操作命令:从逻辑分区C转到逻辑分区D,需在命令行中依次输入D和冒号并回车确认;进入某个子目录(文件夹)的命令是“cd目录名”;退出某个子目录的命令是“cd…”,例如从目录 example 退到目录 boy 的操作是“C:\boy>example> cd…”。
1.8 Java之父-James Gosling
1990年Sun公司成立了由James Gosling领导的开发小组,开始致力于开发一种可移植的、跨平台的语言,该语言能生成正确运行于各种操作系统及各种CPU芯片上的代码。他们的精心研究和努力促成了Java语言的诞生。1995 年5 月 Sun公司推出的Java DevelopmentKit 1. 0a2版本标志着Java的诞生。美国的著名杂志PC Magazine将Java语言评为1995年十大优秀科技产品之一。Java的快速发展得益于Internet和Web的出现,Internet上的各种不同计算机可能使用完全不同的操作系统和CPU芯片,但仍希望运行相同的程序,Java的出现标志着分布式系统的真正到来。
1.9 小结
(1)Java语言是面向对象编程语言,编写的软件与平台无关。Java语言涉及网络、多线程等重要的基础知识,特别适合于Internet应用的开发。很多新的技术领域都涉及了Java语言,学习和掌握Java已成为人们的共识。
(2) Java源文件由若干个书写形式互相独立的类组成。开发一个Java程序需经过3个步骤,即编写源文件、编译源文件生成字节码和加载运行字节码。
(3)编写代码务必遵守行业的习惯及风格。