1.2 初识Java
纵观各大主流招聘媒体,总是会看到多条招聘Java程序员的广告。由此可以看出,Java程序员很受市场欢迎。本节将带领大家初步认识一下Java这门语言,为读者随后步入本书后面知识的学习打下基础。
知识点讲解:
1.2.1 何谓Java
我们通常所说的Java,指的是Sun公司在1995年5月推出的一套编程架构,它主要由Java程序设计语言(以后简称Java语言)和Java运行时环境两部分组成。用Java实现的HotJava浏览器(支持Java Applet)向我们展示了Java语言的魅力—跨平台、动态Web开发及Internet计算。当时,人们通过HotJava浏览器上运行的Java Applet程序,看到了Java是一门具有跨平台能力的程序设计语言,因而在动态Web开发及Internet计算领域有着巨大的潜力。从那以后,Java便被广大程序员和企业用户广泛接受,成为最受欢迎的编程语言之一。
当然,Java程序需要在Java平台的支持下运行,Java平台则主要由Java虚拟机(Java Virtual Machine,JVM)和Java应用编程接口(Application Programming Interface,API)构成。我们需要在自己的设备上安装Java平台之后,才能运行Java应用程序。关于这一点,读者倒是不必太担心,如今所有操作系统都有相应版本的Java平台,我们只需要按照相关的指示安装好它们,然后我们的Java程序只需要编译一次,可以在各种操作系统中运行了。
Java分为如下3个体系。
❑ JavaSE:Java2 Platform Standard Edition的缩写,即Java平台标准版,涵盖Java语言的大多数功能,本书将以JavaSE平台进行讲解。
❑ JavaEE:Java 2 Platform Enterprise Edition的缩写,即Java平台企业版,主要用于开发企业级程序。
❑ JavaME:Java 2 Platform Micro Edition的缩写,即Java平台微型版,主要用于开发移动设备端的程序。
1.2.2 Java的特点
❑ 语法简单:Java语言的语法与C/C++语言十分接近,这样大多数程序员可以很容易地学习和使用Java。另外,Java还丢弃了C++中很少使用的、很难理解的那些特性,例如操作符重载、多继承、自动强制类型转换等,并且令广大学习者高兴的是Java不再使用指针,学习者再也不用为指针发愁了。除此之外,Java还为我们提供了垃圾回收机制,使得程序员不必再为内存管理而担忧。
❑ 支持面向对象:Java语言支持类、接口和继承等特性,并且为简单起见,Java只支持类之间的单继承和接口之间的多继承,并且也支持类与接口之间的实现机制。总之,Java是一门纯粹面向对象的程序设计语言。
❑ 支持分布式开发:Java语言支持Internet应用开发,在基本的Java应用编程接口中有一个网络应用编程接口(java.net),这个接口提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的远程方法激活(RMI)机制也是开发分布式应用的重要手段。
❑ 健壮性:Java的强类型、异常处理、垃圾回收等机制保证了Java程序的健壮性。另外,Java的安全检查机制对保证Java程序的健壮性也有相当大的作用。
❑ 安全性:由于程序员通常需要在网络环境中使用Java语言,因此Java必须为我们提供一套安全机制以防止程序被恶意代码攻击。Java语言除了具有许多安全特性以外,还为从网络下载应用提供了安全防范机制(ClassLoader类),例如,通过分配不同的名称空间可以防止本地类被外来的同名类意外替代。另外,Java的字节代码检查和安全管理机制(SecurityManager类)在Java应用程序中也起到“安全哨兵”的作用。
❑ 可移植性:相同的程序能够在不同的开发环境与应用环境中使用,不论使用的是微软的产品还是其他提供商的产品。当然,由于Java的运行环境是用ANSI C实现的,这赋予了Java系统很强的可移植性,使Java程序可以在多种平台上运行。
❑ 解释型语言:Java程序的代码会在Java平台上被编译为字节码格式,这样Java程序就可以在安装了Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释,执行过程中需要的类会在连接阶段载入到运行环境中。
❑ 支持多线程:当程序需要同时处理多项任务时,就需要用到多线程并行开发。如果一个程序在同一时间只能做一件事情,那它的功能也太过于简单了,肯定无法满足现实需求。在实际应用中,多线程条件下的并行开发是必不可少的,可以让我们在同一时间做多件事情,甚至开启多个线程,同时做一件事情,以提高效率。无论是C/C++语言,还是其他程序设计语言,线程都是一个十分重要的概念。
❑ 高性能:与那些解释型的高级脚本语言相比,Java的确称得上高性能。近年来,随着JIT(Just-In-Time)编译器技术的发展,Java的运行速度事实上已经越来越接近于C++了。
❑ 动态:Java语言的设计目标之一是适应动态变化的环境。Java程序中的类需要能够动态地载入到运行环境中,也可以通过网络来载入所需要的类。动态语言有利于软件升级。
1.2.3 Java的地位
“TIOBE编程语言社区排行榜”是众多编程语言爱好者心目中的权威榜单。TIOBE榜单每月更新一次,上面的排名客观公正地展示了各门编程语言的地位。TIOBE排行榜的排名基于互联网上有经验的程序员、课程和第三方厂商的数量,TIOBE编程语言社区排行榜使用著名的搜索引擎(诸如Google、MSN、Yahoo!、Wikipedia、YouTube以及Baidu等)进行计算。都说“长江后浪推前浪,一浪更比一浪强”,但是在编程榜单上,Java和C语言的二人转已经表演多年,程序员也早已习惯C语言和Java的二人转局面。截至2018年9月,Java语言和C语言依然是最大的赢家。表1-1显示了最近两年榜单上前两名编程语言的排名信息。
表1-1 2017~2018年编程语言使用率统计
由表1-1的统计数据可以看出,最近两年Java语言一直位居榜首。虽然TIOBE编程语言社区排行榜只反映某编程语言的热门程度,并不能说明一门编程语言本身设计的优劣,或者使用一门编程语言编写的代码量的多少,但是这个排行榜可以考查大家的编程技能是否与时俱进,也可以在开发新系统时作为语言选择依据。Java的功能比较强大,在服务器端应用、移动设备端应用、桌面应用和Web应用的开发中都占据重要的地位,所以占据排行榜榜首是非常正常的。
在现实应用中,Java语言主要应用于如下领域。
❑ 服务器端应用:Java在服务器端编程方面的表现很出色,拥有很多其他语言所没有的优势。
❑ 移动端应用:Java在手机等移动设备上的应用比较广泛,如手机、平板电脑上的Java游戏随处可见,当前异常火爆的Android系统也支持Java。
❑ 桌面应用:Java和C++、.NET一样重要,影响着桌面程序的发展。
❑ Web应用:Java在Web应用的开发上有着巨大的优势,而且Java的大多数开发工具和开发框架都是开源的,具有更强的安全性。