您的位置:首页 > 编程语言 > Java开发

Java概述与开发环境搭建

2014-05-06 14:57 441 查看
本章没有涉及Java语法知识,主要介绍Java语言的特点、版本、环境搭建等,并给出了第一个简单的Java程序——Hello World,让大家对Java有一个最基本的认识。

****************************************************************


Java语言概述

Java语言是SUN(Stanford University Network,斯坦福大学网络公司)公司1995年推出的一门高级编程语言,起初主要应用在小型消费电子产品上,后来随着互联网的兴起,Java语言迅速崛起,成为大型互联网项目的首选语言。2009年04月20日,美国甲骨文公司74亿美元收购Sun,取得java的版权。

更多关于Java的历史发展信息请参考:http://baike.baidu.com/view/29.htm#2

Java语言的崛起,与它的跨平台特性有着密切的关系。这里所说的”平台“主要是指不同的操作系统,所谓跨平台,是指通过Java语言编写的应用程序可以在不同的系统平台上平稳运行。

更多特性请参考:Java的特点

那么,跨平台是怎样实现的呢?这就要谈及Java虚拟机(Java Virtual Machine,简称 JVM)。

Java虚拟机可以理解为软件模拟的计算机,可以在任何处理器上(无论是在计算机中还是在其它电子设备中)安全并且兼容的执行程序。我们编写的Java源代码,编译以后会生成一种 .class 的文件,称为 字节码文件。java虚拟机就是负责将字节码文件翻译成特定的机器码然后运行,也就是说,只要在不同平台上安装相应的JVM,就可以运行字节码文件,运行我们编写的Java程序。

而这个过程中,我们编写的Java程序没有做任何改变,仅仅是通过JVM这一”中间层“,就能在不同平台上运行,真正实现了”一次编译,到处运行“的目的。

关于JVM的更多解释,请查看:http://baike.baidu.com/view/160708.htm

总结:JVM是一个”桥梁“,是一个”中间件“,是实现跨平台的关键,Java代码首先被编译成字节码文件,再由JVM将字节码文件翻译成机器语言,从而达到运行Java程序的目的。

如下图所示,正是因为有了JVM,同一个Java程序才可以在三个不同的操作系统中执行。这样就就实现了Java程序的跨平台性,也称Java具有良好的可移植性。



图解JVM实现跨平台的过程

********************************************************************


Java在哪些方面有应用

Java 的应用可以简单分为以下几个方面:

Java 的桌面应用

桌面应用一般仅仅需要 JRE 的支持就足够了。
Java Web 应用

Java 的 Web 应用至少需要安装 JDK 和一个 Web 容器(例如 Tomcat),以及一个多用户数据库,Web 应用至少分为 3 层:

Browser 层:浏览器显示用户页面。
Web 层:运行 Servlet/JSP。
DB 层:后端数据库,向 Java 程序提供数据访问服务。

Java 企业级应用

企业级应用比较复杂,可以扩展到 n 层,最简单情况会分为 4 层:

Browser 层:浏览器显示用户页面。
Client 层:Java 客户端图形程序(或者嵌入式设备的程序)直接和 Web 层或者 EJB层交互。
Web 层:运行 Servlet/JSP。
EJB 层:运行 EJB,完成业务逻辑运算。
DB 层:后端数据库,向 Java 程序提供数据访问服务。

Java 嵌入式应用

Java 嵌入式应用是一个方兴未艾的领域。嵌入式开发,需要从下载 J2ME 开发包。J2ME包含了嵌入式设备专用虚拟机 KVM,和普通的 JDK 中包含的 JVM 有所不同,另外还需要到特定的嵌入式厂商那里下载模拟器。

**********************************************************


Java的不同版本:J2EE、J2SE、J2ME的区别

Java 拥有3个版本,分别为:J2EE、J2SE和J2ME(也就是说,J2EE、J2SE和J2ME是Java的不同版本)。以下是详细介绍:

J2EE(Java 2 Platform Enterprise Edition)企业版

是为开发企业环境下的应用程序提供的一套解决方案。该技术体系中包含的技术如Servlet Jsp等,主要针对于Web应用程序开发。
J2SE(Java 2 Platform Standard Edition)标准版

是为开发普通桌面和商务应用程序提供的解决方案。该技术体系是其他两者的基础,可以完成一些桌面应用程序的开发。比如Java版的扫雷。

平时所说的JDK其实就是指J2SE,这也是本教程所要讲解的。
J2ME(Java 2 Platform Micro Edition)小型版

是为开发电子消费产品和嵌入式设备提供的解决方案。该技术体系主要应用于小型电子消费类产品,如手机中的应用程序等。

注意:这里的小型电子消费品不是指搭载了IOS或Android操作系统的手机,IOS和Android系统都有自己的开发组件。

两点注意:

Java5.0版本后,J2EE、J2SE、J2ME分别更名为JAVAEE JAVASE JAVAME。
每个版本名称中都带有一个数字“2”,这个“2”是指Java2:自从 Java1.2 发布后,Java 改名为 Java2(不过我们平时仍然称为 Java)。

********************************************************


Java与C、C++的区别

如果您对C语言和C++有所了解,我想下边的对比对你有很大帮助;如果不了解,请跳过,直接进入下一节。

首先应该清楚,Java 是由 C++发展而来的,保留了 C++的大部分内容,其编程方式类似于 C++。但 Java 的句法更清晰、规模更小、更易学。Sun 公司对多种程序设计语言进行了深入研究,并摒弃了其他语言的不足之处,最终退出了 Java。正是这样,Java 从根本上解决了 C++的固有缺陷,形成了一种新的完全面向对象的语言。

Java 和 C/C++的相似之处多于不同之处,有 C 基础的读者,学习 Java 会更容易。相比较而言,Java 的编程环境更为简单。因篇幅所限,这里不能完全列出不同之处,仅列出一些比较显著的区别。

指针

Java 没有指针的概念,从而有效地防止了在 C/C++语言中,容易出现的指针操作失误(如指针悬空所造成的系统崩溃)。在 C/C++中,指针操作内存时,经常会出现错误。在Java 中没有指针,更有利于 Java 程序的安全。

多重继承

C++支持多重继承,它允许多父类派生一个子类。也就是说,一个类允许继承多个父类。尽管多重继承功能很强,但使用复杂,而且会引起许多麻烦,编译程序实现它也很不容易。所以 Java 不支持多重继承,但允许一个类实现多个接口。可见,Java 既实现了 C++多重继承的功能,又避免了 C++的许多缺陷。

数据类型

Java 是完全面向对象的语言,所有方法和数据都必须是类的一部分。除了基本数据类型之外,其余类型的数据都作为对象型数据。例如对象型数据包括字符串和数组。类将数据和方法结合起来,把它们封装在其中,这样每个对象都可实现具有自己特点的行为。而 C++将函数和变量定义为全局的,然后再来调用这些函数和变量,从而增加了程序的负担。此外,Java 还取消了
C/C++中的结构和联合,使编译程序更简洁。

自动内存管理

Java 程序中所有的对象都是用 new 操作符建立在堆栈上的,这个操作符类似于 C++的“new”操作符。Java 自动进行无用内存回收操作,不需要程序员进行删除。当 Java 中一个对象不再被用到时,无须使用内存回收器,只需要给它加上标签以示删除。无用内存的回收器在后台运行,利用空闲时间工作。而 C++中必须由程序释放内存资源,增加了程序设计者的负担。

操作符重载

Java 不支持操作符重载,操作符重载被认为是 C++的突出特征。在 Java 中虽然类可以实现这样的功能,但不支持操作符重载,这样是为了保持 Java 语言尽可能简单。

预处理功能

C/C++在编译过程中都有一个预编译阶段,即预处理器。预处理器为开发人员提供了方便,但增加了编译的复杂性。Java 允许预处理,但不支持预处理器功能,因为 Java 没有预处理器,所以为了实现预处理,它提供了引入语句(import),它与 C++预处理器的功能类似。

Java 不支持缺省函数参数,而 C++支持。

在 C 中,代码组织在函数中,函数可以访问程序的全局变量。C++增加了类,提供了类算法,该算法是与类相连的函数,C++类方法与 Java 类方法十分相似。由于 C++仍然支持 C,所以 C++程序中仍然可以使用 C 的函数,结果导致函数和方法混合使用,使得 C++程序比较混乱。

Java 没有函数,作为一个比 C++更纯的面向对象的语言。Java 强迫开发人员把所有例行程序包括在类中。事实上,用方法实现例行程序可激励开发人员更好地组织编码。

字符串

C 和 C++不支持字符串变量,在 C 和 C++程序中使用“Null”终止符代表字符串的结束,在 Java 中字符串是用类对象(String 和 StringBuffer)来实现的,在整个系统中建立字符串和访问字符串元素的方法是一致的。Java 字符串类是作为 Java 语言的一部分定义的,而不是作为外加的延伸部分。此外,Java 还可以对字符串用“+”进行连接操作。

goto 语句

“可怕”的 goto 语句是 C 和 C++的“遗物”。它是该语言技术上的合法部分,引用 goto语句造成了程序结构的混乱,不易理解。goto 语句一般用于无条件转移子程序和多结构分支技术。Java 不提供 goto 语句,其虽然指定 goto 作为关键字,但不支持它的使用,这使程序更简洁易读。

类型转换

在 C 和 C++中,有时出现数据类型的隐含转换,这就涉及了自动强制类型转换问题。例如,在 C++中可将一个浮点值赋予整型变量,并去掉其尾数。Java 不支持 C++中的自动强制类型转换,如果需要,必须由程序显式进行强制类型转换。

*********************************************************************


Java编程环境的搭建

开发环境,就是一套能够让程序编译和执行的组件,可以包含运行环境、编译器和基础类库等。在Java中,安装了JDK就能够让Java程序顺利编译和执行。

JDK(Java Development Kit,简称Java开发工具箱)是整个 Java 的核心,包括了 Java 运行环境(Java Runtime Envirnment)、基础类库、编译器、打包工具等。不论是什么样的
Java 应用服务器,实质都是内置了某个版本的 JDK,因此掌握 JDK 是学好 Java 的第一步。

最主流的 JDK 是 Sun 公司发布的 JDK,除了 Sun 之外,还有很多公司和组织都开发了自己的 JDK,例如 IBM 公司开发的 JDK、BEA 公司的 Jrocket,还有 GNU 组织开发的 JDK等等。IBM 的 JDK 包含的 JVM(Java Virtual Machine)运行效率要比 Sun JDK 包含的 JVM高出许多,而专门运行在
x86 平台的 Jrocket,在服务端运行效率也要比 Sun JDK 好很多,但不管怎么说,还是需要先把 Sun JDK 掌握好。


JDK 的下载和安装

Java 1.2 以后,相应的JDK 又叫做 J2SE(Java2 SDK Standard Edition),可以从 Oracle 的 官方网站上下载到。最新下载地址和下载方法请参考:JDK最新下载地址【含下载方法】

下载好的 JDK 是一个可执行安装程序,默认安装完毕后会在 C:\Program Files\Java\目录下安装 JDK和JRE两个目录(当然是可以更改的)。详细安装方法请参考:JDK安装方法【最新】


环境变量的配置

配置好环境变量,我们可以不用进入JDK的安装目录,就可以执行javac.exe和java.exe,同时方便类库的加载。详细步骤请参考:Java/JDK环境变量的配置


JDK 的命令工具

JDK 的最重要命令行工具:

java:启动 JVM 执行 class。
javac:Java 编译器。
jar:Java 打包工具。
javadoc:Java 文档生成器。

这些命令行必须要非常熟悉,后续章节会结合Java程序向大家展示具体使用方法。

******************************************************************


第一个Java程序示例——Hello World!

这节我们来体验一下用java编写的程序。也让大家过把代码瘾。目前世界上大部分的软件教程有一个习惯,最开始时总要输出一个字符串“Hello World”。我们也是不能免俗啊,也要输出这么一段话。


一.Java编写代码

在E盘下新建一个文件夹,命名为javacode。在javacode文件夹下新建一个文件,命名为hello.java,内容如下。

public class hello{

public static void main(String[] args){

System.out.println("Hello World!");

}

}


二.对代码进行编译

保存代码后,进入DOS环境,再进入E:\javacode文件夹,输入javac hello.java对代码进行编译,如图所示:



再打开E盘下的javacode文件夹,发现多了一个hello.class文件,说明编译成功了。


三.运行程序

接下来,运行程序。在DOS下输入java hello,运行成功,输出“Hello World!”,如下图所示:




四.程序分析

分析上述的程序段,从结构开始介绍。

public class hello

定义了一个类,类是 “public” 公共类型的,类名为“hello”,另外,Java 中主类名应该和要保存的 Java 文件名相同,也就是说,这里定义的类名是“hello”,则文件应该保存为“hello.java”。

public static void main(String[] args)

Java 中的主运行方法(public static void main(String〔〕 args)),它和 C/C++中的main()作用是一样的,就是所有的程序都从“main()”中开始执行。要执行 Java 程序,必须有一个包括主运行方法的类。至于“public static void”的含义,读者可以尝试着去掉,看看编译器会提示什么错误。

System.out.println("Hello world");

“System.out.println()”是 Java.lang.*的一个方法,将字串“Hello world”送到命令行窗口。

************************************************************************


【附】Java基础知识总结

开发Java语言的公司?

美国Sun (Sun Microsystems)公司开发。

Java的3个版本?

J2SE(Java2 Standard Edition) 标准版

J2EE(Java 2 Platform,Enterprise Edition) 企业版

J2ME(Java 2 Micro Edition) 微小版

在5.0以后新版本中称作:JavaSE JavaEE JavaME

Java语言的几个主要特点?

平台无关性:能运行于不同的平台上

安全性:去掉了指针操作,内存由操作系统分配

面向对象:利用类使程序更加利于维护

分布式:可以使用网络文件和使用本机文件一样容易

健壮性:检查程序编译和运行的错误

Java的三大核心机制

虚拟机机制:利用虚拟机解释字节码执行java程序实现跨平台

垃圾收集机制:自动内存回收

代码安全性机制:加载代码后校验代码后再执行代码。

JDK是什么?

JDK(Java Development Kit)Java开发工具包。包括了JRE,是开发Java的人员必备的开发运行Java程序的工具。

JRE是什么?

JRE(Java Runtime Environment)Java运行环境,运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。

JVM是什么?

JVM (Java Virtual Machine) Java虚拟机,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

安装JDK的操作系统问题?

必须针对于不同的操作系统下载安装不同的JDK,例如windows下安装针对于windows的JDK,linux下安装针对于linux的JDK。

需要配置的相关环境变量?

path:用于搜索外部命令,例如编译程序的javac命令,执行程序的java命令

classpath:用于搜索类,即class文件,例如可以在不同的位置执行类文件

可以编写Java程序的常见开发工具?

记事本,Eclipse,MyEclipse,Jcreate

Java文件的类型?

有两种:

扩展名为java的文件:是Java源文件,属于编译之前的纯文本文件,存储java源代码。

扩展名为class的文件:是Java类文件,属于编译之后的二进制文件,存储字节码。

Java的编译运行原理?

首先编写java源文件,然后编译成class类文件,然后通过虚拟机解释成机器码到硬件执行。

Java是编译型语言还是解释型的语言?

既不是完全编译型,也不是完全解释型,是半编译半解释的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: