Java开发和运行环境的搭建

Java开发须要准备的东西?

JDK+Eclipse 其中JDK的意思是Java开发工具包,Eclipse是进行用于作Java程序开发的工具(固然你也能够用记事本什么的去作)。

其余开发工具:JCreator,JBuilder,...html

jdk的介绍和安装教程度娘里面处处都是,这里本身也在啰嗦一下吧。java


关于jdk的详细介绍:linux

JDK是Java Development Kit的缩写,即Java开发工具集。JDK是整个Java的核心,包括了Java运行环境(JRE)、Java开发工具和Java基础类库。数据库

JRE是Java Runtime Environment的缩写,即Java运行时环境。Java程序运行时必须要JRE的支持。

Java的平台版本:
Java分为J2SE、J2EE和J2ME三个不一样的平台版本,即标准版(Java 2 Platform, Standard Edition)、企业版(Java 2 Platform, Enterprise Edition)和微型版(Java 2 Platform, Micro Edition)。从Java 1.5(或者Java 5.0)开始,它们被改称为Java SE、Java EE和Java ME。

各平台版本之间的差异在于适用范围不一样:
安全

  • 标准版平台(Java SE)容许开发和部署在桌面、服务器、嵌入式和实时环境中使用的Java应用程序。另外,Java SE包含了支持实现Java Web服务的类库,所以标准版是企业版的基础。

  • 企业版平台(Java EE)帮助开发者开发和部署Java Web应用。企业版提供Web服务、组件模型、管理和通讯API,能够用来实现企业级的面向服务的体系结构(Service-Oriented Architecture, SOA)和Web 2.0 应用程序。

  • 而微型版平台(Java ME)主要用于移动设备和嵌入式设备,如手机、PDA、电视机顶盒等等。微型版包括灵活的用户界面、健壮的安全模型、许多内置的网络协议、以及对可动态下 载的在线和离线应用的支持。基于Java ME规范的应用程序与普通Java程序同样,只需编译一次,便可在许多设备上运行。


Java的版本:
bash

  • 1995年5月23日,Java语言诞生
  • 1996年1月,JDK 1.0发布
  • 1997年2月18日,JDK 1.1发布
  • 1998年12月4日,J2SE 1.2发布,1.2版及其以后的版本也被称为Java 2
  • 1998年12月8日,Java 2企业版发布
  • 2000年5月8日,J2SE 1.3发布
  • 2002年2月13日,J2SE 1.4发布
  • 2004年9月30日,J2SE 1.5发布,J2SE 1.5版也被称为Java 5.0
  • 2006年12月,Java 6.0发布
  • 2010年9月,Java 7.0发布
  • 2014年3月,Java8.0发布

Java开发与运行环境的搭建(Java SE):服务器

1. 下载JDK/JRE:


首先,访问Oracle公司的Java SE的下载主页 (http://www.oracle.com/technetwork/java/javase/downloads/index.html),选择一个版本(目前最新版为Java SE 8),以下图:

,选择一个版本(目前最新版为Java SE 8),以下图:
网络

 

此页面包含多个版本的JDK、JRE、帮助文档、源代码等下载内容的连接。若是不是Java 程序的开发者,仅仅想在本身的系统中运行Java程序,那么只须要一个JRE就能够了;若是想使用Java开发本身的应用程序,则须要下载JDK,其中已 包含JRE,所以下载了JDK后无需再单独下载JRE。

这里如下载Java SE 8最新版本的JDK为例,点击相应的Download按钮,转到下载页面,以下图:
oracle

在此页面中,包含了对应各类操做系统的JDK下载连接,选择本身系统对应的JDK,将其下载 到本地硬盘上。注意,在下载以前须要先阅读“Oracle Binary Code License Agreement for Java SE”,必须接受其中的条款才能下载JDK(选中“Accept License Agreement”(注意上图中红线的标注))。工具

2. 安装JDK/JRE:

不管是在Windows仍是在Linux下安装JDK都很简单,与安装其余程序没什么不一样。

在Windows中,双击刚才下载的“*****.exe”文件,就会打开安装界面。点击“下一步”按钮,能够在此选择须要安 装的组件和安装目录,窗口右侧是对所选组件的说明,包括组件功能和所需的磁盘空间;能够点击“更改”按钮来改变安装目录。点击“下一步”即开始正式安装。 安装完毕后,将会显示安装已完成的信息,点击“完成”按钮便可完成安装。

来到安装文件夹下,便可以看到已安装的JDK的目录结构。(注意其中包含名为“jre”的文件夹,这就是前面说的JDK包含JRE的缘由所在)(记住你jdk安装的路径配置的时候有用

整个安装过程以下面几幅图所示:

  

 


 

  



注意:操做系统分为32位操做系统和64位操做系统,对应 地,JDK也分为32位版和64位版(名称中带有“i586”或“x86”的为32位版,带有“x64”则表示该JDK为64位版)。64位版JDK只能 安装在64位操做系统上,32位版JDK则既能够安装在32位操做系统上,也能够安装在64位操做系统上。缘由是64位的操做系统可以兼容32位的应用程 序。
换句话说,即便CPU是64位的,但若是安装的操做系统是32位的,那么也没法安装64位版的JDK。

在Linux中安装JDK与安装其余程序相同。下载时能够选择.rpm或.tar.gz格式的安装文件,这里之后者为例进行说明。

首先解压缩下载的文件,输入命令“tar -xf jdk-7-linux-i586.tar.gz -C /usr”,将文件解压到/usr目录下,这样就完成了安装(如图):

Linux安装JDK



3. 设置环境变量:

环境变量是指在操做系统中用来指定操做系统运行环境的一些参数,好比临时文件夹位置和系统文件夹位置等。环境变量至关于给系统或应用程序设置的一些参数。

编译或运行Java程序时,都是基于命令行的,所以在此以前必须设置一些环境变量的值。有些Java IDE(集成开发环境)内置了JDK,所以使用这些IDE时能够不指定环境变量。还有些程序须要个性化的环境变量(如Apache Tomcat须要JAVA_HOME环境变量)。

与JDK或JRE的使用有关的是PATH、CLASSPATH等几个环境变量。这里先解释一下这些变量的含义:

PATH变量用来告诉操做系统到哪里去查找一个命令。若是清空PATH变量的值,在Windows中运行一个外部命令时,将提示未知命令错误(固然,在Linux中也是同样):

环境变量是指在操做系统中用来指定操做系统运行环境的一些参数,好比临时文件夹位置和系统文件夹位置等。环境变量至关于给系统或应用程序设置的一些参数。

编译或运行Java程序时,都是基于命令行的,所以在此以前必须设置一些环境变量的值。有些Java IDE(集成开发环境)内置了JDK,所以使用这些IDE时能够不指定环境变量。还有些程序须要个性化的环境变量(如Apache Tomcat须要JAVA_HOME环境变量)。

与JDK或JRE的使用有关的是PATH、CLASSPATH等几个环境变量。这里先解释一下这些变量的含义:

PATH变量用来告诉操做系统到哪里去查找一个命令。若是清空PATH变量的值,在Windows中运行一个外部命令时,将提示未知命令错误(固然,在Linux中也是同样):



注意:在Windows中,如“dir”、“cd”等命令是内部命令,相似于DOS中的常驻命 令。这些命令在命令行窗口启动时会自动加载到内存中,不须要到磁盘上去寻找对应的可执行文件,所以即便清空了PATH变量的值也不会影响这些命令的使用。 然而,像“java”这样的外部命令,在执行时必须先由操做系统到指定的目录找到对应的可执行程序,而后才能加载并运行。到哪里去寻找这些程序就是依靠 PATH变量来指定的。
Linux也是相似,甚至能够说在Linux中,PATH环境变量更为重要,由于Linux的不少基本命令都属于外部命令,如“ls”、“mkdir”等。当将PATH变量清空后,这些命令都将没法使用(固然,仍是有一些内部命令咱们仍然可使用)。

CLASSPATH是编译或运行Java程序时用来告诉Java编译器或虚拟机到哪里查找Java类文件的,后面会对其作详细介绍。

在Windows XP或以前的版本中,依次点击“右键个人电脑” -> “属性” -> “高级” -> “环境变量”;在Windows Vista和Windows 7中则依次点击“右键个人电脑” -> “属性” -> “高级系统设置” -> “高级” -> “环境变量”,打开环境变量设置窗口:

 



选择【新建系统变量】--弹出“新建系统变量”对话框,在“变量名”文本框输入“JAVA_HOME”,在“变量值”文本框输入JDK的安装路径(也就是jdk安装的文件夹路径),单击“肯定”按钮。如图:

而后:

在“系统变量”选项区域中查看PATH变量,若是不存在,则新建变量 PATH,不然选中该变量,单击“编辑”按钮,在“变量值”文本框的起始位置添加“%JAVA_HOME%\bin;%JAVA_HOME%\jre \bin;”或者是直接“%JAVA_HOME%\bin;”,单击肯定按钮。

在“系统变量”选项区域中查看CLASSPATH 变量,若是不存在,则新建变量CLASSPATH,不然选中该变量,单击“编辑”按钮,在“变量值”文本框的起始位置添加 “.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;”。

 

 

  

 


设置完成后,环境变量设置窗口以下图所示。点击肯定按钮,环境变量设置完成。

 



注意:在Windows中,环境变量分为“用户变量”和“系统变量”,它们的区别是,“用户变 量”只对当前的用户起做用,而“系统变量”则对系统中的全部用户起做用。若是但愿在多个用户之间共享环境变量的设置,能够将这些环境变量设置为系统变量, 不然,应该使用用户变量,避免影响其余用户。在Linux中也有相似的概念,接下来会讲到。

在Linux中,能够经过编辑“~/.bashrc”文件来修改环境变量。在最后添加下面几行脚本,而后保存并退出:
JAVA_HOME=/usr/jdk1.7.0
JAVA_BIN=/usr/jdk1.7.0/bin
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.
export JAVA_HOME JAVA_BIN PATH CLASSPATH



注意:Linux中,每一个用户的home目录下都有.bashrc文件,这个文件用来保存用户 的个性化设置,如命令别名、路径等,固然也能够用来定义环境变量。此文件是与每一个用户相关的,一个用户的设置不会影响到其余用户,在这里设置环境变量至关 于前面讲的Windows的用户环境变量。Linux中全局设置一般保存在“/etc/profile”文件中。
另外,Linux中PATH和CLASSPATH的分割符都是“:”(冒号),而Windows中是“;”(分号)。

当环境变量设置完成后,在Windows中打开新的命令行窗口,在Linux中使用“source ~/.bashrc”命令从新加载.bashrc文件,便可使新的环境变量生效。输入“java -version”命令,应该会打印出相似下面两幅图所示的内容:

Windows命令行的输出:


 


 

Linux的输出:

 




对以上步骤补充说明几点:

  1. 能够在Windows命令行或Linux Shell中使用命令设置环境变量。例如,在Windows中可使用“set var_name=some value”,在Linux中使用“var_name=some value”,这种方式与上面介绍的方式的区别在于:这种方式的设置是临时性的,当从新启动一个新的命令行窗口(Windows)或从新登陆 (Linux)后,这些临时变量就会丢失。

  2. JDK版本混乱:有时候,使用“java -version”命令能够打印出JDK的版本信息,但却与咱们刚刚安装的JDK版本不一致。好比咱们明明安装的是JDK 7,但却打印出JDK 6的版本信息,以下图所示:

                          

    检查PATH变量,发现其中有一个路径为“C:\Program Files (x86)\Java\jdk1.6.0_25\bin”,原来个人系统中安装了两个版本的JDK,JDK 6和JDK 7。因为此JDK 6在系统环境变量PATH中,而Windows查找命令对应的程序时,首先查找的是系统变量,当找到了一个可用的java程序时,Windows将运行这 个程序,而再也不进一步查找。也就是说,系统PATH环境变量屏蔽了用户PATH环境变量。

    不光如此,靠近PATH变量前部的路径中的程序将屏蔽其以后的路径中的同名程序。如一样是在系统PATH变量中,“C:\Program Files (x86)\Java\jdk1.6.0_25\bin;C:\Program Files (x86)\Java\jdk1.7.0\bin”,那么JDK 6仍然将屏蔽JDK 7,若是将它们的顺序交换:“C:\Program Files (x86)\Java\jdk1.7.0\bin;C:\Program Files (x86)\Java\jdk1.6.0_25\bin”,结果则相反。

    不仅是用户安装了多个版本的JDK时可能致使JDK版本的混乱,并且不少软件产品自身会包含JDK,即便用户只安装了一个JDK,但仍有可能与这些软件中 的JDK互相屏蔽(若是这些软件同时也设置了环境变量的话)。例如Oracle数据库、MyEclipse等都包含本身的JDK。

    在Windows下我还遇到过一个问题,那就是竟然在Windows\system32目录下发现了java.exe、javaw.exe、javaws.exe三个文件,由于系统PATH变量中此目录处于较靠前的位置,所以很容易将用户本身安装的JDK屏蔽掉。

    有三种方法来解决这个问题:

    第一种方法是使用绝对路径,例如咱们运行命令时使用“"C:\Program Files (x86)\Java\jdk1.7.0\bin\java.exe"”(固然,.exe能够省略)而不是“java”。使用绝对路径时,操做系统会直接 根据路径定位到命令所在的目录,再也不经过PATH变量来查找。这种方法的优势是绝对不会致使命令的覆盖,但缺点也很明显:必须输入完整的路径来运行命令 (一般也很长)。

    须要注意的是,当绝对路径中存在空格时(如上面的例子那样),须要将命令用英文双引号引发来。在设置PATH变量时不须要这样作,操做系统会自动完成这件事。

    第二种方法是将本身安装的JDK路径设置到系统PATH变量的开头,这样,操做系统查找命令时就会最早查找咱们设置的路径。但这种方法的缺点就是可能会影响其余用户(设置在了系统PATH变量中),而且可能会影响其余程序(其余的JDK被咱们的屏蔽了)。

    第三种方法就是设置一个新的环境变量,例如“JAVA_HOME”,将其值设置为咱们安装的JDK的路径,如“C:\Program Files (x86)\Java\jdk1.7.0”,咱们运行时,只需输入“"%JAVA_HOME%\bin\java"”便可(注意当路径中含有空格时要用双 引号将命令引发来)。Apache Tomcat就使用这种方法。


4. 编译并运行例子程序:

通过了以上的步骤,JDK的环境就搭建好了,此时,可能须要再编译并运行一个Java例子程序来对刚搭建的环境作最终的检验。在这一节中,也会顺便讲到如 何编译和运行一个Java程序,以及CLASSPATH的做用。更详细的,能够参考另外一篇文章《JDK下提供的工具详解》。

此程序包含两个.java文件:ExceptionDemo.java和HelloWorldException.java,前者属于main包,然后者 位于exceptions包(虽然它位于test\exceptions文件夹,这样安排的目的是为了更好地描述CLASSPATH的做用):


 


下面是它们的源代码:

(1) ExceptionDemo.java:

 

[java] view plain copy
  1. package main;  
  2. import exceptions.HelloWorldException;  
  3. public class ExceptionDemo {  
  4.       /** 
  5.        * 
  6.        * @param args 
  7.        * @throws HelloWorldException 
  8.        */  
  9.       public static void main(String[] args)  
  10.                   throws HelloWorldException {  
  11.             throw new HelloWorldException();  
  12.       }  
  13. }  


(2) HelloWorldException.java:

[java] view plain copy
  1. package exceptions;  
  2. public class HelloWorldException extends Exception {  
  3.       private static final long serialVersionUID = 8679349130620681877L;  
  4.       public HelloWorldException() {  
  5.             super("Hello World!");  
  6.       }  
  7. }  


此程序仍然是一个经典的HelloWorld程序(虽然此次它是以很不友好的方式向世界问好——经过抛出异常)。

要编译这个程序,首先尝试第一种方法(下面的操做是在Windows命令行下进行的,Linux与此相似):进入src文件夹,输入“javac main\ExceptionDemo.java”,但编译报错:



为何会提示找不到HelloWorldException呢?那是由于该Java文件位于“test\exceptions\”目录下,但它的包名倒是 “exceptions”,从当前的src目录,javac没法找到exceptions目录,由于“src\exceptions”目录是不存在的。

接下来,咱们尝试第二种方法:由src目录进入test目录,运行“javac ..\main\Exceptiondemo.java”:



编译竟然经过了!能够看到没有报错,而且main目录下生成了ExceptionDemo.class文件(Java字节码文件),说明编译确实成功了。 可是为何?咱们使用了“..\main\Exceptiondemo.java”,这明显不是ExceptionDemo的包路径,为何编译器却不报 错呢?另外咱们还注意到,我错误地将“ExceptionDemo.java”写成了“Exceptiondemo.java”,即将字母“D”的大小写 弄错了,编译器一样没有报错。

原来,javac只是将“..\main\Exceptiondemo.java”当作普通路径来寻找Java源程序文件,找到后即开始编译此文件,而当 其在编译过程当中发现程序还引用了其余类时(如ExceptionDemo.java中引用了HelloWorldException类),就会暂停对当前 文件的编译,开始寻找这个引用的类文件,若是未找到,那么将会报告错误,编译失败。前一种方法就是由于没有找到HelloWorldException类 而出错的。

那么javac程序是如何查找程序引用的其余类的呢?答案是按照CLASSPATH指定的路径加上程序所引用类的包名来查找的。CLASSPATH默认为 “.”,即当前路径(咱们以前也设置了CLASSPATH的值为“.”,但即便不设置,javac也会默认以当前路径为起点来查找所引用的类文件)。

所以在这里javac会检查“src\test\exceptions\”中是否有HelloWorldException.class文件,若是有,则 继续检查其中是否有HelloWorldException.java文件,若是二者都存在,则检查HelloWorldException.class 是否比HelloWorldException.java更新,若是答案是确定的,则加载HelloWorldException.class并继续编译 ExceptionDemo.java。而若是比较结果是HelloWorldException.java更新,或者不存在 HelloWorldException.class,则说明须要从新编译HelloWorldException.java文件。若是只有.class 文件而不存在.java文件,则加载之并继续编译ExceptionDemo.java。

若是没有找到目标文件(HelloWorldException.class或HelloWorldException.java),那么javac将报告错误(如以前那样)。

也就是说,编译是递归进行的:当程序中引用了其余类时,javac会判断是否须要编译这些类,若是须要,则javac会首先编译它们,若是这些类再次用到 了其余的类,javac将再次重复此过程,直到完成所有编译。只要在此过程当中有任何类没有找到,或者在其中发现了任何错误,那么javac将报告错误并中 止编译(javac可能在停止以前尽量多地编译,以尽可能多地向用户报告程序中的错误)。

能够用下面的图来形象地展现这一过程:



至于咱们将大小写弄错了但javac却没有报错的缘由,其实前面的说明已经隐含了解释:是由于javac只是将命令中的.java文件当作普通文件,又因为Windows是不区分大小写的,所以不会报错。若是换成Linux系统,将会提示文件没法找到的错误。

默认的CLASSPATH是当前目录(“.”),咱们也能够设置为须要的路径,让javac据此查找类文件(这就是前面所说的为何只是暂时将 CLASSPATH设置为“.”的缘由)。在这个例子中,咱们设置CLASSPATH为“.;D:\workspaces\workspace_v1.1 \my-test\src\test”,注意Linux中分隔符为“:”(冒号)。而后在src目录下就可使用命令“javac main\ExceptionDemo.java”进行编译:



实际上,此时在任何目录均可以对ExceptionDemo.java进行编译,只是文件的路径要适当更改。例如咱们在D盘根目录输入如下命令编译:



这是由于设置了CLASSPATH后,javac总能找到HelloWorldException类。

有时候必须使用CLASSPATH:当涉及到的类不少时,而这些类并不在同一个目录下,此时咱们只能使用CLASSPATH来指定这些类的路径——咱们没法同时处于多个类的“当前目录”下。

另一个须要注意的问题是,JDK包含的Java基础类(例如java.lang包中的类)并不须要指定CLASSPATH——Java知道如何找到它们。

编译完成后,运行咱们的例子,例子将抛出一个异常,并向世界问好:



注意,必须输入完整的包名和类名(不须要.class后缀),且大小写不能弄错(由于Java是区分大小写的)。完整的包名+类名在Java中称为类的彻底限定名。

至此为止,咱们成功地搭建起了Java开发和运行环境。

 

 《本文引用了:http://blog.csdn.net/antineutrino/article/details/6763565,特此感谢。》

相关文章
相关标签/搜索