标签:打开 env family public version lan 最新版本 java开发环境 文档
不管从事什么工作那么一个工作环境总是必不可少的,那怕你只是要写篇文章,一张平坦的书桌和流利的书写笔总是能帮助我们完成工作的,Java开发更是如此。在开始今天的HelloWorld前,我们先来聊一聊Java的基本环境搭建。
工欲善其事必先利其器。在学习Java语言之前,必须了解并搭建好它所需要的开发环境。要编译和执行Java程序,JDK(Java Developers Kits)是必备的。下面将具体认识下JDK和JRE,并进行介绍下载安装JDK和配置环境变量的方法。实际上很多时候我们简单的将JDK称为Java的开发环境,这也能看出它的重要性。下面我们聊一下与Java开发环境有关的一些重要概述,开始之前还是要复习和赘述一下跨平台。
Java的跨平台是指:通过Java语言编写的应用程序在不同的系统平台上都可以运行。在这里我们要对平台进行一下解读,我们知道OS的出现为所有的开发提供了一系列的开发接口,所有现在的驱动和高级开发语言都是通过OS提供的接口来实现开发的,而无需再考虑CPU的指令集,所以这里的平台指的就是OS,Java编写的程序可以在不同的OS上运行,我们日常工作中往往是在Windows上开发的,但是部署却是在Linux上,这就是跨平台的最好解释。
原理是:Java编写的源代码经过一次编译后生成符合JVM规范的中间码,编译后的字节码采用一种针对JVM优化过的机器码形式保存。这个中间码不管编译多少次都是一样的,在需要运行的Java应用程序的平台上,JVM会将中间码解释为能够被计算机识别的机器码,所以编译只进行一次,而解释却是在程序每次运行时都需要进行的。如下图1.6所示。
图1.6 Java的跨平台性的原理
因为有了JVM,所以同一个Java程序在三个不同的操作系统中都可以执行。这样就实现了Java程序的跨平台性。也称为Java具有良好的可移植性。Java语言是跨平台的,而JVM不是跨平台的。
通过Java的发展历史,我们知道Java开发的初衷就是为了应对快速发展的硬件,可以做到我们编写的代码不会随着硬件环境的改变而出现不适应的情况。发展到了今天,特别是互联网成为日常生活一部分的时候,我们编写的代码面对着庞大用户的同时,也面对着各种各样的部署环境,此时跨平台尤为重要,比起为不同平台开发不同的软件,开发有限的几个版本的JVM,看起来更容易开发一些。
JDK是 Java 语言的软件开发工具包,是提供给Java开发人员使用的,是Java开发的最小环境,其中包含了java的开发工具,也包括了JRE(Java的运行环境)。所以安装了JDK,就不用再单独安装JRE了。JDK包含的基本组件包括:
为什么JDK中包含一个JRE呢?
其一,开发完的程序,总需要运行一下看看效果。
其二,也是最重要的,JDK中的开发工具其实都是java语言编写的应用程序,为了方便使用才打包成exe文件,如果没有JRE,那么这些工具是运行不了的。
JRE(Java Runtime Environment,Java运行环境),运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。
简单而言:使用JDK开发完成的java程序,交给JRE去运行。
Java的JDK又称Java SE(以前称J2SE),是Sun公司的产品,由于Sun公司已经被Oracle公司收购,因此JDK可以在Oracle公司的官方网站http://www.oracle.com/index.html下载。在Java 5 之后,J2SE、J2EE和J2ME正式更名,将名字中的2去掉,分别更改为Java SE、Java EE和Java ME
下面以JDK 最新版本为例介绍下载安装JDK的方法,具体步骤如下:
图1.7 Oracle主页
图1.8 JDK的下载页
图1.9 JDK最新版本的下载页面
下载时要选择适合自己操作系统平台的的安装文件,如Windows系统平台是无法安装Linux系统平台的安装文件的。如果我们需要一些旧版本的JDK则可以在进入JDK的下载链接页面后选择旧版本下载,单击进入历史页面,我们以JDK 7 为例如图1.10所示。
图1.10 历史版本的JDK下载
我们以下载的JDK 7为例进行安装介绍,步骤如下:
JavaFX是由甲骨文宣布推出的,是一款为企业业务应用提供的先进Java用户界面(UI)平台,它能帮助开发人员无缝的实现与本地java功能及Web技术动态能力的混合与匹配。
在安装完JDK后需要对环境变量进行配置,具体步骤如下所示。【如果有兴趣可以阅读本人一篇文章:我们为什么要配置环境变量】
创建新的变量名称:JAVA_HOME,为JAVA_HOME添加变量值:JDK安装目录,将path环境变量中JDK目录修改,%JAVA_HOME%\bin;,path环境变量具有先后顺序
我们配置成功后发现javac和java可以到处运行
我们配置成功path环境变量后发现java和javac可以到处运行,那么此时我们已不必将源代码放入bin目录下了,但是我们遇到这么一个问题就是,源文件中引用的工具类找不到此时该怎么办呢?其实这是因为Java是一种面向对象的编程语言,提供了很多开发工具类,我们在自己的代码中引用了这些类(这些类有可能不在一个文件目录下),那么是不是该告诉编译器去哪找这些工具类呢,配置CLASSPATH的目的就在于此,指定寻找.class的路径。最初配置CLASSPATH,因为jre找不到自带的类库。jdk1.5后,就不需要配置了
CLASSPATH_8_64=.;D:\Java\JDK\JDK-1.8-64\lib;D:\Java\JDK\JDK-1.8-64\lib\tools.jar
作用:使classpath目录中的.class文件可以在任意目录运行
小知识:rt.jar是JAVA基础类库,dt.jar是关于运行环境的类库,tools.jar是工具类库
1.rt.jar 默认就在 根classloader的加载路径里面 放在claspath是多此一举,不信你可以去掉classpath里面的rt.jar,然后用 java -verbose XXXX 的方式运行一个简单的类 就知道 JVM的系统根Loader的路径里面
不光rt.jar jre\lib下面的大部分jar 都在这个路径里
2.tools.jar 是系统用来编译一个类的时候用到的 也就是javac的时候用到,实际上tools中放置的是Java提供的一些开发工具类
javac XXX.java 实际上就是运行java -calsspath=%JAVA_HOME%\lib\tools.jar xx.xxx.Main XXX.java javac就是对上面命令的封装 所以tools.jar 也不用加到classpath里面
3.dt.jar是关于运行环境的类库,主要是swing的包你要用到swing时最好加上
jdk1.5版本之前必须配置classpath,jvm虚拟机才能找到.class文件,1.5版本以后jvm虚拟机会默认在当前目录去找.class文件,所以我们现在的1.7版本可以不配置classpath,因为没有意义,但建议配置,考虑向下兼容的问题。可以参见https://blog.csdn.net/pengpenglin/article/details/1682858加深理解。
path环境变量里面记录的是可执行性文件,如.exe文件,对可执行文件先在当前路径去找,如果没找到就去path环境变量中配置的路径去找
classpath环境变量里记录的是java类文件中引用的外部工具类文件所在的目录,我们知道Java是一种面向对象的高级编程语言,说白了,就是我们编程时是可以将一些已经写好的工具类当做对象来使用的,通过对象来帮助我们简略开发,就如同字符串的截取等,我们不用自己去写只要调用String的相应方法既可,可我们通过一些非IDE编写的代码,是没有包导入的,此时就用到了ClassPath,它告诉编译器到哪里找需要执行的.class文件。在这里我们要把.java和.class的路径区别开。
(1).何时需要使用-classpath:当你要编译或执行的类引用了其它的类,但被引用类的.class文件不在当前目录下时,就需要通过-classpath来引入类
(2).何时需要指定路径:当你要编译的类所在的目录和你执行javac命令的目录不是同一个目录时,就需要指定源文件的路径(CLASSPATH是用来指定.class路径的,不是用来指定.java文件的路径的)
编写Java程序可以使用很多种工具
我们在初始学习阶段先通过Notepad++来学习,这样我们可以更直观的看到程序运行的流程。
源代码
class HelloWorld{
public static void main(String[] args){
System.out.print("Hello World;");
System.out.println("Hello World;");
}
}
将源代码存放在K:\WorkSpace\JavaJC\Chapter 1
此时我们打开命令行,定义到JDK的目录下,
此时我们编译程序会发现
原因在于javac.exe它只会编译bin目录下的文件,而HelloWorld.java不在当前bin目录下,我们将需要编译的文件放在当前bin目录下,重新编译发现提示编码错误错误,这是我们可以解决错误提示:编码 GBK 的不可映射字符,使用命令:javac -encoding utf-8 helloword.java,编译成功--这句的意思是使用编码字符集utf-8来编码HelloWord.java,然后编译执行
运行我们编译成功的class
在这里我们要注意当我们更改源文件时,我们在运行可执行文件.class时,如果没有编译,那么更改是无效的,简单举例:当我们将HelloWorld.java中再加入一句输入语句System.out.print(“未经编译的举例”);此时我们不编译,直接运行可执行文件,
输出结果是上一次我们编译后的呈现,我们重新编译,重新执行,这次变化才会显示出来,这是因为我们我们写的源码和JVM执行的中间码中间要经过一个编译。
class Demo{ /*首先定义一个类 class 类名 这个类名将是未来我们编译后的字节码文件名
在类定义后加上一对大括号{}*/
/*在大括号中间添加一个主(main)方法/函数 public static void main(String [] args){ } main是给类定义的方法,当类作为包中的主类时,必须要有main方法,main方法是程序的入口,当程序执行时,优先调用它。然后在main方法中再调用别的类和方法,就完成了程序。*/
public static void main(String[] args){
/*在主方法的大括号中间添加两行输出语句 System.out.print(“hello world”); System.out.println(“hello world”);Ln的区别在于是一个回车 有Ln代表有一个回车*/
System.out.print("Hello World");
System.out.println("Hello World");
}
}
当我们不输入main方法时,我们的编译仍可进行,但执行可执行文件时汇报错误
main是程序的入口;就好像我们回家要开门一样,FQ是会被打的。
如果编译后无法生成可执行文件一般可以按以下步骤进行排查,找到问题所在:
1.先检查jdk环境是否配置成功
做法:DOS下输入:java -version,看是否有jdk版本的信息;java,看是否有相关命令;javac,看是否有这个命令;验证这3个命令,会对jdk环境配置有个直观的认识,如果没有正常显示相关信息,就要去配置jdk环境,具体步骤可参考百度经验。
2.检查路径是否正确
做法:DOS下输入:dir,查看当前路径下是否真的有这个HelloWorld.java文件
3.通过命令 javac -d 你想生成class文件的目录 HelloWorld.java 来查看是否有class文件
做法:DOS下输入:javac -d C:\ HelloWorld.java ,运行后,看是否在C盘下有HelloWorld.class文件
Notes 20180507 : Java程序设计之环境搭建与HelloWord
标签:打开 env family public version lan 最新版本 java开发环境 文档
原文地址:https://www.cnblogs.com/lin-jing/p/8360838.html