热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

对Java总体上的认识

对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总体上的认识


推荐阅读
  • 浅解XXE与Portswigger Web Sec
    XXE与PortswiggerWebSec​相关链接:​博客园​安全脉搏​FreeBuf​XML的全称为XML外部实体注入,在学习的过程中发现有回显的XXE并不多,而 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 有没有一种方法可以在不继承UIAlertController的子类或不涉及UIAlertActions的情况下 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 本文介绍了Windows Vista操作系统中的用户账户保护功能,该功能是为了增强系统的安全性而设计的。通过对Vista测试版的体验,可以看到系统在安全性方面的进步。该功能的引入,为用户的账户安全提供了更好的保障。 ... [详细]
  • ShiftLeft:将静态防护与运行时防护结合的持续性安全防护解决方案
    ShiftLeft公司是一家致力于将应用的静态防护和运行时防护与应用开发自动化工作流相结合以提升软件开发生命周期中的安全性的公司。传统的安全防护方式存在误报率高、人工成本高、耗时长等问题,而ShiftLeft提供的持续性安全防护解决方案能够解决这些问题。通过将下一代静态代码分析与应用开发自动化工作流中涉及的安全工具相结合,ShiftLeft帮助企业实现DevSecOps的安全部分,提供高效、准确的安全能力。 ... [详细]
  • Apache Shiro 身份验证绕过漏洞 (CVE202011989) 详细解析及防范措施
    本文详细解析了Apache Shiro 身份验证绕过漏洞 (CVE202011989) 的原理和影响,并提供了相应的防范措施。Apache Shiro 是一个强大且易用的Java安全框架,常用于执行身份验证、授权、密码和会话管理。在Apache Shiro 1.5.3之前的版本中,与Spring控制器一起使用时,存在特制请求可能导致身份验证绕过的漏洞。本文还介绍了该漏洞的具体细节,并给出了防范该漏洞的建议措施。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
author-avatar
苏木影子Hc_657
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有