Java核心技术--Java程序设计概述

203 阅读12分钟

1.1 Java程序设计平台

Java是一个完整的平台,有一个庞大的库,其中包含了很多可重用的代码和一个提供诸如安全性,跨操作系统的可移植性以及自动垃圾收集等服务的执行环境

1.2 Java"白皮书"的关键术语

Java的设计者已经编写了颇有影响力的"白皮书",用来解释设计的初衷以及完成的情况,并且发布了一个简短的摘要.这个摘要用下面11个关键术语进行组织

  1. 简单性
  2. 面向对象
  3. 网络技能
  4. 健壮性
  5. 安全性
  6. 体系结构中立
  7. 可移植性
  8. 解释型
  9. 高性能
  10. 多线程
  11. 动态性

1.3 Java applet 与 Internet

用户从Internet下载Java字节码,并在自己的机器上运行.

在网页中运行Java程序成为applet,为了使用applet,需要启用Java的Web浏览器执行字节码

用户下载一个applet就如同在网页中嵌入一幅图片.applet成了页面的一部分.

1.4 Java发展简史

一、起源与初期发展

  • 前身:Java的前身是Oak,由詹姆斯·高斯林(James Gosling)于1991年在Sun Microsystems(后来被甲骨文公司收购)开发。起初,Oak是为了开发一种能够运行在多种设备上的程序,特别是家用电子设备和嵌入式系统。
  • 更名与发布:随着互联网的兴起,Oak项目被重新定位为一种面向网络的编程语言,并在1995年正式更名为Java。同年5月,Java 1.0正式发布,这标志着Java语言及其平台的正式诞生。

二、重要里程碑与版本迭代

  • JDK 1.0:1996年1月,Sun公司发布了Java的第一个开发工具包(JDK 1.0),这是Java发展历程中的重要里程碑,标志着Java成为一种独立的开发工具。
  • Java 2平台:1999年6月,Sun公司发布了第二代Java平台(简称为Java2),包括J2ME(Java2平台的微型版)、J2SE(Java 2平台的标准版)和J2EE(Java 2平台的企业版)。Java 2平台的发布是Java发展过程中最重要的一个里程碑,标志着Java的应用开始普及。
  • Java SE 5.0:2004年9月30日,J2SE 1.5发布,并更名为Java SE 5.0(内部版本号1.5.0),代号为“Tiger”。这个版本包含了从1996年发布1.0版本以来的最重大的更新,如泛型支持、基本类型的自动装箱、改进的循环、枚举类型等。
  • 开源与OpenJDK:2006年11月13日,Sun公司宣布将Java技术作为免费软件对外发布,并发布了Java平台标准版的第一批源代码。同年,OpenJDK建立,HotSpot虚拟机也成为了OpenJDK中的默认虚拟机。
  • JDK 6与甲骨文收购:2006年,JDK 6发布。2009年,甲骨文公司宣布收购Sun Microsystems,从而获得Java商标和HotSpot虚拟机。

三、持续发展与新技术趋势

  • 新版本发布:自Java 6以来,Java继续保持着快速的发展势头。例如,Java 7引入了try-with-resources语句用于自动管理资源,Java 8带来了Lambda表达式和流(Streams)API等函数式编程特性。Java 11是长期支持版本(LTS),引入了模块化系统(JPMS)等。
  • 新技术趋势:随着技术的不断进步,Java也在持续演进中。Java社区和开发者们不断探索新的应用领域和技术趋势,如微服务、容器化、云原生等。同时,Java也在积极适应新的编程范式和技术挑战,如响应式编程、异步编程等。

1.5 关于Java的常见误解

1. Java是HTML的扩展

实际上,Java与HTML是两种完全不同的技术。HTML用于描述网页的结构和内容,而Java则用于编写可以在网页中运行的程序(如Java Applet)或作为后端服务器端的编程语言。尽管HTML中可以使用<applet>标签来嵌入Java小程序,但这并不意味着Java是HTML的扩展。

2. 使用XML,就不需要Java

XML(可扩展标记语言)和Java是两种完全不同的技术,它们各自有着独立的用途和功能。XML是一种用于描述和存储数据的标记语言,它允许用户自定义标签,以结构化的方式表示数据。而Java则是一种编程语言,用于开发各种类型的应用程序,包括企业级应用、Android应用等。

在某些情况下,XML和Java可能会一起使用。例如,在Web开发中,XML常被用作数据交换和存储的格式,而Java则可能用于处理这些XML数据。Java提供了多种解析XML的方式,如DOM(文档对象模型)、SAX(简单API用于XML)和StAX(流API用于XML)等。这些技术使得Java程序能够读取、解析和操作XML数据。

因此,虽然XML和Java是两种不同的技术,但它们在某些应用场景中可以相互补充,共同完成任务。所以,使用XML并不意味着就不需要Java,而是根据具体的需求和场景来决定是否使用Java或其他编程语言来处理XML数据。

3. Java是一种非常容易学习的程序设计语言

Java是否容易学习是一个相对主观的问题。对于具有编程背景或经验的开发者来说,Java可能相对容易上手,因为它具有清晰的语法结构和丰富的文档资源。然而,对于编程初学者来说,Java可能需要一些时间和努力来掌握。

Java的语法相对严谨,具有面向对象、静态类型检查等特点,这有助于开发者编写出更加健壮和可维护的代码。但同时,这也意味着学习者需要花费更多的时间来理解这些概念,并熟练掌握Java的语法规则。

此外,Java拥有丰富的API和库,这使得开发者能够轻松实现各种功能。然而,这也意味着学习者需要花费一定的时间来熟悉这些API和库的使用。

总的来说,Java并不是一种“一蹴而就”的编程语言。它需要学习者投入足够的时间和精力来掌握其基本概念和语法规则,并通过实践来加深对Java的理解和应用能力。但与此同时,Java也是一种非常强大和流行的编程语言,具有广泛的应用领域和良好的就业前景。因此,对于想要学习编程的人来说,Java无疑是一个值得考虑的选择。

4. Java将成为适用于所有平台的通用性编程语言

Java确实具有成为适用于所有平台的通用性编程语言的潜力,但这一说法也需根据具体情况进行分析。

首先,Java是一种面向对象的编程语言,具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程和动态性等特点。这些特点使得Java在多种平台上都有很好的表现,特别是其平台独立性,使得Java程序可以在不同的操作系统和硬件平台上运行,而无需重新编译。这一特性极大地提高了Java的通用性和适用性。

其次,Java拥有庞大的生态系统,包括丰富的API、库和框架,以及庞大的开发者社区。这些资源为Java开发者提供了强大的支持,使得他们能够更容易地开发、测试和部署Java应用程序。同时,Java也在不断更新和演进,以适应新的技术趋势和开发者需求。

然而,尽管Java具有很多优点,但在某些特定领域,其他编程语言可能具有更好的表现。例如,在iOS设备上,Objective-C和Swift具有无可取代的地位;在Web浏览器中,JavaScript则占据了主导地位。因此,虽然Java具有广泛的适用性,但在某些特定场景下,其他编程语言可能更为合适。

综上所述,Java具有成为适用于所有平台的通用性编程语言的潜力,但这一说法也需根据具体情况进行分析。在多种平台上,Java都表现出了很好的性能和适用性,但在某些特定领域,其他编程语言可能更为优秀。因此,在选择编程语言时,应根据具体需求和场景进行选择。

5. Java是解释型的,因此对于关键的应用程序速度太慢了

Java作为解释型语言,并不意味着它在关键应用程序中的速度就一定会太慢。虽然Java是解释型语言,但其在执行速度上的表现受到多种因素的影响,包括Java虚拟机(JVM)的优化、即时编译(JIT)技术、垃圾回收机制等。

首先,Java程序在运行时,JVM会加载相关的类,并将类文件的字节码解释执行。然而,现代JVM通常都采用了JIT技术,这种技术可以在运行时将热点代码(即频繁执行的代码)编译成机器码,从而提高执行速度。因此,对于关键应用程序,经过优化的JVM和JIT技术可以显著提升Java程序的执行速度。

其次,Java的垃圾回收机制虽然在一定程度上增加了程序运行的开销,但现代JVM中的垃圾回收器已经经过了大量的优化和改进。这些优化包括分代回收、并行回收、并发回收等策略,旨在减少垃圾回收对程序性能的影响。因此,在合理配置和调优垃圾回收器的情况下,Java程序可以保持较高的执行效率。

此外,Java作为一种高级编程语言,还提供了丰富的API和库,以及强大的跨平台能力。这些特性使得Java在开发大型、复杂的应用程序时具有显著的优势。同时,Java社区和生态系统的繁荣也为开发者提供了丰富的资源和支持。

综上所述,虽然Java是解释型语言,但其在关键应用程序中的速度表现受到多种因素的影响。通过优化JVM配置、采用JIT技术、合理调优垃圾回收器等手段,Java程序可以保持较高的执行效率。因此,不能简单地认为Java在关键应用程序中的速度就一定太慢。在实际应用中,需要根据具体的应用场景和需求来选择合适的编程语言和工具。

6. 所有的Java程序都是在网页中运行的

这个说法是不准确的。虽然Java在Web开发中有着重要的应用,比如Java Servlet、JavaServer Pages (JSP) 等技术用于构建Web应用程序的后端,但并非所有的Java程序都是在网页中运行的。

实际上,Java是一种广泛使用的编程语言,它的应用范围远远超出了Web开发。Java可以用于开发桌面应用程序、企业级应用、移动应用(如Android应用)、游戏、大数据处理等多个领域。这些Java程序通常不是在网页中运行的,而是在用户的计算机、服务器或其他设备上独立运行的。

在Web开发中,Java通常与Web服务器和浏览器交互,用于处理用户的请求、生成动态网页内容、管理数据库等。但即使在这种情况下,Java程序也不是直接在网页中运行的,而是在服务器端运行的,然后将结果发送到客户端(即用户的浏览器)进行显示。

7. JavaScript是Java的简易版

JavaScript并非Java的简易版。尽管它们的名字中都包含“Java”,但JavaScript和Java是两种完全不同的编程语言,由不同的公司开发,具有不同的语法、特性和用途。

一、开发公司与用途

  • JavaScript:由Netscape公司开发,旨在扩展Netscape Navigator浏览器的功能。它是一种脚本语言,主要用于Web开发,嵌入在HTML页面中,为网页提供交互性和动态效果。
  • Java:由Sun Microsystems公司(后被Oracle收购)推出,是一种面向对象的程序设计语言。Java被广泛应用于企业级开发、Android应用开发、大数据处理、云计算等多个领域。

二、语法与特性

  • JavaScript:动态类型、弱类型语言,基于原型的对象模型。语法相对简单,易于学习,但也有一些陷阱和难点,如变量提升、作用域链等。
  • Java:静态类型、强类型语言,基于类的面向对象模型。Java具有严格的类型检查、垃圾回收机制、多线程支持等特性,使得它成为一种高效、可靠、可维护的编程语言。

三、运行环境与执行方式

  • JavaScript:主要在浏览器中运行,是一种解释型语言。JavaScript代码在运行时由JavaScript引擎(如V8、SpiderMonkey等)解释执行。
  • Java:代码需要先编译成字节码,然后在Java虚拟机(JVM)上运行。JVM是一种跨平台的运行时环境,使得Java程序可以在不同的操作系统和硬件平台上运行。

所以两者无任何关系