思虑良久要不要讲Idea的安装,最后决定还是不讲了。网上教程一大堆,我们主要是以理解的方式去讲java的。所以关于Idea的使用与安装大家在百度上查询安装就好了。
开始吧。之前我们讲解了 顺序、循环、分支。这些都是简单的帮助大家对写代码有一个基础的概念。简单的入手,不能一开始就直接讲概念。不然大家是一脸懵。全是专业的名词,学锤子。
接下来开始深入的探索。
第一步 什么是java
什么是java
Java 是一种广泛使用的高级编程语言,具有以下特点和用途:
Java 语言本身是用 C 和 C++ 编写的。
Java 虚拟机(JVM)的实现大部分也是用 C 和 C++ 编写。这是因为 C 和 C++ 语言能够很好地与底层操作系统和硬件进行交互,适合用于编写像 JVM 这样对性能要求较高、需要直接操作内存和系统资源的程序。
在开发过程中,Java 编译器(javac)是将 Java 源程序(.java文件)编译成字节码(.class文件)的工具,它也是用 Java 语言编写的。这是一种自举(bootstrapping)的方式,早期的 Java 编译器可能是通过 C 或者 C++ 编写的初始版本,后续版本则可以用 Java 自身来开发,以利用 Java 语言本身的特性如面向对象编程、可移植性等来维护和扩展编译器的功能。
java的历史
- 起源(20 世纪 90 年代初)
- Java 语言最初是由 Sun Microsystems 公司的詹姆斯・高斯林(James Gosling)领导的团队开发的。开发的初衷是为了应用于消费电子产品,例如机顶盒、智能卡等嵌入式设备。当时,这些设备的软件系统需要一种安全、可靠、可移植的编程语言。
- 这个时期,C 和 C++ 语言在编程领域占据主导地位,但它们在嵌入式设备中的应用存在一些问题,如内存管理复杂(指针操作容易导致错误)和可移植性差。Java 的设计目标之一就是解决这些问题,提供一种简单且安全的编程语言。
- 早期版本发布(1995 年)
- 1995 年,Sun Microsystems 正式发布了 Java 1.0 版本。这一版本的发布标志着 Java 开始在互联网领域崭露头角。它包括了 Java 开发工具包(JDK),其中有 Java 编译器(
javac)和 Java 虚拟机(JVM)。 - 当时,互联网刚刚兴起,Java 的 “一次编写,到处运行” 的特性使得它非常适合开发网络应用程序。Java Applet 是 Java 1.0 时期的一个重要应用,它是一种嵌入在网页中的小程序,可以在浏览器中运行,为网页带来了交互性,比如简单的动画效果、游戏等。
- 1995 年,Sun Microsystems 正式发布了 Java 1.0 版本。这一版本的发布标志着 Java 开始在互联网领域崭露头角。它包括了 Java 开发工具包(JDK),其中有 Java 编译器(
- Java 2 平台发布(1998 年)
- 1998 年,Java 2 平台标准版(J2SE)、企业版(J2EE)和微型版(J2ME)发布。
- J2SE 是 Java 的核心版本,用于开发桌面应用程序和小型的服务器应用程序。它提供了丰富的类库,如
java.awt和javax.swing用于图形用户界面(GUI)开发,java.util提供了各种实用的集合类(如ArrayList、HashMap)等。 - J2EE 则专注于企业级应用开发,它包含了一系列的技术和规范,如 Servlet 用于处理 HTTP 请求,JSP(Java Server Pages)用于动态网页生成,EJB(Enterprise JavaBeans)用于企业级的业务逻辑组件开发等。这些技术使得企业能够构建大型的、分布式的、多层架构的应用系统,如企业资源规划(ERP)和客户关系管理(CRM)系统。
- J2ME 主要用于移动和嵌入式设备开发,为移动电话、PDA 等设备提供了轻量级的 Java 运行环境,使得开发者可以在这些设备上开发各种应用,如简单的游戏、工具软件等。
- 开源和社区发展(2006 - 2007 年)
- 2006 年,Sun Microsystems 宣布将 Java 开源,这使得 Java 的发展更加开放和多元化。开源后,社区的开发者可以参与到 Java 的改进和扩展中来。
- 众多开源项目围绕 Java 展开,例如各种开源框架(如 Spring、Hibernate)的蓬勃发展,进一步提升了 Java 在企业级应用和 Web 开发中的地位。Spring 框架提供了一种轻量级的企业级开发模式,通过依赖注入和面向切面编程等技术,简化了复杂的企业级业务逻辑的开发。Hibernate 则专注于对象 - 关系映射(ORM),帮助开发者更方便地将 Java 对象与数据库进行交互。
- 被 Oracle 收购后的发展(2010 年至今)
- 2010 年,Oracle 收购了 Sun Microsystems,从而获得了 Java 的版权。在 Oracle 的管理下,Java 继续发展。
- Java 的更新频率有所加快,如 Java 8(2014 年发布)带来了许多重要的新特性,其中 Lambda 表达式和 Stream API 对函数式编程提供了更好的支持,使得 Java 代码在处理集合等操作时更加简洁高效。Java 9(2017 年发布)引入了模块系统,改善了 Java 的代码组织和依赖管理,提高了大型项目的可维护性。
- 在应用领域方面,Java 在安卓应用开发中发挥了关键作用。虽然安卓应用开发现在也支持其他语言(如 Kotlin),但 Java 仍然是重要的基础语言。同时,Java 在大数据、云计算等新兴领域也保持着重要地位,许多大数据框架(如 Hadoop、Spark)和云计算平台(如 Java - based cloud services)都大量使用 Java 语言进行开发和维护。
应用领域
- 企业级应用开发
- Java 在企业级软件开发中占据重要地位。它用于构建大型的业务应用系统,如企业资源规划(ERP)系统、客户关系管理(CRM)系统等。这些系统通常需要处理复杂的业务逻辑、大量的数据存储和并发访问。Java 的各种框架,如 Spring 和 Hibernate,大大简化了企业级应用的开发过程。例如,Spring 框架提供了依赖注入(Dependency Injection)和面向切面编程(Aspect - Oriented Programming)等功能,使得代码更加模块化和易于维护;Hibernate 则用于对象 - 关系映射(ORM),方便开发者在 Java 对象和数据库表之间进行转换。
- 安卓应用开发
- Android 操作系统的应用程序主要是使用 Java 开发的(虽然现在也支持 Kotlin 等其他语言)。通过 Android 软件开发工具包(SDK)和相关的开发环境,开发者可以利用 Java 创建各种移动应用,从简单的工具类应用到复杂的游戏和社交应用。例如,一个简单的安卓应用可能包括用户界面的布局定义(使用 XML 等)和后台的 Java 逻辑处理,如处理用户的点击事件、数据存储等。
- 大数据与分布式计算
- Java 在大数据处理领域也有广泛应用。许多大数据框架如 Hadoop 和 Spark 都是用 Java 编写或者提供了 Java API。Hadoop 用于分布式存储(HDFS)和分布式计算(MapReduce),Java 可以用于编写 MapReduce 任务来处理海量数据。Spark 则是一个快速的通用集群计算系统,Java 开发者可以使用 Spark 的 Java API 进行数据处理、机器学习等复杂任务。
java特性
- 简单性
- 语法风格:Java 的语法风格类似于 C 和 C++,对于有 C/C++ 基础的开发者来说比较容易上手。但它摒弃了一些复杂且容易出错的特性,如 C/C++ 中的指针操作。指针操作在 C/C++ 中虽然功能强大,但也很容易导致内存泄漏、悬空指针等问题。Java 通过自动内存管理(垃圾回收机制)来避免这些问题,使得程序员可以更加专注于业务逻辑的实现。
- 面向对象特性:Java 是完全面向对象的编程语言,一切皆对象。它提供了清晰的面向对象编程结构,包括类、对象、继承、封装和多态。例如,在定义一个 “汽车” 类时,可以将汽车的各种属性(如颜色、品牌、速度等)封装在类中,通过方法来访问和修改这些属性。继承可以让 “跑车” 类继承 “汽车” 类的基本属性和方法,并添加自己特有的属性和方法,如更高的速度上限。多态则允许不同的子类对象对同一方法有不同的实现,这使得代码更加灵活和可扩展。
- 面向对象
- 封装:Java 通过访问修饰符(如 private、public、protected)来实现封装。例如,在一个银行账户类中,账户余额可以被定义为 private 属性,这样外部代码不能直接访问和修改余额,而是需要通过类提供的 public 方法(如存款方法、取款方法)来操作余额。这就保证了数据的安全性和完整性,防止了外部代码对数据的非法访问和修改。
- 继承:继承是面向对象编程中的重要概念。在 Java 中,一个类可以继承另一个类的属性和方法。例如,定义一个 “动物” 类,它有属性(如体重、年龄)和方法(如吃、睡)。然后可以定义 “哺乳动物” 类继承 “动物” 类,“哺乳动物” 类不仅继承了 “动物” 类的属性和方法,还可以添加自己特有的属性和方法,如喂奶的方法。
- 多态:Java 中的多态主要体现在方法的重载和重写。方法重载是指在一个类中可以有多个同名方法,但它们的参数列表不同(参数的数量、类型或者顺序不同)。例如,一个计算面积的类可以有两个同名的方法 “calculateArea”,一个方法接收矩形的长和宽作为参数,另一个方法接收圆的半径作为参数。方法重写是指在子类中重新定义父类中已经存在的方法,当通过子类对象调用该方法时,执行的是子类重写后的方法。例如,在一个图形类中定义了 “draw” 方法,在其子类 “圆形” 和 “矩形” 中可以根据自身的特点重写 “draw” 方法,从而画出不同形状的图形。
- 可移植性(跨平台性)
- Java 实现了 “一次编写,到处运行” 的理念。这是通过 Java 虚拟机(JVM)来实现的。当开发者编写好 Java 代码后,使用 Java 编译器(
javac)将其编译成字节码(.class文件)。字节码是一种中间形式的代码,它不依赖于具体的硬件和操作系统。然后,字节码可以在任何安装了 JVM 的平台上运行。例如,一个 Java 应用程序在 Windows 平台上编译生成字节码后,可以不加修改地在 Linux 平台或者 Mac OS 平台上运行,只要这些平台上安装了相应的 JVM。这使得 Java 在跨平台开发方面具有巨大的优势,企业可以用 Java 开发一个软件,然后在不同的操作系统环境下进行部署和使用,大大减少了开发和维护成本。
- Java 实现了 “一次编写,到处运行” 的理念。这是通过 Java 虚拟机(JVM)来实现的。当开发者编写好 Java 代码后,使用 Java 编译器(
- 健壮性
- 强类型检查:Java 是强类型语言,在编译阶段会对变量的类型进行严格检查。例如,如果一个方法期望接收一个整数类型的参数,而传入了一个字符串类型的参数,编译器会报错。这种强类型检查机制有助于发现代码中的错误,提高代码的质量和稳定性。
- 自动内存管理(垃圾回收):Java 有自动的垃圾回收机制(Garbage Collection,GC)。GC 会自动回收不再使用的内存对象,程序员不需要手动释放内存。例如,当一个对象没有任何引用指向它时,垃圾回收器会在适当的时候回收该对象占用的内存空间。这避免了在 C/C++ 中常见的内存泄漏和悬空指针问题,使得 Java 程序更加健壮和稳定。
- 安全性
- 字节码验证:在 Java 程序运行时,JVM 会对字节码进行验证。验证过程包括检查字节码的格式是否正确、字节码是否遵守 Java 语言的语法规则和安全约束等。例如,它会检查是否存在非法的内存访问操作、是否有对私有成员的非法访问等。只有通过验证的字节码才能在 JVM 中运行,这就保证了 Java 程序的安全性。
- 安全管理器(Security Manager):Java 提供了安全管理器来控制 Java 应用程序的访问权限。安全管理器可以定义一系列的安全策略,例如限制一个小程序只能访问本地文件系统的特定目录,或者禁止一个应用程序访问网络等。这对于在网络环境中运行的 Java 程序(如 Java Applet)来说非常重要,可以防止恶意代码对系统造成损害。
- 高性能
- 即时编译器(JIT):Java 虚拟机中的即时编译器可以在程序运行过程中对字节码进行优化编译。当一个方法被频繁调用时,JIT 编译器会将字节码编译成机器语言,以提高程序的执行速度。例如,在一个循环中频繁调用的方法,JIT 编译器会在适当的时候将其编译成机器码,使得后续的执行更加高效。
- 高效的内存管理:Java 的内存管理系统虽然是自动的,但也具有较高的效率。它通过合理的内存分配和回收策略,尽量减少内存碎片的产生,提高内存的利用率。例如,垃圾回收器采用了分代回收的策略,将对象分为不同的代(如新生代和老生代),根据对象的生命周期特点采用不同的回收方式,从而提高了垃圾回收的效率。
- 分布式
- 网络编程支持:Java 提供了丰富的网络编程接口,使得开发分布式应用变得容易。例如,通过
java.net包中的类,可以轻松地创建服务器和客户端应用程序,实现网络通信。可以使用Socket类创建一个客户端,用于连接到服务器并发送和接收数据;使用ServerSocket类创建一个服务器,用于监听客户端的连接请求并处理通信。 - 支持远程方法调用(RMI):Java 的远程方法调用机制允许一个 Java 程序在本地调用远程对象的方法,就好像这些方法是在本地执行一样。例如,在一个分布式的企业级应用中,位于不同服务器上的业务逻辑组件可以通过 RMI 进行通信和协作,实现数据共享和业务流程的协同。
- 网络编程支持:Java 提供了丰富的网络编程接口,使得开发分布式应用变得容易。例如,通过
- 多线程
- 内置多线程支持:Java 内置了对多线程的支持。通过
java.lang.Thread类和java.util.concurrent包,可以方便地创建和管理线程。例如,可以创建多个线程来同时执行不同的任务,提高程序的并发处理能力。比如在一个网络服务器应用中,可以使用多个线程来同时处理多个客户端的连接请求,提高服务器的响应速度和吞吐量。 - 线程安全机制:Java 提供了多种机制来确保线程安全。例如,通过
synchronized关键字可以对共享资源进行同步访问,防止多个线程同时修改同一资源而导致数据不一致。还可以使用java.util.concurrent包中的各种并发工具,如ReentrantLock、CountDownLatch等,来更灵活地控制线程的执行和同步。
- 内置多线程支持:Java 内置了对多线程的支持。通过
544

被折叠的 条评论
为什么被折叠?



