JAVA环境搭建(一)

 


 Java是什么

通常我们认为,Java 是:一种计算机编程语言一种软件开发平台一种软件运行平台一种软件部署环境什么意思呢,分别解释一下。

Java是一种计算机编程语言

1.1.1 语言  

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

1.1.2 计算机编程

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

1.1.3  Java是一种计算机编程语言 

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

扫描二维码关注公众号,回复: 188198 查看本文章

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

Java是一种软件开发平台

1.2.1  什么是软件开发

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

 1.2.2  什么是开发平台

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

  1.2.3  Java是一种开发平台

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

Java是一种软件运行平台

1. 3.1  什么是软件的运行平台

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

 1.3.2  Java是一种运行平台

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

JRE:Java RuntimeEnvironment,Java运行环境。

 Java是一种软件部署环境

    1.4.1  什么是软件的部署

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

1.4.2  Java是一种软件部署环境    

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

                                            

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

Java分成三种版本,分别是 Java 标准版(JSE)、Java微缩版(JME)和 Java企业版(JEE),每一种版本都有自己的功能和应用方向。

 Java标准版:JSE(Java Standard Edition)                                                    

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

Java微缩版:JME(Java Micro Edition)                                    

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

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

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

 Java企业版:JEE(Java Enterprise Edition)

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

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

JEE是对标准版进行功能扩展,提供一系列功能,用来解决进行企业应用开发中所面临的复杂的问题。具体的我们会放到后面 JEE的课程去讲。

三个版本之间关系

JEE几乎完全包含 JSE 的功能,然后在 JSE的基础上添加了很多新的功能。

JME主要是 JSE 的功能子集,然后再加上一部分额外添加的功能。

如下图所示:

 

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

我们必须以Java Standard Edition(JSE)作为基准,这个版本做了所有Java标准规格之中所定义的核心类,也支持所有的Java基本类。JSE定位在客户端程序的应用上。


   历史

   在上世纪90年代初,sun公司有一个叫做Green的项目,目的是为家用消费电子产品开发一个分布式代码系统,这样就可以对家用电器进行控制,和它们进行信息交流。詹姆斯·高斯林(James Gosling)等人基于C++开发一种新的语言Oak(Java的前身)。Oak是一种用于网络的精巧而安全的语言。Sun公司曾依此投标一个交互式电视项目,但结果是被SGI 打败,Sun打算抛弃Oak。随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造Oak,在1995年5月以“Java”的名称正式发布,从此Java走上繁荣之路。 当然提到 Java 历史,不得不提的一个故事就是 Java的命名。开始“Oak”的命名是以项目小组办公室外的树而得名,但是Oak 商标被其他公司注册了,必须另外取一个名字,传说有一天,几位Java成员组的会员正在讨论给这个新的语言取什么名字,当时他们正在咖啡馆喝着Java(爪哇)咖啡,有一个人灵机一动说就叫Java怎样,得到了其他人的赞同,于是,Java这个名字就这样传开了。当然对于传说,了解一下就好了,不必过于认真。

    Java大事件

作为学习Java的人士,对Java历史上发生的大事件有一个了解是应该的。

JDK(JavaSoftware Develop Kit):Java 软件开发工具包。JDK 是Java的核心,包括了Java运行环境,一系列Java开发工具和Java基础的类库。目前主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。

时间 

事件 

1995 年 5 月 23 日 

Java 语言诞生 

1996 年 1 月 

第一个 JDK—JDK1.0 诞生 

1997 年 2 月 18 日 

JDK1.1 发布 

1998 年 12 月 8 日 

Java2 企业平台 J2EE 发布 

1999 年 6 月 

Sun 发布 Java 三个版本:标准版 J2SE,企业版 J2EE,微型版 J2ME

2004 年 9 月 30 日 

JavaSE5.0 发布 

2006 年 12 月 

JavaSE6.0 发布 

2011728

Java SE 7

20140318

Java SE 8初始版本

 

Java特点

3.3.1  Java语言是简单的

Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用。另一方面,Java丢弃了C++中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,而是引用。并提供了自动的废料收集,使得程序员不必为内存管理而担忧。

3.3.2  Java语言是面向对象的

Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C++语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。

3.3.3  Java语言是分布式的

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

3.3.4  Java语言是健壮的

Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。

3.3.5  Java语言是安全的

Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。

3.3.6  Java语言是体系结构中立的

Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。

 3.3.7  Java语言是可移植的

这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。

3.3.8  Java语言是解释型的

如前所述,Java程序在Java平台上被编译为字节码格式,然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。

3.3.9  Java是高性能的

与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C++。

 3.3.10  Java语言是多线程的

在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable)的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。

3.3.11  Java语言是动态的

Java语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。


虚拟机简介                        

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

(1)    :通过ClassLoader寻找和装载class文件

(2)    :解释字节码成为指令并执行,提供class文件的运行环境

(3)    :进行运行期间垃圾回收

(4)    :提供与硬件交互的平台

Java虚拟机是在真实机器中用软件模拟实现的一种想象机器。Java虚拟机代码被存储在 .class文件中;每个文件都包含最多一个public类。Java 虚拟机规范为不同的硬件平台提供了一种编译Java技术代码的规范,该规范使Java 软件独立于平台,因为编译是针对作为虚拟机的“一般机器”而做。这个“一般机器”可用软件模拟并运行于各种现存的计算机系统,也可用硬件来实现。编译器在获取Java应用程序的源代码后,将其生成字节码,它是为JVM生成的一种机器码指令。每个Java解释器,不管它是Java技术开发工具,还是可运行 applets 的Web浏览器,都可执行JVM。

JVM为下列各项做出了定义

-    指令集(相当于中央处理器[CPU] )

-    寄存器

-    类文件格式

-    

-    垃圾收集堆

-    存储区

JVM的代码格式由紧缩有效的字节码构成。由JVM字节码编写的程序必须保持适当的类型约束。大部分类型检查是在编译时完成。任何从属的Java技术解释器必须能够运行任何含有类文件的程序,这些类文件应符合Java虚拟机规范中所指定的类文件格式。

虚拟机是Java平台无关的保障

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

JDK简介

JDK : Java Development ToolKit(Java开发工具包)。JDK是整个JAVA的核心,包括了Java运行环境(JavaRuntime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。

JDK是java开发工具包,在其安装目录下面有六个文件夹、一些描述文件、一个src压缩文件。bin、include、lib、jre这四个文件夹起作用,demo、sample是一些例子。可以看出来JDK包含JRE,而JRE包含JVM。
bin:最主要的是编译器(javac.exe)
include:java和JVM交互用的头文件
lib:类库
jre:java运行环境(注意:这里的bin、lib文件夹和jre里的bin、lib是不同的)
总的来说JDK是用于java程序的开发,而jre则是只能运行class而没有编译的功能。 
JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。其中的开发工具包括编译工具(javac.exe)打包工具(jar.exe)等

在JDK的安装目录下有一个jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和lib合起来就称为jre。

 下载安装

5.2.1.首先在官网下载JDK,我们以jdk1.8版本为例:

下载网站:http://www.oracle.com/

 

5.2.2. 开始安装JDK:

修改安装目录如下:

确定之后,单击“下一步”。

:当提示安装JRE时,可以选择不要安装。

JDK环境配置

5.3.1. window中jdk环境配置步骤

对于Java程序开发而言,主要会使用JDK的两个命令:javac.exe、java.exe。路径:C:\Java\jdk1.8.0_05\bin。但是这些命令由于不属于windows自己的命令,所以要想使用,就需要进行路径配置。 

单击“计算机-属性-高级系统设置”,单击“环境变量”。在“系统变量”栏下单击“新建”,创建新的系统环境变量。

(1)新建->变量名"JAVA_HOME",变量值"C:\Java\jdk1.8.0_05"(即JDK的安装路径) 
(2)编辑->变量名"Path",在原变量值的最后面加上“;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin” 
(3)新建->变量名“CLASSPATH”,变量值“.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar”

注:那么为何要设置这些环境变量呢?

PATH:

提供给操作系统寻找到Java 命令工具的路径。通常是配置到JDK 安装路径\bin

JAVA_HOME:

提供给其它基于 Java 的程序使用,让它们能够找到 JDK 的位置。通常配置到 JDK 安装路径。注意:这个必须书写正确,全部大写,中间用下划线。

CLASSPATH:

提供程序在运行期寻找所需资源的路径,比如:类、文件、图片等等。

注意:在 windows 操作系统上,最好在 classpath 的配置里面,始终在前面保持“.;”的配置,在 windows里面“.”表示当前路径。

 

如:JAVA_HOME环境变量的操作如下:

 

5.3.2. 确认jdk环境是否安装正确

在控制台分别输入java,javac,java -version 命令,出现如下所示的JDK的编译器信息,包括修改命令的语法和参数选项等信息。

java命令:

javac命令:

java-version命令:

 

至此java jdk环境安装配置完毕,下面先来体会第一个Java 程序。

编写简单的程序

像其它编程语言一样,Java 编程语言也被用来创建应用程序。一个共同的应用程序范

例是在屏幕上显示字串“Hello World!”。下列代码给出了这个Java应用程序。

虽然很多你可能都不明白,没有关系,主要是来体会一下Java程序是什么样子,首先创建一个新的 .txt文件,重命名为HelloWorldApp.java(注:修改.txt为.java,这就形成一个java文件),如果电脑不可以直接修改文件类型,请根据下面说明进行配置的更改。

 修改配置操作方法

6.1.1   在桌面上双击【我的电脑】,在菜单栏点击工具,在它的下拉菜单中选择【文件夹选项】

 

6.1.2.  打开文件夹设置页

6.1.3  .跳转到【查看】,将右侧滑条向下拉,出现【隐藏已知文件类型的扩展名】,不要打钩

6.1.4. 设置完成后,点击下方的【确定】。我们可以看到所有文件的后缀名,此时找到你想要更改的文件,直接更改后缀名就可以了

04

 案例

6.2.1  代码

 1:HelloWorldApp// 

   2.// HelloWorld应用示例

   3.// 

   4.public class HelloWorldApp{

   5 public static void main (String args[]) { 

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

   7     } 

   8.}

以上程序行是在你的屏幕上打印“Hello World!”所需的最少代码。

6.2.2、 描述HelloWorldApp第1-3行程序中的1-3行是注释行

//

// HelloWorld应用示例

//

第4行声明类名为HelloWorldApp。类名(Classname)是在源文件中指明的,它可在与源代码相同的目录上创建一个classname·class文件。在本例题中,编译器创建了一个称为HelloWorldApp.class的文件, 它包含了公共类HelloWorldApp的编译代码。

public class HelloWorldApp{第5行是程序执行的起始点。Java解释器必须发现这一严格定义的点,否则将拒绝运行程序。

其它程序语言(特别是C和C++)也采用main ()声明作为程序执行的起始点。此声明的不同部分将在本课程的后几部分介绍。

如果在程序的命令行中给出了任何自变量(命令行参数),它们将被传递给main()

方法中被称作args的String数组。在本例题中,未使用自变量。   public static void main(String args[]) { public-方法main()可被任何程序访问,包括Java解释器。

static- 是一个告知编译器main()是用于类HelloWorldApp中的方法的关键字。为使main()在程序做其它事之前就开始运行,这一关键字是必要的。

void- 表明main()不返回任何信息。这一点是重要的,因为Java编程语言要进

行谨慎的类型检查,包括检查调用的方法确实返回了这些方法所声明的类型。

String args[]- 是一个String数组的声明,它将包含位于类名之后的命令行中的自变量。

    java HelloWorldAppargs[0] args[1]····第6行声明如何使用类名、对象名和方法调用。它使用由System类的out成员引用的PrintStream对象的println()方法,将字串“Hello World!”打印到标准输出上。 System.out.println(“Hello World!”);

在这个例子中,println()方法被输入了一个字串自变量并将其写在了标准输出流上。

本程序的7-8行分别是方法main()和类HelloWorldApp的下括号。

6             

7             

6.2.3、编译并运行HelloWorldApp编译

当你创建了HelloWorldApp.java源文件后,用下列程序行进行编译:     javac HelloWorldApp.java

如果编译器未返回任何提示信息,新文件HelloWorldApp.class则被存储在与源文件相同的目录中,除非另有指定。如果在编译中遇到问题,请参阅本模块的查错提示信息部分。

为运行你的 HelloWorldApp 应用程序,需使用 Java解释器和位于 bin 目录下的 java程序:

    java  HelloWorldApp            Hello World!

6.2.4、编译差错                                                          编译时的错误,以下是编译时的常见错误:

javac:Commandnot found

PATH变量未正确设置以包括javac编译器。javac编译器位于JDK目录下的bin目录。

HelloWorldApp.java:6:Method printl(java.lang.String) not found in class java.io.PrintStream.System.out.printl("Hello World!");   方法名println 出现打印错误。

In classHelloWorldApp:main must be public or static

该错误的出现是因为词static 或public被放在了包含main方法的行之外。

运行时的错误can’t find class HelloWorldApp(这个错误是在打印javaHelloWorldApp 时产生的),通常, 它表示在命令行中所指定的类名的拼写与filename.class文件的拼写不同。Java编程语言是一种大小写区别对待的语言。

    例如:     public class HelloWorldapp{

    创建了一个HellloWorldapp.class ,它不是编译器所预期的类名

(HelloWorldApp.class)。

6.2.5、命名

    如果java文件包括一个公共类,那么它必须使用与那个公共类相同的文件名。例如在前例中的类的定义是

    public class HelloWorldapp

    源文件名则必须是HelloWorldapp.java

6.2.6、类计数

在源文件中每次只能定义一个公共类。

6.2.7、源文件布局

一个Java源文件可包含三个“顶级”要素:

(1)      一个包(package)声明(可选)

(2)     任意数量的导入(import)语句

(3)      类(class)声明

该三要素必须以上述顺序出现。即,任何导入语句出现在所有类定义之前;如果使用包声明,则包声明必须出现在类和导入语句之前。

简单了解上面所有的代码以后,我们就开始实际动手操作一下吧。

 

1.首先创建.java文件,编写例题代码

2.打开命令窗口,进入文件所在目录

输入命令javac文件名.java拟机进行编译

输入java 文件名,面板显示文件输出内容

这样一个简单的输出程序就完成了。

 

 

 


猜你喜欢

转载自blog.csdn.net/weixin_39236183/article/details/79149970