首页 > 代码库 > 对Java总体上的认识

对Java总体上的认识

Java 是什么


Java 是:

  1. 一种计算机编程语言
  2. 一种软件开发平台
  3. 一种软件运行平台

一种软件部署环境什么意思呢,分别解释一下。

 

Java 是一种计算机编程语言

1.1:语言

要准确地给语言下一个定义很困难,对我们来说也没有必要,但是大家都知道汉语、英语等是语言。语言是用来干什么的呢?很明显语言是用来交流的,比如大家现在看这些文字,其实就是我们通过这些文字在交流。

1.2:计算机编程

所谓计算机编程就是:把我们的要求和想法,按照能够让计算机看懂的规则和约定,编写出来的过程,就是编程。编程的结果就是一些计算机能够看懂并能够执行和处理的东西,我们把它叫做软件或者程序。事实上,程序就是我们对计算机发出的命令集(指令集)。

1.3:Java 是一种计算机编程语言

我们说Java 是一种计算机编程语言,首先是说:Java 是一种语言,也就是Java 是用来交流的,那么用来谁和谁交流呢?很明显就是人和计算机交流了,换句话说把我们的要求和想法用Java 表达出来,那么计算机能看懂,就能够按照我们要求运行,而这个过程就是我们说的使用Java 编程,所以我们讲Java 是一种计算机编程语言。

为了让计算机看懂,Java 会有一系列的规则和约定,这些就是Java 的语法。

 

Java 是一种软件开发平台

2.1:什么是软件开发

可以简单地理解为:编程的结果是软件或者程序,而编程的过程就是软件开发。软件开发的基本步骤包括:需求分析、概要设计、详细设计、编码、测试、维护等阶段。

2.2:什么是开发平台

在软件开发的过程中,我们需要很多的工具来辅助我们的工作,不可能什么都从头自己做。我们把编程的环境和相应的辅助工具统称为开发环境,开发平台就是用来提供这个开发环境的。

2.3:Java 是一种开发平台

Java 不单纯是一个编程的语言,它自身提供了一系列开发Java 所需要的环境和工具,来进行编译、解释、文档生成、打包等,比如:javac.exe 、java.exe 等等,这些我们后面会讲到,现在不明白也没有关系。所以我们讲Java 是一个开发平台

 

Java 是一种软件运行平台

3.1:什么是软件的运行平台

如同我们需要阳光、空气、水和食物才能正常存活一样,软件最终要能够运行,也需要一系列的外部环境,来为软件的运行提供支持,而提供这些支持的就是运行平台。

3.2:Java 是一种运行平台

Java 本身提供Java 软件所需要的运行环境,Java 应用可运行在安装了JRE(Java Runtime Environment) 的机器上,所以我们说Java 是一个运行平台。

JRE:Java Runtime Environment,Java 运行环境。

 

Java 是一种软件部署环境

4.1:什么是软件的部署

简单地讲,部署就是安装,就是把软件放置到相应的地方,并且进行相应的配置(一般称作部署描述),让软件能够正常运行起来。

4.2:Java 是一种软件部署环境

Java 本身是一个开发的平台,开发后的Java 程序也是运行在Java 平台上的。也就是说,开发后的Java 程序也是部署在Java 平台上的,这个尤其在后面学习JEE(Java 的企业版)的时候,体现更为明显。

 

Java 能干什么

Java 能做的事情很多,涉及到编程领域的各个方面。

1:桌面级应用:尤其是需要跨平台的桌面级应用程序。

先解释一下桌面级应用:简单的说就是主要功能都在我们本机上运行的程序,比如word 、excel 等运行在本机上的应用就属于桌面应用。

2:企业级应用

先解释一下企业级应用:简单的说就是大规模的应用,一般使用人数较多,数据量较大,对系统的稳定性、安全性、可扩展性和可装配性等都有比较高的要求。

这是目前Java 应用最广泛的一个领域,几乎一枝独秀。包括各种行业应用,企业信息化,也包括电子政务等,领域涉及:办公自动化OA,客户关系管理CRM,人力资源HR,企业资源计划ERP 、知识管理KM、供应链管理SCM 、企业设备管理系统EAM 、产品生命周期管理PLM 、面向服务体系架构SOA 、商业智能BI、项目管理PM、营销管理、流程管理WorkFlow 、财务管理……等等几乎所有你能想到的应用。

3:嵌入式设备及消费类电子产品

包括无线手持设备、智能卡、通信终端、医疗设备、信息家电(如数字电视、机顶盒、电冰箱)、汽车电子设备等都是近年以来热门的Java 应用领域,尤其是手机上的Java 应用程序和Java 游戏,更是普及。

4:Java 其它功能:

如进行数学运算、显示图形界面、进行网络操作、进行数据库操作、进行文件的操作等等。

 

Java 有什么

Java 体系比较庞杂,功能繁多,这也导致很多人在自学Java 的时候总是感觉无法建立全面的知识体系,无法从整体上把握Java 的原因。在这里我们先简单了解一下Java 的版本。

Java 分成三种版本:

  1. 列Java 标准版(JSE)
  2. Java 微缩版(JME)
  3. Java 企业版(JEE)

每一种版本都有自己的功能和应用方向。

1:Java 标准版: JSE(Java Standard Edition)

JSE(JavaStandardEdition) 是Sun 公司针对桌面开发以及低端商务计算解决方案而开发的版本,例如:我们平常熟悉的Application 桌面应用程序。这个版本是个基础,它也是我们平常开发和使用最多的技术,Java 的主要的技术将在这个版本中体现。

2:Java 微缩版:JME(Java Micro Edition)

JME(Java ,Micro Edition) 是对标准版JSE 进行功能缩减后的版本,于1999 年6 月由Sun Microsystems 第一次推向Java 团体。它是一项能更好满足Java 开发人员不同需求的广泛倡议的一部分。Sun Microsystems 将JME 定义为“一种以广泛的消费性产品为目标的高度优化的Java 运行时环境,包括寻呼机、移动电话、可视电话、数字机顶盒和汽车导航系统。”


JME 是致力于消费产品和嵌入式设备的开发人员的最佳选择。尽管早期人们对它看好而且Java 开发人员团体中的热衷人士也不少,然而,JME 最近才开始从其影响更大的同属产品JEE 和JSE 的阴影中走出其不成熟期。


JME 在开发面向内存有限的移动终端(例如寻呼机、移动电话)的应用时,显得尤其实用。因为它是建立在操作系统之上的,使得应用的开发无须考虑太多特殊的硬件配置类型或操作系统。因此,开发商也无须为不同的终端建立特殊的应用,制造商也只需要简单地使它们的操作平台可以支持JME便可。

3:Java 企业版:JEE(Java Enterprise Edition)

JEE(Java Enterprise Edition) 是一种利用Java 平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。JEE 技术的基础就是核心Java 平台或Java 平台的标准版,JEE 不仅巩固了标准版中的许多优点,例如“编写一次、随处运行”的特性、方便存取数据库的JDBC API 、CORBA 技术以及能够在Internet 应用中保护数据的安全模式等等,同时还提供了对EJB(Enterprise JavaBeans) 、JavaServletsAPI 、JSP(JavaServer Pages) 以及XML 技术的全面支持。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构。


JEE 体系结构提供中间层集成框架来满足无需太多费用而又需要高可用性、高可靠性以及可扩展性的应用的需求。通过提供统一的开发平台,JEE 降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集成强有力支持,完全支持Enterprise Java Beans ,有良好的向导支持打包和部署应用,添加了目录支持,增强了安全机制,提高了性能。

JEE 是对标准版进行功能扩展,提供一系列功能,用来解决进行企业应用开发中所面临的复杂的问题。

4:三个版本之间的关系

JEE 几乎完全包含JSE 的功能,然后在JSE 的基础上添加了很多新的功能。JME 主要是JSE 的功能子集,然后再加上一部分额外添加的功能。

Java 的API 类库之中有一组所谓的核心类(CoreClass,即java.*) 在核心类之外还有所谓的扩充类(ExtendedClass,即javax.*) 。根据对这两种类的支持程度,进而区分出几种不同的Java 版本。

我们必须以Java Standard Edition(JSE) 作为基准,这个版本做了所有Java 标准规格之中所定义的核心类,也支持所有的Java 基本类。

JSE 定位在客户端程序的应用上。

从JSE 往外延伸,其外面为Java Enterprise Edition(JEE),此版本除了支持所有的标准核心类外,而且还增加了许多支持企业内部使用的扩充类,支持Servlet/JSP 的javax.servlet.* 类、支持Enterprise Java Bean 的javax.ejb.* 类。当然,JEE 必定支持所有的Java 基本类。

JEE 定位在服务器端(server-side) 程序的应用上。

从JSE 向内看,是JavaMicro Edition(JME),它所支持的只有核心类的子集合,在JME CLDC 的规格之中,只支持java.lang.* 、java.io.* 、以及java.util.* 这些类。此版本也增加了一些支持“微小装置”的扩充类,如javax.microedition.io.* 类。然而,此版本并不支持所有的Java 基本类,就标准的JMECLDC,也就是能在PalmOS 上执行的KVM(KVirtualMachine) 来说,它就不支持属于浮点数(float、double) 的Java 基本类。

JME 定位在嵌入式系统的应用上。

最里层,还有一个Java 的SmartCard 版本,原本在Java 的文件之中并没有这样定义,但是将它画在JME 内部是很合理的。因为SmartCard 版本只支持java.lang.* 这个核心类,比起JME 所支持的核心类更少,但它也有属于自己的扩充类,如javacard.* 、javacardx.* 这些类。SmartCard 版本只支持Boolean 与Byte这两种Java基本类,此版本定位在SmartCard 的应用上。

 

Java 技术三大特性

1:虚拟机

Java 虚拟机JVM(Java Virtual Machine)在Java 编程里面具有非常重要的地位,约相当于前面学到的Java 运行环境,虚拟机的基本功能如下:

  1. 寻找和装载class 文件
  2. class文件的运行环境
  3. 进行运行期间垃圾回收
  4. 提供与硬件交互的平台

虚拟机是Java 平台无关的保障,正是因为有虚拟机这个中间层,Java 才能够实现与平台无关。虚拟机就好比是一个Java 运行的基本平台,所有的Java 程序都运行在虚拟机上。

2:垃圾回收

在程序运行的过程中,存在被分配了的内存块不再被需要的情况,那么这些内存块对程序来讲就是垃圾。产生了垃圾,自然就需要清理这些垃圾,更为重要的是需要把这些垃圾所占用的内存资源,回收回来,加以再利用,从而节省资源,提高系统性能。

在C,C++ 或其它语言中,程序员负责释放内存。有时,这是一件很困难的事情。因为你并不总是事先知道内存应在何时被释放。当在系统中没有能够被分配的内存时,可导致程序瘫痪,这种程序被称作具有**内存漏洞。**

Java 编程语言解除了程序员释放内存的责任。它可提供一种系统级线程以跟踪每一次内存的分配情况。在Java 虚拟机的空闲周期,垃圾收集线程检查并释放那些可被释放的内存。垃圾收集在Java 技术程序的生命周期中自动进行,它解除了释放内存的要求,这样能够有效避免内存漏洞和内存泄露

3:代码安全

Java 如何保证编写的代码是安全可靠的呢?

(1):第一关:编写的代码首先要被编译成为class 文件,如果代码写得有问题,编译期间就会发现,然后提示有编译错误,无法编译通过。

(2):第二关:通过编译关后,在类装载的时候,还会进行类装载检查,把本机上的类和网络资源类相分离,在调入类的时候进行检查,因而可以限制任何“特洛伊木马”的应用。

(3):第三关:类装载后,在运行前,还会进行字节码校验,以判断你的程序是安全的。

(4):第四关:如果你的程序在网络上运行,还有沙箱(Sand Box)的保护,什么是沙箱呢?就是如果你的程序没有获得授权,只能在沙箱限定的范围内运行,是不能够访问本地资源的,从而保证安全性。

 

JAVA特点

简单地说,Java 具有如下特点:简单的、面向对象、平台无关、多线程、分布式、安全、高性能、可靠的、解释型、自动垃圾回收等特点。

解释一下平台无关和分布式

3.1:平台无关

所谓平台无关指的是:用Java 写的程序不用修改就可在不同的软硬件平台上运行。这样就能实现同样的程序既可以在Windows 下运行,到了Unix 或者Linux 环境不用修改就直接可以运行了。Java 主要靠Java 虚拟机(JVM)实现平台无关性。

平台无关性就是一次编写,到处运行:Write Once, Run Anywhere

3.2:分布式

分布式指的是:软件由很多个可以独立执行的模块组成,这些模块被分布在多台计算机上,可以同时运行,对外看起来还是一个整体。也就是说.

分布式能够把多台计算机集合起来就像一台计算机一样,从而提供更好的性能。


 

对Java总体上的认识