java的几大特性

小TOT 创建于 2017-02-07

简单性

简单性是相对而言的,在java诞生之前。主要使用c,c++进行编程。操作系统,电脑驱动这些底层软件都使用c语言编写。但是c,c++语言过于复制。虽然c++拥有了面向对象的特性,大大简化了编程工作。但是对于程序开发的普及,c++这样的语言难度,并不能很快让编程人员上手。人们希望,编程人员不需要进行深奥专业的训练就可以进行编程,c++不合适。java在开发的时候注意到了这一点,java语言汲取了c++的一些有点,并且摈弃了一些繁琐难懂的不常用的特性。随着编程语音的发展,后面涌现出了一大批面向对象的语言,他们甚至比java更简单,比如javascript,php,python等等。使用java可以快速的构建自己的程序,而不需要对计算机的内部结构等进行深入的了解。

面向对象

早期的计算机编程是基于面向过程的方法,例如实现算术运算1+1+2 = 4,通过设计一个算法就可以解决当时的问题。随着计算机技术的不断提高,计算机被用于解决越来越复杂的问题。一切事物皆对象,通过面向对象的方式,将现实世界的事物抽象成对象,现实世界中的关系抽象成类、继承,帮助人们实现对现实世界的抽象与数字建模。通过面向对象的方法,更利于用人理解的方式对复杂系统进行分析、设计与编程。同时,面向对象能有效提高编程的效率,通过封装技术,消息机制可以像搭积木的一样快速开发出一个全新的系统。面向对象是指一种程序设计范型,同时也是一种程序开发的方法。对象指的是类的集合。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。

拥有面向对象的思维,我们可以将一个庞大的系统分解成诸多的对象。将数据封装在对象中,将操作数据的行为方式封装在方法中。在通过抽象继承,多态的特性。完成系统构建。使用面向对象编程技术我们不必业务的执行步奏,和具体过程。我们只需要关注各个对象的职责以及他们之间的关系。

网络技能

java已经将常用的网络编程封装成库。有专门的类库实现了http,ftp之类的应用层协议,简化了socket编程。使得我们不必要去关注复杂的网络底层。不久如此,java还至此通过网络访问远程的java对象,就向访问本地对象一样。这使得java在分布式编程上变得更加简单。

健壮性

一个程序的健壮性标识了程序在复杂环境中良好运行的指标。一个健壮性强的程序比起一个弱健壮性的语言更能够应对负责的运行环境。考核一个语言的健壮性,主要从语言的运行机制来判断是否具备应对复杂运行环境的能力。java语言的健壮性主要从以下几个特性来体现。

  • 垃圾回收机制,比起c语言需要自己手动的去申请与清除内存的特性来讲,java的垃圾回收机制能够有效的避免程序未能够适当的收回不再使用的内存而照成内存泄漏的问题。

  • java在早期的问题检测所下的功夫也提高了java的健壮性。比如,编译器的问题检测,已经jvm在运行时期的检测。正是由于这些检测,大大减小了程序运行出错的几率。

  • java才用的指针模型可以消除重写内存和损坏数据的可能性。

以上这些特性是java语言本身就拥有的,不需要编程者自己去实现。当然想要提高程序的健壮性单凭语言的特性是不够的,我们应该在编写程序时养成良好的习惯。对参数进行合法性的校验,对异常进行有效的处理。

安全性

java适用于网络/分布式的环境,因此需要在安全性方面下很多功夫。java的设计者在设计了许多特性来防止已知的攻击手段。比如

  • 运行是堆栈溢出

  • 读写未授权的文件等。

体系结构中立

java是一个体系,而并不局限于java语言本身。java的设计则指定了诸多规范。如jvm规范,使得只要按照规范编写jvm程序都能够运行java程序。class文件规范,使得只要满足class文件规范的文件都能够被标准的jvm识别加载运行。随着java的发展jvm也在不断的颈部,jvm标准也在不停的完善。使得java程序变得越来越高效。先如今,不仅仅java语言能够运行在jvm上,Groovy,JRuby,Jytyon也是jvm语言家族的语言。能够运行在jvm中,同时也拥有一些有些的特性,易于理解和编写,并拥有动态语言的特性。

可移植性

即我们常说的跨平台,java是如何夸平台呢?跨平台的好处在于,我们不需要多次修改我们的代码而实现将我们的编写的程序在多个平台中运行。要实现夸平台只有从语言层面上来实现,必须将环境的复杂性进行封装,让我们的代码在一个标准的环境中运行。什么标准的环境中运行?比如我们编写的程序需要调用操作系统某个接口,那么标准的环境提供的接口是一致的。我们在来看编写java并运行的过程。java文件-->class文件-->加载到虚拟机-->调用系统资源。我们只需要完成java文件的编写,后续完全由语言本身提供的工具完成。这一套工具来运行java程序,这套工具我们称之为环境。那么试想一下不同平台都有这么一套环境,那么我们的程序就能夸平台了。java的夸平台依赖于虚拟机,而虚拟机并不是夸平台的。