许多刚接触java的人会问——什么是Java?java语言的优势是什么?其实Java是一种面向对象的编程语言,它既吸收了C++语言的各种优点,又摒弃了C++中难以理解的多重继承、指针等概念,所以Java语言具有很强的功能[...]
很多刚接触java的人会问-什么是Java ?Java语言有什么优势?其实Java是一种面向对象的编程语言,它既吸收了C++语言的各种优点,又摒弃了C++中难以理解的多重继承、指针等概念。所以Java语言有两个特点:功能强大,易于使用。
Java语言作为静态面向对象编程语言的代表,很好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
Java具有简单、面向对象、分布式、健壮、安全、平台无关和可移植、多线程、动态等特点。Java可以写桌面应用,Web应用,分布式系统,嵌入式系统应用。
工作原理由四个方面组成:
(1)Java编程语言
(2)Java类文件格式
(3)Java虚拟机
(4)Java应用程序接口
在编辑和运行一个Java程序时,需要同时涉及这四个方面。使用文字编辑软件(如记事本、写字板、UltraEdit等。)或者集成开发环境(Eclipse、MyEclipse se等。)在Java源文件中定义不同的类,通过调用类中的方法访问资源系统(这些类实现Java API),将源文件编译成二进制中间代码,存储在类文件中。然后通过运行操作系统平台环境对应的Java虚拟机运行类文件,执行编译生成的字节码,调用类文件中实现的方法,满足程序的Java API调用。
Java语言有点
1.简单性:Java看起来像C++,但是为了让语言小巧熟悉,设计人员去掉了C++中很多可用的特性,普通程序员很少用到。例如,Java不支持go to语句,而是提供break和continue语句以及异常处理。Java还消除了C++的运算符重载和多继承特性,不使用主文件,从而省略了预处理器。因为Java没有结构,数组和字符串都是对象,所以不需要指针。Java可以自动处理对象引用和间接引用,实现自动垃圾回收,让用户不用担心存储管理问题,可以在研发上投入更多的时间和精力。
2.面向对象:Java是一种面向对象的语言。对于程序员来说,这意味着关注有问题的数据和操作数据的方法,而不是严格按照过程来思考。在面向对象的系统中,类是数据和操作数据的方法的集合。数据和方法一起描述对象的状态和行为。每个对象都是其状态和行为的封装。类是按照一定的体系和层次来排列的,这样子类就可以继承超类的行为。这个类层次结构中有一个根类,是一个具有一般行为的类。Java程序是按类组织的。
Java还包括一个扩展的类集合,由各种Package组成,用户可以在自己的程序中使用。例如,Java提供了用于生成图形用户界面组件的类(java.awt包),其中awt是抽象窗口工具包的缩写,提供了用于处理输入和输出的类(java.io包)和用于支持网络功能的类(java.awt包)。
3.分布式:Java是为了支持网络上的应用而设计的,是一种分布式语言。Java不仅支持各种级别的网络连接,还支持Socket类的可靠流网络连接,用户可以生成分布式客户端和服务器。
网络成为软件应用的分布式载体。Java程序写一次就可以到处运行。
4.编译和解释:Java编译器生成字节码,而不是普通的机器码。Java字节码提供了一种体系结构中立的目标文件格式,代码的设计是为了有效地将程序转移到多个平台。Java程序可以在任何实现Java解释器的系统和运行时系统上运行。
在一个解释性的环境中,程序开发的标准“链接”阶段已经大大消失了。如果Java还有链接阶段,那只是一个将新类加载到环境中的过程,是一个增量式的轻量级过程。所以Java支持快速原型化和容易测试,会导致程序开发的快速。这是一个微妙的开发过程,与传统耗时的“编译、链接和测试”形成鲜明对比。
5.健壮性:Java最初是作为一种为消费类电子产品编写软件的语言,所以设计用来编写高度可靠、健壮的软件。Java消除了一些编程错误,使得用它编写可靠的软件变得非常容易。
Java是一种强类型语言,允许在编译时扩展检查潜在类型不匹配的功能。Java需要显式的方法声明,但不支持C风格的隐式声明。这些严格的要求保证了编译器能够捕捉到调用错误,从而产生更可靠的程序。
可靠性最重要的增强之一是Java的存储模型。Java不支持指针,这就消除了覆盖存储和损坏数据的可能性。同样,Java的自动“垃圾收集”可以防止内存泄漏和其他与动态内存分配和释放相关的有害错误。Java解释器还执行许多运行时检查,例如验证是否所有数组和字符串访问都在界限内。
异常处理是Java中使程序更加健壮的另一个特性。异常是发生类似错误的异常情况的信号。使用try/catch/finally语句,程序员可以找到错误处理代码,这简化了错误处理和恢复的任务。
6.安全性:Java的存储分配模型是其防御恶意代码的主要方法之一。Java没有指针,程序员无法得到隐藏在里面的信息,伪造指针指向内存。更重要的是,Java编译器不处理存储安排决策,所以程序员不能通过查看声明来猜测类的实际存储安排。编译后的Java代码中存储引用的实际存储地址由Java解释器在运行时确定。
Java运行系统使用字节码验证过程,确保网络上加载的代码不违反任何Java语言限制。这种安全机制的一部分包括如何从互联网加载类。例如,加载的类放在单独的名称空之间,而不是本地类,恶意小程序用自己的版本替换标准Java类。
7.可移植性:Java使语言声明独立于实现方面。比如Java明确描述了每个基本数据类型的大小及其操作行为(这些数据类型用Java语法描述)。
Java环境本身是可移植到新的硬件平台和操作系统的。Java编译器也是用Java写的,而Java运行系统是用ANSIC语言写的。
8.高性能:Java是先编译再解释的语言,所以没有完全编译的语言快。然而,在某些情况下,性能非常重要。为了支持这些情况,Java设计人员做了一个“准时制”编译器,可以在运行时将Java字节码翻译成特定CPU(中央处理器)的机器码,即完全编译。
Java字节码格式设计考虑了及时编译程序的需要,所以生成机器码的过程相当简单,可以产生相当不错的代码。
9.多线程:Java是一种多线程语言,提供多线程执行(也叫可移植进程),可以处理不同的任务,让设计有线索的程序变得容易。Java的lang包提供了Thread类,支持启动线程、运行线程、停止线程、检查线程状态的方法。
Java中的线程支持还包括一组同步原语。这些原语是C.A.R.Haore基于监督程序和条件变量的风格开发的广泛使用的同步方案。通过关键字synchronized,程序员可以解释一些方法不能在一个类中并发运行。这些方法受监督程序的控制,并确保变量保持一致的状态。
10.动态:Java语言是为了适应不断变化的环境而设计的。它是一种动态语言。比如Java中的类是按需加载的,甚至有些是通过网络获取的。