一文了解什么是 Java

Java 是一门经典的面向对象编程语言,是基于 C++ 发展起来的,你可以将其看作是 C++ 的 “纯净” 版,它不仅吸收了 C++ 语言的各种优点,还摒弃了 C++ 中难以理解的指针等部分。再加上刚好赶上互联网的“顺风车”,随着 Internet 和 WWW 的迅速发展,Java 成为了越来越受欢迎的语言。尽管经历了近 30 年的技术变革,但 Java 仍然是当前开发基于 Web 的应用程序的最佳选择。


Java 起源及发展

–> Java 前身

起初(90 年代初),Sun Microsystems 公司为了开发一种用于编写 “家用电器的小型交互式系统” 的编程语言,如手机、机顶盒、面包机等。由于当时设备平台(硬件和操作系统)多样化,即需要该编程语言具有良好的跨平台能力,而且这些家用设备不足以运行大型程序(小内存),故开发了基于 C++ 的 Oak(橡树)语言。

–> Java 的正式诞生

Oak 语言的诞生,就像 C/C++ 语言的诞生一样,开发者都寄予了很大的期望。但事实上,基于 Oak 语言所开发的智能化家电的市场需求远没有没有预期的那么高,不得以 Sun 公司放弃了该项计划。

绝境中往往孕育着机遇!90 年代随着互联网的迅猛发展,Sun 公司发现 Oak 在互联网上的应用前景,于是再一次做出尝试,改造了 Oak。

1995 年,Sun 公司正式发布了第一个 Java 版本,Java 正式诞生!!!

2010 年 Oracle(甲骨文)公司收购 Sun Microsystems 公司,之后由 Oracle 公司负责 Java 的维护和版本升级。

随着互联网的迅速发展,定位于网络运算的 Java 语言,特别适合于开发网络应用程序,于是 Java “热” 迅速席卷全球。


Java 开篇

Java 不仅仅是一门编程语言,还是一个平台。Java 平台由 Java 虚拟机(Java Virtual Machine,JVM)Java 应用编程接口(Application Programming Interface,API)构成。Java 应用编程接口提供了一套独立于操作系统的标准接口,可分为基本部分和扩展部分。

在硬件或操作系统平台上安装一个 Java 平台之后,Java 应用程序就可运行。Java 平台已经嵌入了几乎所有的操作系统,这样 Java 程序只编译一次,就可以在各种系统中运行。


JDK & JRE

为了编程人员开发和运行 Java 程序,Sun 公司免费推出了 Java 的开发、运行工具 —— JDK(Java Development Kit,Java 开发工具包)。

有时候,你可能会遇到如下说法:

1 –> Java SDK

我们先来认识一下 SDK:

SDK 说法:全称 Software Development Kit,即软件开发工具包,覆盖面很广泛的一个说法。可以这么说:辅助某一类软件开发的相关文档、范例和工具的集合都可以叫做 “SDK”,它为软件的开发提供一个平台。

JDK 是 Java 开发工具包,专为开发、运行 Java 设计而生,是 SDK 的一个子集。

所以,你可以说:JDK 是 Java SDK(Java Software Development Kit),这也没问题。

2 –> Java 2

Java 1.2 版本之后发布的 Java 版本都可以称为:Java 2。

Java 5(Java 7/8/9):Java 1.5(Java 1.7/1.8/1.9)版本。

所以,现在我们说的 Java,更多的是指 Java 2 平台。

3 –> J2 SDK

J2 SDK,全称 Java2 Software Development Kit,包含 JDK、JRE(Java Runtime Environment)等。

JRE:Java Runtime Environment,Java 运行环境,是运行 JAVA 程序所必须的环境的集合。

但要注意的是,JDK 中也包含一套单独的 JRE。

J2 SDK 一般特指 Java 2 平台的 JDK,开发人员必装,可进行 Java 程序的开发、运行。

J2 JRE 就是 Java 2 平台的 JRE,Java 客户端运行必装。如果你只需要运行 Java 程序,只需要安装 JRE 即可。


J2SE & J2EE & J2ME

为了推广 Java,根据应用领域的不同,Java 可以分为 3 个体系

1 –> J2SE

J2SE,也称为 Java SE(Java Platform Standard Edition,Java 平台标准版),它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序,是 Java 系统的标准与核心平台。

Java SE 包含了 Java 语言基础、JDBC 操作、I/O 操作、JavaSwing 以及多线程等技术,还提供了支持 Java Web 服务开发的类库。

Java SE 平台体系示意图如下:

2 –> J2EE

J2EE,也称为 Java EE(Java Platform Enterprise Edition,Java 平台企业版),帮助企业开发和部署可移植、健壮、可伸缩且安全的服务器端 B/S架构的 Java 应用程序。

Java EE 是在 Java SE 基础上构建的,个人理解就是在 J2SE 平台的基础上,添砖加瓦后出现的。它提供 Web 服务、组件模型、管理和通信 API等:

  • servlet
  • jsp
  • spring
  • mybatis

3 –> J2ME

J2ME,也称为 (Java Platform Micro Edition,Java 平台微型版), Java ME 为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。

==============================================

关系图示:


Java 特点

Java 语言是一种分布式的面向对象语言,具有面向对象、平台无关性、简单性、解释执行、多线程、安全性等很多特点,下面针对这些特点进行逐一介绍。


面向对象

Java 是一种纯面向对象的语言。使用 Java 语言开发程序,需要采用面向对象的思想设计程序和编写代码。

和 C++ 相比,Java 更加纯粹,所有内容都被封装到类中。

1 –> 面向对象的核心:

以更接近人的思维去建立计算机逻辑,利用类和对象对数据和操作的分装到一起,并通过定义统一的接口去和 “外界” 交互,使反映实体的类在程序中能够独立、自治和继承

2 –> 面向对象的程序设计:

从实际问题中抽象出封装了数据和操作的对象,定义其属性和操作,以及接口实现交互,形成一个接近于实际问题的动态对象模式。


简单易学

Java 语言是基于 C++ 创建的,所以 Java 语言的风格很像 C/C++ 语言,但要比 C++ 更纯粹。

继承了 C++ 语言面向对象的技术核心,但是拋弃了 C++ 的一些缺点,比如说容易引起错误的指针、操作符重载以及多继承等,同时也增加了垃圾回收机制,释放掉不被使用的内存空间,解决了管理内存空间的烦恼。

基础语法同 C 语言几乎一模一样,便于学习。


平台无关性

Java 提出 “Write Once,Run any Where”,即 “一次编写,到处运行”。

Java 编译后产生一种 二进制字节码文件,任何操作系统平台,只要安装有 Java 虚拟机都可以解释执行。并且 Java 中的原始数据存储都是固定的,如任何机器,int 都是 32 位。理所当然,使整数类型平台无关后性能必然下降,但这带来的跨平台特性是值得的。

Java 语言使用 Java 虚拟机机制屏蔽了具体平台的相关信息,使得 Java 语言编译的程序只需生成虚拟机上的目标代码,就可以在多种平台上不加修改地运行。


解释型语言

Java 程序在 Java 平台运行时会被编译成字节码文件,在运行文件时,Java 的解释器对这些字节码进行解释执行。

看起来,逐条解释执行,导致单机运行很慢。但事实上,JVM 中采用了即时编译机制(JIT)可以很大程度上的优化,Java 的运行速度也越来越高。


多线程

Java 语言是多线程的,但它必须由 Thread 类和它的子类来创建。Java 支持多个线程同时执行,并提供多线程之间的同步机制


分布式

Java 语言支持 Internet 应用的开发,在 Java 的基本应用编程接口中就有一个网络应用编程接口,它提供了网络应用编程的类库,包括 URL、URLConnection、Socket 等。Java 的 RIM 机制也是开发分布式应用的重要手段。


健壮性

Java 的强类型机制、异常处理、垃圾回收机制等都是 Java 健壮性的重要保证。对指针的丢弃是 Java 的一大进步。另外,Java 的异常机制也是健壮性的一大体现。


安全性

Java 通常被用在网络环境中,为此,Java 提供了一个安全机制以防止恶意代码的攻击。

除了 Java 语言具有许多的安全特性以外,Java 还对通过网络下载的类增加一个安全防范机制,分配不同的名字空间以防替代本地的同名类,并包含安全管理机制。


丰富的类库支持

Java 中提供了丰富的类库支持,这些类库存放于 Java 系统的各种包(Package)中,有接口、类、异常处理等等

1 –> java.lang

Java 语言包,提供了包括字符串处理,多线程处理,数学函数处理等各种基础类。

2 –> java.io

Java 输入输出包,用统一的 “流” 模型来实现所有格式的输入、输出。通过数据流,序列化,文件系统提供系统输入输出。

3 –> java.awt/javax.swing

Java 图形用户接口包,提供实现不同平台的计算机图形用户接口部件,包括窗口,菜单,滚动条等等组件。

4 –> java.sql

Java 数据库包,提供了用户进行数据库操作的驱动程序和应用程序接口。

5 –> java.util

Java 应用程序工具包,支持哈希表,堆栈,可变数组,时间和日期,集合框架,事件模型和各种实用工具类(随机数生成器、位数组等等)。

6 –> java.net

Java 网络包,提供了实现网络编程的 URL,Socket 编程,还支持 Internet 的 ICP/IP 协议,提供了与 Internet 的接口。


Author

Waldeinsamkeit

Posted on

2017-10-08

Updated on

2021-01-04

Licensed under

You need to set install_url to use ShareThis. Please set it in _config.yml.

Comments

You forgot to set the shortname for Disqus. Please set it in _config.yml.